ETH Price: $2,343.94 (-4.20%)

Contract

0x50510E691c90EA098e3fdd23C311731BF394aAFd
 

Overview

ETH Balance

0.546871660932258768 ETH

Eth Value

$1,281.83 (@ $2,343.94/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Request Relay En...109180722020-09-23 9:34:551471 days ago1600853695IN
0x50510E69...BF394aAFd
0.001164 ETH0.01387807117.00000123
Request Relay En...109176812020-09-23 8:06:151471 days ago1600848375IN
0x50510E69...BF394aAFd
0.001164 ETH0.0107940591
Request Relay En...109176382020-09-23 7:57:031471 days ago1600847823IN
0x50510E69...BF394aAFd
0.001164 ETH0.0090927292
Update Admin108341482020-09-10 13:02:061484 days ago1599742926IN
0x50510E69...BF394aAFd
0 ETH0.00414285150
0x60806040108341042020-09-10 12:49:281484 days ago1599742168IN
 Create: KeepRandomBeaconService
0 ETH0.1448175150

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
168348502023-03-15 17:42:47567 days ago1678902167
0x50510E69...BF394aAFd
0.06433962 ETH
168348322023-03-15 17:39:11567 days ago1678901951
0x50510E69...BF394aAFd
0.06433962 ETH
168348032023-03-15 17:33:11567 days ago1678901591
0x50510E69...BF394aAFd
0.06433962 ETH
168347532023-03-15 17:22:59568 days ago1678900979
0x50510E69...BF394aAFd
0.06433962 ETH
168347402023-03-15 17:20:23568 days ago1678900823
0x50510E69...BF394aAFd
0.06433962 ETH
168347282023-03-15 17:17:59568 days ago1678900679
0x50510E69...BF394aAFd
0.06433962 ETH
168347082023-03-15 17:13:59568 days ago1678900439
0x50510E69...BF394aAFd
0.06433962 ETH
168346942023-03-15 17:11:11568 days ago1678900271
0x50510E69...BF394aAFd
0.06433962 ETH
168346812023-03-15 17:08:35568 days ago1678900115
0x50510E69...BF394aAFd
0.06433962 ETH
168346642023-03-15 17:05:11568 days ago1678899911
0x50510E69...BF394aAFd
0.06433962 ETH
168346452023-03-15 17:01:23568 days ago1678899683
0x50510E69...BF394aAFd
0.06433962 ETH
168276492023-03-14 17:22:47569 days ago1678814567
0x50510E69...BF394aAFd
0.06433962 ETH
168275622023-03-14 17:04:59569 days ago1678813499
0x50510E69...BF394aAFd
0.06433962 ETH
168275452023-03-14 17:01:23569 days ago1678813283
0x50510E69...BF394aAFd
0.06433962 ETH
168275272023-03-14 16:57:47569 days ago1678813067
0x50510E69...BF394aAFd
0.06433962 ETH
168275062023-03-14 16:53:35569 days ago1678812815
0x50510E69...BF394aAFd
0.06433962 ETH
168273742023-03-14 16:27:11569 days ago1678811231
0x50510E69...BF394aAFd
0.06433962 ETH
168196352023-03-13 14:22:47570 days ago1678717367
0x50510E69...BF394aAFd
0.06433962 ETH
149065442022-06-05 2:15:23851 days ago1654395323
0x50510E69...BF394aAFd
0.06433962 ETH
148977032022-06-03 14:47:29853 days ago1654267649
0x50510E69...BF394aAFd
0.06433962 ETH
148574212022-05-28 1:24:15859 days ago1653701055
0x50510E69...BF394aAFd
0.06433962 ETH
147349852022-05-08 8:24:34879 days ago1651998274
0x50510E69...BF394aAFd
0.06433962 ETH
147349812022-05-08 8:23:50879 days ago1651998230
0x50510E69...BF394aAFd
0.06433962 ETH
146680502022-04-27 18:10:13889 days ago1651083013
0x50510E69...BF394aAFd
0.06433962 ETH
146671412022-04-27 14:54:04890 days ago1651071244
0x50510E69...BF394aAFd
0.06433962 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KeepRandomBeaconService

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 3 : KeepRandomBeaconService.sol
/**
▓▓▌ ▓▓ ▐▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▄
▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  ▓▓▓▓▓▓    ▓▓▓▓▓▓▓▀    ▐▓▓▓▓▓▓    ▐▓▓▓▓▓   ▓▓▓▓▓▓     ▓▓▓▓▓   ▐▓▓▓▓▓▌   ▐▓▓▓▓▓▓
  ▓▓▓▓▓▓▄▄▓▓▓▓▓▓▓▀      ▐▓▓▓▓▓▓▄▄▄▄         ▓▓▓▓▓▓▄▄▄▄         ▐▓▓▓▓▓▌   ▐▓▓▓▓▓▓
  ▓▓▓▓▓▓▓▓▓▓▓▓▓▀        ▐▓▓▓▓▓▓▓▓▓▓         ▓▓▓▓▓▓▓▓▓▓▌        ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  ▓▓▓▓▓▓▀▀▓▓▓▓▓▓▄       ▐▓▓▓▓▓▓▀▀▀▀         ▓▓▓▓▓▓▀▀▀▀         ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▀
  ▓▓▓▓▓▓   ▀▓▓▓▓▓▓▄     ▐▓▓▓▓▓▓     ▓▓▓▓▓   ▓▓▓▓▓▓     ▓▓▓▓▓   ▐▓▓▓▓▓▌
▓▓▓▓▓▓▓▓▓▓ █▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▓▓

                           Trust math, not hardware.
*/

pragma solidity 0.5.17;

import "openzeppelin-solidity/contracts/math/SafeMath.sol";
import "@openzeppelin/upgrades/contracts/upgradeability/Proxy.sol";

/// @title Keep Random Beacon service
/// @notice A proxy contract to provide upgradable Random Beacon functionality.
/// All calls to this proxy contract are delegated to the implementation contract.
contract KeepRandomBeaconService is Proxy {
    using SafeMath for uint256;

    /// @dev Storage slot with the admin of the contract.
    /// This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1.
    /// It is validated in the constructor.
    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    /// @dev Storage slot with the address of the current implementation.
    /// This is the keccak-256 hash of "eip1967.proxy.implementation"
    /// subtracted by 1. It is validated in the constructor.
    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /// @dev Storage slot with the upgrade time delay. Upgrade time delay
    /// defines a period for implementation upgrade. This is the keccak-256
    /// hash of "network.keep.randombeacon.proxy.upgradeTimeDelay"
    /// subtracted by 1. It is validated in the constructor.
    bytes32 internal constant UPGRADE_TIME_DELAY_SLOT = 0x73bbd307af06a74c12a4f925288c98f759a1ee8fee7eae47a0c215cb63ef2c6b;

    /// @dev Storage slot with the new implementation address. This is the
    /// keccak-256 hash of "network.keep.randombeacon.proxy.upgradeImplementation"
    /// subtracted by 1. It is validated in the constructor.
    bytes32 internal constant UPGRADE_IMPLEMENTATION_SLOT = 0x3c3c1acab6a17c8ef7a1d07995c8ed2942488afd9e13cf89bd5c6e4828160276;

    /// @dev Storage slot with the implementation address upgrade initiation.
    /// This is the keccak-256 hash of "network.keep.randombeacon.proxy.upgradeInitiatedTimestamp"
    /// subtracted by 1. It is validated in the constructor.
    bytes32 internal constant UPGRADE_INIT_TIMESTAMP_SLOT = 0xb49edbaf3913780c2ef1ff781deec1eb653eab7236ff107428d60052d0f0d18d;

    /// @notice Implementation initialization data to be used on the second step
    /// of upgrade.
    /// @dev Mapping is stored at the position calculated with keccak256 of the
    /// new implementation address. Hence, it should be protected from clashing
    /// with implementation's fields.
    mapping(address => bytes) public initializationData;

    event UpgradeStarted(address implementation, uint256 timestamp);
    event UpgradeCompleted(address implementation);

    constructor(address _implementation, bytes memory _data) public {
        assertSlot(IMPLEMENTATION_SLOT, "eip1967.proxy.implementation");
        assertSlot(ADMIN_SLOT, "eip1967.proxy.admin");
        assertSlot(UPGRADE_TIME_DELAY_SLOT, "network.keep.randombeacon.proxy.upgradeTimeDelay");
        assertSlot(UPGRADE_IMPLEMENTATION_SLOT, "network.keep.randombeacon.proxy.upgradeImplementation");
        assertSlot(UPGRADE_INIT_TIMESTAMP_SLOT, "network.keep.randombeacon.proxy.upgradeInitiatedTimestamp");

        require(
            _implementation != address(0),
            "Implementation address can't be zero."
        );

        if (_data.length > 0) {
            initializeImplementation(_implementation, _data);
        }

        setImplementation(_implementation);

        setUpgradeTimeDelay(1 days);

        setAdmin(msg.sender);
    }

    /// @notice Starts upgrade of the current vendor implementation.
    /// @dev It is the first part of the two-step implementation address update
    /// process. The function emits an event containing the new value and current
    /// block timestamp.
    /// @param _newImplementation Address of the new vendor implementation contract.
    /// @param _data Delegate call data for implementation initialization.
    function upgradeTo(address _newImplementation, bytes memory _data)
        public
        onlyAdmin
    {
        address currentImplementation = _implementation();
        require(
            _newImplementation != address(0),
            "Implementation address can't be zero."
        );
        require(
            _newImplementation != currentImplementation,
            "Implementation address must be different from the current one."
        );

        initializationData[_newImplementation] = _data;

        setNewImplementation(_newImplementation);

        /* solium-disable-next-line security/no-block-members */
        setUpgradeInitiatedTimestamp(block.timestamp);

        /* solium-disable-next-line security/no-block-members */
        emit UpgradeStarted(_newImplementation, block.timestamp);
    }

    /// @notice Finalizes implementation address upgrade.
    /// @dev It is the second part of the two-step implementation address update
    /// process. The function emits an event containing the new implementation
    /// address. It can be called after upgrade time delay period has passed since
    /// upgrade initiation.
    function completeUpgrade() public onlyAdmin {
        require(upgradeInitiatedTimestamp() > 0, "Upgrade not initiated");

        require(
            /* solium-disable-next-line security/no-block-members */
            block.timestamp.sub(upgradeInitiatedTimestamp()) >=
            upgradeTimeDelay(),
            "Timer not elapsed"
        );

        address newImplementation = newImplementation();

        setImplementation(newImplementation);

        bytes memory data = initializationData[newImplementation];
        if (data.length > 0) {
            initializeImplementation(newImplementation, data);
        }

        setUpgradeInitiatedTimestamp(0);

        emit UpgradeCompleted(newImplementation);
    }

    /// @notice Initializes implementation contract.
    /// @dev Delegates a call to the implementation with provided data. It is
    /// expected that data contains details of function to be called.
    /// @param _implementation Address of the new vendor implementation contract.
    /// @param _data Delegate call data for implementation initialization.
    function initializeImplementation(
        address _implementation,
        bytes memory _data
    ) internal {
        (bool success, bytes memory returnData) = _implementation.delegatecall(
            _data
        );

        require(success, string(returnData));
    }

    /// @notice Asserts correct slot for provided key.
    /// @dev To avoid clashing with implementation's fields the proxy contract
    /// defines its' fields on specific slots. Slot is calculated as hash of a
    /// string subtracted by 1 to reduce chances of a possible attack.
    /// For details see EIP-1967.
    function assertSlot(bytes32 slot, bytes memory key) internal pure {
        assert(slot == bytes32(uint256(keccak256(key)) - 1));
    }

    /// @dev Gets the address of the current implementation.
    /// @return address of the current implementation.
    function implementation() public view returns (address) {
        return _implementation();
    }

    /// @notice Returns the current implementation. Implements function from `Proxy`
    /// contract.
    /// @return Address of the current implementation
    function _implementation() internal view returns (address impl) {
        bytes32 slot = IMPLEMENTATION_SLOT;
        /* solium-disable-next-line */
        assembly {
            impl := sload(slot)
        }
    }

    /// @notice Sets the address of the current implementation.
    /// @param _implementation address representing the new implementation to be set.
    function setImplementation(address _implementation) internal {
        bytes32 slot = IMPLEMENTATION_SLOT;
        /* solium-disable-next-line */
        assembly {
            sstore(slot, _implementation)
        }
    }

    function upgradeTimeDelay()
        public
        view
        returns (uint256 _upgradeTimeDelay)
    {
        bytes32 position = UPGRADE_TIME_DELAY_SLOT;
        /* solium-disable-next-line */
        assembly {
            _upgradeTimeDelay := sload(position)
        }
    }

    function setUpgradeTimeDelay(uint256 _upgradeTimeDelay) internal {
        bytes32 position = UPGRADE_TIME_DELAY_SLOT;
        /* solium-disable-next-line */
        assembly {
            sstore(position, _upgradeTimeDelay)
        }
    }

    function newImplementation()
        public
        view
        returns (address _newImplementation)
    {
        bytes32 position = UPGRADE_IMPLEMENTATION_SLOT;
        /* solium-disable-next-line */
        assembly {
            _newImplementation := sload(position)
        }
    }

    function setNewImplementation(address _newImplementation) internal {
        bytes32 position = UPGRADE_IMPLEMENTATION_SLOT;
        /* solium-disable-next-line */
        assembly {
            sstore(position, _newImplementation)
        }
    }

    function upgradeInitiatedTimestamp()
        public
        view
        returns (uint256 _upgradeInitiatedTimestamp)
    {
        bytes32 position = UPGRADE_INIT_TIMESTAMP_SLOT;
        /* solium-disable-next-line */
        assembly {
            _upgradeInitiatedTimestamp := sload(position)
        }
    }

    function setUpgradeInitiatedTimestamp(uint256 _upgradeInitiatedTimestamp)
        internal
    {
        bytes32 position = UPGRADE_INIT_TIMESTAMP_SLOT;
        /* solium-disable-next-line */
        assembly {
            sstore(position, _upgradeInitiatedTimestamp)
        }
    }

    /// @notice The admin slot.
    /// @return The contract owner's address.
    function admin() public view returns (address adm) {
        bytes32 slot = ADMIN_SLOT;
        /* solium-disable-next-line */
        assembly {
            adm := sload(slot)
        }
    }

    /// @notice Sets the address of the proxy admin.
    /// @dev Function can be called only by the current admin.
    /// @param _newAdmin Address of the new proxy admin.
    function updateAdmin(address _newAdmin) public onlyAdmin {
        setAdmin(_newAdmin);
    }

    /// @notice Sets the address of the proxy admin.
    /// @param _newAdmin Address of the new proxy admin.
    function setAdmin(address _newAdmin) internal {
        bytes32 slot = ADMIN_SLOT;
        /* solium-disable-next-line */
        assembly {
            sstore(slot, _newAdmin)
        }
    }

    /// @notice Throws if called by any account other than the contract owner.
    modifier onlyAdmin() {
        require(msg.sender == admin(), "Caller is not the admin");
        _;
    }
}

File 2 of 3 : SafeMath.sol
pragma solidity ^0.5.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     *
     * _Available since v2.4.0._
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

File 3 of 3 : Proxy.sol
pragma solidity ^0.5.0;

/**
 * @title Proxy
 * @dev Implements delegation of calls to other contracts, with proper
 * forwarding of return values and bubbling of failures.
 * It defines a fallback function that delegates all calls to the address
 * returned by the abstract _implementation() internal function.
 */
contract Proxy {
  /**
   * @dev Fallback function.
   * Implemented entirely in `_fallback`.
   */
  function () payable external {
    _fallback();
  }

  /**
   * @return The Address of the implementation.
   */
  function _implementation() internal view returns (address);

  /**
   * @dev Delegates execution to an implementation contract.
   * This is a low level function that doesn't return to its internal call site.
   * It will return to the external caller whatever the implementation returns.
   * @param implementation Address to delegate.
   */
  function _delegate(address implementation) internal {
    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 Function that is run as the first thing in the fallback function.
   * Can be redefined in derived contracts to add functionality.
   * Redefinitions must call super._willFallback().
   */
  function _willFallback() internal {
  }

  /**
   * @dev fallback implementation.
   * Extracted to enable manual triggering.
   */
  function _fallback() internal {
    _willFallback();
    _delegate(_implementation());
  }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"implementation","type":"address"}],"name":"UpgradeCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"implementation","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpgradeStarted","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"adm","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"completeUpgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"initializationData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newImplementation","outputs":[{"internalType":"address","name":"_newImplementation","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"updateAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"upgradeInitiatedTimestamp","outputs":[{"internalType":"uint256","name":"_upgradeInitiatedTimestamp","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"upgradeTimeDelay","outputs":[{"internalType":"uint256","name":"_upgradeTimeDelay","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newImplementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200124338038062001243833981810160405260408110156200003757600080fd5b8151602083018051604051929492938301929190846401000000008211156200005f57600080fd5b9083019060208201858111156200007557600080fd5b82516401000000008111828201881017156200009057600080fd5b82525081516020918201929091019080838360005b83811015620000bf578181015183820152602001620000a5565b50505050905090810190601f168015620000ed5780820380516001836020036101000a031916815260200191505b5060408181019052601c81527f656970313936372e70726f78792e696d706c656d656e746174696f6e000000006020820152620001489350600080516020620011c5833981519152925090506001600160e01b036200032e16565b60408051808201909152601381527f656970313936372e70726f78792e61646d696e000000000000000000000000006020820152620001a19060008051602062001155833981519152906001600160e01b036200032e16565b620001e16000805160206200117583398151915260001b60405180606001604052806030815260200162001195603091396001600160e01b036200032e16565b620002327f3c3c1acab6a17c8ef7a1d07995c8ed2942488afd9e13cf89bd5c6e482816027660001b60405180606001604052806035815260200162001120603591396001600160e01b036200032e16565b620002837fb49edbaf3913780c2ef1ff781deec1eb653eab7236ff107428d60052d0f0d18d60001b6040518060600160405280603981526020016200120a603991396001600160e01b036200032e16565b6001600160a01b038216620002ca5760405162461bcd60e51b8152600401808060200182810382526025815260200180620011e56025913960400191505060405180910390fd5b805115620002e757620002e782826001600160e01b036200034616565b620002fb826001600160e01b036200048816565b62000312620151806001600160e01b036200049b16565b62000326336001600160e01b03620004ae16565b5050620004c1565b805160208201206000190182146200034257fe5b5050565b60006060836001600160a01b0316836040518082805190602001908083835b60208310620003865780518252601f19909201916020918201910162000365565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114620003e8576040519150601f19603f3d011682016040523d82523d6000602084013e620003ed565b606091505b5091509150818190620004815760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620004455781810151838201526020016200042b565b50505050905090810190601f168015620004735780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050505050565b600080516020620011c583398151915255565b6000805160206200117583398151915255565b6000805160206200115583398151915255565b610c4f80620004d16000396000f3fe6080604052600436106100865760003560e01c80638b677b03116100595780638b677b03146102415780639260315b14610256578063951315261461027d578063e2f273bd14610292578063f851a440146102c557610086565b80630f51d40d146100905780634d055667146101385780635c60da1b1461014d5780636fbc15e91461017e575b61008e6102da565b005b34801561009c57600080fd5b506100c3600480360360208110156100b357600080fd5b50356001600160a01b03166102f4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fd5781810151838201526020016100e5565b50505050905090810190601f16801561012a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561014457600080fd5b5061008e61038e565b34801561015957600080fd5b506101626105c7565b604080516001600160a01b039092168252519081900360200190f35b34801561018a57600080fd5b5061008e600480360360408110156101a157600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156101cc57600080fd5b8201836020820111156101de57600080fd5b8035906020019184600183028401116401000000008311171561020057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506105d7945050505050565b34801561024d57600080fd5b50610162610762565b34801561026257600080fd5b5061026b610787565b60408051918252519081900360200190f35b34801561028957600080fd5b5061026b6107ac565b34801561029e57600080fd5b5061008e600480360360208110156102b557600080fd5b50356001600160a01b03166107d1565b3480156102d157600080fd5b50610162610844565b6102e26102f2565b6102f26102ed610869565b61088e565b565b600060208181529181526040908190208054825160026001831615610100026000190190921691909104601f8101859004850282018501909352828152929091908301828280156103865780601f1061035b57610100808354040283529160200191610386565b820191906000526020600020905b81548152906001019060200180831161036957829003601f168201915b505050505081565b610396610844565b6001600160a01b0316336001600160a01b0316146103f5576040805162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba103a34329030b236b4b760491b604482015290519081900360640190fd5b60006103ff6107ac565b11610449576040805162461bcd60e51b8152602060048201526015602482015274155c19dc985919481b9bdd081a5b9a5d1a585d1959605a1b604482015290519081900360640190fd5b610451610787565b61046961045c6107ac565b429063ffffffff6108b216565b10156104b0576040805162461bcd60e51b8152602060048201526011602482015270151a5b595c881b9bdd08195b185c1cd959607a1b604482015290519081900360640190fd5b60006104ba610762565b90506104c5816108fb565b6001600160a01b0381166000908152602081815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156105625780601f1061053757610100808354040283529160200191610562565b820191906000526020600020905b81548152906001019060200180831161054557829003601f168201915b5050505050905060008151111561057d5761057d828261091f565b6105876000610a59565b604080516001600160a01b038416815290517f2711ef8a6ba82dd467437054855e6edfc6424d0fb0127992b419c20f2d2e114e9181900360200190a15050565b60006105d1610869565b90505b90565b6105df610844565b6001600160a01b0316336001600160a01b03161461063e576040805162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba103a34329030b236b4b760491b604482015290519081900360640190fd5b6000610648610869565b90506001600160a01b03831661068f5760405162461bcd60e51b8152600401808060200182810382526025815260200180610bf66025913960400191505060405180910390fd5b806001600160a01b0316836001600160a01b031614156106e05760405162461bcd60e51b815260040180806020018281038252603e815260200180610bb8603e913960400191505060405180910390fd5b6001600160a01b038316600090815260208181526040909120835161070792850190610b1f565b5061071183610a7d565b61071a42610a59565b604080516001600160a01b038516815242602082015281517fe3ab72cd1d043aea9afd3c48aae4ee8f59a80381fec6c69ca502e2fb4b4f5c5a929181900390910190a1505050565b7f3c3c1acab6a17c8ef7a1d07995c8ed2942488afd9e13cf89bd5c6e48281602765490565b7f73bbd307af06a74c12a4f925288c98f759a1ee8fee7eae47a0c215cb63ef2c6b5490565b7fb49edbaf3913780c2ef1ff781deec1eb653eab7236ff107428d60052d0f0d18d5490565b6107d9610844565b6001600160a01b0316336001600160a01b031614610838576040805162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba103a34329030b236b4b760491b604482015290519081900360640190fd5b61084181610aa1565b50565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156108ad573d6000f35b3d6000fd5b60006108f483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ac5565b9392505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b60006060836001600160a01b0316836040518082805190602001908083835b6020831061095d5780518252601f19909201916020918201910161093e565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146109bd576040519150601f19603f3d011682016040523d82523d6000602084013e6109c2565b606091505b5091509150818190610a525760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a175781810151838201526020016109ff565b50505050905090810190601f168015610a445780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050505050565b7fb49edbaf3913780c2ef1ff781deec1eb653eab7236ff107428d60052d0f0d18d55565b7f3c3c1acab6a17c8ef7a1d07995c8ed2942488afd9e13cf89bd5c6e482816027655565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b60008184841115610b175760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a175781810151838201526020016109ff565b505050900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610b6057805160ff1916838001178555610b8d565b82800160010185558215610b8d579182015b82811115610b8d578251825591602001919060010190610b72565b50610b99929150610b9d565b5090565b6105d491905b80821115610b995760008155600101610ba356fe496d706c656d656e746174696f6e2061646472657373206d75737420626520646966666572656e742066726f6d207468652063757272656e74206f6e652e496d706c656d656e746174696f6e20616464726573732063616e2774206265207a65726f2ea265627a7a72315820ea5b4342899b145e8bbdcbb0df0c0af6c0bd8511ebe58f08a3894731a5eb11b164736f6c634300051100326e6574776f726b2e6b6565702e72616e646f6d626561636f6e2e70726f78792e75706772616465496d706c656d656e746174696f6eb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610373bbd307af06a74c12a4f925288c98f759a1ee8fee7eae47a0c215cb63ef2c6b6e6574776f726b2e6b6565702e72616e646f6d626561636f6e2e70726f78792e7570677261646554696d6544656c6179360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc496d706c656d656e746174696f6e20616464726573732063616e2774206265207a65726f2e6e6574776f726b2e6b6565702e72616e646f6d626561636f6e2e70726f78792e75706772616465496e6974696174656454696d657374616d7000000000000000000000000009959798b95d00a3183d20fac298e4594e599eab00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044da35a26f00000000000000000000000000000000000000000000000000000000000000010000000000000000000000001a9589f56c969d6b0d3787ea02322476ead3fb0500000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106100865760003560e01c80638b677b03116100595780638b677b03146102415780639260315b14610256578063951315261461027d578063e2f273bd14610292578063f851a440146102c557610086565b80630f51d40d146100905780634d055667146101385780635c60da1b1461014d5780636fbc15e91461017e575b61008e6102da565b005b34801561009c57600080fd5b506100c3600480360360208110156100b357600080fd5b50356001600160a01b03166102f4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fd5781810151838201526020016100e5565b50505050905090810190601f16801561012a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561014457600080fd5b5061008e61038e565b34801561015957600080fd5b506101626105c7565b604080516001600160a01b039092168252519081900360200190f35b34801561018a57600080fd5b5061008e600480360360408110156101a157600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156101cc57600080fd5b8201836020820111156101de57600080fd5b8035906020019184600183028401116401000000008311171561020057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506105d7945050505050565b34801561024d57600080fd5b50610162610762565b34801561026257600080fd5b5061026b610787565b60408051918252519081900360200190f35b34801561028957600080fd5b5061026b6107ac565b34801561029e57600080fd5b5061008e600480360360208110156102b557600080fd5b50356001600160a01b03166107d1565b3480156102d157600080fd5b50610162610844565b6102e26102f2565b6102f26102ed610869565b61088e565b565b600060208181529181526040908190208054825160026001831615610100026000190190921691909104601f8101859004850282018501909352828152929091908301828280156103865780601f1061035b57610100808354040283529160200191610386565b820191906000526020600020905b81548152906001019060200180831161036957829003601f168201915b505050505081565b610396610844565b6001600160a01b0316336001600160a01b0316146103f5576040805162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba103a34329030b236b4b760491b604482015290519081900360640190fd5b60006103ff6107ac565b11610449576040805162461bcd60e51b8152602060048201526015602482015274155c19dc985919481b9bdd081a5b9a5d1a585d1959605a1b604482015290519081900360640190fd5b610451610787565b61046961045c6107ac565b429063ffffffff6108b216565b10156104b0576040805162461bcd60e51b8152602060048201526011602482015270151a5b595c881b9bdd08195b185c1cd959607a1b604482015290519081900360640190fd5b60006104ba610762565b90506104c5816108fb565b6001600160a01b0381166000908152602081815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156105625780601f1061053757610100808354040283529160200191610562565b820191906000526020600020905b81548152906001019060200180831161054557829003601f168201915b5050505050905060008151111561057d5761057d828261091f565b6105876000610a59565b604080516001600160a01b038416815290517f2711ef8a6ba82dd467437054855e6edfc6424d0fb0127992b419c20f2d2e114e9181900360200190a15050565b60006105d1610869565b90505b90565b6105df610844565b6001600160a01b0316336001600160a01b03161461063e576040805162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba103a34329030b236b4b760491b604482015290519081900360640190fd5b6000610648610869565b90506001600160a01b03831661068f5760405162461bcd60e51b8152600401808060200182810382526025815260200180610bf66025913960400191505060405180910390fd5b806001600160a01b0316836001600160a01b031614156106e05760405162461bcd60e51b815260040180806020018281038252603e815260200180610bb8603e913960400191505060405180910390fd5b6001600160a01b038316600090815260208181526040909120835161070792850190610b1f565b5061071183610a7d565b61071a42610a59565b604080516001600160a01b038516815242602082015281517fe3ab72cd1d043aea9afd3c48aae4ee8f59a80381fec6c69ca502e2fb4b4f5c5a929181900390910190a1505050565b7f3c3c1acab6a17c8ef7a1d07995c8ed2942488afd9e13cf89bd5c6e48281602765490565b7f73bbd307af06a74c12a4f925288c98f759a1ee8fee7eae47a0c215cb63ef2c6b5490565b7fb49edbaf3913780c2ef1ff781deec1eb653eab7236ff107428d60052d0f0d18d5490565b6107d9610844565b6001600160a01b0316336001600160a01b031614610838576040805162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba103a34329030b236b4b760491b604482015290519081900360640190fd5b61084181610aa1565b50565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156108ad573d6000f35b3d6000fd5b60006108f483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ac5565b9392505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b60006060836001600160a01b0316836040518082805190602001908083835b6020831061095d5780518252601f19909201916020918201910161093e565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146109bd576040519150601f19603f3d011682016040523d82523d6000602084013e6109c2565b606091505b5091509150818190610a525760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a175781810151838201526020016109ff565b50505050905090810190601f168015610a445780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050505050565b7fb49edbaf3913780c2ef1ff781deec1eb653eab7236ff107428d60052d0f0d18d55565b7f3c3c1acab6a17c8ef7a1d07995c8ed2942488afd9e13cf89bd5c6e482816027655565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b60008184841115610b175760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a175781810151838201526020016109ff565b505050900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610b6057805160ff1916838001178555610b8d565b82800160010185558215610b8d579182015b82811115610b8d578251825591602001919060010190610b72565b50610b99929150610b9d565b5090565b6105d491905b80821115610b995760008155600101610ba356fe496d706c656d656e746174696f6e2061646472657373206d75737420626520646966666572656e742066726f6d207468652063757272656e74206f6e652e496d706c656d656e746174696f6e20616464726573732063616e2774206265207a65726f2ea265627a7a72315820ea5b4342899b145e8bbdcbb0df0c0af6c0bd8511ebe58f08a3894731a5eb11b164736f6c63430005110032

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000009959798b95d00a3183d20fac298e4594e599eab00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044da35a26f00000000000000000000000000000000000000000000000000000000000000010000000000000000000000001a9589f56c969d6b0d3787ea02322476ead3fb0500000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _implementation (address): 0x09959798B95d00a3183d20FaC298E4594E599eab
Arg [1] : _data (bytes): 0xda35a26f00000000000000000000000000000000000000000000000000000000000000010000000000000000000000001a9589f56c969d6b0d3787ea02322476ead3fb05

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 00000000000000000000000009959798b95d00a3183d20fac298e4594e599eab
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000044
Arg [3] : da35a26f00000000000000000000000000000000000000000000000000000000
Arg [4] : 000000010000000000000000000000001a9589f56c969d6b0d3787ea02322476
Arg [5] : ead3fb0500000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

2192:10253:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:11:0;:9;:11::i;:::-;2192:10253:2;4308:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4308:51:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4308:51:2;-1:-1:-1;;;;;4308:51:2;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4308:51:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6919:722;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6919:722:2;;;:::i;8859:97::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8859:97:2;;;:::i;:::-;;;;-1:-1:-1;;;;;8859:97:2;;;;;;;;;;;;;;5765:819;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5765:819:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;5765:819:2;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;5765:819:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5765:819:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5765:819:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5765:819:2;;-1:-1:-1;5765:819:2;;-1:-1:-1;;;;;5765:819:2:i;10250:287::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10250:287:2;;;:::i;9718:280::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9718:280:2;;;:::i;:::-;;;;;;;;;;;;;;;;10796:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10796:311:2;;;:::i;11851:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11851:93:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11851:93:2;-1:-1:-1;;;;;11851:93:2;;:::i;11480:192::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11480:192:2;;;:::i;1952:90:0:-;1988:15;:13;:15::i;:::-;2009:28;2019:17;:15;:17::i;:::-;2009:9;:28::i;:::-;1952:90::o;4308:51:2:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4308:51:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6919:722::-;12390:7;:5;:7::i;:::-;-1:-1:-1;;;;;12376:21:2;:10;-1:-1:-1;;;;;12376:21:2;;12368:57;;;;;-1:-1:-1;;;12368:57:2;;;;;;;;;;;;-1:-1:-1;;;12368:57:2;;;;;;;;;;;;;;;7011:1;6981:27;:25;:27::i;:::-;:31;6973:65;;;;;-1:-1:-1;;;6973:65:2;;;;;;;;;;;;-1:-1:-1;;;6973:65:2;;;;;;;;;;;;;;;7203:18;:16;:18::i;:::-;7139:48;7159:27;:25;:27::i;:::-;7139:15;;:48;:19;:48;:::i;:::-;:82;;7049:215;;;;;-1:-1:-1;;;7049:215:2;;;;;;;;;;;;-1:-1:-1;;;7049:215:2;;;;;;;;;;;;;;;7275:25;7303:19;:17;:19::i;:::-;7275:47;;7333:36;7351:17;7333;:36::i;:::-;-1:-1:-1;;;;;7400:37:2;;:18;:37;;;;;;;;;;;;7380:57;;;;;;-1:-1:-1;;7380:57:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;;:57;;;7400:37;7380:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7465:1;7451:4;:11;:15;7447:95;;;7482:49;7507:17;7526:4;7482:24;:49::i;:::-;7552:31;7581:1;7552:28;:31::i;:::-;7599:35;;;-1:-1:-1;;;;;7599:35:2;;;;;;;;;;;;;;;12435:1;;6919:722::o;8859:97::-;8906:7;8932:17;:15;:17::i;:::-;8925:24;;8859:97;;:::o;5765:819::-;12390:7;:5;:7::i;:::-;-1:-1:-1;;;;;12376:21:2;:10;-1:-1:-1;;;;;12376:21:2;;12368:57;;;;;-1:-1:-1;;;12368:57:2;;;;;;;;;;;;-1:-1:-1;;;12368:57:2;;;;;;;;;;;;;;;5879:29;5911:17;:15;:17::i;:::-;5879:49;-1:-1:-1;;;;;;5959:32:2;;5938:116;;;;-1:-1:-1;;;5938:116:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6107:21;-1:-1:-1;;;;;6085:43:2;:18;-1:-1:-1;;;;;6085:43:2;;;6064:152;;;;-1:-1:-1;;;6064:152:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6227:38:2;;:18;:38;;;;;;;;;;;:46;;;;;;;;:::i;:::-;;6284:40;6305:18;6284:20;:40::i;:::-;6400:45;6429:15;6400:28;:45::i;:::-;6526:51;;;-1:-1:-1;;;;;6526:51:2;;;;6561:15;6526:51;;;;;;;;;;;;;;;;;12435:1;5765:819;;:::o;10250:287::-;3569:66;10506:15;;10470:61::o;9718:280::-;3221:66;9967:15;;9932:60::o;10796:311::-;3936:66;11076:15;;11032:69::o;11851:93::-;12390:7;:5;:7::i;:::-;-1:-1:-1;;;;;12376:21:2;:10;-1:-1:-1;;;;;12376:21:2;;12368:57;;;;;-1:-1:-1;;;12368:57:2;;;;;;;;;;;;-1:-1:-1;;;12368:57:2;;;;;;;;;;;;;;;11918:19;11927:9;11918:8;:19::i;:::-;11851:93;:::o;11480:192::-;2492:66;11645:11;;11624:42::o;9119:215::-;2818:66;9307:11;;9285:43::o;878:731:0:-;1180:12;1177:1;1174;1161:32;1370:1;1367;1353:12;1350:1;1334:14;1329:3;1316:56;1434:14;1431:1;1428;1413:36;1464:6;1519:36;;;;1582:14;1579:1;1572:25;1519:36;1538:14;1535:1;1528:25;1274:134:1;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;1274:134;-1:-1:-1;;;1274:134:1:o;9490:222:2:-;2818:66;9667:29;9653:53::o;8005:273::-;8126:12;8140:23;8167:15;-1:-1:-1;;;;;8167:28:2;8209:5;8167:57;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8167:57:2;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;8125:99:2;;;;8243:7;8259:10;8235:36;;;;;-1:-1:-1;;;8235:36:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8235:36:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8005:273;;;;:::o;11113:283::-;3936:66;11336:44;11322:68::o;10543:247::-;3569:66;10738:36;10724:60::o;12060:192::-;2492:66;12213:23;12199:47::o;1732:187:1:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;1837:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1837:29:1;-1:-1:-1;;;1888:5:1;;;1732:187::o;2192:10253:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2192:10253:2;;;-1:-1:-1;2192:10253:2;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://ea5b4342899b145e8bbdcbb0df0c0af6c0bd8511ebe58f08a3894731a5eb11b1

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