Contract 0x80EefA1DEd44f08e2DaCFab07B612bE66363326e

 
Txn Hash
Block
From
To
Value [Txn Fee]
0xa5e745c8f3d68b0432409a23329ef76aa39b3a4ef3cea41b79da04ae5348b830539032021-07-02 9:46:4977 days 8 hrs ago0x904b5993fc92979eeedc19ccc58bed6b7216667c IN  0x80eefa1ded44f08e2dacfab07b612be66363326e0 ETH0.000087850841 ETH
0xe398d90b46c3c5c8f1bf0411714513847ac17499ff58c4c4418a8c6555ad56bd501072021-07-01 12:47:5678 days 5 hrs ago0x904b5993fc92979eeedc19ccc58bed6b7216667c IN  0x80eefa1ded44f08e2dacfab07b612be66363326e0 ETH0.005195687258 ETH
0xd81211debc555ab24fbd53b2e980f6ad8b0455c7f46fbbb8c0e5ec717e4ad479500972021-07-01 12:44:1378 days 5 hrs ago0x904b5993fc92979eeedc19ccc58bed6b7216667c IN  Contract Creation0 ETH0.002682339317 ETH
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xA017B813652b93a0aF2887913EFCBB4ab250CE65

Contract Name:
TransparentUpgradeableProxy

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at arbiscan.io on 2021-08-31
*/

pragma solidity >=0.6.0 <0.8.0;


abstract contract Proxy {
    
    function _delegate(address implementation) internal virtual {
        
        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 _implementation() internal view virtual returns (address);

    
    function _fallback() internal virtual {
        _beforeFallback();
        _delegate(_implementation());
    }

    
    fallback () external payable virtual {
        _fallback();
    }

    
    receive () external payable virtual {
        _fallback();
    }

    
    function _beforeFallback() internal virtual {
    }
}

library Address {
    
    function isContract(address account) internal view returns (bool) {
        
        
        

        uint256 size;
        
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                

                
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract UpgradeableProxy is Proxy {
    
    constructor(address _logic, bytes memory _data) public payable {
        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
        _setImplementation(_logic);
        if(_data.length > 0) {
            Address.functionDelegateCall(_logic, _data);
        }
    }

    
    event Upgraded(address indexed implementation);

    
    bytes32 private constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    
    function _implementation() internal view virtual override returns (address impl) {
        bytes32 slot = _IMPLEMENTATION_SLOT;
        
        assembly {
            impl := sload(slot)
        }
    }

    
    function _upgradeTo(address newImplementation) internal virtual {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "UpgradeableProxy: new implementation is not a contract");

        bytes32 slot = _IMPLEMENTATION_SLOT;

        
        assembly {
            sstore(slot, newImplementation)
        }
    }
}

contract TransparentUpgradeableProxy is UpgradeableProxy {
    
    constructor(address _logic, address admin_, bytes memory _data) public payable UpgradeableProxy(_logic, _data) {
        assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
        _setAdmin(admin_);
    }

    
    event AdminChanged(address previousAdmin, address newAdmin);

    
    bytes32 private constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    
    modifier ifAdmin() {
        if (msg.sender == _admin()) {
            _;
        } else {
            _fallback();
        }
    }

    
    function admin() external ifAdmin returns (address admin_) {
        admin_ = _admin();
    }

    
    function implementation() external ifAdmin returns (address implementation_) {
        implementation_ = _implementation();
    }

    
    function changeAdmin(address newAdmin) external virtual ifAdmin {
        require(newAdmin != address(0), "TransparentUpgradeableProxy: new admin is the zero address");
        emit AdminChanged(_admin(), newAdmin);
        _setAdmin(newAdmin);
    }

    
    function upgradeTo(address newImplementation) external virtual ifAdmin {
        _upgradeTo(newImplementation);
    }

    
    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable virtual ifAdmin {
        _upgradeTo(newImplementation);
        Address.functionDelegateCall(newImplementation, data);
    }

    
    function _admin() internal view virtual returns (address adm) {
        bytes32 slot = _ADMIN_SLOT;
        
        assembly {
            adm := sload(slot)
        }
    }

    
    function _setAdmin(address newAdmin) private {
        bytes32 slot = _ADMIN_SLOT;

        
        assembly {
            sstore(slot, newAdmin)
        }
    }

    
    function _beforeFallback() internal virtual override {
        require(msg.sender != _admin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target");
        super._beforeFallback();
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260405162000c8e38038062000c8e833981810160405260608110156200002957600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200005557600080fd5b9083019060208201858111156200006b57600080fd5b82516401000000008111828201881017156200008657600080fd5b82525081516020918201929091019080838360005b83811015620000b55781810151838201526020016200009b565b50505050905090810190601f168015620000e35780820380516001836020036101000a031916815260200191505b5060405250849150829050620000f98262000137565b8051156200011a57620001188282620001ae60201b620003941760201c565b505b50620001239050565b6200012e82620001dd565b505050620003bf565b6200014d816200020160201b620003c01760201c565b6200018a5760405162461bcd60e51b815260040180806020018281038252603681526020018062000c326036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6060620001d6838360405180606001604052806027815260200162000c0b6027913962000207565b9392505050565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b3b151590565b6060620002148462000201565b620002515760405162461bcd60e51b815260040180806020018281038252602681526020018062000c686026913960400191505060405180910390fd5b60006060856001600160a01b0316856040518082805190602001908083835b60208310620002915780518252601f19909201916020918201910162000270565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114620002f3576040519150601f19603f3d011682016040523d82523d6000602084013e620002f8565b606091505b5090925090506200030b82828662000315565b9695505050505050565b6060831562000326575081620001d6565b825115620003375782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200038357818101518382015260200162000369565b50505050905090810190601f168015620003b15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b61083c80620003cf6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146101285780638f28397014610159578063f851a4401461018c5761006d565b80633659cfe6146100755780634f1ef286146100a85761006d565b3661006d5761006b6101a1565b005b61006b6101a1565b34801561008157600080fd5b5061006b6004803603602081101561009857600080fd5b50356001600160a01b03166101bb565b61006b600480360360408110156100be57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100e957600080fd5b8201836020820111156100fb57600080fd5b8035906020019184600183028401116401000000008311171561011d57600080fd5b5090925090506101f5565b34801561013457600080fd5b5061013d610272565b604080516001600160a01b039092168252519081900360200190f35b34801561016557600080fd5b5061006b6004803603602081101561017c57600080fd5b50356001600160a01b03166102af565b34801561019857600080fd5b5061013d610369565b6101a96103c6565b6101b96101b4610426565b61044b565b565b6101c361046f565b6001600160a01b0316336001600160a01b031614156101ea576101e581610494565b6101f2565b6101f26101a1565b50565b6101fd61046f565b6001600160a01b0316336001600160a01b031614156102655761021f83610494565b61025f8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061039492505050565b5061026d565b61026d6101a1565b505050565b600061027c61046f565b6001600160a01b0316336001600160a01b031614156102a45761029d610426565b90506102ac565b6102ac6101a1565b90565b6102b761046f565b6001600160a01b0316336001600160a01b031614156101ea576001600160a01b0381166103155760405162461bcd60e51b815260040180806020018281038252603a815260200180610708603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61033e61046f565b604080516001600160a01b03928316815291841660208301528051918290030190a16101e5816104d4565b600061037361046f565b6001600160a01b0316336001600160a01b031614156102a45761029d61046f565b60606103b98383604051806060016040528060278152602001610742602791396104f8565b9392505050565b3b151590565b6103ce61046f565b6001600160a01b0316336001600160a01b0316141561041e5760405162461bcd60e51b81526004018080602001828103825260428152602001806107c56042913960600191505060405180910390fd5b6101b96101b9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561046a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61049d816105fb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6060610503846103c0565b61053e5760405162461bcd60e51b815260040180806020018281038252602681526020018061079f6026913960400191505060405180910390fd5b60006060856001600160a01b0316856040518082805190602001908083835b6020831061057c5780518252601f19909201916020918201910161055d565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146105dc576040519150601f19603f3d011682016040523d82523d6000602084013e6105e1565b606091505b50915091506105f1828286610663565b9695505050505050565b610604816103c0565b61063f5760405162461bcd60e51b81526004018080602001828103825260368152602001806107696036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b606083156106725750816103b9565b8251156106825782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106cc5781810151838201526020016106b4565b50505050905090810190601f1680156106f95780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f2061646472657373416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a26469706673582212208abef82df4ccbbe5116d43e18645757954680a0f3e3b17a5ca661b652c75599664736f6c63430007040033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374000000000000000000000000592c6a6419fb86bad15926c840a9f9306f69f59000000000000000000000000093a9182883c1019e1dbebb5d40c140e7680cd15100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

5845:2139:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;957:11;:9;:11::i;:::-;5845:2139;;877:11;:9;:11::i;7031:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7031:119:0;-1:-1:-1;;;;;7031:119:0;;:::i;7164:219::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7164:219:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7164:219:0;;-1:-1:-1;7164:219:0;-1:-1:-1;7164:219:0;:::i;6618:131::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;6618:131:0;;;;;;;;;;;;;;6763:254;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6763:254:0;-1:-1:-1;;;;;6763:254:0;;:::i;6509:95::-;;;;;;;;;;;;;:::i;702:113::-;751:17;:15;:17::i;:::-;779:28;789:17;:15;:17::i;:::-;779:9;:28::i;:::-;702:113::o;7031:119::-;6406:8;:6;:8::i;:::-;-1:-1:-1;;;;;6392:22:0;:10;-1:-1:-1;;;;;6392:22:0;;6388:100;;;7113:29:::1;7124:17;7113:10;:29::i;:::-;6388:100:::0;;;6465:11;:9;:11::i;:::-;7031:119;:::o;7164:219::-;6406:8;:6;:8::i;:::-;-1:-1:-1;;;;;6392:22:0;:10;-1:-1:-1;;;;;6392:22:0;;6388:100;;;7282:29:::1;7293:17;7282:10;:29::i;:::-;7322:53;7351:17;7370:4;;7322:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;7322:28:0::1;::::0;-1:-1:-1;;;7322:53:0:i:1;:::-;;6388:100:::0;;;6465:11;:9;:11::i;:::-;7164:219;;;:::o;6618:131::-;6670:23;6406:8;:6;:8::i;:::-;-1:-1:-1;;;;;6392:22:0;:10;-1:-1:-1;;;;;6392:22:0;;6388:100;;;6724:17:::1;:15;:17::i;:::-;6706:35;;6388:100:::0;;;6465:11;:9;:11::i;:::-;6618:131;:::o;6763:254::-;6406:8;:6;:8::i;:::-;-1:-1:-1;;;;;6392:22:0;:10;-1:-1:-1;;;;;6392:22:0;;6388:100;;;-1:-1:-1;;;;;6846:22:0;::::1;6838:93;;;;-1:-1:-1::0;;;6838:93:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6947:32;6960:8;:6;:8::i;:::-;6947:32;::::0;;-1:-1:-1;;;;;6947:32:0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;6990:19;7000:8;6990:9;:19::i;6509:95::-:0;6552:14;6406:8;:6;:8::i;:::-;-1:-1:-1;;;;;6392:22:0;:10;-1:-1:-1;;;;;6392:22:0;;6388:100;;;6588:8:::1;:6;:8::i;3380:200::-:0;3463:12;3495:77;3516:6;3524:4;3495:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;3488:84;3380:200;-1:-1:-1;;;3380:200:0:o;1078:216::-;1239:20;1278:8;;;1078:216::o;7774:207::-;7860:8;:6;:8::i;:::-;-1:-1:-1;;;;;7846:22:0;:10;-1:-1:-1;;;;;7846:22:0;;;7838:101;;;;-1:-1:-1;;;7838:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7950:23;:21;:23::i;5116:209::-;5035:66;5296:11;;5273:45::o;74:533::-;240:14;237:1;234;221:34;371:1;368;352:14;349:1;333:14;326:5;313:60;424:16;421:1;418;403:38;464:6;498:38;;;;570:16;567:1;560:27;498:38;517:16;514:1;507:27;7397:180;6277:66;7548:11;;7526:44::o;5339:163::-;5414:37;5433:17;5414:18;:37::i;:::-;5467:27;;-1:-1:-1;;;;;5467:27:0;;;;;;;;5339:163;:::o;7591:169::-;6277:66;7720:22;7705:48::o;3594:373::-;3705:12;3738:18;3749:6;3738:10;:18::i;:::-;3730:69;;;;-1:-1:-1;;;3730:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3823:12;3837:23;3864:6;-1:-1:-1;;;;;3864:19:0;3884:4;3864:25;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3864:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3822:67;;;;3907:52;3925:7;3934:10;3946:12;3907:17;:52::i;:::-;3900:59;3594:373;-1:-1:-1;;;;;;3594:373:0:o;5516:322::-;5598:37;5617:17;5598:18;:37::i;:::-;5590:104;;;;-1:-1:-1;;;5590:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5035:66;5789:31;5774:57::o;3975:567::-;4090:12;4119:7;4115:420;;;-1:-1:-1;4150:10:0;4143:17;;4115:420;4211:17;;:21;4207:317;;4352:10;4346:17;4413:15;4400:10;4396:2;4392:19;4385:44;4300:148;4495:12;4488:20;;-1:-1:-1;;;4488:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

ipfs://8abef82df4ccbbe5116d43e18645757954680a0f3e3b17a5ca661b652c755996
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.