Contract Address Details

0x608B25EBd307BC41eD29106644fdC5b5cBA0dd53

Contract Name
FixedLockProxy
Creator
0x523009–fcc29c at 0x11e9c1–873ff9
Implementation
FixedLock | 0x890d1e360271435fa535073383ef9d887ec24405
Balance
5,000,000 NMT
Tokens
Fetching tokens...
Transactions
18 Transactions
Transfers
0 Transfers
Gas Used
2,509,256
Last Balance Update
8940238
Contract name:
FixedLockProxy




Optimization enabled
false
Compiler version
v0.8.18+commit.87f61d96




EVM Version
default




Verified at
2024-02-23T09:59:11.432106Z

Constructor Arguments

0x000000000000000000000000265661f2a3c16f07345b6494565b05dca43b6825

Arg [0] (address) : 0x265661f2a3c16f07345b6494565b05dca43b6825

              

Contract source code

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

library StorageSlot {
    struct AddressSlot {
        address value;
    }

    struct BooleanSlot {
        bool value;
    }

    struct Bytes32Slot {
        bytes32 value;
    }

    struct Uint256Slot {
        uint256 value;
    }

    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
        assembly {
            r.slot := slot
        }
    }

    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
        assembly {
            r.slot := slot
        }
    }


    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
        assembly {
            r.slot := slot
        }
    }


    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
        assembly {
            r.slot := slot
        }
    }
}

contract Proxy {
    //EIP1967 Impl_solt: keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1
    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
    //EIP1967 Admin_solt: keccak-256 hash of "eip1967.proxy.admin" subtracted by 1
    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;
  
    function _setAdmin(address admin_) internal {
        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = admin_;
    }
    
    function _setLogic(address logic_) internal {
        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = logic_;
    }
    
    function logic() public view returns (address) {
        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
    }
    
    function admin() public view returns (address) {
       return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;
    }
    
    
    fallback () external payable {
        assembly {
            let impl := sload(_IMPLEMENTATION_SLOT)
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(gas(), impl, 0, calldatasize(), 0, 0)
            returndatacopy(0, 0, returndatasize())
            switch result
            case 0 { revert(0, returndatasize()) }
            default { return(0, returndatasize()) }
        }
    }
    
    receive () external payable virtual {}
}


contract baseProxy is Proxy {
    event Upgraded(address indexed impl);
    event AdminChanged(address preAdmin, address newAdmin);
    
    modifier onlyAmdin(){
        require(msg.sender == admin(), "baseProxy: Caller not admin");
        _;
    }
    
    function changeAdmin(address newAdmin) external onlyAmdin returns(bool) {
        address preAdmin =  admin();
        _setAdmin(newAdmin);
        emit AdminChanged(preAdmin, newAdmin);
        return true;
    } 
    
    function upgrad(address newLogic) external onlyAmdin returns(bool) {
        _setLogic(newLogic);
        emit Upgraded(newLogic);
        return true;
    }
}
contract FixedLockProxy is baseProxy{
       constructor(address impl) {
        _setAdmin(msg.sender);
        _setLogic(impl);
    }
}
        

Contract ABI

[{"type":"constructor","inputs":[{"type":"address","name":"impl","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"admin","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"changeAdmin","inputs":[{"type":"address","name":"newAdmin","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"logic","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"upgrad","inputs":[{"type":"address","name":"newLogic","internalType":"address"}]},{"type":"event","name":"AdminChanged","inputs":[{"type":"address","name":"preAdmin","indexed":false},{"type":"address","name":"newAdmin","indexed":false}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"type":"address","name":"impl","indexed":true}],"anonymous":false},{"type":"receive"},{"type":"fallback"}]
            

Deployed ByteCode

0x6080604052600436106100435760003560e01c806331079f6e146100925780638f283970146100cf578063d7dfa0dd1461010c578063f851a440146101375761004a565b3661004a57005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc543660008037600080366000845af43d6000803e806000811461008d573d6000f35b3d6000fd5b34801561009e57600080fd5b506100b960048036038101906100b491906104fa565b610162565b6040516100c69190610542565b60405180910390f35b3480156100db57600080fd5b506100f660048036038101906100f191906104fa565b61022e565b6040516101039190610542565b60405180910390f35b34801561011857600080fd5b506101216102fd565b60405161012e919061056c565b60405180910390f35b34801561014357600080fd5b5061014c610354565b604051610159919061056c565b60405180910390f35b600061016c610354565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d0906105e4565b60405180910390fd5b6101e2826103b5565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a260019050919050565b6000610238610354565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029c906105e4565b60405180910390fd5b60006102af610354565b90506102ba83610426565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f81846040516102eb929190610604565b60405180910390a16001915050919050565b600061032b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6103ab565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006103827fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b6103ab565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b806103e27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6103ab565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b806104537fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b6103ab565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006104c78261049c565b9050919050565b6104d7816104bc565b81146104e257600080fd5b50565b6000813590506104f4816104ce565b92915050565b6000602082840312156105105761050f610497565b5b600061051e848285016104e5565b91505092915050565b60008115159050919050565b61053c81610527565b82525050565b60006020820190506105576000830184610533565b92915050565b610566816104bc565b82525050565b6000602082019050610581600083018461055d565b92915050565b600082825260208201905092915050565b7f6261736550726f78793a2043616c6c6572206e6f742061646d696e0000000000600082015250565b60006105ce601b83610587565b91506105d982610598565b602082019050919050565b600060208201905081810360008301526105fd816105c1565b9050919050565b6000604082019050610619600083018561055d565b610626602083018461055d565b939250505056fea2646970667358221220ba97bdac0054f11cc04e8f6fea00818b02de01c3f1e2e551ec4d11fe84ec993c64736f6c63430008120033