ETH Price: $2,360.39 (+1.30%)

Contract

0x81291ceb9bB265185A9D07b91B5b50Df94f005BF

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Token Holdings

Sponsored

Transaction Hash
Method
Block
From
To
New Vault1060651902023-06-25 21:39:17444 days ago1687729157IN
0x81291ceb...f94f005BF
0 ETH0.0000330794460.00000006
New Vault1046695902023-06-05 0:59:08465 days ago1685926748IN
0x81291ceb...f94f005BF
0 ETH0.000115036090.001
New Vault1046684952023-06-05 0:51:18465 days ago1685926278IN
0x81291ceb...f94f005BF
0 ETH0.0001535780630.001
New Vault816986662023-03-17 17:01:57544 days ago1679072517IN
0x81291ceb...f94f005BF
0 ETH0.0001532327210.001
New Vault741358212023-02-13 17:10:48576 days ago1676308248IN
0x81291ceb...f94f005BF
0 ETH0.0002258293910.001
Transfer Ownersh...246538032022-09-22 22:05:02720 days ago1663884302IN
0x81291ceb...f94f005BF
0 ETH0.000035771610.00100155
New Vault224526182022-09-09 3:03:15734 days ago1662692595IN
0x81291ceb...f94f005BF
0 ETH0.0000623184760.001
New Vault224526062022-09-09 3:03:00734 days ago1662692580IN
0x81291ceb...f94f005BF
0 ETH0.0000602485820.001
New Vault224525992022-09-09 3:03:00734 days ago1662692580IN
0x81291ceb...f94f005BF
0 ETH0.0000557700760.001
New Vault224525872022-09-09 3:02:44734 days ago1662692564IN
0x81291ceb...f94f005BF
0 ETH0.0000557700750.001
New Vault224525302022-09-09 3:01:18734 days ago1662692478IN
0x81291ceb...f94f005BF
0 ETH0.0000754656710.001
New Release224515812022-09-09 2:41:21734 days ago1662691281IN
0x81291ceb...f94f005BF
0 ETH0.000050421890.001
0x60806040224503492022-09-09 2:18:15734 days ago1662689895IN
 Create: ReleaseRegistry
0 ETH0.0011760925570.001

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
1213556722024-06-13 20:22:0190 days ago1718310121
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1213556722024-06-13 20:22:0190 days ago1718310121
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1172015482024-03-09 16:31:13186 days ago1710001873
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1172015482024-03-09 16:31:13186 days ago1710001873
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1148252552024-01-14 16:21:27241 days ago1705249287
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1144735462024-01-06 12:57:49249 days ago1704545869
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1118063432023-11-05 19:11:03311 days ago1699211463
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1118063432023-11-05 19:11:03311 days ago1699211463
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1115188942023-10-30 3:29:25318 days ago1698636565
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1115188942023-10-30 3:29:25318 days ago1698636565
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1089580442023-08-31 20:47:45377 days ago1693514865
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1080990412023-08-11 23:34:19397 days ago1691796859
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1080990412023-08-11 23:34:19397 days ago1691796859
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1077933572023-08-04 21:44:51404 days ago1691185491
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1075160692023-07-29 11:41:55410 days ago1690630915
0x81291ceb...f94f005BF
0 ETH
1075160692023-07-29 11:41:55410 days ago1690630915
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1075160692023-07-29 11:41:55410 days ago1690630915
0x81291ceb...f94f005BF
0 ETH
1074421602023-07-27 18:38:17412 days ago1690483097
0x81291ceb...f94f005BF
0 ETH
1074421602023-07-27 18:38:17412 days ago1690483097
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1074421602023-07-27 18:38:17412 days ago1690483097
0x81291ceb...f94f005BF
0 ETH
1074421602023-07-27 18:38:17412 days ago1690483097
0x81291ceb...f94f005BF
0 ETH
1074421602023-07-27 18:38:17412 days ago1690483097
0x81291ceb...f94f005BF
 Contract Creation0 ETH
1074421602023-07-27 18:38:17412 days ago1690483097
0x81291ceb...f94f005BF
0 ETH
1074421602023-07-27 18:38:17412 days ago1690483097
0x81291ceb...f94f005BF
0 ETH
1074421602023-07-27 18:38:17412 days ago1690483097
0x81291ceb...f94f005BF
 Contract Creation0 ETH
View All Internal Transactions

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ReleaseRegistry

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at optimistic.etherscan.io on 2022-09-09
*/

// File: github/pandadefi/registry/contracts/IVault.sol


pragma solidity ^0.8.15;

interface IVault {
    function token() external view returns (address);

    function apiVersion() external view returns (string memory);

    function governance() external view returns (address);

    function initialize(
        address _token,
        address _governance,
        address _rewards,
        string calldata _name,
        string calldata _symbol,
        address _guardian
    ) external;
}

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: github/pandadefi/registry/contracts/ReleaseRegistry.sol


pragma solidity ^0.8.15;



contract ReleaseRegistry is Ownable {
    uint256 public numReleases;
    mapping(uint256 => address) public releases;

    event NewRelease(
        uint256 indexed releaseId,
        address template,
        string apiVersion
    );

    event NewClone(address indexed vault);

    /**
    @notice Returns the api version of the latest release.
    @dev Throws if no releases are registered yet.
    @return The api version of the latest release.
    NOTE: Throws if there has not been a release yet
    */
    function latestRelease() external view returns (string memory) {
        return IVault(releases[numReleases - 1]).apiVersion(); // dev: no release
    }

    /**
    @notice
        Add a previously deployed Vault as the template contract for the latest release,
        to be used by further "forwarder-style" delegatecall proxy contracts that can be
        deployed from the registry throw other methods (to save gas).
    @dev
        Throws if caller isn't `governance`.
        Throws if `vault`'s governance isn't `governance`.
        Throws if the api version is the same as the previous release.
        Emits a `NewVault` event.
    @param _vault The vault that will be used as the template contract for the next release.
    */
    function newRelease(address _vault) external onlyOwner {
        // Check if the release is different from the current one
        // NOTE: This doesn't check for strict semver-style linearly increasing release versions
        uint256 releaseId = numReleases; // Next id in series
        if (releaseId > 0) {
            require(
                keccak256(
                    bytes(IVault(releases[releaseId - 1]).apiVersion())
                ) != keccak256(bytes(IVault(_vault).apiVersion())),
                "same api version"
            );
        }
        // Update latest release
        releases[releaseId] = _vault;
        numReleases = releaseId + 1;
        // Log the release for external listeners (e.g. Graph)
        emit NewRelease(releaseId, _vault, IVault(_vault).apiVersion());
    }

    function _newProxyVault(
        address _token,
        address _governance,
        address _rewards,
        address _guardian,
        string memory _name,
        string memory _symbol,
        uint256 _releaseTarget
    ) internal returns (address) {
        address vault;
        {
            address release = releases[_releaseTarget];
            require(release != address(0), "unknown release");
            vault = _clone(release);
            emit NewClone(vault);
        }
        // NOTE: Must initialize the Vault atomically with deploying it
        IVault(vault).initialize(
            _token,
            _governance,
            _rewards,
            _name,
            _symbol,
            _guardian
        );
        return vault;
    }

    function newVault(
        address _token,
        address _guardian,
        address _rewards,
        string calldata _name,
        string calldata _symbol
    ) external returns (address) {
        return
            newVault(
                _token,
                msg.sender,
                _guardian,
                _rewards,
                _name,
                _symbol,
                0
            );
    }

    /**
    @notice
        Create a new vault for the given token using the latest release in the registry,
        as a simple "forwarder-style" delegatecall proxy to the latest release. Also adds
        the new vault to the list of "endorsed" vaults for that token.
    @dev
        Throws if no releases are registered yet.
    @param _token The token that may be deposited into the new Vault.
    @param _governance vault governance
    @param _guardian The address authorized for guardian interactions in the new Vault.
    @param _rewards The address to use for collecting rewards in the new Vault
    @param _name Specify a custom Vault name. Set to empty string for default choice.
    @param _symbol Specify a custom Vault symbol name. Set to empty string for default choice.
    @param _releaseDelta Specify the number of releases prior to the latest to use as a target. Default is latest.
    @return The address of the newly-deployed vault
     */
    function newVault(
        address _token,
        address _governance,
        address _guardian,
        address _rewards,
        string calldata _name,
        string calldata _symbol,
        uint256 _releaseDelta
    ) public returns (address) {
        // NOTE: Underflow if no releases created yet, or targeting prior to release history
        uint256 releaseTarget = numReleases - 1 - _releaseDelta; // dev: no releases
        address vault = _newProxyVault(
            _token,
            _governance,
            _rewards,
            _guardian,
            _name,
            _symbol,
            releaseTarget
        );

        return vault;
    }

    function _clone(address _target) internal returns (address _newVault) {
        // Copied from https://github.com/optionality/clone-factory/blob/master/contracts/CloneFactory.sol
        bytes20 addressBytes = bytes20(address(_target));

        assembly {
            // EIP-1167 bytecode
            let clone_code := mload(0x40)
            mstore(
                clone_code,
                0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000
            )
            mstore(add(clone_code, 0x14), addressBytes)
            mstore(
                add(clone_code, 0x28),
                0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000
            )
            _newVault := create(0, clone_code, 0x37)
        }
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vault","type":"address"}],"name":"NewClone","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"releaseId","type":"uint256"},{"indexed":false,"internalType":"address","name":"template","type":"address"},{"indexed":false,"internalType":"string","name":"apiVersion","type":"string"}],"name":"NewRelease","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"latestRelease","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"newRelease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_guardian","type":"address"},{"internalType":"address","name":"_rewards","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"newVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_governance","type":"address"},{"internalType":"address","name":"_guardian","type":"address"},{"internalType":"address","name":"_rewards","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_releaseDelta","type":"uint256"}],"name":"newVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"numReleases","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"releases","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610bef8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80637be0ca5e116100665780637be0ca5e146100fc5780638da5cb5b14610111578063b6a9f40f14610122578063e1c6ba5d1461014b578063f2fde38b1461015e57600080fd5b8063108ca11e1461009857806333990d4b146100c857806356e0a94b146100dd578063715018a6146100f4575b600080fd5b6100ab6100a6366004610824565b610171565b6040516001600160a01b0390911681526020015b60405180910390f35b6100db6100d63660046108c6565b610191565b005b6100e660015481565b6040519081526020016100bf565b6100db6103cd565b6101046103e1565b6040516100bf9190610944565b6000546001600160a01b03166100ab565b6100ab610130366004610957565b6002602052600090815260409020546001600160a01b031681565b6100ab610159366004610970565b610481565b6100db61016c3660046108c6565b61053b565b600061018588338989898989896000610481565b98975050505050505050565b6101996105b4565b60015480156102f257816001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa1580156101e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102089190810190610a40565b80516020909101206002600061021f600185610b03565b815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa15801561027e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102a69190810190610a40565b80519060200120036102f25760405162461bcd60e51b815260206004820152601060248201526f39b0b6b29030b834903b32b939b4b7b760811b60448201526064015b60405180910390fd5b600081815260026020526040902080546001600160a01b0319166001600160a01b038416179055610324816001610b1a565b600181905550807fa6fbd216b6734f34092f1be6b7247e1551a6d4f2d5000c53721cfdc119a5b7cf83846001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa15801561038b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103b39190810190610a40565b6040516103c1929190610b32565b60405180910390a25050565b6103d56105b4565b6103df600061060e565b565b606060026000600180546103f59190610b03565b815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa158015610454573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047c9190810190610a40565b905090565b60008082600180546104939190610b03565b61049d9190610b03565b9050600061052b8c8c8b8d8c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925061065e915050565b9c9b505050505050505050505050565b6105436105b4565b6001600160a01b0381166105a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102e9565b6105b18161060e565b50565b6000546001600160a01b031633146103df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008181526002602052604081205481906001600160a01b0316806106b75760405162461bcd60e51b815260206004820152600f60248201526e756e6b6e6f776e2072656c6561736560881b60448201526064016102e9565b6106c08161076d565b6040519092506001600160a01b038316907fcc1e9c890bc4f4943c457abb8d17f97703b9f7144e1f4a69e50c6e4988ef38b790600090a25060405163a5b81fdf60e01b81526001600160a01b0382169063a5b81fdf9061072e908c908c908c908b908b908e90600401610b5e565b600060405180830381600087803b15801561074857600080fd5b505af115801561075c573d6000803e3d6000fd5b50929b9a5050505050505050505050565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f0949350505050565b80356001600160a01b03811681146107d657600080fd5b919050565b60008083601f8401126107ed57600080fd5b50813567ffffffffffffffff81111561080557600080fd5b60208301915083602082850101111561081d57600080fd5b9250929050565b600080600080600080600060a0888a03121561083f57600080fd5b610848886107bf565b9650610856602089016107bf565b9550610864604089016107bf565b9450606088013567ffffffffffffffff8082111561088157600080fd5b61088d8b838c016107db565b909650945060808a01359150808211156108a657600080fd5b506108b38a828b016107db565b989b979a50959850939692959293505050565b6000602082840312156108d857600080fd5b6108e1826107bf565b9392505050565b60005b838110156109035781810151838201526020016108eb565b83811115610912576000848401525b50505050565b600081518084526109308160208601602086016108e8565b601f01601f19169290920160200192915050565b6020815260006108e16020830184610918565b60006020828403121561096957600080fd5b5035919050565b600080600080600080600080600060e08a8c03121561098e57600080fd5b6109978a6107bf565b98506109a560208b016107bf565b97506109b360408b016107bf565b96506109c160608b016107bf565b955060808a013567ffffffffffffffff808211156109de57600080fd5b6109ea8d838e016107db565b909750955060a08c0135915080821115610a0357600080fd5b50610a108c828d016107db565b9a9d999c50979a9699959894979660c00135949350505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610a5257600080fd5b815167ffffffffffffffff80821115610a6a57600080fd5b818401915084601f830112610a7e57600080fd5b815181811115610a9057610a90610a2a565b604051601f8201601f19908116603f01168101908382118183101715610ab857610ab8610a2a565b81604052828152876020848701011115610ad157600080fd5b610ae28360208301602088016108e8565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610b1557610b15610aed565b500390565b60008219821115610b2d57610b2d610aed565b500190565b6001600160a01b0383168152604060208201819052600090610b5690830184610918565b949350505050565b600060018060a01b0380891683528088166020840152808716604084015260c06060840152610b9060c0840187610918565b8381036080850152610ba28187610918565b92505080841660a08401525097965050505050505056fea26469706673582212206fa443e3ee12c0d1af10d80a526ef66dd79ece9ab3c86b1772d355954bd021e464736f6c634300080f0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100935760003560e01c80637be0ca5e116100665780637be0ca5e146100fc5780638da5cb5b14610111578063b6a9f40f14610122578063e1c6ba5d1461014b578063f2fde38b1461015e57600080fd5b8063108ca11e1461009857806333990d4b146100c857806356e0a94b146100dd578063715018a6146100f4575b600080fd5b6100ab6100a6366004610824565b610171565b6040516001600160a01b0390911681526020015b60405180910390f35b6100db6100d63660046108c6565b610191565b005b6100e660015481565b6040519081526020016100bf565b6100db6103cd565b6101046103e1565b6040516100bf9190610944565b6000546001600160a01b03166100ab565b6100ab610130366004610957565b6002602052600090815260409020546001600160a01b031681565b6100ab610159366004610970565b610481565b6100db61016c3660046108c6565b61053b565b600061018588338989898989896000610481565b98975050505050505050565b6101996105b4565b60015480156102f257816001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa1580156101e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102089190810190610a40565b80516020909101206002600061021f600185610b03565b815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa15801561027e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102a69190810190610a40565b80519060200120036102f25760405162461bcd60e51b815260206004820152601060248201526f39b0b6b29030b834903b32b939b4b7b760811b60448201526064015b60405180910390fd5b600081815260026020526040902080546001600160a01b0319166001600160a01b038416179055610324816001610b1a565b600181905550807fa6fbd216b6734f34092f1be6b7247e1551a6d4f2d5000c53721cfdc119a5b7cf83846001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa15801561038b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103b39190810190610a40565b6040516103c1929190610b32565b60405180910390a25050565b6103d56105b4565b6103df600061060e565b565b606060026000600180546103f59190610b03565b815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa158015610454573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047c9190810190610a40565b905090565b60008082600180546104939190610b03565b61049d9190610b03565b9050600061052b8c8c8b8d8c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925061065e915050565b9c9b505050505050505050505050565b6105436105b4565b6001600160a01b0381166105a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102e9565b6105b18161060e565b50565b6000546001600160a01b031633146103df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008181526002602052604081205481906001600160a01b0316806106b75760405162461bcd60e51b815260206004820152600f60248201526e756e6b6e6f776e2072656c6561736560881b60448201526064016102e9565b6106c08161076d565b6040519092506001600160a01b038316907fcc1e9c890bc4f4943c457abb8d17f97703b9f7144e1f4a69e50c6e4988ef38b790600090a25060405163a5b81fdf60e01b81526001600160a01b0382169063a5b81fdf9061072e908c908c908c908b908b908e90600401610b5e565b600060405180830381600087803b15801561074857600080fd5b505af115801561075c573d6000803e3d6000fd5b50929b9a5050505050505050505050565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f0949350505050565b80356001600160a01b03811681146107d657600080fd5b919050565b60008083601f8401126107ed57600080fd5b50813567ffffffffffffffff81111561080557600080fd5b60208301915083602082850101111561081d57600080fd5b9250929050565b600080600080600080600060a0888a03121561083f57600080fd5b610848886107bf565b9650610856602089016107bf565b9550610864604089016107bf565b9450606088013567ffffffffffffffff8082111561088157600080fd5b61088d8b838c016107db565b909650945060808a01359150808211156108a657600080fd5b506108b38a828b016107db565b989b979a50959850939692959293505050565b6000602082840312156108d857600080fd5b6108e1826107bf565b9392505050565b60005b838110156109035781810151838201526020016108eb565b83811115610912576000848401525b50505050565b600081518084526109308160208601602086016108e8565b601f01601f19169290920160200192915050565b6020815260006108e16020830184610918565b60006020828403121561096957600080fd5b5035919050565b600080600080600080600080600060e08a8c03121561098e57600080fd5b6109978a6107bf565b98506109a560208b016107bf565b97506109b360408b016107bf565b96506109c160608b016107bf565b955060808a013567ffffffffffffffff808211156109de57600080fd5b6109ea8d838e016107db565b909750955060a08c0135915080821115610a0357600080fd5b50610a108c828d016107db565b9a9d999c50979a9699959894979660c00135949350505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610a5257600080fd5b815167ffffffffffffffff80821115610a6a57600080fd5b818401915084601f830112610a7e57600080fd5b815181811115610a9057610a90610a2a565b604051601f8201601f19908116603f01168101908382118183101715610ab857610ab8610a2a565b81604052828152876020848701011115610ad157600080fd5b610ae28360208301602088016108e8565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610b1557610b15610aed565b500390565b60008219821115610b2d57610b2d610aed565b500190565b6001600160a01b0383168152604060208201819052600090610b5690830184610918565b949350505050565b600060018060a01b0380891683528088166020840152808716604084015260c06060840152610b9060c0840187610918565b8381036080850152610ba28187610918565b92505080841660a08401525097965050505050505056fea26469706673582212206fa443e3ee12c0d1af10d80a526ef66dd79ece9ab3c86b1772d355954bd021e464736f6c634300080f0033

Deployed Bytecode Sourcemap

4214:5820:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7136:439;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1659:32:1;;;1641:51;;1629:2;1614:18;7136:439:0;;;;;;;;5506:825;;;;;;:::i;:::-;;:::i;:::-;;4257:26;;;;;;;;;2040:25:1;;;2028:2;2013:18;4257:26:0;1894:177:1;3295:103:0;;;:::i;4746:154::-;;;:::i;:::-;;;;;;;:::i;2647:87::-;2693:7;2720:6;-1:-1:-1;;;;;2720:6:0;2647:87;;4290:43;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;4290:43:0;;;8561:687;;;;;;:::i;:::-;;:::i;3553:201::-;;;;;;:::i;:::-;;:::i;7136:439::-;7325:7;7365:202;7392:6;7417:10;7446:9;7474:8;7501:5;;7525:7;;7551:1;7365:8;:202::i;:::-;7345:222;7136:439;-1:-1:-1;;;;;;;;7136:439:0:o;5506:825::-;2533:13;:11;:13::i;:::-;5757:11:::1;::::0;5804:13;;5800:275:::1;;5989:6;-1:-1:-1::0;;;;;5982:25:0::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;5982:27:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;5966:45:::0;;::::1;::::0;;::::1;::::0;5905:8:::1;:23;5914:13;5926:1;5914:9:::0;:13:::1;:::i;:::-;5905:23;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5905:23:0::1;-1:-1:-1::0;;;;;5898:42:0::1;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;5898:44:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;5860:102;;;;;;:151:::0;5834:229:::1;;;::::0;-1:-1:-1;;;5834:229:0;;5591:2:1;5834:229:0::1;::::0;::::1;5573:21:1::0;5630:2;5610:18;;;5603:30;-1:-1:-1;;;5649:18:1;;;5642:46;5705:18;;5834:229:0::1;;;;;;;;;6119:19;::::0;;;:8:::1;:19;::::0;;;;:28;;-1:-1:-1;;;;;;6119:28:0::1;-1:-1:-1::0;;;;;6119:28:0;::::1;;::::0;;6172:13:::1;6119:19:::0;-1:-1:-1;6172:13:0::1;:::i;:::-;6158:11;:27;;;;6276:9;6265:58;6287:6;6302;-1:-1:-1::0;;;;;6295:25:0::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;6295:27:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;6265:58;;;;;;;:::i;:::-;;;;;;;;5561:770;5506:825:::0;:::o;3295:103::-;2533:13;:11;:13::i;:::-;3360:30:::1;3387:1;3360:18;:30::i;:::-;3295:103::o:0;4746:154::-;4794:13;4834:8;:25;4857:1;4843:11;;:15;;;;:::i;:::-;4834:25;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4834:25:0;-1:-1:-1;;;;;4827:44:0;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4827:46:0;;;;;;;;;;;;:::i;:::-;4820:53;;4746:154;:::o;8561:687::-;8810:7;8924:21;8966:13;8962:1;8948:11;;:15;;;;:::i;:::-;:31;;;;:::i;:::-;8924:55;;9010:13;9026:189;9055:6;9076:11;9102:8;9125:9;9149:5;;9026:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9169:7;;9026:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9191:13:0;;-1:-1:-1;9026:14:0;;-1:-1:-1;;9026:189:0:i;:::-;9010:205;8561:687;-1:-1:-1;;;;;;;;;;;;8561:687:0:o;3553:201::-;2533:13;:11;:13::i;:::-;-1:-1:-1;;;;;3642:22:0;::::1;3634:73;;;::::0;-1:-1:-1;;;3634:73:0;;6391:2:1;3634:73:0::1;::::0;::::1;6373:21:1::0;6430:2;6410:18;;;6403:30;6469:34;6449:18;;;6442:62;-1:-1:-1;;;6520:18:1;;;6513:36;6566:19;;3634:73:0::1;6189:402:1::0;3634:73:0::1;3718:28;3737:8;3718:18;:28::i;:::-;3553:201:::0;:::o;2812:132::-;2693:7;2720:6;-1:-1:-1;;;;;2720:6:0;1278:10;2876:23;2868:68;;;;-1:-1:-1;;;2868:68:0;;6798:2:1;2868:68:0;;;6780:21:1;;;6817:18;;;6810:30;6876:34;6856:18;;;6849:62;6928:18;;2868:68:0;6596:356:1;3914:191:0;3988:16;4007:6;;-1:-1:-1;;;;;4024:17:0;;;-1:-1:-1;;;;;;4024:17:0;;;;;;4057:40;;4007:6;;;;;;;4057:40;;3988:16;4057:40;3977:128;3914:191;:::o;6339:789::-;6593:7;6670:24;;;:8;:24;;;;;;6593:7;;-1:-1:-1;;;;;6670:24:0;;6709:49;;;;-1:-1:-1;;;6709:49:0;;7159:2:1;6709:49:0;;;7141:21:1;7198:2;7178:18;;;7171:30;-1:-1:-1;;;7217:18:1;;;7210:45;7272:18;;6709:49:0;6957:339:1;6709:49:0;6781:15;6788:7;6781:6;:15::i;:::-;6816;;6773:23;;-1:-1:-1;;;;;;6816:15:0;;;;;;;;-1:-1:-1;6926:171:0;;-1:-1:-1;;;6926:171:0;;-1:-1:-1;;;;;6926:24:0;;;;;:171;;6965:6;;6986:11;;7012:8;;7035:5;;7055:7;;7077:9;;6926:171;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7115:5:0;;6339:789;-1:-1:-1;;;;;;;;;;;6339:789:0:o;9256:775::-;9307:17;9445:20;9484:7;9468:25;;9445:48;;9588:4;9582:11;-1:-1:-1;;;9632:10:0;9607:135;9786:12;9779:4;9767:10;9763:21;9756:43;-1:-1:-1;;;9854:4:0;9842:10;9838:21;9813:146;10008:4;9996:10;9993:1;9986:27;9973:40;9256:775;-1:-1:-1;;;;9256:775:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:348::-;244:8;254:6;308:3;301:4;293:6;289:17;285:27;275:55;;326:1;323;316:12;275:55;-1:-1:-1;349:20:1;;392:18;381:30;;378:50;;;424:1;421;414:12;378:50;461:4;453:6;449:17;437:29;;513:3;506:4;497:6;489;485:19;481:30;478:39;475:59;;;530:1;527;520:12;475:59;192:348;;;;;:::o;545:945::-;664:6;672;680;688;696;704;712;765:3;753:9;744:7;740:23;736:33;733:53;;;782:1;779;772:12;733:53;805:29;824:9;805:29;:::i;:::-;795:39;;853:38;887:2;876:9;872:18;853:38;:::i;:::-;843:48;;910:38;944:2;933:9;929:18;910:38;:::i;:::-;900:48;;999:2;988:9;984:18;971:32;1022:18;1063:2;1055:6;1052:14;1049:34;;;1079:1;1076;1069:12;1049:34;1118:59;1169:7;1160:6;1149:9;1145:22;1118:59;:::i;:::-;1196:8;;-1:-1:-1;1092:85:1;-1:-1:-1;1284:3:1;1269:19;;1256:33;;-1:-1:-1;1301:16:1;;;1298:36;;;1330:1;1327;1320:12;1298:36;;1369:61;1422:7;1411:8;1400:9;1396:24;1369:61;:::i;:::-;545:945;;;;-1:-1:-1;545:945:1;;-1:-1:-1;545:945:1;;;;1343:87;;-1:-1:-1;;;545:945:1:o;1703:186::-;1762:6;1815:2;1803:9;1794:7;1790:23;1786:32;1783:52;;;1831:1;1828;1821:12;1783:52;1854:29;1873:9;1854:29;:::i;:::-;1844:39;1703:186;-1:-1:-1;;;1703:186:1:o;2076:258::-;2148:1;2158:113;2172:6;2169:1;2166:13;2158:113;;;2248:11;;;2242:18;2229:11;;;2222:39;2194:2;2187:10;2158:113;;;2289:6;2286:1;2283:13;2280:48;;;2324:1;2315:6;2310:3;2306:16;2299:27;2280:48;;2076:258;;;:::o;2339:::-;2381:3;2419:5;2413:12;2446:6;2441:3;2434:19;2462:63;2518:6;2511:4;2506:3;2502:14;2495:4;2488:5;2484:16;2462:63;:::i;:::-;2579:2;2558:15;-1:-1:-1;;2554:29:1;2545:39;;;;2586:4;2541:50;;2339:258;-1:-1:-1;;2339:258:1:o;2602:220::-;2751:2;2740:9;2733:21;2714:4;2771:45;2812:2;2801:9;2797:18;2789:6;2771:45;:::i;2827:180::-;2886:6;2939:2;2927:9;2918:7;2914:23;2910:32;2907:52;;;2955:1;2952;2945:12;2907:52;-1:-1:-1;2978:23:1;;2827:180;-1:-1:-1;2827:180:1:o;3012:1089::-;3149:6;3157;3165;3173;3181;3189;3197;3205;3213;3266:3;3254:9;3245:7;3241:23;3237:33;3234:53;;;3283:1;3280;3273:12;3234:53;3306:29;3325:9;3306:29;:::i;:::-;3296:39;;3354:38;3388:2;3377:9;3373:18;3354:38;:::i;:::-;3344:48;;3411:38;3445:2;3434:9;3430:18;3411:38;:::i;:::-;3401:48;;3468:38;3502:2;3491:9;3487:18;3468:38;:::i;:::-;3458:48;;3557:3;3546:9;3542:19;3529:33;3581:18;3622:2;3614:6;3611:14;3608:34;;;3638:1;3635;3628:12;3608:34;3677:59;3728:7;3719:6;3708:9;3704:22;3677:59;:::i;:::-;3755:8;;-1:-1:-1;3651:85:1;-1:-1:-1;3843:3:1;3828:19;;3815:33;;-1:-1:-1;3860:16:1;;;3857:36;;;3889:1;3886;3879:12;3857:36;;3928:61;3981:7;3970:8;3959:9;3955:24;3928:61;:::i;:::-;3012:1089;;;;-1:-1:-1;3012:1089:1;;;;;;;;4008:8;4090:3;4075:19;4062:33;;3012:1089;-1:-1:-1;;;;3012:1089:1:o;4106:127::-;4167:10;4162:3;4158:20;4155:1;4148:31;4198:4;4195:1;4188:15;4222:4;4219:1;4212:15;4238:884;4318:6;4371:2;4359:9;4350:7;4346:23;4342:32;4339:52;;;4387:1;4384;4377:12;4339:52;4420:9;4414:16;4449:18;4490:2;4482:6;4479:14;4476:34;;;4506:1;4503;4496:12;4476:34;4544:6;4533:9;4529:22;4519:32;;4589:7;4582:4;4578:2;4574:13;4570:27;4560:55;;4611:1;4608;4601:12;4560:55;4640:2;4634:9;4662:2;4658;4655:10;4652:36;;;4668:18;;:::i;:::-;4743:2;4737:9;4711:2;4797:13;;-1:-1:-1;;4793:22:1;;;4817:2;4789:31;4785:40;4773:53;;;4841:18;;;4861:22;;;4838:46;4835:72;;;4887:18;;:::i;:::-;4927:10;4923:2;4916:22;4962:2;4954:6;4947:18;5002:7;4997:2;4992;4988;4984:11;4980:20;4977:33;4974:53;;;5023:1;5020;5013:12;4974:53;5036:55;5088:2;5083;5075:6;5071:15;5066:2;5062;5058:11;5036:55;:::i;:::-;5110:6;4238:884;-1:-1:-1;;;;;;;4238:884:1:o;5127:127::-;5188:10;5183:3;5179:20;5176:1;5169:31;5219:4;5216:1;5209:15;5243:4;5240:1;5233:15;5259:125;5299:4;5327:1;5324;5321:8;5318:34;;;5332:18;;:::i;:::-;-1:-1:-1;5369:9:1;;5259:125::o;5734:128::-;5774:3;5805:1;5801:6;5798:1;5795:13;5792:39;;;5811:18;;:::i;:::-;-1:-1:-1;5847:9:1;;5734:128::o;5867:317::-;-1:-1:-1;;;;;6044:32:1;;6026:51;;6113:2;6108;6093:18;;6086:30;;;-1:-1:-1;;6133:45:1;;6159:18;;6151:6;6133:45;:::i;:::-;6125:53;5867:317;-1:-1:-1;;;;5867:317:1:o;7301:745::-;7573:4;7619:1;7615;7610:3;7606:11;7602:19;7660:2;7652:6;7648:15;7637:9;7630:34;7712:2;7704:6;7700:15;7695:2;7684:9;7680:18;7673:43;7764:2;7756:6;7752:15;7747:2;7736:9;7732:18;7725:43;7804:3;7799:2;7788:9;7784:18;7777:31;7831:46;7872:3;7861:9;7857:19;7849:6;7831:46;:::i;:::-;7926:9;7918:6;7914:22;7908:3;7897:9;7893:19;7886:51;7954:33;7980:6;7972;7954:33;:::i;:::-;7946:41;;;8036:2;8028:6;8024:15;8018:3;8007:9;8003:19;7996:44;;7301:745;;;;;;;;;:::o

Swarm Source

ipfs://6fa443e3ee12c0d1af10d80a526ef66dd79ece9ab3c86b1772d355954bd021e4

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.