ETH Price: $3,335.36 (-1.24%)

Contract

0x89062F9dd198BcEFb07417e488A6bE71C1c9F1c3
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UserProxy

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 2: UserProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.6.5;

import "./UserProxyStorage.sol";

/**
 * @dev UserProxy contract
 */
contract UserProxy {
    // Below are the variables which consume storage slots.
    address public operator;
    string public version;  // Current version of the contract

    receive() external payable {}


    /************************************************************
    *          Access control and ownership management          *
    *************************************************************/
    modifier onlyOperator() {
        require(operator == msg.sender, "UserProxy: not the operator");
        _;
    }

    function transferOwnership(address _newOperator) external onlyOperator {
        require(_newOperator != address(0), "UserProxy: operator can not be zero address");
        operator = _newOperator;
    }


    /************************************************************
    *              Constructor and init functions               *
    *************************************************************/
    /// @dev Replacing constructor and initialize the contract. This function should only be called once.
    function initialize(address _operator) external {
        require(_operator != address(0), "UserProxy: _operator should not be 0");
        require(
            keccak256(abi.encodePacked(version)) == keccak256(abi.encodePacked("")),
            "UserProxy: not upgrading from default version"
        );

        // Set operator
        operator = _operator;
        // Upgrade version
        version = "5.0.0";
    }


    /************************************************************
    *                     Getter functions                      *
    *************************************************************/
    function ammWrapperAddr() public view returns (address) {
        return AMMWrapperStorage.getStorage().ammWrapperAddr;
    }

    function isAMMEnabled() public view returns (bool) {
        return AMMWrapperStorage.getStorage().isEnabled;
    }

    function pmmAddr() public view returns (address) {
        return PMMStorage.getStorage().pmmAddr;
    }

    function isPMMEnabled() public view returns (bool) {
        return PMMStorage.getStorage().isEnabled;
    }


    /************************************************************
    *           Management functions for Operator               *
    *************************************************************/
    function setAMMStatus(bool _enable) public onlyOperator {
        AMMWrapperStorage.getStorage().isEnabled = _enable;
    }

    /**
     * @dev Update AMMWrapper contract address. Used only when ABI of AMMWrapeer remain unchanged.
     * Otherwise, UserProxy contract should be upgraded altogether.
     */
    function upgradeAMMWrapper(address _newAMMWrapperAddr, bool _enable) external onlyOperator {
        AMMWrapperStorage.getStorage().ammWrapperAddr = _newAMMWrapperAddr;
        AMMWrapperStorage.getStorage().isEnabled = _enable;
    }

    function setPMMStatus(bool _enable) public onlyOperator {
        PMMStorage.getStorage().isEnabled = _enable;
    }

    /**
     * @dev Update PMM contract address. Used only when ABI of PMM remain unchanged.
     * Otherwise, UserProxy contract should be upgraded altogether.
     */
    function upgradePMM(address _newPMMAddr, bool _enable) external onlyOperator {
        PMMStorage.getStorage().pmmAddr = _newPMMAddr;
        PMMStorage.getStorage().isEnabled = _enable;
    }


    /************************************************************
    *                   External functions                      *
    *************************************************************/
    /**
     * @dev proxy the call to AMM
     */
    function toAMM(bytes calldata _payload) external payable {
        require(isAMMEnabled(), "UserProxy: AMM is disabled");

        (bool callSucceed,) = ammWrapperAddr().call{value: msg.value}(_payload);
        if (callSucceed == false) {
            // Get the error message returned
            assembly {
                let ptr := mload(0x40)
                let size := returndatasize()
                returndatacopy(ptr, 0, size)
                revert(ptr, size)
            }
        }
    }

    /**
     * @dev proxy the call to PMM
     */
    function toPMM(bytes calldata _payload) external payable {
        require(isPMMEnabled(), "UserProxy: PMM is disabled");

        (bool callSucceed,) = pmmAddr().call{value: msg.value}(_payload);
        if (callSucceed == false) {
            // Get the error message returned
            assembly {
                let ptr := mload(0x40)
                let size := returndatasize()
                returndatacopy(ptr, 0, size)
                revert(ptr, size)
            }
        }
    }
}

File 2 of 2: UserProxyStorage.sol
pragma solidity ^0.6.5;
pragma experimental ABIEncoderV2;

library AMMWrapperStorage {
    bytes32 private constant STORAGE_SLOT = 0xbf49677e3150252dfa801a673d2d5ec21eaa360a4674864e55e79041e3f65a6b;


    /// @dev Storage bucket for proxy contract.
    struct Storage {
        // The address of the AMMWrapper contract.
        address ammWrapperAddr;
        // Is AMM enabled
        bool isEnabled;
    }

    /// @dev Get the storage bucket for this contract.
    function getStorage() internal pure returns (Storage storage stor) {
        assert(STORAGE_SLOT == bytes32(uint256(keccak256("userproxy.ammwrapper.storage")) - 1));
        bytes32 slot = STORAGE_SLOT;

        // Dip into assembly to change the slot pointed to by the local
        // variable `stor`.
        // See https://solidity.readthedocs.io/en/v0.6.8/assembly.html?highlight=slot#access-to-external-variables-functions-and-libraries
        assembly { stor_slot := slot }
    }
}

library PMMStorage {
    bytes32 private constant STORAGE_SLOT = 0x8f135983375ba6442123d61647e7325c1753eabc2e038e44d3b888a970def89a;


    /// @dev Storage bucket for proxy contract.
    struct Storage {
        // The address of the PMM contract.
        address pmmAddr;
        // Is PMM enabled
        bool isEnabled;
    }

    /// @dev Get the storage bucket for this contract.
    function getStorage() internal pure returns (Storage storage stor) {
        assert(STORAGE_SLOT == bytes32(uint256(keccak256("userproxy.pmm.storage")) - 1));
        bytes32 slot = STORAGE_SLOT;

        // Dip into assembly to change the slot pointed to by the local
        // variable `stor`.
        // See https://solidity.readthedocs.io/en/v0.6.8/assembly.html?highlight=slot#access-to-external-variables-functions-and-libraries
        assembly { stor_slot := slot }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"name":"ammWrapperAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isAMMEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPMMEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pmmAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setAMMStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setPMMStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"toAMM","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"toPMM","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOperator","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAMMWrapperAddr","type":"address"},{"internalType":"bool","name":"_enable","type":"bool"}],"name":"upgradeAMMWrapper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newPMMAddr","type":"address"},{"internalType":"bool","name":"_enable","type":"bool"}],"name":"upgradePMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50610c72806100206000396000f3fe6080604052600436106100e15760003560e01c8063a32fe0a11161007f578063c3e9207511610059578063c3e9207514610315578063c4d66de814610350578063e47d166c14610383578063f2fde38b146103f3576100e8565b8063a32fe0a11461027b578063b6f732ae146102eb578063bbd3f63814610300576100e8565b806354fd4d50116100bb57806354fd4d5014610182578063570ca7351461020c5780637f54479a1461023d5780638014bd9714610266576100e8565b806341fc048d146100ed57806346f041701461011b5780634daadf1214610156576100e8565b366100e857005b600080fd5b3480156100f957600080fd5b506101196004803603602081101561011057600080fd5b50351515610426565b005b34801561012757600080fd5b506101196004803603604081101561013e57600080fd5b506001600160a01b03813516906020013515156104ab565b34801561016257600080fd5b506101196004803603602081101561017957600080fd5b50351515610565565b34801561018e57600080fd5b506101976105cd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d15781810151838201526020016101b9565b50505050905090810190601f1680156101fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021857600080fd5b5061022161065a565b604080516001600160a01b039092168252519081900360200190f35b34801561024957600080fd5b50610252610669565b604080519115158252519081900360200190f35b34801561027257600080fd5b50610221610683565b6101196004803603602081101561029157600080fd5b8101906020810181356401000000008111156102ac57600080fd5b8201836020820111156102be57600080fd5b803590602001918460018302840111640100000000831117156102e057600080fd5b50909250905061069c565b3480156102f757600080fd5b5061022161077d565b34801561030c57600080fd5b50610252610787565b34801561032157600080fd5b506101196004803603604081101561033857600080fd5b506001600160a01b0381351690602001351515610791565b34801561035c57600080fd5b506101196004803603602081101561037357600080fd5b50356001600160a01b031661082d565b6101196004803603602081101561039957600080fd5b8101906020810181356401000000008111156103b457600080fd5b8201836020820111156103c657600080fd5b803590602001918460018302840111640100000000831117156103e857600080fd5b5090925090506109af565b3480156103ff57600080fd5b506101196004803603602081101561041657600080fd5b50356001600160a01b0316610a12565b6000546001600160a01b03163314610485576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b8061048e610ae5565b8054911515600160a01b0260ff60a01b1990921691909117905550565b6000546001600160a01b0316331461050a576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b81610513610b09565b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905580610547610b09565b8054911515600160a01b0260ff60a01b199092169190911790555050565b6000546001600160a01b031633146105c4576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b8061048e610b09565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106525780601f1061062757610100808354040283529160200191610652565b820191906000526020600020905b81548152906001019060200180831161063557829003601f168201915b505050505081565b6000546001600160a01b031681565b6000610673610b09565b54600160a01b900460ff16919050565b600061068d610b09565b546001600160a01b0316905090565b6106a4610669565b6106f5576040805162461bcd60e51b815260206004820152601a60248201527f5573657250726f78793a20504d4d2069732064697361626c6564000000000000604482015290519081900360640190fd5b60006106ff610683565b6001600160a01b0316348484604051808383808284376040519201945060009350909150508083038185875af1925050503d806000811461075c576040519150601f19603f3d011682016040523d82523d6000602084013e610761565b606091505b509091505080610778576040513d806000833e8082fd5b505050565b600061068d610ae5565b6000610673610ae5565b6000546001600160a01b031633146107f0576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b816107f9610ae5565b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905580610547610ae5565b6001600160a01b0381166108725760405162461bcd60e51b8152600401808060200182810382526024815260200180610bec6024913960400191505060405180910390fd5b60408051600081526020810180835281519020600180549193909201908190839060026000196101008385161502019091160480156108e85780601f106108c65761010080835404028352918201916108e8565b820191906000526020600020905b8154815290600101906020018083116108d4575b5050915050604051602081830303815290604052805190602001201461093f5760405162461bcd60e51b815260040180806020018281038252602d815260200180610c10602d913960400191505060405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556040805180820190915260058082527f352e302e3000000000000000000000000000000000000000000000000000000060209092019182526109ab91600191610b2d565b5050565b6109b7610787565b610a08576040805162461bcd60e51b815260206004820152601a60248201527f5573657250726f78793a20414d4d2069732064697361626c6564000000000000604482015290519081900360640190fd5b60006106ff61077d565b6000546001600160a01b03163314610a71576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b6001600160a01b038116610ab65760405162461bcd60e51b815260040180806020018281038252602b815260200180610bc1602b913960400191505060405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b7fbf49677e3150252dfa801a673d2d5ec21eaa360a4674864e55e79041e3f65a6b90565b7f8f135983375ba6442123d61647e7325c1753eabc2e038e44d3b888a970def89a90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610b6e57805160ff1916838001178555610b9b565b82800160010185558215610b9b579182015b82811115610b9b578251825591602001919060010190610b80565b50610ba7929150610bab565b5090565b5b80821115610ba75760008155600101610bac56fe5573657250726f78793a206f70657261746f722063616e206e6f74206265207a65726f20616464726573735573657250726f78793a205f6f70657261746f722073686f756c64206e6f7420626520305573657250726f78793a206e6f7420757067726164696e672066726f6d2064656661756c742076657273696f6ea2646970667358221220d4e114e9b035618b38334d1c69aebe0df73785ba4cc08466cc7c7bc9cc4b5df664736f6c634300060c0033

Deployed Bytecode

0x6080604052600436106100e15760003560e01c8063a32fe0a11161007f578063c3e9207511610059578063c3e9207514610315578063c4d66de814610350578063e47d166c14610383578063f2fde38b146103f3576100e8565b8063a32fe0a11461027b578063b6f732ae146102eb578063bbd3f63814610300576100e8565b806354fd4d50116100bb57806354fd4d5014610182578063570ca7351461020c5780637f54479a1461023d5780638014bd9714610266576100e8565b806341fc048d146100ed57806346f041701461011b5780634daadf1214610156576100e8565b366100e857005b600080fd5b3480156100f957600080fd5b506101196004803603602081101561011057600080fd5b50351515610426565b005b34801561012757600080fd5b506101196004803603604081101561013e57600080fd5b506001600160a01b03813516906020013515156104ab565b34801561016257600080fd5b506101196004803603602081101561017957600080fd5b50351515610565565b34801561018e57600080fd5b506101976105cd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d15781810151838201526020016101b9565b50505050905090810190601f1680156101fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021857600080fd5b5061022161065a565b604080516001600160a01b039092168252519081900360200190f35b34801561024957600080fd5b50610252610669565b604080519115158252519081900360200190f35b34801561027257600080fd5b50610221610683565b6101196004803603602081101561029157600080fd5b8101906020810181356401000000008111156102ac57600080fd5b8201836020820111156102be57600080fd5b803590602001918460018302840111640100000000831117156102e057600080fd5b50909250905061069c565b3480156102f757600080fd5b5061022161077d565b34801561030c57600080fd5b50610252610787565b34801561032157600080fd5b506101196004803603604081101561033857600080fd5b506001600160a01b0381351690602001351515610791565b34801561035c57600080fd5b506101196004803603602081101561037357600080fd5b50356001600160a01b031661082d565b6101196004803603602081101561039957600080fd5b8101906020810181356401000000008111156103b457600080fd5b8201836020820111156103c657600080fd5b803590602001918460018302840111640100000000831117156103e857600080fd5b5090925090506109af565b3480156103ff57600080fd5b506101196004803603602081101561041657600080fd5b50356001600160a01b0316610a12565b6000546001600160a01b03163314610485576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b8061048e610ae5565b8054911515600160a01b0260ff60a01b1990921691909117905550565b6000546001600160a01b0316331461050a576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b81610513610b09565b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905580610547610b09565b8054911515600160a01b0260ff60a01b199092169190911790555050565b6000546001600160a01b031633146105c4576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b8061048e610b09565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106525780601f1061062757610100808354040283529160200191610652565b820191906000526020600020905b81548152906001019060200180831161063557829003601f168201915b505050505081565b6000546001600160a01b031681565b6000610673610b09565b54600160a01b900460ff16919050565b600061068d610b09565b546001600160a01b0316905090565b6106a4610669565b6106f5576040805162461bcd60e51b815260206004820152601a60248201527f5573657250726f78793a20504d4d2069732064697361626c6564000000000000604482015290519081900360640190fd5b60006106ff610683565b6001600160a01b0316348484604051808383808284376040519201945060009350909150508083038185875af1925050503d806000811461075c576040519150601f19603f3d011682016040523d82523d6000602084013e610761565b606091505b509091505080610778576040513d806000833e8082fd5b505050565b600061068d610ae5565b6000610673610ae5565b6000546001600160a01b031633146107f0576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b816107f9610ae5565b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905580610547610ae5565b6001600160a01b0381166108725760405162461bcd60e51b8152600401808060200182810382526024815260200180610bec6024913960400191505060405180910390fd5b60408051600081526020810180835281519020600180549193909201908190839060026000196101008385161502019091160480156108e85780601f106108c65761010080835404028352918201916108e8565b820191906000526020600020905b8154815290600101906020018083116108d4575b5050915050604051602081830303815290604052805190602001201461093f5760405162461bcd60e51b815260040180806020018281038252602d815260200180610c10602d913960400191505060405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556040805180820190915260058082527f352e302e3000000000000000000000000000000000000000000000000000000060209092019182526109ab91600191610b2d565b5050565b6109b7610787565b610a08576040805162461bcd60e51b815260206004820152601a60248201527f5573657250726f78793a20414d4d2069732064697361626c6564000000000000604482015290519081900360640190fd5b60006106ff61077d565b6000546001600160a01b03163314610a71576040805162461bcd60e51b815260206004820152601b60248201527f5573657250726f78793a206e6f7420746865206f70657261746f720000000000604482015290519081900360640190fd5b6001600160a01b038116610ab65760405162461bcd60e51b815260040180806020018281038252602b815260200180610bc1602b913960400191505060405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b7fbf49677e3150252dfa801a673d2d5ec21eaa360a4674864e55e79041e3f65a6b90565b7f8f135983375ba6442123d61647e7325c1753eabc2e038e44d3b888a970def89a90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610b6e57805160ff1916838001178555610b9b565b82800160010185558215610b9b579182015b82811115610b9b578251825591602001919060010190610b80565b50610ba7929150610bab565b5090565b5b80821115610ba75760008155600101610bac56fe5573657250726f78793a206f70657261746f722063616e206e6f74206265207a65726f20616464726573735573657250726f78793a205f6f70657261746f722073686f756c64206e6f7420626520305573657250726f78793a206e6f7420757067726164696e672066726f6d2064656661756c742076657273696f6ea2646970667358221220d4e114e9b035618b38334d1c69aebe0df73785ba4cc08466cc7c7bc9cc4b5df664736f6c634300060c0033

Deployed Bytecode Sourcemap

127:4693:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2476:123;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2476:123:0;;;;:::i;:::-;;3319:192;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3319:192:0;;;;;;;;;;:::i;3028:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3028:116:0;;;;:::i;241:21::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;212:23;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;212:23:0;;;;;;;;;;;;;;2162:108;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2052:104;;;;;;;;;;;;;:::i;4324:494::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4324:494:0;;-1:-1:-1;4324:494:0;-1:-1:-1;4324:494:0;:::i;1800:125::-;;;;;;;;;;;;;:::i;1931:115::-;;;;;;;;;;;;;:::i;2788:234::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2788:234:0;;;;;;;;;;:::i;1175:419::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1175:419:0;-1:-1:-1;;;;;1175:419:0;;:::i;3767:501::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3767:501:0;;-1:-1:-1;3767:501:0;-1:-1:-1;3767:501:0;:::i;660:203::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;660:203:0;-1:-1:-1;;;;;660:203:0;;:::i;2476:123::-;582:8;;-1:-1:-1;;;;;582:8:0;594:10;582:22;574:62;;;;;-1:-1:-1;;;574:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2585:7:::1;2542:30;:28;:30::i;:::-;:50:::0;;;::::1;;-1:-1:-1::0;;;2542:50:0::1;-1:-1:-1::0;;;;2542:50:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;2476:123:0:o;3319:192::-;582:8;;-1:-1:-1;;;;;582:8:0;594:10;582:22;574:62;;;;;-1:-1:-1;;;574:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3440:11:::1;3406:23;:21;:23::i;:::-;:45:::0;;-1:-1:-1;;3406:45:0::1;-1:-1:-1::0;;;;;3406:45:0;;;::::1;::::0;;;::::1;::::0;;3497:7;3461:23:::1;:21;:23::i;:::-;:43:::0;;;::::1;;-1:-1:-1::0;;;3461:43:0::1;-1:-1:-1::0;;;;3461:43:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;3319:192:0:o;3028:116::-;582:8;;-1:-1:-1;;;;;582:8:0;594:10;582:22;574:62;;;;;-1:-1:-1;;;574:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3130:7:::1;3094:23;:21;:23::i;241:21::-:0;;;;;;;;;;;;;;;-1:-1:-1;;241:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;212:23::-;;;-1:-1:-1;;;;;212:23:0;;:::o;2162:108::-;2207:4;2230:23;:21;:23::i;:::-;:33;-1:-1:-1;;;2230:33:0;;;;;2162:108;-1:-1:-1;2162:108:0:o;2052:104::-;2092:7;2118:23;:21;:23::i;:::-;:31;-1:-1:-1;;;;;2118:31:0;;-1:-1:-1;2052:104:0;:::o;4324:494::-;4399:14;:12;:14::i;:::-;4391:53;;;;;-1:-1:-1;;;4391:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4456:16;4477:9;:7;:9::i;:::-;-1:-1:-1;;;;;4477:14:0;4499:9;4510:8;;4477:42;;;;;;;;;;;;;;-1:-1:-1;4477:42:0;;-1:-1:-1;4477:42:0;;-1:-1:-1;;4477:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4455:64:0;;-1:-1:-1;;4533:20:0;4529:283;;4659:4;4653:11;4693:16;4749:4;4746:1;4741:3;4726:28;4783:4;4778:3;4771:17;4624:178;4324:494;;;:::o;1800:125::-;1847:7;1873:30;:28;:30::i;1931:115::-;1976:4;1999:30;:28;:30::i;2788:234::-;582:8;;-1:-1:-1;;;;;582:8:0;594:10;582:22;574:62;;;;;-1:-1:-1;;;574:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2937:18:::1;2889:30;:28;:30::i;:::-;:66:::0;;-1:-1:-1;;2889:66:0::1;-1:-1:-1::0;;;;;2889:66:0;;;::::1;::::0;;;::::1;::::0;;3008:7;2965:30:::1;:28;:30::i;1175:419::-:0;-1:-1:-1;;;;;1241:23:0;;1233:72;;;;-1:-1:-1;;;1233:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:20;;;;;;;;;;;;1376:31;;;;1363:7;1346:25;;1376:31;;1363:7;;1346:25;;;;1363:7;;1346:25;-1:-1:-1;;1346:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:36;;;;;;:71;1315:163;;;;-1:-1:-1;;;1315:163:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1513:8;:20;;-1:-1:-1;;1513:20:0;-1:-1:-1;;;;;1513:20:0;;;;;1570:17;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1570:17:0;:::i;:::-;;1175:419;:::o;3767:501::-;3842:14;:12;:14::i;:::-;3834:53;;;;;-1:-1:-1;;;3834:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3899:16;3920;:14;:16::i;660:203::-;582:8;;-1:-1:-1;;;;;582:8:0;594:10;582:22;574:62;;;;;-1:-1:-1;;;574:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;749:26:0;::::1;741:82;;;;-1:-1:-1::0;;;741:82:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;833:8;:23:::0;;-1:-1:-1;;833:23:0::1;-1:-1:-1::0;;;;;833:23:0;;;::::1;::::0;;;::::1;::::0;;660:203::o;469:487:1:-;131:66;;929:21::o;1349:480::-;1025:66;;1802:21::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;

Swarm Source

ipfs://d4e114e9b035618b38334d1c69aebe0df73785ba4cc08466cc7c7bc9cc4b5df6

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
Loading...
Loading

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.