Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 6 from a total of 6 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim NN Reward | 12326571 | 1449 days ago | IN | 0 ETH | 0.00592245 | ||||
Claim NN Reward | 12321810 | 1449 days ago | IN | 0 ETH | 0.00570487 | ||||
Claim NN Reward | 12321768 | 1449 days ago | IN | 0 ETH | 0.00504614 | ||||
Claim NN Reward | 12321304 | 1449 days ago | IN | 0 ETH | 0.00532455 | ||||
Start | 11684945 | 1547 days ago | IN | 0 ETH | 0.00481646 | ||||
Load Contracts | 11684163 | 1547 days ago | IN | 0 ETH | 0.00615736 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
NNRewardPool
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// 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); } }
// 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 } }
// 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; }
// 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); }
// 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'); } }
// 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; }
// 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); }
// 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"); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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"}]
Contract Creation Code
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
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
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.