Holesky Testnet

Contract

0x594Fb75D3dc2DFa0150Ad03F99F97817747dd4E1

Overview

ETH Balance

0 ETH

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Set Withdrawal A...25103322024-10-11 7:32:242 days ago1728631944IN
0x594Fb75D...7747dd4E1
0 ETH0.000341357.31869802
Confirm Withdraw...25060872024-10-10 15:57:483 days ago1728575868IN
0x594Fb75D...7747dd4E1
0 ETH0.00029346.34067742
Set Withdrawal A...25060722024-10-10 15:54:243 days ago1728575664IN
0x594Fb75D...7747dd4E1
0 ETH0.000222847.51120843
Set Withdrawal A...25060412024-10-10 15:47:483 days ago1728575268IN
0x594Fb75D...7747dd4E1
0 ETH0.000401778.59087325
Confirm Withdraw...24912782024-10-08 9:25:245 days ago1728379524IN
0x594Fb75D...7747dd4E1
0 ETH0.00000910.19677286
Set Withdrawal A...24912542024-10-08 9:20:125 days ago1728379212IN
0x594Fb75D...7747dd4E1
0 ETH0.000093532
Set Withdrawal A...23858592024-09-22 11:33:4821 days ago1727004828IN
0x594Fb75D...7747dd4E1
0 ETH0.00009332
Confirm Withdraw...23722182024-09-20 10:36:1223 days ago1726828572IN
0x594Fb75D...7747dd4E1
0 ETH0.000044880.97
Set Withdrawal A...23721952024-09-20 10:31:3623 days ago1726828296IN
0x594Fb75D...7747dd4E1
0 ETH0.000093532
Confirm Withdraw...23674502024-09-19 17:12:2424 days ago1726765944IN
0x594Fb75D...7747dd4E1
0 ETH0.000038540.832972
Set Withdrawal A...23673692024-09-19 16:53:2424 days ago1726764804IN
0x594Fb75D...7747dd4E1
0 ETH0.000093532
Confirm Withdraw...22388512024-08-30 22:25:3643 days ago1725056736IN
0x594Fb75D...7747dd4E1
0 ETH0.000012530.27095205
Set Withdrawal A...22388462024-08-30 22:24:3643 days ago1725056676IN
0x594Fb75D...7747dd4E1
0 ETH0.000093532
Confirm Withdraw...22271302024-08-29 3:30:0045 days ago1724902200IN
0x594Fb75D...7747dd4E1
0 ETH0.000004660.10082319
Set Withdrawal A...22270912024-08-29 3:21:3645 days ago1724901696IN
0x594Fb75D...7747dd4E1
0 ETH0.000093532
Confirm Withdraw...22136082024-08-27 2:14:0047 days ago1724724840IN
0x594Fb75D...7747dd4E1
0 ETH0.00002930.63325119
Set Withdrawal A...22135972024-08-27 2:11:3647 days ago1724724696IN
0x594Fb75D...7747dd4E1
0 ETH0.000093532
Confirm Withdraw...22079832024-08-26 5:58:3648 days ago1724651916IN
0x594Fb75D...7747dd4E1
0 ETH0.000029171
Set Withdrawal A...22079792024-08-26 5:57:4848 days ago1724651868IN
0x594Fb75D...7747dd4E1
0 ETH0.000003070.06582103
Confirm Withdraw...22073342024-08-26 3:35:1248 days ago1724643312IN
0x594Fb75D...7747dd4E1
0 ETH0.000005540.11980521
Set Withdrawal A...22073282024-08-26 3:33:4848 days ago1724643228IN
0x594Fb75D...7747dd4E1
0 ETH0.000046761
Confirm Withdraw...21390972024-08-15 17:08:1259 days ago1723741692IN
0x594Fb75D...7747dd4E1
0 ETH0.000000170.00715301
Confirm Withdraw...21389882024-08-15 16:44:3659 days ago1723740276IN
0x594Fb75D...7747dd4E1
0 ETH0.000000380.00832972
Set Withdrawal A...21348142024-08-15 1:19:0059 days ago1723684740IN
0x594Fb75D...7747dd4E1
0 ETH0.000093532
Set Withdrawal A...21325192024-08-14 16:43:0060 days ago1723653780IN
0x594Fb75D...7747dd4E1
0 ETH0.000023210.49630641
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RocketStorage

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 15000 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 3 : RocketStorage.sol
/**
  *       .
  *      / \
  *     |.'.|
  *     |'.'|
  *   ,'|   |`.
  *  |,-'-|-'-.|
  *   __|_| |         _        _      _____           _
  *  | ___ \|        | |      | |    | ___ \         | |
  *  | |_/ /|__   ___| | _____| |_   | |_/ /__   ___ | |
  *  |    // _ \ / __| |/ / _ \ __|  |  __/ _ \ / _ \| |
  *  | |\ \ (_) | (__|   <  __/ |_   | | | (_) | (_) | |
  *  \_| \_\___/ \___|_|\_\___|\__|  \_|  \___/ \___/|_|
  * +---------------------------------------------------+
  * |  DECENTRALISED STAKING PROTOCOL FOR ETHEREUM 2.0  |
  * +---------------------------------------------------+
  *
  *  Rocket Pool is a first-of-its-kind ETH2 Proof of Stake protocol, designed to be community owned,
  *  decentralised, trustless and compatible with staking in Ethereum 2.0.
  *
  *  For more information about Rocket Pool, visit https://rocketpool.net
  *
  *  Authors: David Rugendyke, Jake Pospischil, Kane Wallmann, Darren Langley, Joe Clapis, Nick Doherty
  *
  */

pragma solidity 0.7.6;

// SPDX-License-Identifier: GPL-3.0-only

import "../interface/RocketStorageInterface.sol";
import "@openzeppelin/contracts/math/SafeMath.sol";

/// @title The primary persistent storage for Rocket Pool
/// @author David Rugendyke

contract RocketStorage is RocketStorageInterface {

    // Events
    event NodeWithdrawalAddressSet(address indexed node, address indexed withdrawalAddress, uint256 time);
    event GuardianChanged(address oldGuardian, address newGuardian);

    // Libraries
    using SafeMath for uint256;

    // Storage maps
    mapping(bytes32 => string)     private stringStorage;
    mapping(bytes32 => bytes)      private bytesStorage;
    mapping(bytes32 => uint256)    private uintStorage;
    mapping(bytes32 => int256)     private intStorage;
    mapping(bytes32 => address)    private addressStorage;
    mapping(bytes32 => bool)       private booleanStorage;
    mapping(bytes32 => bytes32)    private bytes32Storage;

    // Protected storage (not accessible by network contracts)
    mapping(address => address)    private withdrawalAddresses;
    mapping(address => address)    private pendingWithdrawalAddresses;

    // Guardian address
    address guardian;
    address newGuardian;

    // Flag storage has been initialised
    bool storageInit = false;

    /// @dev Only allow access from the latest version of a contract in the Rocket Pool network after deployment
    modifier onlyLatestRocketNetworkContract() {
        if (storageInit == true) {
            // Make sure the access is permitted to only contracts in our Dapp
            require(booleanStorage[keccak256(abi.encodePacked("contract.exists", msg.sender))], "Invalid or outdated network contract");
        } else {
            // Only Dapp and the guardian account are allowed access during initialisation.
            // tx.origin is only safe to use in this case for deployment since no external contracts are interacted with
            require((
                booleanStorage[keccak256(abi.encodePacked("contract.exists", msg.sender))] || tx.origin == guardian
            ), "Invalid or outdated network contract attempting access during deployment");
        }
        _;
    }


    /// @dev Construct RocketStorage
    constructor() {
        // Set the guardian upon deployment
        guardian = msg.sender;
    }

    // Get guardian address
    function getGuardian() external override view returns (address) {
        return guardian;
    }

    // Transfers guardianship to a new address
    function setGuardian(address _newAddress) external override {
        // Check tx comes from current guardian
        require(msg.sender == guardian, "Is not guardian account");
        // Store new address awaiting confirmation
        newGuardian = _newAddress;
    }

    // Confirms change of guardian
    function confirmGuardian() external override {
        // Check tx came from new guardian address
        require(msg.sender == newGuardian, "Confirmation must come from new guardian address");
        // Store old guardian for event
        address oldGuardian = guardian;
        // Update guardian and clear storage
        guardian = newGuardian;
        delete newGuardian;
        // Emit event
        emit GuardianChanged(oldGuardian, guardian);
    }

    // Set this as being deployed now
    function getDeployedStatus() external override view returns (bool) {
        return storageInit;
    }

    // Set this as being deployed now
    function setDeployedStatus() external {
        // Only guardian can lock this down
        require(msg.sender == guardian, "Is not guardian account");
        // Set it now
        storageInit = true;
    }

    // Protected storage

    // Get a node's withdrawal address
    function getNodeWithdrawalAddress(address _nodeAddress) public override view returns (address) {
        // If no withdrawal address has been set, return the nodes address
        address withdrawalAddress = withdrawalAddresses[_nodeAddress];
        if (withdrawalAddress == address(0)) {
            return _nodeAddress;
        }
        return withdrawalAddress;
    }

    // Get a node's pending withdrawal address
    function getNodePendingWithdrawalAddress(address _nodeAddress) external override view returns (address) {
        return pendingWithdrawalAddresses[_nodeAddress];
    }

    // Set a node's withdrawal address
    function setWithdrawalAddress(address _nodeAddress, address _newWithdrawalAddress, bool _confirm) external override {
        // Check new withdrawal address
        require(_newWithdrawalAddress != address(0x0), "Invalid withdrawal address");
        // Confirm the transaction is from the node's current withdrawal address
        address withdrawalAddress = getNodeWithdrawalAddress(_nodeAddress);
        require(withdrawalAddress == msg.sender, "Only a tx from a node's withdrawal address can update it");
        // Update immediately if confirmed
        if (_confirm) {
            updateWithdrawalAddress(_nodeAddress, _newWithdrawalAddress);
        }
        // Set pending withdrawal address if not confirmed
        else {
            pendingWithdrawalAddresses[_nodeAddress] = _newWithdrawalAddress;
        }
    }

    // Confirm a node's new withdrawal address
    function confirmWithdrawalAddress(address _nodeAddress) external override {
        // Get node by pending withdrawal address
        require(pendingWithdrawalAddresses[_nodeAddress] == msg.sender, "Confirmation must come from the pending withdrawal address");
        delete pendingWithdrawalAddresses[_nodeAddress];
        // Update withdrawal address
        updateWithdrawalAddress(_nodeAddress, msg.sender);
    }

    // Update a node's withdrawal address
    function updateWithdrawalAddress(address _nodeAddress, address _newWithdrawalAddress) private {
        // Set new withdrawal address
        withdrawalAddresses[_nodeAddress] = _newWithdrawalAddress;
        // Emit withdrawal address set event
        emit NodeWithdrawalAddressSet(_nodeAddress, _newWithdrawalAddress, block.timestamp);
    }

    /// @param _key The key for the record
    function getAddress(bytes32 _key) override external view returns (address r) {
        return addressStorage[_key];
    }

    /// @param _key The key for the record
    function getUint(bytes32 _key) override external view returns (uint256 r) {
        return uintStorage[_key];
    }

    /// @param _key The key for the record
    function getString(bytes32 _key) override external view returns (string memory) {
        return stringStorage[_key];
    }

    /// @param _key The key for the record
    function getBytes(bytes32 _key) override external view returns (bytes memory) {
        return bytesStorage[_key];
    }

    /// @param _key The key for the record
    function getBool(bytes32 _key) override external view returns (bool r) {
        return booleanStorage[_key];
    }

    /// @param _key The key for the record
    function getInt(bytes32 _key) override external view returns (int r) {
        return intStorage[_key];
    }

    /// @param _key The key for the record
    function getBytes32(bytes32 _key) override external view returns (bytes32 r) {
        return bytes32Storage[_key];
    }


    /// @param _key The key for the record
    function setAddress(bytes32 _key, address _value) onlyLatestRocketNetworkContract override external {
        addressStorage[_key] = _value;
    }

    /// @param _key The key for the record
    function setUint(bytes32 _key, uint _value) onlyLatestRocketNetworkContract override external {
        uintStorage[_key] = _value;
    }

    /// @param _key The key for the record
    function setString(bytes32 _key, string calldata _value) onlyLatestRocketNetworkContract override external {
        stringStorage[_key] = _value;
    }

    /// @param _key The key for the record
    function setBytes(bytes32 _key, bytes calldata _value) onlyLatestRocketNetworkContract override external {
        bytesStorage[_key] = _value;
    }

    /// @param _key The key for the record
    function setBool(bytes32 _key, bool _value) onlyLatestRocketNetworkContract override external {
        booleanStorage[_key] = _value;
    }

    /// @param _key The key for the record
    function setInt(bytes32 _key, int _value) onlyLatestRocketNetworkContract override external {
        intStorage[_key] = _value;
    }

    /// @param _key The key for the record
    function setBytes32(bytes32 _key, bytes32 _value) onlyLatestRocketNetworkContract override external {
        bytes32Storage[_key] = _value;
    }


    /// @param _key The key for the record
    function deleteAddress(bytes32 _key) onlyLatestRocketNetworkContract override external {
        delete addressStorage[_key];
    }

    /// @param _key The key for the record
    function deleteUint(bytes32 _key) onlyLatestRocketNetworkContract override external {
        delete uintStorage[_key];
    }

    /// @param _key The key for the record
    function deleteString(bytes32 _key) onlyLatestRocketNetworkContract override external {
        delete stringStorage[_key];
    }

    /// @param _key The key for the record
    function deleteBytes(bytes32 _key) onlyLatestRocketNetworkContract override external {
        delete bytesStorage[_key];
    }

    /// @param _key The key for the record
    function deleteBool(bytes32 _key) onlyLatestRocketNetworkContract override external {
        delete booleanStorage[_key];
    }

    /// @param _key The key for the record
    function deleteInt(bytes32 _key) onlyLatestRocketNetworkContract override external {
        delete intStorage[_key];
    }

    /// @param _key The key for the record
    function deleteBytes32(bytes32 _key) onlyLatestRocketNetworkContract override external {
        delete bytes32Storage[_key];
    }


    /// @param _key The key for the record
    /// @param _amount An amount to add to the record's value
    function addUint(bytes32 _key, uint256 _amount) onlyLatestRocketNetworkContract override external {
        uintStorage[_key] = uintStorage[_key].add(_amount);
    }

    /// @param _key The key for the record
    /// @param _amount An amount to subtract from the record's value
    function subUint(bytes32 _key, uint256 _amount) onlyLatestRocketNetworkContract override external {
        uintStorage[_key] = uintStorage[_key].sub(_amount);
    }
}

File 2 of 3 : RocketStorageInterface.sol
/**
  *       .
  *      / \
  *     |.'.|
  *     |'.'|
  *   ,'|   |`.
  *  |,-'-|-'-.|
  *   __|_| |         _        _      _____           _
  *  | ___ \|        | |      | |    | ___ \         | |
  *  | |_/ /|__   ___| | _____| |_   | |_/ /__   ___ | |
  *  |    // _ \ / __| |/ / _ \ __|  |  __/ _ \ / _ \| |
  *  | |\ \ (_) | (__|   <  __/ |_   | | | (_) | (_) | |
  *  \_| \_\___/ \___|_|\_\___|\__|  \_|  \___/ \___/|_|
  * +---------------------------------------------------+
  * |  DECENTRALISED STAKING PROTOCOL FOR ETHEREUM 2.0  |
  * +---------------------------------------------------+
  *
  *  Rocket Pool is a first-of-its-kind ETH2 Proof of Stake protocol, designed to be community owned,
  *  decentralised, trustless and compatible with staking in Ethereum 2.0.
  *
  *  For more information about Rocket Pool, visit https://rocketpool.net
  *
  *  Authors: David Rugendyke, Jake Pospischil, Kane Wallmann, Darren Langley, Joe Clapis, Nick Doherty
  *
  */

pragma solidity >0.5.0 <0.9.0;

// SPDX-License-Identifier: GPL-3.0-only

interface RocketStorageInterface {

    // Deploy status
    function getDeployedStatus() external view returns (bool);

    // Guardian
    function getGuardian() external view returns(address);
    function setGuardian(address _newAddress) external;
    function confirmGuardian() external;

    // Getters
    function getAddress(bytes32 _key) external view returns (address);
    function getUint(bytes32 _key) external view returns (uint);
    function getString(bytes32 _key) external view returns (string memory);
    function getBytes(bytes32 _key) external view returns (bytes memory);
    function getBool(bytes32 _key) external view returns (bool);
    function getInt(bytes32 _key) external view returns (int);
    function getBytes32(bytes32 _key) external view returns (bytes32);

    // Setters
    function setAddress(bytes32 _key, address _value) external;
    function setUint(bytes32 _key, uint _value) external;
    function setString(bytes32 _key, string calldata _value) external;
    function setBytes(bytes32 _key, bytes calldata _value) external;
    function setBool(bytes32 _key, bool _value) external;
    function setInt(bytes32 _key, int _value) external;
    function setBytes32(bytes32 _key, bytes32 _value) external;

    // Deleters
    function deleteAddress(bytes32 _key) external;
    function deleteUint(bytes32 _key) external;
    function deleteString(bytes32 _key) external;
    function deleteBytes(bytes32 _key) external;
    function deleteBool(bytes32 _key) external;
    function deleteInt(bytes32 _key) external;
    function deleteBytes32(bytes32 _key) external;

    // Arithmetic
    function addUint(bytes32 _key, uint256 _amount) external;
    function subUint(bytes32 _key, uint256 _amount) external;

    // Protected storage
    function getNodeWithdrawalAddress(address _nodeAddress) external view returns (address);
    function getNodePendingWithdrawalAddress(address _nodeAddress) external view returns (address);
    function setWithdrawalAddress(address _nodeAddress, address _newWithdrawalAddress, bool _confirm) external;
    function confirmWithdrawalAddress(address _nodeAddress) external;
}

File 3 of 3 : SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.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, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, 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 (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @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) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @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) {
        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, reverting 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) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * 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, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

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

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldGuardian","type":"address"},{"indexed":false,"internalType":"address","name":"newGuardian","type":"address"}],"name":"GuardianChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"node","type":"address"},{"indexed":true,"internalType":"address","name":"withdrawalAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"NodeWithdrawalAddressSet","type":"event"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addUint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"confirmGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nodeAddress","type":"address"}],"name":"confirmWithdrawalAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"deleteAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"deleteBool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"deleteBytes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"deleteBytes32","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"deleteInt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"deleteString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"deleteUint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"getAddress","outputs":[{"internalType":"address","name":"r","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"getBool","outputs":[{"internalType":"bool","name":"r","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"getBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"getBytes32","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDeployedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGuardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"getInt","outputs":[{"internalType":"int256","name":"r","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_nodeAddress","type":"address"}],"name":"getNodePendingWithdrawalAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_nodeAddress","type":"address"}],"name":"getNodeWithdrawalAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"getString","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"getUint","outputs":[{"internalType":"uint256","name":"r","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"address","name":"_value","type":"address"}],"name":"setAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"setBool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"bytes","name":"_value","type":"bytes"}],"name":"setBytes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"bytes32","name":"_value","type":"bytes32"}],"name":"setBytes32","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setDeployedStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"setGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"int256","name":"_value","type":"int256"}],"name":"setInt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"string","name":"_value","type":"string"}],"name":"setString","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setUint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nodeAddress","type":"address"},{"internalType":"address","name":"_newWithdrawalAddress","type":"address"},{"internalType":"bool","name":"_confirm","type":"bool"}],"name":"setWithdrawalAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"subUint","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600a805460ff60a01b1916905534801561001d57600080fd5b50600980546001600160a01b03191633179055612c068061003f6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063a543ccea1161010f578063ca446dd9116100a2578063ebb9d8c911610071578063ebb9d8c914610702578063f6bb3cc414610725578063fd41251314610742578063febffd9914610775576101f0565b8063ca446dd91461066c578063dc97d962146106a5578063e2a4853a146106c2578063e2b202bf146106e5576101f0565b8063adb353dc116100de578063adb353dc146105dc578063bd02d0f5146105ff578063bd4391261461061c578063c031a1801461064f576101f0565b8063a543ccea1461053b578063a6ed563e14610580578063a75b87d2146105af578063abfdcced146105b7576101f0565b80634e91db08116101875780637ae1cfca116101565780637ae1cfca1461043c5780638a0dac4a146104595780638c1600951461048c578063986e791a146104a9576101f0565b80634e91db08146103525780635b49ff6214610375578063616b59f6146103a85780636e899550146103c5576101f0565b806321f8a721116101c357806321f8a721146102555780632c62ff2d1461029b5780632e28d084146102b85780633e49bed01461032f576101f0565b80630b9adc57146101f55780630e14a376146102145780631bed5241146102315780631e0ea61e1461024d575b600080fd5b6102126004803603602081101561020b57600080fd5b503561077d565b005b6102126004803603602081101561022a57600080fd5b5035610913565b610239610ace565b604080519115158252519081900360200190f35b610212610aef565b6102726004803603602081101561026b57600080fd5b5035610bd8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610212600480360360208110156102b157600080fd5b5035610c03565b610212600480360360408110156102ce57600080fd5b813591908101906040810160208201356401000000008111156102f057600080fd5b82018360208201111561030257600080fd5b8035906020019184600183028401116401000000008311171561032457600080fd5b509092509050610dbe565b6102126004803603604081101561034557600080fd5b5080359060200135610f62565b6102126004803603604081101561036857600080fd5b50803590602001356110f9565b6102726004803603602081101561038b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611290565b610212600480360360208110156103be57600080fd5b50356112ce565b610212600480360360408110156103db57600080fd5b813591908101906040810160208201356401000000008111156103fd57600080fd5b82018360208201111561040f57600080fd5b8035906020019184600183028401116401000000008311171561043157600080fd5b50909250905061146d565b6102396004803603602081101561045257600080fd5b503561160b565b6102126004803603602081101561046f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611620565b610212600480360360208110156104a257600080fd5b50356116d3565b6104c6600480360360208110156104bf57600080fd5b5035611869565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105005781810151838201526020016104e8565b50505050905090810190601f16801561052d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102126004803603606081101561055157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001351515611926565b61059d6004803603602081101561059657600080fd5b5035611a59565b60408051918252519081900360200190f35b610272611a6b565b610212600480360360408110156105cd57600080fd5b50803590602001351515611a87565b610212600480360360408110156105f257600080fd5b5080359060200135611c4a565b61059d6004803603602081101561061557600080fd5b5035611dfe565b6102126004803603602081101561063257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611e10565b6104c66004803603602081101561066557600080fd5b5035611eca565b6102126004803603604081101561068257600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16611f51565b61059d600480360360208110156106bb57600080fd5b5035612129565b610212600480360360408110156106d857600080fd5b508035906020013561213b565b610212600480360360208110156106fb57600080fd5b50356122d2565b6102126004803603604081101561071857600080fd5b5080359060200135612468565b6102126004803603602081101561073b57600080fd5b5035612606565b6102726004803603602081101561075857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166127a2565b6102126127cd565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561084557604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166108405760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b610902565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16806108c7575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6109025760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600090815260066020526040812055565b600a5474010000000000000000000000000000000000000000900460ff161515600114156109db57604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166109d65760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b610a98565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680610a5d575060095473ffffffffffffffffffffffffffffffffffffffff1632145b610a985760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600090815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600a5474010000000000000000000000000000000000000000900460ff1690565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610b455760405162461bcd60e51b8152600401808060200182810382526030815260200180612afb6030913960400191505060405180910390fd5b60098054600a80547fffffffffffffffffffffffff000000000000000000000000000000000000000080841673ffffffffffffffffffffffffffffffffffffffff838116919091179586905591169091556040805192821680845293909116602083015280517fa14fc14d8620a708a896fd11392a235647d99385500a295f0d7da2a258b2e9679281900390910190a150565b60008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff165b919050565b600a5474010000000000000000000000000000000000000000900460ff16151560011415610ccb57604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16610cc65760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b610d88565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680610d4d575060095473ffffffffffffffffffffffffffffffffffffffff1632145b610d885760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b600a5474010000000000000000000000000000000000000000900460ff16151560011415610e8657604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16610e815760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b610f43565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680610f08575060095473ffffffffffffffffffffffffffffffffffffffff1632145b610f435760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b6000838152600160205260409020610f5c9083836129c3565b50505050565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561102a57604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166110255760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b6110e7565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16806110ac575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6110e75760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b60009182526003602052604090912055565b600a5474010000000000000000000000000000000000000000900460ff161515600114156111c157604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166111bc5760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b61127e565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680611243575060095473ffffffffffffffffffffffffffffffffffffffff1632145b61127e5760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b60009182526006602052604090912055565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260076020526040812054909116806112c85782915050610bfe565b92915050565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561139657604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166113915760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b611453565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680611418575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6114535760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600081815260016020526040812061146a91612a6d565b50565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561153557604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166115305760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b6115f2565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16806115b7575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6115f25760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b6000838152602081905260409020610f5c9083836129c3565b60009081526005602052604090205460ff1690565b60095473ffffffffffffffffffffffffffffffffffffffff16331461168c576040805162461bcd60e51b815260206004820152601760248201527f4973206e6f7420677561726469616e206163636f756e74000000000000000000604482015290519081900360640190fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561179b57604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166117965760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b611858565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff168061181d575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6118585760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600090815260036020526040812055565b6000818152602081815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018616150201909316929092049182018490048402810184019094528084526060939283018282801561191a5780601f106118ef5761010080835404028352916020019161191a565b820191906000526020600020905b8154815290600101906020018083116118fd57829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff821661198e576040805162461bcd60e51b815260206004820152601a60248201527f496e76616c6964207769746864726177616c2061646472657373000000000000604482015290519081900360640190fd5b600061199984611290565b905073ffffffffffffffffffffffffffffffffffffffff811633146119ef5760405162461bcd60e51b8152600401808060200182810382526038815260200180612ac36038913960400191505060405180910390fd5b8115611a04576119ff848461287a565b610f5c565b505073ffffffffffffffffffffffffffffffffffffffff918216600090815260086020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b60009081526006602052604090205490565b60095473ffffffffffffffffffffffffffffffffffffffff1690565b600a5474010000000000000000000000000000000000000000900460ff16151560011415611b4f57604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16611b4a5760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b611c0c565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680611bd1575060095473ffffffffffffffffffffffffffffffffffffffff1632145b611c0c5760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b60009182526005602052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600a5474010000000000000000000000000000000000000000900460ff16151560011415611d1257604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16611d0d5760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b611dcf565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680611d94575060095473ffffffffffffffffffffffffffffffffffffffff1632145b611dcf5760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600082815260026020526040902054611de89082612905565b6000928352600260205260409092209190915550565b60009081526002602052604090205490565b73ffffffffffffffffffffffffffffffffffffffff818116600090815260086020526040902054163314611e755760405162461bcd60e51b815260040180806020018281038252603a815260200180612b73603a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561146a813361287a565b60008181526001602081815260409283902080548451600294821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911693909304601f8101839004830284018301909452838352606093909183018282801561191a5780601f106118ef5761010080835404028352916020019161191a565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561201957604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166120145760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b6120d6565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff168061209b575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6120d65760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b60009182526004602052604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60009081526003602052604090205490565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561220357604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166121fe5760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b6122c0565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680612285575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6122c05760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b60009182526002602052604090912055565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561239a57604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166123955760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b612457565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff168061241c575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6124575760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600090815260026020526040812055565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561253057604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1661252b5760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b6125ed565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16806125b2575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6125ed5760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600082815260026020526040902054611de89082612966565b600a5474010000000000000000000000000000000000000000900460ff161515600114156126ce57604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166126c95760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b61278b565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680612750575060095473ffffffffffffffffffffffffffffffffffffffff1632145b61278b5760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600081815260208190526040812061146a91612a6d565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600860205260409020541690565b60095473ffffffffffffffffffffffffffffffffffffffff163314612839576040805162461bcd60e51b815260206004820152601760248201527f4973206e6f7420677561726469616e206163636f756e74000000000000000000604482015290519081900360640190fd5b600a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b73ffffffffffffffffffffffffffffffffffffffff82811660008181526007602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055815142815291517fe04362a1cecc83cc66f0c6704a58da505fba1d6170f40e4543d477e76fa9175c9281900390910190a35050565b60008282018381101561295f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000828211156129bd576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826129f95760008555612a5d565b82601f10612a30578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555612a5d565b82800160010185558215612a5d579182015b82811115612a5d578235825591602001919060010190612a42565b50612a69929150612aad565b5090565b50805460018160011615610100020316600290046000825580601f10612a93575061146a565b601f01602090049060005260206000209081019061146a91905b5b80821115612a695760008155600101612aae56fe4f6e6c7920612074782066726f6d2061206e6f64652773207769746864726177616c20616464726573732063616e20757064617465206974436f6e6669726d6174696f6e206d75737420636f6d652066726f6d206e657720677561726469616e2061646472657373496e76616c6964206f72206f75746461746564206e6574776f726b20636f6e747261637420617474656d7074696e672061636365737320647572696e67206465706c6f796d656e74436f6e6669726d6174696f6e206d75737420636f6d652066726f6d207468652070656e64696e67207769746864726177616c2061646472657373496e76616c6964206f72206f75746461746564206e6574776f726b20636f6e7472616374a2646970667358221220a6aab4c70eb5aab6d329936cf2db4a95c26883cbe93588e033afb1fb38ae775f64736f6c63430007060033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101f05760003560e01c8063a543ccea1161010f578063ca446dd9116100a2578063ebb9d8c911610071578063ebb9d8c914610702578063f6bb3cc414610725578063fd41251314610742578063febffd9914610775576101f0565b8063ca446dd91461066c578063dc97d962146106a5578063e2a4853a146106c2578063e2b202bf146106e5576101f0565b8063adb353dc116100de578063adb353dc146105dc578063bd02d0f5146105ff578063bd4391261461061c578063c031a1801461064f576101f0565b8063a543ccea1461053b578063a6ed563e14610580578063a75b87d2146105af578063abfdcced146105b7576101f0565b80634e91db08116101875780637ae1cfca116101565780637ae1cfca1461043c5780638a0dac4a146104595780638c1600951461048c578063986e791a146104a9576101f0565b80634e91db08146103525780635b49ff6214610375578063616b59f6146103a85780636e899550146103c5576101f0565b806321f8a721116101c357806321f8a721146102555780632c62ff2d1461029b5780632e28d084146102b85780633e49bed01461032f576101f0565b80630b9adc57146101f55780630e14a376146102145780631bed5241146102315780631e0ea61e1461024d575b600080fd5b6102126004803603602081101561020b57600080fd5b503561077d565b005b6102126004803603602081101561022a57600080fd5b5035610913565b610239610ace565b604080519115158252519081900360200190f35b610212610aef565b6102726004803603602081101561026b57600080fd5b5035610bd8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610212600480360360208110156102b157600080fd5b5035610c03565b610212600480360360408110156102ce57600080fd5b813591908101906040810160208201356401000000008111156102f057600080fd5b82018360208201111561030257600080fd5b8035906020019184600183028401116401000000008311171561032457600080fd5b509092509050610dbe565b6102126004803603604081101561034557600080fd5b5080359060200135610f62565b6102126004803603604081101561036857600080fd5b50803590602001356110f9565b6102726004803603602081101561038b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611290565b610212600480360360208110156103be57600080fd5b50356112ce565b610212600480360360408110156103db57600080fd5b813591908101906040810160208201356401000000008111156103fd57600080fd5b82018360208201111561040f57600080fd5b8035906020019184600183028401116401000000008311171561043157600080fd5b50909250905061146d565b6102396004803603602081101561045257600080fd5b503561160b565b6102126004803603602081101561046f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611620565b610212600480360360208110156104a257600080fd5b50356116d3565b6104c6600480360360208110156104bf57600080fd5b5035611869565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105005781810151838201526020016104e8565b50505050905090810190601f16801561052d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102126004803603606081101561055157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001351515611926565b61059d6004803603602081101561059657600080fd5b5035611a59565b60408051918252519081900360200190f35b610272611a6b565b610212600480360360408110156105cd57600080fd5b50803590602001351515611a87565b610212600480360360408110156105f257600080fd5b5080359060200135611c4a565b61059d6004803603602081101561061557600080fd5b5035611dfe565b6102126004803603602081101561063257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611e10565b6104c66004803603602081101561066557600080fd5b5035611eca565b6102126004803603604081101561068257600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16611f51565b61059d600480360360208110156106bb57600080fd5b5035612129565b610212600480360360408110156106d857600080fd5b508035906020013561213b565b610212600480360360208110156106fb57600080fd5b50356122d2565b6102126004803603604081101561071857600080fd5b5080359060200135612468565b6102126004803603602081101561073b57600080fd5b5035612606565b6102726004803603602081101561075857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166127a2565b6102126127cd565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561084557604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166108405760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b610902565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16806108c7575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6109025760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600090815260066020526040812055565b600a5474010000000000000000000000000000000000000000900460ff161515600114156109db57604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166109d65760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b610a98565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680610a5d575060095473ffffffffffffffffffffffffffffffffffffffff1632145b610a985760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600090815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600a5474010000000000000000000000000000000000000000900460ff1690565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610b455760405162461bcd60e51b8152600401808060200182810382526030815260200180612afb6030913960400191505060405180910390fd5b60098054600a80547fffffffffffffffffffffffff000000000000000000000000000000000000000080841673ffffffffffffffffffffffffffffffffffffffff838116919091179586905591169091556040805192821680845293909116602083015280517fa14fc14d8620a708a896fd11392a235647d99385500a295f0d7da2a258b2e9679281900390910190a150565b60008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff165b919050565b600a5474010000000000000000000000000000000000000000900460ff16151560011415610ccb57604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16610cc65760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b610d88565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680610d4d575060095473ffffffffffffffffffffffffffffffffffffffff1632145b610d885760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b600a5474010000000000000000000000000000000000000000900460ff16151560011415610e8657604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16610e815760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b610f43565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680610f08575060095473ffffffffffffffffffffffffffffffffffffffff1632145b610f435760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b6000838152600160205260409020610f5c9083836129c3565b50505050565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561102a57604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166110255760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b6110e7565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16806110ac575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6110e75760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b60009182526003602052604090912055565b600a5474010000000000000000000000000000000000000000900460ff161515600114156111c157604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166111bc5760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b61127e565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680611243575060095473ffffffffffffffffffffffffffffffffffffffff1632145b61127e5760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b60009182526006602052604090912055565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260076020526040812054909116806112c85782915050610bfe565b92915050565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561139657604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166113915760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b611453565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680611418575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6114535760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600081815260016020526040812061146a91612a6d565b50565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561153557604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166115305760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b6115f2565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16806115b7575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6115f25760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b6000838152602081905260409020610f5c9083836129c3565b60009081526005602052604090205460ff1690565b60095473ffffffffffffffffffffffffffffffffffffffff16331461168c576040805162461bcd60e51b815260206004820152601760248201527f4973206e6f7420677561726469616e206163636f756e74000000000000000000604482015290519081900360640190fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561179b57604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166117965760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b611858565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff168061181d575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6118585760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600090815260036020526040812055565b6000818152602081815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018616150201909316929092049182018490048402810184019094528084526060939283018282801561191a5780601f106118ef5761010080835404028352916020019161191a565b820191906000526020600020905b8154815290600101906020018083116118fd57829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff821661198e576040805162461bcd60e51b815260206004820152601a60248201527f496e76616c6964207769746864726177616c2061646472657373000000000000604482015290519081900360640190fd5b600061199984611290565b905073ffffffffffffffffffffffffffffffffffffffff811633146119ef5760405162461bcd60e51b8152600401808060200182810382526038815260200180612ac36038913960400191505060405180910390fd5b8115611a04576119ff848461287a565b610f5c565b505073ffffffffffffffffffffffffffffffffffffffff918216600090815260086020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b60009081526006602052604090205490565b60095473ffffffffffffffffffffffffffffffffffffffff1690565b600a5474010000000000000000000000000000000000000000900460ff16151560011415611b4f57604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16611b4a5760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b611c0c565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680611bd1575060095473ffffffffffffffffffffffffffffffffffffffff1632145b611c0c5760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b60009182526005602052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600a5474010000000000000000000000000000000000000000900460ff16151560011415611d1257604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16611d0d5760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b611dcf565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680611d94575060095473ffffffffffffffffffffffffffffffffffffffff1632145b611dcf5760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600082815260026020526040902054611de89082612905565b6000928352600260205260409092209190915550565b60009081526002602052604090205490565b73ffffffffffffffffffffffffffffffffffffffff818116600090815260086020526040902054163314611e755760405162461bcd60e51b815260040180806020018281038252603a815260200180612b73603a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561146a813361287a565b60008181526001602081815260409283902080548451600294821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911693909304601f8101839004830284018301909452838352606093909183018282801561191a5780601f106118ef5761010080835404028352916020019161191a565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561201957604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166120145760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b6120d6565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff168061209b575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6120d65760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b60009182526004602052604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60009081526003602052604090205490565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561220357604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166121fe5760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b6122c0565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680612285575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6122c05760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b60009182526002602052604090912055565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561239a57604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166123955760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b612457565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff168061241c575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6124575760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600090815260026020526040812055565b600a5474010000000000000000000000000000000000000000900460ff1615156001141561253057604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1661252b5760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b6125ed565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff16806125b2575060095473ffffffffffffffffffffffffffffffffffffffff1632145b6125ed5760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600082815260026020526040902054611de89082612966565b600a5474010000000000000000000000000000000000000000900460ff161515600114156126ce57604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff166126c95760405162461bcd60e51b8152600401808060200182810382526024815260200180612bad6024913960400191505060405180910390fd5b61278b565b604080517f636f6e74726163742e65786973747300000000000000000000000000000000006020808301919091523360601b602f830152825160238184030181526043909201835281519181019190912060009081526005909152205460ff1680612750575060095473ffffffffffffffffffffffffffffffffffffffff1632145b61278b5760405162461bcd60e51b8152600401808060200182810382526048815260200180612b2b6048913960600191505060405180910390fd5b600081815260208190526040812061146a91612a6d565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600860205260409020541690565b60095473ffffffffffffffffffffffffffffffffffffffff163314612839576040805162461bcd60e51b815260206004820152601760248201527f4973206e6f7420677561726469616e206163636f756e74000000000000000000604482015290519081900360640190fd5b600a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b73ffffffffffffffffffffffffffffffffffffffff82811660008181526007602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055815142815291517fe04362a1cecc83cc66f0c6704a58da505fba1d6170f40e4543d477e76fa9175c9281900390910190a35050565b60008282018381101561295f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000828211156129bd576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826129f95760008555612a5d565b82601f10612a30578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555612a5d565b82800160010185558215612a5d579182015b82811115612a5d578235825591602001919060010190612a42565b50612a69929150612aad565b5090565b50805460018160011615610100020316600290046000825580601f10612a93575061146a565b601f01602090049060005260206000209081019061146a91905b5b80821115612a695760008155600101612aae56fe4f6e6c7920612074782066726f6d2061206e6f64652773207769746864726177616c20616464726573732063616e20757064617465206974436f6e6669726d6174696f6e206d75737420636f6d652066726f6d206e657720677561726469616e2061646472657373496e76616c6964206f72206f75746461746564206e6574776f726b20636f6e747261637420617474656d7074696e672061636365737320647572696e67206465706c6f796d656e74436f6e6669726d6174696f6e206d75737420636f6d652066726f6d207468652070656e64696e67207769746864726177616c2061646472657373496e76616c6964206f72206f75746461746564206e6574776f726b20636f6e7472616374a2646970667358221220a6aab4c70eb5aab6d329936cf2db4a95c26883cbe93588e033afb1fb38ae775f64736f6c63430007060033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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