ETH Price: $2,970.61 (-5.47%)
Gas: 2 Gwei

Token

ERC20 ***
 

Overview

Max Total Supply

0.000000035767965819 ERC20 ***

Holders

24

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
lilfrito.eth
Balance
0.000000000035 ERC20 ***

Value
$0.00
0xe73647c5f486975ecf2913f4f1263321c56aab4d
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x1661dB41...93AA38fEF
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
TimelockProxyStorageCentered

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 4 : TimelockProxyStorageCentered.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.7.6;
import "@openzeppelin/contracts/proxy/Proxy.sol";
import "./utilities/UnstructuredStorageWithTimelock.sol";
import "./interface/IStorageV1.sol";

/**
    TimelockProxyStorageCentered is a proxy implementation that timelocks the implementation switch.
    The owner is stored in the system storage (StorageV1Upgradeable) and not in the contract storage
    of the proxy.
*/
contract TimelockProxyStorageCentered is Proxy {
    using UnstructuredStorageWithTimelock for bytes32;

    // bytes32(uint256(keccak256("eip1967.proxy.systemStorage")) - 1
    bytes32 private constant _SYSTEM_STORAGE_SLOT =
        0xf7ce9e33978bd6e766998cbee51134930bc6e39dc5dcd8f992c5b743b1c6d698;

    // bytes32(uint256(keccak256("eip1967.proxy.timelock")) - 1
    bytes32 private constant _TIMELOCK_SLOT =
        0xc6fb23975d74c7743b6d6d0c1ad9dc3911bc8a4a970ec5723a30579b45472009;

    // _IMPLEMENTATION_SLOT, value cloned from UpgradeableProxy
    bytes32 private constant _IMPLEMENTATION_SLOT =
        0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    event UpgradeScheduled(address indexed implementation, uint256 activeTime);
    event Upgraded(address indexed implementation);

    event TimelockUpdateScheduled(uint256 newTimelock, uint256 activeTime);
    event TimelockUpdated(uint256 newTimelock);

    constructor(
        address _logic,
        address _storage,
        uint256 _timelock,
        bytes memory _data
    ) {
        assert(
            _SYSTEM_STORAGE_SLOT ==
                bytes32(uint256(keccak256("eip1967.proxy.systemStorage")) - 1)
        );
        assert(
            _TIMELOCK_SLOT ==
                bytes32(uint256(keccak256("eip1967.proxy.timelock")) - 1)
        );
        assert(
            _IMPLEMENTATION_SLOT ==
                bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1)
        );
        _SYSTEM_STORAGE_SLOT.setAddress(_storage);
        _TIMELOCK_SLOT.setUint256(_timelock);
        _IMPLEMENTATION_SLOT.setAddress(_logic);
        if (_data.length > 0) {
            // solhint-disable-next-line avoid-low-level-calls
            (bool success, ) = _logic.delegatecall(_data);
            require(success);
        }
    }

    // Using Transparent proxy pattern to avoid collision attacks
    // see OpenZeppelin's `TransparentUpgradeableProxy`
    modifier adminPriviledged() {
        require(
            msg.sender == IStorageV1(_systemStorage()).governance() ||
            IStorageV1(_systemStorage()).isAdmin(msg.sender), 
            "msg.sender is not adminPriviledged"
        );
        _;
    }

    modifier requireTimelockPassed(bytes32 _slot) {
        require(
            block.timestamp >= _slot.scheduledTime(),
            "Timelock has not passed yet"
        );
        _;
    }

    function proxyScheduleImplementationUpdate(address targetAddress)
        public
        adminPriviledged
    {
        bytes32 _slot = _IMPLEMENTATION_SLOT;
        uint256 activeTime = block.timestamp + _TIMELOCK_SLOT.fetchUint256();
        (_slot.scheduledContentSlot()).setAddress(targetAddress);
        (_slot.scheduledTimeSlot()).setUint256(activeTime);

        emit UpgradeScheduled(targetAddress, activeTime);
    }

    function proxyScheduleTimelockUpdate(uint256 newTimelock) public adminPriviledged {
        uint256 activeTime = block.timestamp + _TIMELOCK_SLOT.fetchUint256();
        (_TIMELOCK_SLOT.scheduledContentSlot()).setUint256(newTimelock);
        (_TIMELOCK_SLOT.scheduledTimeSlot()).setUint256(activeTime);

        emit TimelockUpdateScheduled(newTimelock, activeTime);
    }

    function proxyUpgradeTimelock()
        public
        adminPriviledged
        requireTimelockPassed(_TIMELOCK_SLOT)
    {
        uint256 newTimelock =
            (_TIMELOCK_SLOT.scheduledContentSlot()).fetchUint256();
        _TIMELOCK_SLOT.setUint256(newTimelock);
        emit TimelockUpdated(newTimelock);
    }

    function proxyUpgradeImplementation()
        public
        adminPriviledged
        requireTimelockPassed(_IMPLEMENTATION_SLOT)
    {
        address newImplementation =
            (_IMPLEMENTATION_SLOT.scheduledContentSlot()).fetchAddress();
        _IMPLEMENTATION_SLOT.setAddress(newImplementation);
        emit Upgraded(newImplementation);
    }

    function _implementation() internal view override returns (address impl) {
        bytes32 slot = _IMPLEMENTATION_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            impl := sload(slot)
        }
    }

    function _systemStorage() internal view returns (address systemStorage) {
        bytes32 slot = _SYSTEM_STORAGE_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            systemStorage := sload(slot)
        }
    }
}

File 2 of 4 : Proxy.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
 * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
 * be specified by overriding the virtual {_implementation} function.
 * 
 * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
 * different contract through the {_delegate} function.
 * 
 * The success and return data of the delegated call will be returned back to the caller of the proxy.
 */
abstract contract Proxy {
    /**
     * @dev Delegates the current call to `implementation`.
     * 
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal {
        // solhint-disable-next-line no-inline-assembly
        assembly {
            // Copy msg.data. We take full control of memory in this inline assembly
            // block because it will not return to Solidity code. We overwrite the
            // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize())

            // Call the implementation.
            // out and outsize are 0 because we don't know the size yet.
            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)

            // Copy the returned data.
            returndatacopy(0, 0, returndatasize())

            switch result
            // delegatecall returns 0 on error.
            case 0 { revert(0, returndatasize()) }
            default { return(0, returndatasize()) }
        }
    }

    /**
     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function
     * and {_fallback} should delegate.
     */
    function _implementation() internal virtual view returns (address);

    /**
     * @dev Delegates the current call to the address returned by `_implementation()`.
     * 
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _fallback() internal {
        _beforeFallback();
        _delegate(_implementation());
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other
     * function in the contract matches the call data.
     */
    fallback () external payable {
        _fallback();
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
     * is empty.
     */
    receive () external payable {
        _fallback();
    }

    /**
     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`
     * call, or as part of the Solidity `fallback` or `receive` functions.
     * 
     * If overriden should call `super._beforeFallback()`.
     */
    function _beforeFallback() internal virtual {
    }
}

File 3 of 4 : UnstructuredStorageWithTimelock.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.7.6;

/**
    UnstructuredStorageWithTimelock is a set of functions that facilitates setting/fetching unstructured storage 
    along with information of future updates and its timelock information.

    For every content storage, there are two other slots that could be calculated automatically:
        * Slot (The current value)
        * Scheduled Slot (The future value)
        * Scheduled Time (The future time)

    Note that the library does NOT enforce timelock and does NOT store the timelock information.
*/
library UnstructuredStorageWithTimelock {
    // This is used to calculate the time slot and scheduled content for different variables
    uint256 private constant SCHEDULED_SIGNATURE = 0x111;
    uint256 private constant TIMESLOT_SIGNATURE = 0xAAA;

    function updateAddressWithTimelock(bytes32 _slot) internal {
        require(
            scheduledTime(_slot) > block.timestamp,
            "Timelock has not passed"
        );
        setAddress(_slot, scheduledAddress(_slot));
    }

    function updateUint256WithTimelock(bytes32 _slot) internal {
        require(
            scheduledTime(_slot) > block.timestamp,
            "Timelock has not passed"
        );
        setUint256(_slot, scheduledUint256(_slot));
    }

    function setAddress(bytes32 _slot, address _target) internal {
        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(_slot, _target)
        }
    }

    function fetchAddress(bytes32 _slot)
        internal
        view
        returns (address result)
    {
        assembly {
            result := sload(_slot)
        }
    }

    function scheduledAddress(bytes32 _slot)
        internal
        view
        returns (address result)
    {
        result = fetchAddress(scheduledContentSlot(_slot));
    }

    function scheduledUint256(bytes32 _slot)
        internal
        view
        returns (uint256 result)
    {
        result = fetchUint256(scheduledContentSlot(_slot));
    }

    function setUint256(bytes32 _slot, uint256 _target) internal {
        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(_slot, _target)
        }
    }

    function fetchUint256(bytes32 _slot)
        internal
        view
        returns (uint256 result)
    {
        assembly {
            result := sload(_slot)
        }
    }

    function scheduledContentSlot(bytes32 _slot)
        internal
        pure
        returns (bytes32)
    {
        return
            bytes32(
                uint256(keccak256(abi.encodePacked(_slot, SCHEDULED_SIGNATURE)))
            );
    }

    function scheduledTime(bytes32 _slot) internal view returns (uint256) {
        return fetchUint256(scheduledTimeSlot(_slot));
    }

    function scheduledTimeSlot(bytes32 _slot) internal pure returns (bytes32) {
        return
            bytes32(
                uint256(keccak256(abi.encodePacked(_slot, TIMESLOT_SIGNATURE)))
            );
    }
}

File 4 of 4 : IStorageV1.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.7.6;

interface IStorageV1 {
    function governance() external view returns(address);
    function treasury() external view returns(address);
    function isAdmin(address _target) external view returns(bool);
    function isOperator(address _target) external view returns(bool);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"_storage","type":"address"},{"internalType":"uint256","name":"_timelock","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newTimelock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"activeTime","type":"uint256"}],"name":"TimelockUpdateScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newTimelock","type":"uint256"}],"name":"TimelockUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"},{"indexed":false,"internalType":"uint256","name":"activeTime","type":"uint256"}],"name":"UpgradeScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"targetAddress","type":"address"}],"name":"proxyScheduleImplementationUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTimelock","type":"uint256"}],"name":"proxyScheduleTimelockUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proxyUpgradeImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proxyUpgradeTimelock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b5060405162000ca438038062000ca48339818101604052608081101561003557600080fd5b81516020830151604080850151606086018051925194969395919493918201928464010000000082111561006857600080fd5b90830190602082018581111561007d57600080fd5b825164010000000081118282018810171561009757600080fd5b82525081516020918201929091019080838360005b838110156100c45781810151838201526020016100ac565b50505050905090810190601f1680156100f15780820380516001836020036101000a031916815260200191505b50604052506100fe915050565b610138837ff7ce9e33978bd6e766998cbee51134930bc6e39dc5dcd8f992c5b743b1c6d69860001b61026d60201b6108b91790919060201c565b610172827fc6fb23975d74c7743b6d6d0c1ad9dc3911bc8a4a970ec5723a30579b4547200960001b61026d60201b6108b91790919060201c565b6101ac847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61026d60201b6108b91790919060201c565b805115610264576000846001600160a01b0316826040518082805190602001908083835b602083106101ef5780518252601f1990920191602091820191016101d0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461024f576040519150601f19603f3d011682016040523d82523d6000602084013e610254565b606091505b505090508061026257600080fd5b505b50505050610271565b9055565b610a2380620002816000396000f3fe6080604052600436106100435760003560e01c806333e837011461005a578063b183ce8914610084578063d4da3fd1146100b7578063fc7ee160146100cc57610052565b36610052576100506100e1565b005b6100506100e1565b34801561006657600080fd5b506100506004803603602081101561007d57600080fd5b50356100fb565b34801561009057600080fd5b50610050600480360360208110156100a757600080fd5b50356001600160a01b03166102cc565b3480156100c357600080fd5b5061005061048f565b3480156100d857600080fd5b506100506106a6565b6100e96100f9565b6100f96100f46108bd565b6108d0565b565b6101036108f4565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b15801561013b57600080fd5b505afa15801561014f573d6000803e3d6000fd5b505050506040513d602081101561016557600080fd5b50516001600160a01b03163314806101f957506101806108f4565b6001600160a01b03166324d7806c336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156101cc57600080fd5b505afa1580156101e0573d6000803e3d6000fd5b505050506040513d60208110156101f657600080fd5b50515b6102345760405162461bcd60e51b81526004018080602001828103825260228152602001806109cc6022913960400191505060405180910390fd5b600061024d60008051602061098c833981519152610919565b420190506102728261026c60008051602061098c83398151915261091d565b906108b9565b61028d8161026c60008051602061098c83398151915261094a565b604080518381526020810183905281517f128fc4b147dbbb230bb22e2f11fc1f54234533ab01ca868860c30a8b93fc3c11929181900390910190a15050565b6102d46108f4565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b15801561030c57600080fd5b505afa158015610320573d6000803e3d6000fd5b505050506040513d602081101561033657600080fd5b50516001600160a01b03163314806103ca57506103516108f4565b6001600160a01b03166324d7806c336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561039d57600080fd5b505afa1580156103b1573d6000803e3d6000fd5b505050506040513d60208110156103c757600080fd5b50515b6104055760405162461bcd60e51b81526004018080602001828103825260228152602001806109cc6022913960400191505060405180910390fd5b6000805160206109ac833981519152600061042d60008051602061098c833981519152610919565b4201905061043e8361026c8461091d565b61044b8161026c8461094a565b6040805182815290516001600160a01b038516917fe1009627653eb47f7d0f3b4435749f7984a803c21f84a076cc4dcb0412cf066f919081900360200190a2505050565b6104976108f4565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b1580156104cf57600080fd5b505afa1580156104e3573d6000803e3d6000fd5b505050506040513d60208110156104f957600080fd5b50516001600160a01b031633148061058d57506105146108f4565b6001600160a01b03166324d7806c336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561056057600080fd5b505afa158015610574573d6000803e3d6000fd5b505050506040513d602081101561058a57600080fd5b50515b6105c85760405162461bcd60e51b81526004018080602001828103825260228152602001806109cc6022913960400191505060405180910390fd5b60008051602061098c8339815191526105e081610977565b421015610634576040805162461bcd60e51b815260206004820152601b60248201527f54696d656c6f636b20686173206e6f7420706173736564207965740000000000604482015290519081900360640190fd5b600061065561065060008051602061098c83398151915261091d565b610919565b905061066f60008051602061098c833981519152826108b9565b6040805182815290517f23db4e72aa833f6e2e83af944353bc76dc2be79a8786e5e4a7592d313b769d4c9181900360200190a15050565b6106ae6108f4565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e657600080fd5b505afa1580156106fa573d6000803e3d6000fd5b505050506040513d602081101561071057600080fd5b50516001600160a01b03163314806107a4575061072b6108f4565b6001600160a01b03166324d7806c336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561077757600080fd5b505afa15801561078b573d6000803e3d6000fd5b505050506040513d60208110156107a157600080fd5b50515b6107df5760405162461bcd60e51b81526004018080602001828103825260228152602001806109cc6022913960400191505060405180910390fd5b6000805160206109ac8339815191526107f781610977565b42101561084b576040805162461bcd60e51b815260206004820152601b60248201527f54696d656c6f636b20686173206e6f7420706173736564207965740000000000604482015290519081900360640190fd5b60006108676106506000805160206109ac83398151915261091d565b90506108816000805160206109ac833981519152826108b9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b9055565b6000805160206109ac8339815191525490565b3660008037600080366000845af43d6000803e8080156108ef573d6000f35b3d6000fd5b7ff7ce9e33978bd6e766998cbee51134930bc6e39dc5dcd8f992c5b743b1c6d6985490565b5490565b60408051602080820193909352610111818301528151808203830181526060909101909152805191012090565b60408051602080820193909352610aaa818301528151808203830181526060909101909152805191012090565b60006109856106508361094a565b9291505056fec6fb23975d74c7743b6d6d0c1ad9dc3911bc8a4a970ec5723a30579b45472009360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6d73672e73656e646572206973206e6f742061646d696e50726976696c6564676564a264697066735822122023d8e63816bff71fa50ef48317466b14d97dceb6e1bc345933bfaeec99b73d3f64736f6c63430007060033000000000000000000000000b08ac3391609c6bbb1572c79af4841906e18dcda0000000000000000000000007cb574c01d373b9780c42a3b0939809b5e807217000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000084cf756fdf0000000000000000000000007cb574c01d373b9780c42a3b0939809b5e8072170000000000000000000000004f3e8f405cf5afc05d68142f3783bdfe1381152200000000000000000000000006325440d014e39736583c165c2963ba99faf14e000000000000000000000000000000000000000000000000000000174876e80000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106100435760003560e01c806333e837011461005a578063b183ce8914610084578063d4da3fd1146100b7578063fc7ee160146100cc57610052565b36610052576100506100e1565b005b6100506100e1565b34801561006657600080fd5b506100506004803603602081101561007d57600080fd5b50356100fb565b34801561009057600080fd5b50610050600480360360208110156100a757600080fd5b50356001600160a01b03166102cc565b3480156100c357600080fd5b5061005061048f565b3480156100d857600080fd5b506100506106a6565b6100e96100f9565b6100f96100f46108bd565b6108d0565b565b6101036108f4565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b15801561013b57600080fd5b505afa15801561014f573d6000803e3d6000fd5b505050506040513d602081101561016557600080fd5b50516001600160a01b03163314806101f957506101806108f4565b6001600160a01b03166324d7806c336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156101cc57600080fd5b505afa1580156101e0573d6000803e3d6000fd5b505050506040513d60208110156101f657600080fd5b50515b6102345760405162461bcd60e51b81526004018080602001828103825260228152602001806109cc6022913960400191505060405180910390fd5b600061024d60008051602061098c833981519152610919565b420190506102728261026c60008051602061098c83398151915261091d565b906108b9565b61028d8161026c60008051602061098c83398151915261094a565b604080518381526020810183905281517f128fc4b147dbbb230bb22e2f11fc1f54234533ab01ca868860c30a8b93fc3c11929181900390910190a15050565b6102d46108f4565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b15801561030c57600080fd5b505afa158015610320573d6000803e3d6000fd5b505050506040513d602081101561033657600080fd5b50516001600160a01b03163314806103ca57506103516108f4565b6001600160a01b03166324d7806c336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561039d57600080fd5b505afa1580156103b1573d6000803e3d6000fd5b505050506040513d60208110156103c757600080fd5b50515b6104055760405162461bcd60e51b81526004018080602001828103825260228152602001806109cc6022913960400191505060405180910390fd5b6000805160206109ac833981519152600061042d60008051602061098c833981519152610919565b4201905061043e8361026c8461091d565b61044b8161026c8461094a565b6040805182815290516001600160a01b038516917fe1009627653eb47f7d0f3b4435749f7984a803c21f84a076cc4dcb0412cf066f919081900360200190a2505050565b6104976108f4565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b1580156104cf57600080fd5b505afa1580156104e3573d6000803e3d6000fd5b505050506040513d60208110156104f957600080fd5b50516001600160a01b031633148061058d57506105146108f4565b6001600160a01b03166324d7806c336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561056057600080fd5b505afa158015610574573d6000803e3d6000fd5b505050506040513d602081101561058a57600080fd5b50515b6105c85760405162461bcd60e51b81526004018080602001828103825260228152602001806109cc6022913960400191505060405180910390fd5b60008051602061098c8339815191526105e081610977565b421015610634576040805162461bcd60e51b815260206004820152601b60248201527f54696d656c6f636b20686173206e6f7420706173736564207965740000000000604482015290519081900360640190fd5b600061065561065060008051602061098c83398151915261091d565b610919565b905061066f60008051602061098c833981519152826108b9565b6040805182815290517f23db4e72aa833f6e2e83af944353bc76dc2be79a8786e5e4a7592d313b769d4c9181900360200190a15050565b6106ae6108f4565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e657600080fd5b505afa1580156106fa573d6000803e3d6000fd5b505050506040513d602081101561071057600080fd5b50516001600160a01b03163314806107a4575061072b6108f4565b6001600160a01b03166324d7806c336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561077757600080fd5b505afa15801561078b573d6000803e3d6000fd5b505050506040513d60208110156107a157600080fd5b50515b6107df5760405162461bcd60e51b81526004018080602001828103825260228152602001806109cc6022913960400191505060405180910390fd5b6000805160206109ac8339815191526107f781610977565b42101561084b576040805162461bcd60e51b815260206004820152601b60248201527f54696d656c6f636b20686173206e6f7420706173736564207965740000000000604482015290519081900360640190fd5b60006108676106506000805160206109ac83398151915261091d565b90506108816000805160206109ac833981519152826108b9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b9055565b6000805160206109ac8339815191525490565b3660008037600080366000845af43d6000803e8080156108ef573d6000f35b3d6000fd5b7ff7ce9e33978bd6e766998cbee51134930bc6e39dc5dcd8f992c5b743b1c6d6985490565b5490565b60408051602080820193909352610111818301528151808203830181526060909101909152805191012090565b60408051602080820193909352610aaa818301528151808203830181526060909101909152805191012090565b60006109856106508361094a565b9291505056fec6fb23975d74c7743b6d6d0c1ad9dc3911bc8a4a970ec5723a30579b45472009360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6d73672e73656e646572206973206e6f742061646d696e50726976696c6564676564a264697066735822122023d8e63816bff71fa50ef48317466b14d97dceb6e1bc345933bfaeec99b73d3f64736f6c63430007060033

Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.