ETH Price: $3,119.23 (+1.56%)
Gas: 2 Gwei

Contract

0xf1A7201749fA81463799383D7D0565B6bfECE757
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Claim NN Reward123265712021-04-28 3:46:051169 days ago1619581565IN
0xf1A72017...6bfECE757
0 ETH0.0059224554
Claim NN Reward123218102021-04-27 10:16:031170 days ago1619518563IN
0xf1A72017...6bfECE757
0 ETH0.0057048745
Claim NN Reward123217682021-04-27 10:07:021170 days ago1619518022IN
0xf1A72017...6bfECE757
0 ETH0.0050461446.01
Claim NN Reward123213042021-04-27 8:32:291170 days ago1619512349IN
0xf1A72017...6bfECE757
0 ETH0.0053245542
Start116849452021-01-19 9:32:331268 days ago1611048753IN
0xf1A72017...6bfECE757
0 ETH0.00481646110
Load Contracts116841632021-01-19 6:39:471268 days ago1611038387IN
0xf1A72017...6bfECE757
0 ETH0.0061573680
0x60806040116837212021-01-19 5:04:191268 days ago1611032659IN
 Create: NNRewardPool
0 ETH0.1109896290

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NNRewardPool

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 8 : NNRewardPool.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity ^0.6.12;

import "./lib/SafeMath.sol";
import "./iface/INestPool.sol";
import "./lib/SafeERC20.sol";
import './lib/TransferHelper.sol';
import "./iface/INestMining.sol";
import "./iface/INNRewardPool.sol";

/// @title NNRewardPool
/// @author Inf Loop - <[email protected]>
/// @author Paradox  - <[email protected]>

/// @notice The NNRewardPool contract distributes the mining rewards,
///     15% share of the amount of nest-token produced by miners
/// @dev The nest-tokens are put in NestPool. This contract only traces 
///     the sum-amount of all of the rewards (nest-token)
///   - NNToken is pre-deployed in Nest v3.0, so we should connect (legacy)
///       with NNRewardPool. Whenever a NN holder transfers NN token to another,
///       NNToken will call back NNRewardPool.nodeCount() to settle rewards (decisively)
///       for both sender and receiver.
///   - After upgrading, NNRewardPool will count rewards from zero. Any NN holder should
///       claim rewards that had been issued before upgrading from the old contract. Old
///       data about NN rewards will be dropped in this contract, while it can also accessible
///       through OLD (Nest v3.0) contracts.
contract NNRewardPool is INNRewardPool {
    using SafeMath for uint256;

    /* ========== STATE ============== */

    uint8   public flag;     // | 1: active 
                            // | 0: uninitialized
                            // | 2: shutdown

    uint8   constant NNREWARD_FLAG_UNINITIALIZED    = 0;
    uint8   constant NNREWARD_FLAG_ACTIVE           = 1;
    uint8   constant NNREWARD_FLAG_PAUSED           = 2;

    uint256 public rewardSum;
    uint256 public totalSupplyNN;

    /// @dev From nest-node address to checkpoints of reward-sum
    mapping(address => uint256) public rewardSumCheckpoint;

    /* ========== ADDRESSES ============== */

    address public C_NNToken;
    address public C_NestToken;
    address public C_NestPool;
    address public C_NestMining;

    address public governance;


    /* ========== CONSTRUCTOR ========== */

    /// @notice Constructor of NNRewardPool contract
    /// @dev The NNToken contract was created on the Ethereum mainnet 
    /// @param NestPool The address of NestPool Contract
    /// @param NNToken The address of NestNode Token Contract
    constructor(address NestPool, address NNToken) public
    {
        C_NestPool = NestPool;
        C_NNToken = NNToken;
        totalSupplyNN = uint128(ERC20(C_NNToken).totalSupply());
        governance = msg.sender;
        flag = NNREWARD_FLAG_UNINITIALIZED;
    }

    function start() external onlyGovernance
    {
        require(flag == NNREWARD_FLAG_UNINITIALIZED, "Nest:NTC:!flag");

        flag = NNREWARD_FLAG_ACTIVE;
    }

    /* ========== MODIFIERS ========== */

    modifier onlyBy(address _account)
    {
        require(msg.sender == _account, "Nest:NN:!Auth");
        _;
    }

    modifier noContract() 
    {
        require(address(msg.sender) == address(tx.origin), "Nest:NN:BAN(contract)");
        _;
    }

    modifier onlyGovernance() 
    {
        require(msg.sender == governance, "Nest:NN:!governance");
        _;
    }

    modifier onlyGovOrBy(address _account)
    {
        if (msg.sender != governance) { 
            require(msg.sender == _account,
                "Nest:NN:!Auth");
        }
        _;
    }

    /* ========== GOVERNANCE ========== */

    /// @dev To ensure that all of governance-addresses be consistent, every contract
    ///        besides NestPool must load newest `governance` from NestPool.
    function loadGovernance() override external 
    { 
        governance = INestPool(C_NestPool).governance();
    }

    /// @dev The function loads all nest-contracts, it is supposed to be called by NestPool
    function loadContracts() override external onlyGovOrBy(C_NestPool)
    {
        C_NestToken = INestPool(C_NestPool).addrOfNestToken();
        C_NNToken = INestPool(C_NestPool).addrOfNNToken();
        C_NestMining = INestPool(C_NestPool).addrOfNestMining();    

    }

    /// @dev Stop service for emergency
    function pause() external onlyGovernance
    {
        require(flag == NNREWARD_FLAG_ACTIVE, "Nest:NN:!flag");
        flag = NNREWARD_FLAG_PAUSED;
        emit FlagSet(address(msg.sender), uint256(NNREWARD_FLAG_PAUSED));
    }

    /// @dev Resume service 
    function resume() external onlyGovernance
    {
        require(flag == NNREWARD_FLAG_PAUSED, "Nest:NN:!flag");
        flag = NNREWARD_FLAG_ACTIVE;
        emit FlagSet(address(msg.sender), uint256(NNREWARD_FLAG_ACTIVE));
    }

    /* ========== ADDING REWARDS ========== */


    /// @notice Add rewards for Nest-Nodes, only NestMining (contract) are allowed
    /// @dev  The rewards need to pull from NestPool
    /// @param _amount The amount of Nest token as the rewards to each nest-node
    function addNNReward(uint256 _amount) override external onlyBy(C_NestMining)
    {
        if (_amount > 0) {
            uint256 _newSum = uint256(rewardSum).add(_amount);
            rewardSum = uint128(_newSum);
            emit NNRewardAdded(_amount, _newSum);
        }
        return;
    }

    // /// @dev The updator is to update the sum of NEST tokens mined in NestMining
    // function updateNNReward() external
    // {
    //     require(flag == NNREWARD_FLAG_ACTIVE, "Nest:NN:!flag");

    //     uint256 _allMined = INestMining(C_NestMining).minedNestAmount();
    //     if (_allMined > rewardSum) {
    //         uint256 _amount = _allMined.mul(NN_REWARD_PERCENTAGE).div(100).sub(rewardSum);
    //         uint256 _newSum = uint256(rewardSum).add(_amount);
    //         rewardSum = uint128(_newSum);
    //         emit NNRewardAdded(_amount, _newSum);
    //     }
    // }

    // modifier updateNNReward1()
    // {
    //     require(flag == NNREWARD_FLAG_ACTIVE, "Nest:NN:!flag");

    //     uint256 _allMined = INestMining(C_NestMining).minedNestAmount();
    //     if (_allMined > rewardSum) {
    //         uint256 _amount = _allMined.mul(NN_REWARD_PERCENTAGE).div(100).sub(rewardSum);
    //         uint256 _newSum = uint256(rewardSum).add(_amount);
    //         rewardSum = uint128(_newSum);
    //         emit NNRewardAdded(_amount, _newSum);
    //     }
    //    _;
    // }

    /* ========== CLAIM/SETTLEMENT ========== */

    /// @notice Claim rewards by Nest-Nodes
    /// @dev The rewards need to pull from NestPool
    function claimNNReward() override external noContract 
    {
        require(flag == NNREWARD_FLAG_ACTIVE, "Nest:NN:!flag");

        uint256 blnc =  ERC20(C_NNToken).balanceOf(address(msg.sender));
        require(blnc > 0, "Nest:NN:!(NNToken)");
        uint256 total = totalSupplyNN;
        uint256 sum = rewardSum;
        uint256 reward = sum.sub(rewardSumCheckpoint[address(msg.sender)]);
        uint256 share = reward.mul(blnc).div(total);

        rewardSumCheckpoint[address(msg.sender)] = sum;
        emit NNRewardClaimed(address(msg.sender), share);
     
        INestPool(C_NestPool).withdrawNest(address(this), share);
        require(ERC20(C_NestToken).transfer(address(msg.sender), share), "Nest:NN:!TRANS");
        
        return;
    }

    /// @notice Settle rewards for two NN holders
    /// @dev The function is for callback from NNToken. It is banned for contracts.
    /// @param from The address of the NN sender 
    /// @param to The address of the NN receiver 
    function settleNNReward(address from, address to) internal
    {
        require(flag == NNREWARD_FLAG_ACTIVE, "Nest:NN:!flag");

        uint256 fromBlnc = ERC20(C_NNToken).balanceOf(address(from));
        require (fromBlnc > 0, "Nest:NN:!(fromBlnc)");
        uint256 sum = rewardSum;
        uint256 total = totalSupplyNN;

        uint256 fromReward = sum.sub(rewardSumCheckpoint[from]).mul(fromBlnc).div(total);      
        rewardSumCheckpoint[from] = sum;      
       
        uint256 toBlnc = ERC20(C_NNToken).balanceOf(address(to));
        uint256 toReward = sum.sub(rewardSumCheckpoint[to]).mul(toBlnc).div(total);
        rewardSumCheckpoint[to] = sum;
        
        if (fromReward > 0) {
            INestPool(C_NestPool).withdrawNest(address(this), fromReward);
            require(ERC20(C_NestToken).transfer(from, fromReward), "Nest:NN:!TRANS");
            emit NNRewardClaimed(from, uint128(fromReward));
        }

        if (toReward > 0) { 
            INestPool(C_NestPool).withdrawNest(address(this), toReward);
            require(ERC20(C_NestToken).transfer(to, toReward), "Nest:NN:!TRANS");
            emit NNRewardClaimed(to, uint128(toReward));
        }

        return;
    }

    /// @dev The callback function called by NNToken.transfer()
    /// @param fromAdd The address of 'from' to transfer
    /// @param toAdd The address of 'to' to transfer
    function nodeCount(address fromAdd, address toAdd) 
        override
        external
        onlyBy(address(C_NNToken)) 
    {
        settleNNReward(fromAdd, toAdd);
        return;
    }

    /// @notice Show the amount of rewards unclaimed
    /// @return reward The reward of a NN holder
    function unclaimedNNReward() override external view returns (uint256 reward) 
    {
        uint256 blnc = ERC20(C_NNToken).balanceOf(address(msg.sender));
        uint256 sum = uint256(rewardSum);
        uint256 total = uint256(totalSupplyNN);
     
        reward = sum.sub(rewardSumCheckpoint[address(msg.sender)]).mul(blnc).div(total);
    }

}

File 2 of 8 : SafeMath.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity ^0.6.12;

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library SafeMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, 'ds-math-add-overflow');
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, 'ds-math-sub-underflow');
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
    }

    function div(uint x, uint y) internal pure returns (uint z) {
        require(y > 0, "ds-math-div-zero");
        z = x / y;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    }
}

File 3 of 8 : INestPool.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity ^0.6.12;

import "../lib/SafeERC20.sol";

interface INestPool {

    // function getNTokenFromToken(address token) view external returns (address);
    // function setNTokenToToken(address token, address ntoken) external; 

    function addNest(address miner, uint256 amount) external;
    function addNToken(address contributor, address ntoken, uint256 amount) external;

    function depositEth(address miner) external payable;
    function depositNToken(address miner,  address from, address ntoken, uint256 amount) external;

    function freezeEth(address miner, uint256 ethAmount) external; 
    function unfreezeEth(address miner, uint256 ethAmount) external;

    function freezeNest(address miner, uint256 nestAmount) external;
    function unfreezeNest(address miner, uint256 nestAmount) external;

    function freezeToken(address miner, address token, uint256 tokenAmount) external; 
    function unfreezeToken(address miner, address token, uint256 tokenAmount) external;

    function freezeEthAndToken(address miner, uint256 ethAmount, address token, uint256 tokenAmount) external;
    function unfreezeEthAndToken(address miner, uint256 ethAmount, address token, uint256 tokenAmount) external;

    function getNTokenFromToken(address token) external view returns (address); 
    function setNTokenToToken(address token, address ntoken) external; 

    function withdrawEth(address miner, uint256 ethAmount) external;
    function withdrawToken(address miner, address token, uint256 tokenAmount) external;

    function withdrawNest(address miner, uint256 amount) external;
    function withdrawEthAndToken(address miner, uint256 ethAmount, address token, uint256 tokenAmount) external;
    // function withdrawNToken(address miner, address ntoken, uint256 amount) external;
    function withdrawNTokenAndTransfer(address miner, address ntoken, uint256 amount, address to) external;


    function balanceOfNestInPool(address miner) external view returns (uint256);
    function balanceOfEthInPool(address miner) external view returns (uint256);
    function balanceOfTokenInPool(address miner, address token)  external view returns (uint256);

    function addrOfNestToken() external view returns (address);
    function addrOfNestMining() external view returns (address);
    function addrOfNTokenController() external view returns (address);
    function addrOfNNRewardPool() external view returns (address);
    function addrOfNNToken() external view returns (address);
    function addrOfNestStaking() external view returns (address);
    function addrOfNestQuery() external view returns (address);
    function addrOfNestDAO() external view returns (address);

    function addressOfBurnedNest() external view returns (address);

    function setGovernance(address _gov) external; 
    function governance() external view returns(address);
    function initNestLedger(uint256 amount) external;
    function drainNest(address to, uint256 amount, address gov) external;

}

File 4 of 8 : SafeERC20.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity 0.6.12;

import "./Address.sol";
import "./SafeMath.sol";

library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(ERC20 token, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(ERC20 token, address from, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(ERC20 token, address spender, uint256 value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(ERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(ERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(value);
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }
    function callOptionalReturn(ERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 5 of 8 : TransferHelper.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity ^0.6.12;

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: ETH_TRANSFER_FAILED');
    }
}

File 6 of 8 : INestMining.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;

import "../lib/SafeERC20.sol";


interface INestMining {
    
    struct Params {
        uint8    miningEthUnit;     // = 10;
        uint32   nestStakedNum1k;   // = 1;
        uint8    biteFeeRate;       // = 1; 
        uint8    miningFeeRate;     // = 10;
        uint8    priceDurationBlock; 
        uint8    maxBiteNestedLevel; // = 3;
        uint8    biteInflateFactor;
        uint8    biteNestInflateFactor;
    }

    function priceOf(address token) external view returns(uint256 ethAmount, uint256 tokenAmount, uint256 bn);
    
    function priceListOfToken(address token, uint8 num) external view returns(uint128[] memory data, uint256 bn);

    // function priceOfTokenAtHeight(address token, uint64 atHeight) external view returns(uint256 ethAmount, uint256 tokenAmount, uint64 bn);

    function latestPriceOf(address token) external view returns (uint256 ethAmount, uint256 tokenAmount, uint256 bn);

    function priceAvgAndSigmaOf(address token) 
        external view returns (uint128, uint128, int128, uint32);

    function minedNestAmount() external view returns (uint256);

    /// @dev Only for governance
    function loadContracts() external; 
    
    function loadGovernance() external;

    function upgrade() external;

    function setup(uint32   genesisBlockNumber, uint128  latestMiningHeight, uint128  minedNestTotalAmount, Params calldata initParams) external;

    function setParams1(uint128  latestMiningHeight, uint128  minedNestTotalAmount) external;
}

File 7 of 8 : INNRewardPool.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity ^0.6.12;

/// @title NNRewardPool
/// @author Inf Loop - <[email protected]>
/// @author Paradox  - <[email protected]>

interface INNRewardPool {
    
    /* [DEPRECATED]
        uint256 constant DEV_REWARD_PERCENTAGE   = 5;
        uint256 constant NN_REWARD_PERCENTAGE    = 15;
        uint256 constant MINER_REWARD_PERCENTAGE = 80;
    */

    /// @notice Add rewards for Nest-Nodes, only governance or NestMining (contract) are allowed
    /// @dev  The rewards need to pull from NestPool
    /// @param _amount The amount of Nest token as the rewards to each nest-node
    function addNNReward(uint256 _amount) external;

    /// @notice Claim rewards by Nest-Nodes
    /// @dev The rewards need to pull from NestPool
    function claimNNReward() external ;  

    /// @dev The callback function called by NNToken.transfer()
    /// @param fromAdd The address of 'from' to transfer
    /// @param toAdd The address of 'to' to transfer
    function nodeCount(address fromAdd, address toAdd) external;

    /// @notice Show the amount of rewards unclaimed
    /// @return reward The reward of a NN holder
    function unclaimedNNReward() external view returns (uint256 reward);

    /// @dev Only for governance
    function loadContracts() external; 

    /// @dev Only for governance
    function loadGovernance() external; 

    /* ========== EVENTS ============== */

    /// @notice When rewards are added to the pool
    /// @param reward The amount of Nest Token
    /// @param allRewards The snapshot of all rewards accumulated
    event NNRewardAdded(uint256 reward, uint256 allRewards);

    /// @notice When rewards are claimed by nodes 
    /// @param nnode The address of the nest node
    /// @param share The amount of Nest Token claimed by the nest node
    event NNRewardClaimed(address nnode, uint256 share);

    /// @notice When flag of state is set by governance 
    /// @param gov The address of the governance
    /// @param flag The value of the new flag
    event FlagSet(address gov, uint256 flag);
}

File 8 of 8 : Address.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity 0.6.12;

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value:amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"NestPool","type":"address"},{"internalType":"address","name":"NNToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"gov","type":"address"},{"indexed":false,"internalType":"uint256","name":"flag","type":"uint256"}],"name":"FlagSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"allRewards","type":"uint256"}],"name":"NNRewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"nnode","type":"address"},{"indexed":false,"internalType":"uint256","name":"share","type":"uint256"}],"name":"NNRewardClaimed","type":"event"},{"inputs":[],"name":"C_NNToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"C_NestMining","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"C_NestPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"C_NestToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addNNReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimNNReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flag","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"loadContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loadGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromAdd","type":"address"},{"internalType":"address","name":"toAdd","type":"address"}],"name":"nodeCount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardSumCheckpoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupplyNN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unclaimedNNReward","outputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b506040516114bb3803806114bb8339818101604052604081101561003357600080fd5b508051602091820151600680546001600160a01b038085166001600160a01b03199283161790925560048054838516921691909117808255604080516318160ddd60e01b815290519596949591909316936318160ddd938084019391929190829003018186803b1580156100a657600080fd5b505afa1580156100ba573d6000803e3d6000fd5b505050506040513d60208110156100d057600080fd5b50516001600160801b03166002555050600880546001600160a01b031916331790556000805460ff191690556113b08061010b6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636a2efa76116100a25780638456cb59116100715780638456cb59146101f7578063890eba68146101ff578063a1c7962e1461021d578063be9a655514610225578063ccaaf98b1461022d57610116565b80636a2efa76146101b15780636e660427146101df57806376a162a3146101e75780637c175a01146101ef57610116565b8063421ad8c5116100e9578063421ad8c5146101895780634267ee79146101915780634eb8b44814610199578063598c2704146101a15780635aa6e675146101a957610116565b8063046f7da21461011b578063278980d5146101255780632824e1f6146101495780633189414914610181575b600080fd5b61012361024a565b005b61012d610336565b604080516001600160a01b039092168252519081900360200190f35b61016f6004803603602081101561015f57600080fd5b50356001600160a01b0316610345565b60408051918252519081900360200190f35b61016f610357565b61012361035d565b610123610672565b61016f61087d565b61016f610883565b61012d61093f565b610123600480360360408110156101c757600080fd5b506001600160a01b038135811691602001351661094e565b61012d6109ad565b6101236109bc565b61012d610a57565b610123610a66565b610207610b52565b6040805160ff9092168252519081900360200190f35b61012d610b5b565b610123610b6a565b6101236004803603602081101561024357600080fd5b5035610c17565b6008546001600160a01b0316331461029f576040805162461bcd60e51b81526020600482015260136024820152724e6573743a4e4e3a21676f7665726e616e636560681b604482015290519081900360640190fd5b60005460ff166002146102e9576040805162461bcd60e51b815260206004820152600d60248201526c4e6573743a4e4e3a21666c616760981b604482015290519081900360640190fd5b6000805460ff1916600190811790915560408051338152602081019290925280517f5f136d3b405931da808102d65c5c331d1bfcbd4e7127777914d480cd106ca5ae9281900390910190a1565b6004546001600160a01b031681565b60036020526000908152604090205481565b60015481565b3332146103a9576040805162461bcd60e51b81526020600482015260156024820152744e6573743a4e4e3a42414e28636f6e74726163742960581b604482015290519081900360640190fd5b60005460ff166001146103f3576040805162461bcd60e51b815260206004820152600d60248201526c4e6573743a4e4e3a21666c616760981b604482015290519081900360640190fd5b60048054604080516370a0823160e01b81523393810193909352516000926001600160a01b03909216916370a08231916024808301926020929190829003018186803b15801561044257600080fd5b505afa158015610456573d6000803e3d6000fd5b505050506040513d602081101561046c57600080fd5b50519050806104b7576040805162461bcd60e51b81526020600482015260126024820152714e6573743a4e4e3a21284e4e546f6b656e2960701b604482015290519081900360640190fd5b600254600154336000908152600360205260408120546104d8908390610cce565b905060006104f0846104ea8488610d24565b90610d87565b336000818152600360209081526040918290208790558151928352820183905280519293507f994f7f5fa3cce66d6f992c5a061e6e3ce2f23c6ffd94ebb4ccc7996e1d88e4ea92918290030190a160065460408051633d835e8960e21b81523060048201526024810184905290516001600160a01b039092169163f60d7a249160448082019260009290919082900301818387803b15801561059157600080fd5b505af11580156105a5573d6000803e3d6000fd5b50506005546040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b03909216935063a9059cbb92506044808201926020929091908290030181600087803b1580156105fd57600080fd5b505af1158015610611573d6000803e3d6000fd5b505050506040513d602081101561062757600080fd5b505161066b576040805162461bcd60e51b815260206004820152600e60248201526d4e6573743a4e4e3a215452414e5360901b604482015290519081900360640190fd5b5050505050565b6006546008546001600160a01b03918216911633146106d857336001600160a01b038216146106d8576040805162461bcd60e51b815260206004820152600d60248201526c09ccae6e8749c9c744282eae8d609b1b604482015290519081900360640190fd5b600660009054906101000a90046001600160a01b03166001600160a01b03166397dcd0b36040518163ffffffff1660e01b815260040160206040518083038186803b15801561072657600080fd5b505afa15801561073a573d6000803e3d6000fd5b505050506040513d602081101561075057600080fd5b5051600580546001600160a01b0319166001600160a01b03928316179055600654604080516324fc318b60e21b8152905191909216916393f0c62c916004808301926020929190829003018186803b1580156107ab57600080fd5b505afa1580156107bf573d6000803e3d6000fd5b505050506040513d60208110156107d557600080fd5b5051600480546001600160a01b0319166001600160a01b039283161781556006546040805163bd4291c160e01b81529051919093169263bd4291c19281810192602092909190829003018186803b15801561082f57600080fd5b505afa158015610843573d6000803e3d6000fd5b505050506040513d602081101561085957600080fd5b5051600780546001600160a01b0319166001600160a01b0390921691909117905550565b60025481565b60048054604080516370a0823160e01b815233938101939093525160009283926001600160a01b0316916370a0823191602480820192602092909190829003018186803b1580156108d357600080fd5b505afa1580156108e7573d6000803e3d6000fd5b505050506040513d60208110156108fd57600080fd5b50516001546002543360009081526003602052604090205492935090916109379082906104ea908690610931908790610cce565b90610d24565b935050505090565b6008546001600160a01b031681565b6004546001600160a01b031633811461099e576040805162461bcd60e51b815260206004820152600d60248201526c09ccae6e8749c9c744282eae8d609b1b604482015290519081900360640190fd5b6109a88383610de1565b505050565b6007546001600160a01b031681565b600660009054906101000a90046001600160a01b03166001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0a57600080fd5b505afa158015610a1e573d6000803e3d6000fd5b505050506040513d6020811015610a3457600080fd5b5051600880546001600160a01b0319166001600160a01b03909216919091179055565b6006546001600160a01b031681565b6008546001600160a01b03163314610abb576040805162461bcd60e51b81526020600482015260136024820152724e6573743a4e4e3a21676f7665726e616e636560681b604482015290519081900360640190fd5b60005460ff16600114610b05576040805162461bcd60e51b815260206004820152600d60248201526c4e6573743a4e4e3a21666c616760981b604482015290519081900360640190fd5b6000805460ff1916600290811790915560408051338152602081019290925280517f5f136d3b405931da808102d65c5c331d1bfcbd4e7127777914d480cd106ca5ae9281900390910190a1565b60005460ff1681565b6005546001600160a01b031681565b6008546001600160a01b03163314610bbf576040805162461bcd60e51b81526020600482015260136024820152724e6573743a4e4e3a21676f7665726e616e636560681b604482015290519081900360640190fd5b60005460ff1615610c08576040805162461bcd60e51b815260206004820152600e60248201526d4e6573743a4e54433a21666c616760901b604482015290519081900360640190fd5b6000805460ff19166001179055565b6007546001600160a01b0316338114610c67576040805162461bcd60e51b815260206004820152600d60248201526c09ccae6e8749c9c744282eae8d609b1b604482015290519081900360640190fd5b8115610cca57600154600090610c7d908461132b565b6001600160801b038116600155604080518581526020810183905281519293507f6b937f0af13b2f1e43b8dba14a4e3830bdddb54dfbb58bd9ce78a4a77f09f277929081900390910190a1505b5050565b80820382811115610d1e576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b92915050565b6000811580610d3f57505080820282828281610d3c57fe5b04145b610d1e576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b6000808211610dd0576040805162461bcd60e51b815260206004820152601060248201526f64732d6d6174682d6469762d7a65726f60801b604482015290519081900360640190fd5b818381610dd957fe5b049392505050565b60005460ff16600114610e2b576040805162461bcd60e51b815260206004820152600d60248201526c4e6573743a4e4e3a21666c616760981b604482015290519081900360640190fd5b6000600460009054906101000a90046001600160a01b03166001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e8f57600080fd5b505afa158015610ea3573d6000803e3d6000fd5b505050506040513d6020811015610eb957600080fd5b5051905080610f05576040805162461bcd60e51b81526020600482015260136024820152724e6573743a4e4e3a212866726f6d426c6e632960681b604482015290519081900360640190fd5b6001546002546001600160a01b038516600090815260036020526040812054610f3b9083906104ea908790610931908890610cce565b6001600160a01b0380881660009081526003602090815260408083208890556004805482516370a0823160e01b81528c871692810192909252915195965092949316926370a08231926024808201939291829003018186803b158015610fa057600080fd5b505afa158015610fb4573d6000803e3d6000fd5b505050506040513d6020811015610fca57600080fd5b50516001600160a01b038716600090815260036020526040812054919250906110009085906104ea908590610931908a90610cce565b6001600160a01b03881660009081526003602052604090208690559050821561119f5760065460408051633d835e8960e21b81523060048201526024810186905290516001600160a01b039092169163f60d7a249160448082019260009290919082900301818387803b15801561107657600080fd5b505af115801561108a573d6000803e3d6000fd5b50506005546040805163a9059cbb60e01b81526001600160a01b038d8116600483015260248201899052915191909216935063a9059cbb925060448083019260209291908290030181600087803b1580156110e457600080fd5b505af11580156110f8573d6000803e3d6000fd5b505050506040513d602081101561110e57600080fd5b5051611152576040805162461bcd60e51b815260206004820152600e60248201526d4e6573743a4e4e3a215452414e5360901b604482015290519081900360640190fd5b604080516001600160a01b038a1681526001600160801b038516602082015281517f994f7f5fa3cce66d6f992c5a061e6e3ce2f23c6ffd94ebb4ccc7996e1d88e4ea929181900390910190a15b80156113215760065460408051633d835e8960e21b81523060048201526024810184905290516001600160a01b039092169163f60d7a249160448082019260009290919082900301818387803b1580156111f857600080fd5b505af115801561120c573d6000803e3d6000fd5b50506005546040805163a9059cbb60e01b81526001600160a01b038c8116600483015260248201879052915191909216935063a9059cbb925060448083019260209291908290030181600087803b15801561126657600080fd5b505af115801561127a573d6000803e3d6000fd5b505050506040513d602081101561129057600080fd5b50516112d4576040805162461bcd60e51b815260206004820152600e60248201526d4e6573743a4e4e3a215452414e5360901b604482015290519081900360640190fd5b604080516001600160a01b03891681526001600160801b038316602082015281517f994f7f5fa3cce66d6f992c5a061e6e3ce2f23c6ffd94ebb4ccc7996e1d88e4ea929181900390910190a15b5050505050505050565b80820182811015610d1e576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfea2646970667358221220a3f8104d475dfa2e3a7f32122b3ed65d9da91f7c72039eb0a7419d79f6893ed864736f6c634300060c0033000000000000000000000000ca208dcfbef22941d176858a640190c2222c8c8f000000000000000000000000c028e81e11f374f7c1a3be6b8d2a815fa3e96e6e

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c80636a2efa76116100a25780638456cb59116100715780638456cb59146101f7578063890eba68146101ff578063a1c7962e1461021d578063be9a655514610225578063ccaaf98b1461022d57610116565b80636a2efa76146101b15780636e660427146101df57806376a162a3146101e75780637c175a01146101ef57610116565b8063421ad8c5116100e9578063421ad8c5146101895780634267ee79146101915780634eb8b44814610199578063598c2704146101a15780635aa6e675146101a957610116565b8063046f7da21461011b578063278980d5146101255780632824e1f6146101495780633189414914610181575b600080fd5b61012361024a565b005b61012d610336565b604080516001600160a01b039092168252519081900360200190f35b61016f6004803603602081101561015f57600080fd5b50356001600160a01b0316610345565b60408051918252519081900360200190f35b61016f610357565b61012361035d565b610123610672565b61016f61087d565b61016f610883565b61012d61093f565b610123600480360360408110156101c757600080fd5b506001600160a01b038135811691602001351661094e565b61012d6109ad565b6101236109bc565b61012d610a57565b610123610a66565b610207610b52565b6040805160ff9092168252519081900360200190f35b61012d610b5b565b610123610b6a565b6101236004803603602081101561024357600080fd5b5035610c17565b6008546001600160a01b0316331461029f576040805162461bcd60e51b81526020600482015260136024820152724e6573743a4e4e3a21676f7665726e616e636560681b604482015290519081900360640190fd5b60005460ff166002146102e9576040805162461bcd60e51b815260206004820152600d60248201526c4e6573743a4e4e3a21666c616760981b604482015290519081900360640190fd5b6000805460ff1916600190811790915560408051338152602081019290925280517f5f136d3b405931da808102d65c5c331d1bfcbd4e7127777914d480cd106ca5ae9281900390910190a1565b6004546001600160a01b031681565b60036020526000908152604090205481565b60015481565b3332146103a9576040805162461bcd60e51b81526020600482015260156024820152744e6573743a4e4e3a42414e28636f6e74726163742960581b604482015290519081900360640190fd5b60005460ff166001146103f3576040805162461bcd60e51b815260206004820152600d60248201526c4e6573743a4e4e3a21666c616760981b604482015290519081900360640190fd5b60048054604080516370a0823160e01b81523393810193909352516000926001600160a01b03909216916370a08231916024808301926020929190829003018186803b15801561044257600080fd5b505afa158015610456573d6000803e3d6000fd5b505050506040513d602081101561046c57600080fd5b50519050806104b7576040805162461bcd60e51b81526020600482015260126024820152714e6573743a4e4e3a21284e4e546f6b656e2960701b604482015290519081900360640190fd5b600254600154336000908152600360205260408120546104d8908390610cce565b905060006104f0846104ea8488610d24565b90610d87565b336000818152600360209081526040918290208790558151928352820183905280519293507f994f7f5fa3cce66d6f992c5a061e6e3ce2f23c6ffd94ebb4ccc7996e1d88e4ea92918290030190a160065460408051633d835e8960e21b81523060048201526024810184905290516001600160a01b039092169163f60d7a249160448082019260009290919082900301818387803b15801561059157600080fd5b505af11580156105a5573d6000803e3d6000fd5b50506005546040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b03909216935063a9059cbb92506044808201926020929091908290030181600087803b1580156105fd57600080fd5b505af1158015610611573d6000803e3d6000fd5b505050506040513d602081101561062757600080fd5b505161066b576040805162461bcd60e51b815260206004820152600e60248201526d4e6573743a4e4e3a215452414e5360901b604482015290519081900360640190fd5b5050505050565b6006546008546001600160a01b03918216911633146106d857336001600160a01b038216146106d8576040805162461bcd60e51b815260206004820152600d60248201526c09ccae6e8749c9c744282eae8d609b1b604482015290519081900360640190fd5b600660009054906101000a90046001600160a01b03166001600160a01b03166397dcd0b36040518163ffffffff1660e01b815260040160206040518083038186803b15801561072657600080fd5b505afa15801561073a573d6000803e3d6000fd5b505050506040513d602081101561075057600080fd5b5051600580546001600160a01b0319166001600160a01b03928316179055600654604080516324fc318b60e21b8152905191909216916393f0c62c916004808301926020929190829003018186803b1580156107ab57600080fd5b505afa1580156107bf573d6000803e3d6000fd5b505050506040513d60208110156107d557600080fd5b5051600480546001600160a01b0319166001600160a01b039283161781556006546040805163bd4291c160e01b81529051919093169263bd4291c19281810192602092909190829003018186803b15801561082f57600080fd5b505afa158015610843573d6000803e3d6000fd5b505050506040513d602081101561085957600080fd5b5051600780546001600160a01b0319166001600160a01b0390921691909117905550565b60025481565b60048054604080516370a0823160e01b815233938101939093525160009283926001600160a01b0316916370a0823191602480820192602092909190829003018186803b1580156108d357600080fd5b505afa1580156108e7573d6000803e3d6000fd5b505050506040513d60208110156108fd57600080fd5b50516001546002543360009081526003602052604090205492935090916109379082906104ea908690610931908790610cce565b90610d24565b935050505090565b6008546001600160a01b031681565b6004546001600160a01b031633811461099e576040805162461bcd60e51b815260206004820152600d60248201526c09ccae6e8749c9c744282eae8d609b1b604482015290519081900360640190fd5b6109a88383610de1565b505050565b6007546001600160a01b031681565b600660009054906101000a90046001600160a01b03166001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0a57600080fd5b505afa158015610a1e573d6000803e3d6000fd5b505050506040513d6020811015610a3457600080fd5b5051600880546001600160a01b0319166001600160a01b03909216919091179055565b6006546001600160a01b031681565b6008546001600160a01b03163314610abb576040805162461bcd60e51b81526020600482015260136024820152724e6573743a4e4e3a21676f7665726e616e636560681b604482015290519081900360640190fd5b60005460ff16600114610b05576040805162461bcd60e51b815260206004820152600d60248201526c4e6573743a4e4e3a21666c616760981b604482015290519081900360640190fd5b6000805460ff1916600290811790915560408051338152602081019290925280517f5f136d3b405931da808102d65c5c331d1bfcbd4e7127777914d480cd106ca5ae9281900390910190a1565b60005460ff1681565b6005546001600160a01b031681565b6008546001600160a01b03163314610bbf576040805162461bcd60e51b81526020600482015260136024820152724e6573743a4e4e3a21676f7665726e616e636560681b604482015290519081900360640190fd5b60005460ff1615610c08576040805162461bcd60e51b815260206004820152600e60248201526d4e6573743a4e54433a21666c616760901b604482015290519081900360640190fd5b6000805460ff19166001179055565b6007546001600160a01b0316338114610c67576040805162461bcd60e51b815260206004820152600d60248201526c09ccae6e8749c9c744282eae8d609b1b604482015290519081900360640190fd5b8115610cca57600154600090610c7d908461132b565b6001600160801b038116600155604080518581526020810183905281519293507f6b937f0af13b2f1e43b8dba14a4e3830bdddb54dfbb58bd9ce78a4a77f09f277929081900390910190a1505b5050565b80820382811115610d1e576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b92915050565b6000811580610d3f57505080820282828281610d3c57fe5b04145b610d1e576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b6000808211610dd0576040805162461bcd60e51b815260206004820152601060248201526f64732d6d6174682d6469762d7a65726f60801b604482015290519081900360640190fd5b818381610dd957fe5b049392505050565b60005460ff16600114610e2b576040805162461bcd60e51b815260206004820152600d60248201526c4e6573743a4e4e3a21666c616760981b604482015290519081900360640190fd5b6000600460009054906101000a90046001600160a01b03166001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e8f57600080fd5b505afa158015610ea3573d6000803e3d6000fd5b505050506040513d6020811015610eb957600080fd5b5051905080610f05576040805162461bcd60e51b81526020600482015260136024820152724e6573743a4e4e3a212866726f6d426c6e632960681b604482015290519081900360640190fd5b6001546002546001600160a01b038516600090815260036020526040812054610f3b9083906104ea908790610931908890610cce565b6001600160a01b0380881660009081526003602090815260408083208890556004805482516370a0823160e01b81528c871692810192909252915195965092949316926370a08231926024808201939291829003018186803b158015610fa057600080fd5b505afa158015610fb4573d6000803e3d6000fd5b505050506040513d6020811015610fca57600080fd5b50516001600160a01b038716600090815260036020526040812054919250906110009085906104ea908590610931908a90610cce565b6001600160a01b03881660009081526003602052604090208690559050821561119f5760065460408051633d835e8960e21b81523060048201526024810186905290516001600160a01b039092169163f60d7a249160448082019260009290919082900301818387803b15801561107657600080fd5b505af115801561108a573d6000803e3d6000fd5b50506005546040805163a9059cbb60e01b81526001600160a01b038d8116600483015260248201899052915191909216935063a9059cbb925060448083019260209291908290030181600087803b1580156110e457600080fd5b505af11580156110f8573d6000803e3d6000fd5b505050506040513d602081101561110e57600080fd5b5051611152576040805162461bcd60e51b815260206004820152600e60248201526d4e6573743a4e4e3a215452414e5360901b604482015290519081900360640190fd5b604080516001600160a01b038a1681526001600160801b038516602082015281517f994f7f5fa3cce66d6f992c5a061e6e3ce2f23c6ffd94ebb4ccc7996e1d88e4ea929181900390910190a15b80156113215760065460408051633d835e8960e21b81523060048201526024810184905290516001600160a01b039092169163f60d7a249160448082019260009290919082900301818387803b1580156111f857600080fd5b505af115801561120c573d6000803e3d6000fd5b50506005546040805163a9059cbb60e01b81526001600160a01b038c8116600483015260248201879052915191909216935063a9059cbb925060448083019260209291908290030181600087803b15801561126657600080fd5b505af115801561127a573d6000803e3d6000fd5b505050506040513d602081101561129057600080fd5b50516112d4576040805162461bcd60e51b815260206004820152600e60248201526d4e6573743a4e4e3a215452414e5360901b604482015290519081900360640190fd5b604080516001600160a01b03891681526001600160801b038316602082015281517f994f7f5fa3cce66d6f992c5a061e6e3ce2f23c6ffd94ebb4ccc7996e1d88e4ea929181900390910190a15b5050505050505050565b80820182811015610d1e576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfea2646970667358221220a3f8104d475dfa2e3a7f32122b3ed65d9da91f7c72039eb0a7419d79f6893ed864736f6c634300060c0033

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

000000000000000000000000ca208dcfbef22941d176858a640190c2222c8c8f000000000000000000000000c028e81e11f374f7c1a3be6b8d2a815fa3e96e6e

-----Decoded View---------------
Arg [0] : NestPool (address): 0xCA208DCfbEF22941D176858A640190C2222C8c8F
Arg [1] : NNToken (address): 0xC028E81e11F374f7c1A3bE6b8D2a815fa3E96E6e

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000ca208dcfbef22941d176858a640190c2222c8c8f
Arg [1] : 000000000000000000000000c028e81e11f374f7c1a3be6b8d2a815fa3e96e6e


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  ]

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.