ETH Price: $3,313.24 (-0.60%)
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Set Approval For...1057465862023-06-18 12:39:09941 days ago1687091949IN
0xbD21e058...231E6ea3C
0 ETH0.0000258359690.00000013
Set Approval For...147221142022-07-17 5:31:311278 days ago1658035891IN
0xbD21e058...231E6ea3C
0 ETH0.0000348240470.001

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
1057465862023-06-18 12:39:09941 days ago1687091949
0xbD21e058...231E6ea3C
0 ETH
93170082022-05-30 13:32:411325 days ago1653917561  Contract Creation0 ETH

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UUPSProxy

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./AbstractProxy.sol";
import "./ProxyStorage.sol";
import "../errors/AddressError.sol";
import "../utils/AddressUtil.sol";

contract UUPSProxy is AbstractProxy, ProxyStorage {
    constructor(address firstImplementation) {
        if (firstImplementation == address(0)) {
            revert AddressError.ZeroAddress();
        }

        if (!AddressUtil.isContract(firstImplementation)) {
            revert AddressError.NotAContract(firstImplementation);
        }

        _proxyStore().implementation = firstImplementation;
    }

    function _getImplementation() internal view virtual override returns (address) {
        return _proxyStore().implementation;
    }
}

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

abstract contract AbstractProxy {
    fallback() external payable {
        _forward();
    }

    receive() external payable {
        _forward();
    }

    function _forward() internal {
        address implementation = _getImplementation();

        // solhint-disable-next-line no-inline-assembly
        assembly {
            calldatacopy(0, 0, calldatasize())

            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)

            returndatacopy(0, 0, returndatasize())

            switch result
            case 0 {
                revert(0, returndatasize())
            }
            default {
                return(0, returndatasize())
            }
        }
    }

    function _getImplementation() internal view virtual returns (address);
}

File 3 of 5 : ProxyStorage.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract ProxyStorage {
    struct ProxyStore {
        address implementation;
        bool simulatingUpgrade;
    }

    function _proxyStore() internal pure returns (ProxyStore storage store) {
        assembly {
            // bytes32(uint(keccak256("io.synthetix.v3.proxy")) - 1)
            store.slot := 0x32402780481dd8149e50baad867f01da72e2f7d02639a6fe378dbd80b6bb446e
        }
    }
}

File 4 of 5 : AddressError.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

library AddressError {
    error ZeroAddress();
    error NotAContract(address contr);
}

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

library AddressUtil {
    function isContract(address account) internal view returns (bool) {
        uint256 size;

        assembly {
            size := extcodesize(account)
        }

        return size > 0;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"firstImplementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"contr","type":"address"}],"name":"NotAContract","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b506040516101c33803806101c383398101604081905261002f916100df565b6001600160a01b0381166100565760405163d92e233d60e01b815260040160405180910390fd5b610069816100d960201b61006a1760201c565b610095576040516322a2d07b60e21b81526001600160a01b038216600482015260240160405180910390fd5b7f32402780481dd8149e50baad867f01da72e2f7d02639a6fe378dbd80b6bb446e80546001600160a01b0319166001600160a01b039290921691909117905561010f565b3b151590565b6000602082840312156100f157600080fd5b81516001600160a01b038116811461010857600080fd5b9392505050565b60a68061011d6000396000f3fe608060405236601057600e6013565b005b600e5b600060457f32402780481dd8149e50baad867f01da72e2f7d02639a6fe378dbd80b6bb446e546001600160a01b031690565b90503660008037600080366000845af43d6000803e8080156065573d6000f35b3d6000fd5b3b15159056fea2646970667358221220885ba3346b63d4c775141a952a4858cd465956d6f05013d88f7ffdfeb68bb4c564736f6c634300080b00330000000000000000000000007aca85d7092dd028b8d52144f07d2d0ed9a62538

Deployed Bytecode

0x608060405236601057600e6013565b005b600e5b600060457f32402780481dd8149e50baad867f01da72e2f7d02639a6fe378dbd80b6bb446e546001600160a01b031690565b90503660008037600080366000845af43d6000803e8080156065573d6000f35b3d6000fd5b3b15159056fea2646970667358221220885ba3346b63d4c775141a952a4858cd465956d6f05013d88f7ffdfeb68bb4c564736f6c634300080b0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007aca85d7092dd028b8d52144f07d2d0ed9a62538

-----Decoded View---------------
Arg [0] : firstImplementation (address): 0x7aca85D7092Dd028b8d52144F07D2D0eD9a62538

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007aca85d7092dd028b8d52144f07d2d0ed9a62538


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.