Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60806040 | 14527460 | 964 days ago | IN | 0 ETH | 0.22431959 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
PoolV5
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: MIT pragma solidity ^0.6.12; import "../lib/openzeppelin/contracts/3.4.1/token/ERC20/IERC20.sol"; import "./lib/SafeMath.sol"; import "./interfaces/StrongPoolInterface.sol"; import "./lib/rewards.sol"; contract PoolV5 { event Mined(address indexed miner, uint256 amount); event Unmined(address indexed miner, uint256 amount); event Claimed(address indexed miner, uint256 reward); using SafeMath for uint256; bool public initDone; address public admin; address public pendingAdmin; address public superAdmin; address public pendingSuperAdmin; address public parameterAdmin; address payable public feeCollector; IERC20 public token; IERC20 public strongToken; StrongPoolInterface public strongPool; mapping(address => uint256) public minerBalance; uint256 public totalBalance; mapping(address => uint256) public minerBlockLastClaimedOn; uint256 public rewardBalance; uint256 public rewardPerBlockNumerator; uint256 public rewardPerBlockDenominator; uint256 public miningFeeNumerator; uint256 public miningFeeDenominator; uint256 public unminingFeeNumerator; uint256 public unminingFeeDenominator; uint256 public claimingFeeNumerator; uint256 public claimingFeeDenominator; uint256 public claimingFeeInWei; uint256 public rewardPerBlockNumeratorNew; uint256 public rewardPerBlockDenominatorNew; uint256 public rewardPerBlockNewEffectiveBlock; function init( address strongTokenAddress, address tokenAddress, address strongPoolAddress, address adminAddress, address superAdminAddress, uint256 rewardPerBlockNumeratorValue, uint256 rewardPerBlockDenominatorValue, uint256 miningFeeNumeratorValue, uint256 miningFeeDenominatorValue, uint256 unminingFeeNumeratorValue, uint256 unminingFeeDenominatorValue, uint256 claimingFeeNumeratorValue, uint256 claimingFeeDenominatorValue ) public { require(!initDone, "init done"); strongToken = IERC20(strongTokenAddress); token = IERC20(tokenAddress); strongPool = StrongPoolInterface(strongPoolAddress); admin = adminAddress; superAdmin = superAdminAddress; rewardPerBlockNumerator = rewardPerBlockNumeratorValue; rewardPerBlockDenominator = rewardPerBlockDenominatorValue; miningFeeNumerator = miningFeeNumeratorValue; miningFeeDenominator = miningFeeDenominatorValue; unminingFeeNumerator = unminingFeeNumeratorValue; unminingFeeDenominator = unminingFeeDenominatorValue; claimingFeeNumerator = claimingFeeNumeratorValue; claimingFeeDenominator = claimingFeeDenominatorValue; initDone = true; } // ADMIN // ************************************************************************************* function updateParameterAdmin(address newParameterAdmin) public { require(newParameterAdmin != address(0), "zero"); require(msg.sender == superAdmin); parameterAdmin = newParameterAdmin; } function setPendingAdmin(address newPendingAdmin) public { require(newPendingAdmin != address(0), "zero"); require(msg.sender == admin, "not admin"); pendingAdmin = newPendingAdmin; } function acceptAdmin() public { require(msg.sender == pendingAdmin && msg.sender != address(0), "not pendingAdmin"); admin = pendingAdmin; pendingAdmin = address(0); } function setPendingSuperAdmin(address newPendingSuperAdmin) public { require(newPendingSuperAdmin != address(0), "zero"); require(msg.sender == superAdmin, "not superAdmin"); pendingSuperAdmin = newPendingSuperAdmin; } function acceptSuperAdmin() public { require(msg.sender == pendingSuperAdmin && msg.sender != address(0), "not pendingSuperAdmin"); superAdmin = pendingSuperAdmin; pendingSuperAdmin = address(0); } // REWARD // ************************************************************************************* function updateRewardPerBlock(uint256 numerator, uint256 denominator) public { require(msg.sender == admin || msg.sender == parameterAdmin || msg.sender == superAdmin, "not an admin"); require(denominator != 0, "invalid value"); rewardPerBlockNumerator = numerator; rewardPerBlockDenominator = denominator; } function deposit(uint256 amount) public { require(msg.sender == superAdmin, "not an admin"); require(amount > 0, "zero"); strongToken.transferFrom(msg.sender, address(this), amount); rewardBalance = rewardBalance.add(amount); } function withdraw(address destination, uint256 amount) public { require(msg.sender == superAdmin, "not an admin"); require(amount > 0, "zero"); require(rewardBalance >= amount, "not enough"); strongToken.transfer(destination, amount); rewardBalance = rewardBalance.sub(amount); } // FEES // ************************************************************************************* function updateFeeCollector(address payable newFeeCollector) public { require(newFeeCollector != address(0), "zero"); require(msg.sender == superAdmin); feeCollector = newFeeCollector; } function updateMiningFee(uint256 numerator, uint256 denominator) public { require(msg.sender == admin || msg.sender == parameterAdmin || msg.sender == superAdmin, "not an admin"); require(denominator != 0, "invalid value"); miningFeeNumerator = numerator; miningFeeDenominator = denominator; } function updateUnminingFee(uint256 numerator, uint256 denominator) public { require(msg.sender == admin || msg.sender == parameterAdmin || msg.sender == superAdmin, "not an admin"); require(denominator != 0, "invalid value"); unminingFeeNumerator = numerator; unminingFeeDenominator = denominator; } function updateClaimingFee(uint256 numerator, uint256 denominator) public { require(msg.sender == admin || msg.sender == parameterAdmin || msg.sender == superAdmin, "not an admin"); require(denominator != 0, "invalid value"); claimingFeeNumerator = numerator; claimingFeeDenominator = denominator; } // CORE // ************************************************************************************* function mine(uint256 amount) public payable { require(amount > 0, "zero"); uint256 fee = amount.mul(miningFeeNumerator).div(miningFeeDenominator); require(msg.value == fee, "invalid fee"); feeCollector.transfer(msg.value); if (block.number > minerBlockLastClaimedOn[msg.sender]) { uint256 reward = getReward(msg.sender); if (reward > 0) { rewardBalance = rewardBalance.sub(reward); strongToken.approve(address(strongPool), reward); strongPool.mineFor(msg.sender, reward); minerBlockLastClaimedOn[msg.sender] = block.number; } } token.transferFrom(msg.sender, address(this), amount); minerBalance[msg.sender] = minerBalance[msg.sender].add(amount); totalBalance = totalBalance.add(amount); if (minerBlockLastClaimedOn[msg.sender] == 0) { minerBlockLastClaimedOn[msg.sender] = block.number; } emit Mined(msg.sender, amount); } function unmine(uint256 amount) public payable { require(amount > 0, "zero"); uint256 fee = amount.mul(unminingFeeNumerator).div(unminingFeeDenominator); require(msg.value == fee, "invalid fee"); require(minerBalance[msg.sender] >= amount, "not enough"); feeCollector.transfer(msg.value); if (block.number > minerBlockLastClaimedOn[msg.sender]) { uint256 reward = getReward(msg.sender); if (reward > 0) { rewardBalance = rewardBalance.sub(reward); strongToken.approve(address(strongPool), reward); strongPool.mineFor(msg.sender, reward); minerBlockLastClaimedOn[msg.sender] = block.number; } } minerBalance[msg.sender] = minerBalance[msg.sender].sub(amount); totalBalance = totalBalance.sub(amount); token.transfer(msg.sender, amount); if (minerBalance[msg.sender] == 0) { minerBlockLastClaimedOn[msg.sender] = 0; } emit Unmined(msg.sender, amount); } function claim(uint256 blockNumber) public payable { require(blockNumber <= block.number, "invalid block number"); require(minerBlockLastClaimedOn[msg.sender] != 0, "error"); require(blockNumber > minerBlockLastClaimedOn[msg.sender], "too soon"); uint256 reward = getRewardByBlock(msg.sender, blockNumber); require(reward > 0, "no reward"); uint256 fee = reward.mul(claimingFeeNumerator).div(claimingFeeDenominator); require(msg.value == fee, "invalid fee"); feeCollector.transfer(msg.value); strongToken.approve(address(strongPool), reward); strongPool.mineFor(msg.sender, reward); rewardBalance = rewardBalance.sub(reward); minerBlockLastClaimedOn[msg.sender] = blockNumber; emit Claimed(msg.sender, reward); } function getReward(address miner) public view returns (uint256) { return getRewardByBlock(miner, block.number); } function getRewardByBlock(address miner, uint256 blockNumber) public view returns (uint256) { uint256 blockLastClaimedOn = minerBlockLastClaimedOn[miner]; if (blockNumber > block.number) return 0; if (blockLastClaimedOn == 0) return 0; if (blockNumber < blockLastClaimedOn) return 0; if (totalBalance == 0) return 0; uint256[2] memory rewardBlocks = rewards.blocks(blockLastClaimedOn, rewardPerBlockNewEffectiveBlock, blockNumber); uint256 rewardOld = rewardPerBlockDenominator > 0 ? rewardBlocks[0].mul(rewardPerBlockNumerator).div(rewardPerBlockDenominator) : 0; uint256 rewardNew = rewardPerBlockDenominatorNew > 0 ? rewardBlocks[1].mul(rewardPerBlockNumeratorNew).div(rewardPerBlockDenominatorNew) : 0; return rewardOld.add(rewardNew).mul(minerBalance[miner]).div(totalBalance); } function updateRewardPerBlockNew( uint256 numerator, uint256 denominator, uint256 effectiveBlock ) public { require(msg.sender == admin || msg.sender == parameterAdmin || msg.sender == superAdmin, "not admin"); rewardPerBlockNumeratorNew = numerator; rewardPerBlockDenominatorNew = denominator; rewardPerBlockNewEffectiveBlock = effectiveBlock != 0 ? effectiveBlock : block.number; } function setTokenContract(IERC20 tokenAddress) external { require(msg.sender == superAdmin, "not an admin"); strongToken = tokenAddress; } function withdrawToken(IERC20 token, address recipient, uint256 amount) external { require(msg.sender == superAdmin, "not an admin"); require(token.transfer(recipient, amount)); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; interface StrongPoolInterface { function mineFor(address miner, uint256 amount) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; import "./SafeMath.sol"; library rewards { using SafeMath for uint256; function blocks(uint256 lastClaimedOnBlock, uint256 newRewardBlock, uint256 blockNumber) internal pure returns (uint256[2] memory) { if (lastClaimedOnBlock >= blockNumber) return [uint256(0), uint256(0)]; if (blockNumber <= newRewardBlock || newRewardBlock == 0) { return [blockNumber.sub(lastClaimedOnBlock), uint256(0)]; } else if (lastClaimedOnBlock >= newRewardBlock) { return [uint256(0), blockNumber.sub(lastClaimedOnBlock)]; } else { return [newRewardBlock.sub(lastClaimedOnBlock), blockNumber.sub(newRewardBlock)]; } } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"miner","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"miner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mined","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"miner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unmined","type":"event"},{"inputs":[],"name":"acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"acceptSuperAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimingFeeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimingFeeInWei","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimingFeeNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeCollector","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"}],"name":"getReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getRewardByBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"strongTokenAddress","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"strongPoolAddress","type":"address"},{"internalType":"address","name":"adminAddress","type":"address"},{"internalType":"address","name":"superAdminAddress","type":"address"},{"internalType":"uint256","name":"rewardPerBlockNumeratorValue","type":"uint256"},{"internalType":"uint256","name":"rewardPerBlockDenominatorValue","type":"uint256"},{"internalType":"uint256","name":"miningFeeNumeratorValue","type":"uint256"},{"internalType":"uint256","name":"miningFeeDenominatorValue","type":"uint256"},{"internalType":"uint256","name":"unminingFeeNumeratorValue","type":"uint256"},{"internalType":"uint256","name":"unminingFeeDenominatorValue","type":"uint256"},{"internalType":"uint256","name":"claimingFeeNumeratorValue","type":"uint256"},{"internalType":"uint256","name":"claimingFeeDenominatorValue","type":"uint256"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initDone","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mine","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minerBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minerBlockLastClaimedOn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"miningFeeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"miningFeeNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"parameterAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingSuperAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerBlockDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerBlockDenominatorNew","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerBlockNewEffectiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerBlockNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerBlockNumeratorNew","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingSuperAdmin","type":"address"}],"name":"setPendingSuperAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenAddress","type":"address"}],"name":"setTokenContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strongPool","outputs":[{"internalType":"contract StrongPoolInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"strongToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"superAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unmine","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"unminingFeeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unminingFeeNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"updateClaimingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newFeeCollector","type":"address"}],"name":"updateFeeCollector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"updateMiningFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newParameterAdmin","type":"address"}],"name":"updateParameterAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"updateRewardPerBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"},{"internalType":"uint256","name":"effectiveBlock","type":"uint256"}],"name":"updateRewardPerBlockNew","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"updateUnminingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506123ed806100206000396000f3fe6080604052600436106102885760003560e01c8063abb1c39b1161015a578063d39ca7de116100c1578063ef56a08b1161007a578063ef56a08b14610882578063f3fef3a314610897578063f4265715146108d0578063f851a440146108ed578063fc0c546a14610902578063fed0a20e1461091757610288565b8063d39ca7de146107c8578063db588ec2146107fb578063e195232e14610810578063e771e91a14610825578063e7f9cefd14610858578063ed5998da1461086d57610288565b8063bbcd5bbe11610113578063bbcd5bbe146106f0578063c00007b014610723578063c2b2fdca14610756578063c415b95c1461076b578063ce77beaf14610780578063d2c35ce81461079557610288565b8063abb1c39b14610589578063ad7a672f146105b9578063b0e8a45d146105ce578063b1128e3e14610604578063b1dfb9b31461068d578063b6b55f25146106c657610288565b80634d474898116101fe5780638aa9a37f116101b75780638aa9a37f146104b75780638b70f359146104e7578063965d61b91461051a57806399e6f7001461052f578063a84ffad514610544578063aa5c3ab41461057457610288565b80634d474898146104135780634dd18bf5146104305780635b7f6ea8146104635780637a5d5cf414610478578063857d49d51461048d57806387f48f4e146104a257610288565b80631d851bbd116102505780631d851bbd14610353578063267822471461036857806329575f6a14610399578063379607f5146103ae57806340b584b4146103cb57806348028d63146103fe57610288565b806301e336671461028d57806309a07fd2146102d25780630a8d1be2146102f95780630e18b68114610329578063198858981461033e575b600080fd5b34801561029957600080fd5b506102d0600480360360608110156102b057600080fd5b506001600160a01b03813581169160208101359091169060400135610940565b005b3480156102de57600080fd5b506102e7610a1f565b60408051918252519081900360200190f35b34801561030557600080fd5b506102d06004803603604081101561031c57600080fd5b5080359060200135610a25565b34801561033557600080fd5b506102d0610aef565b34801561034a57600080fd5b506102e7610b7e565b34801561035f57600080fd5b506102e7610b84565b34801561037457600080fd5b5061037d610b8a565b604080516001600160a01b039092168252519081900360200190f35b3480156103a557600080fd5b5061037d610b99565b6102d0600480360360208110156103c457600080fd5b5035610ba8565b3480156103d757600080fd5b506102d0600480360360208110156103ee57600080fd5b50356001600160a01b0316610ec8565b34801561040a57600080fd5b5061037d610f45565b6102d06004803603602081101561042957600080fd5b5035610f54565b34801561043c57600080fd5b506102d06004803603602081101561045357600080fd5b50356001600160a01b031661128d565b34801561046f57600080fd5b506102e7611343565b34801561048457600080fd5b506102e7611349565b34801561049957600080fd5b5061037d61134f565b3480156104ae57600080fd5b506102e761135e565b3480156104c357600080fd5b506102d0600480360360408110156104da57600080fd5b5080359060200135611364565b3480156104f357600080fd5b506102e76004803603602081101561050a57600080fd5b50356001600160a01b031661142e565b34801561052657600080fd5b5061037d611440565b34801561053b57600080fd5b506102e761144f565b34801561055057600080fd5b506102d06004803603604081101561056757600080fd5b5080359060200135611455565b34801561058057600080fd5b506102e761151f565b34801561059557600080fd5b506102d0600480360360408110156105ac57600080fd5b5080359060200135611525565b3480156105c557600080fd5b506102e76115ef565b3480156105da57600080fd5b506102d0600480360360608110156105f157600080fd5b50803590602081013590604001356115f5565b34801561061057600080fd5b506102d060048036036101a081101561062857600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101358216916080820135169060a08101359060c08101359060e08101359061010081013590610120810135906101408101359061016081013590610180013561168e565b34801561069957600080fd5b506102e7600480360360408110156106b057600080fd5b506001600160a01b03813516906020013561176f565b3480156106d257600080fd5b506102d0600480360360208110156106e957600080fd5b503561188a565b3480156106fc57600080fd5b506102d06004803603602081101561071357600080fd5b50356001600160a01b03166119af565b34801561072f57600080fd5b506102e76004803603602081101561074657600080fd5b50356001600160a01b0316611a1f565b34801561076257600080fd5b506102e7611a2b565b34801561077757600080fd5b5061037d611a31565b34801561078c57600080fd5b506102e7611a40565b3480156107a157600080fd5b506102d0600480360360208110156107b857600080fd5b50356001600160a01b0316611a46565b3480156107d457600080fd5b506102d0600480360360208110156107eb57600080fd5b50356001600160a01b0316611ac3565b34801561080757600080fd5b506102e7611b79565b34801561081c57600080fd5b5061037d611b7f565b34801561083157600080fd5b506102e76004803603602081101561084857600080fd5b50356001600160a01b0316611b8e565b34801561086457600080fd5b506102d0611ba0565b34801561087957600080fd5b506102e7611c29565b34801561088e57600080fd5b506102e7611c2f565b3480156108a357600080fd5b506102d0600480360360408110156108ba57600080fd5b506001600160a01b038135169060200135611c35565b6102d0600480360360208110156108e657600080fd5b5035611d9b565b3480156108f957600080fd5b5061037d61211d565b34801561090e57600080fd5b5061037d612131565b34801561092357600080fd5b5061092c612140565b604080519115158252519081900360200190f35b6002546001600160a01b0316331461098e576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156109e557600080fd5b505af11580156109f9573d6000803e3d6000fd5b505050506040513d6020811015610a0f57600080fd5b5051610a1a57600080fd5b505050565b60135481565b60005461010090046001600160a01b0316331480610a4d57506004546001600160a01b031633145b80610a6257506002546001600160a01b031633145b610aa2576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b80610ae4576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c69642076616c756560981b604482015290519081900360640190fd5b600d91909155600e55565b6001546001600160a01b031633148015610b0857503315155b610b4c576040805162461bcd60e51b815260206004820152601060248201526f3737ba103832b73234b733a0b236b4b760811b604482015290519081900360640190fd5b6001805460008054610100600160a81b0319166101006001600160a01b038416021790556001600160a01b0319169055565b600e5481565b60185481565b6001546001600160a01b031681565b6002546001600160a01b031681565b43811115610bf4576040805162461bcd60e51b815260206004820152601460248201527334b73b30b634b210313637b1b590373ab6b132b960611b604482015290519081900360640190fd5b336000908152600b6020526040902054610c3d576040805162461bcd60e51b815260206004820152600560248201526432b93937b960d91b604482015290519081900360640190fd5b336000908152600b60205260409020548111610c8b576040805162461bcd60e51b81526020600482015260086024820152673a37b79039b7b7b760c11b604482015290519081900360640190fd5b6000610c97338361176f565b905060008111610cda576040805162461bcd60e51b81526020600482015260096024820152681b9bc81c995dd85c9960ba1b604482015290519081900360640190fd5b6000610cfd601454610cf76013548561214990919063ffffffff16565b906121a9565b9050803414610d41576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015290519081900360640190fd5b6005546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610d7a573d6000803e3d6000fd5b506007546008546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018690529051919092169163095ea7b39160448083019260209291908290030181600087803b158015610dd457600080fd5b505af1158015610de8573d6000803e3d6000fd5b505050506040513d6020811015610dfe57600080fd5b5050600854604080516330d6a97560e01b81523360048201526024810185905290516001600160a01b03909216916330d6a9759160448082019260009290919082900301818387803b158015610e5357600080fd5b505af1158015610e67573d6000803e3d6000fd5b5050600c54610e799250905083612210565b600c55336000818152600b6020908152604091829020869055815185815291517fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a9281900390910190a2505050565b6001600160a01b038116610f0c576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b6002546001600160a01b03163314610f2357600080fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031681565b60008111610f92576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b6000610faf601054610cf7600f548561214990919063ffffffff16565b9050803414610ff3576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015290519081900360640190fd5b6005546040516001600160a01b03909116903480156108fc02916000818181858888f1935050505015801561102c573d6000803e3d6000fd5b50336000908152600b602052604090205443111561116c57600061104f33611a1f565b9050801561116a57600c546110649082612210565b600c556007546008546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156110c057600080fd5b505af11580156110d4573d6000803e3d6000fd5b505050506040513d60208110156110ea57600080fd5b5050600854604080516330d6a97560e01b81523360048201526024810184905290516001600160a01b03909216916330d6a9759160448082019260009290919082900301818387803b15801561113f57600080fd5b505af1158015611153573d6000803e3d6000fd5b5050336000908152600b6020526040902043905550505b505b600654604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156111c657600080fd5b505af11580156111da573d6000803e3d6000fd5b505050506040513d60208110156111f057600080fd5b50503360009081526009602052604090205461120c908361226d565b33600090815260096020526040902055600a54611229908361226d565b600a55336000908152600b602052604090205461125357336000908152600b602052604090204390555b60408051838152905133917f3ad10ba9777a3bc21180a465e5459861d07cbdb271af9a0f10c993b365b760f8919081900360200190a25050565b6001600160a01b0381166112d1576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b60005461010090046001600160a01b03163314611321576040805162461bcd60e51b81526020600482015260096024820152683737ba1030b236b4b760b91b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600f5481565b60165481565b6004546001600160a01b031681565b60145481565b60005461010090046001600160a01b031633148061138c57506004546001600160a01b031633145b806113a157506002546001600160a01b031633145b6113e1576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b80611423576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c69642076616c756560981b604482015290519081900360640190fd5b601391909155601455565b600b6020526000908152604090205481565b6007546001600160a01b031681565b600d5481565b60005461010090046001600160a01b031633148061147d57506004546001600160a01b031633145b8061149257506002546001600160a01b031633145b6114d2576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b80611514576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c69642076616c756560981b604482015290519081900360640190fd5b600f91909155601055565b600c5481565b60005461010090046001600160a01b031633148061154d57506004546001600160a01b031633145b8061156257506002546001600160a01b031633145b6115a2576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b806115e4576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c69642076616c756560981b604482015290519081900360640190fd5b601191909155601255565b600a5481565b60005461010090046001600160a01b031633148061161d57506004546001600160a01b031633145b8061163257506002546001600160a01b031633145b61166f576040805162461bcd60e51b81526020600482015260096024820152683737ba1030b236b4b760b91b604482015290519081900360640190fd5b60168390556017829055806116845743611686565b805b601855505050565b60005460ff16156116d2576040805162461bcd60e51b8152602060048201526009602482015268696e697420646f6e6560b81b604482015290519081900360640190fd5b600780546001600160a01b039e8f166001600160a01b031991821617909155600680549d8f169d82169d909d17909c55600880549b8e169b8d169b909b17909a5560008054600280549a8f169a909d1699909917909b55600d96909655600e94909455600f9290925560105560115560125560135560149290925560ff19931661010002610100600160a81b031990911617919091166001179055565b6001600160a01b0382166000908152600b60205260408120544383111561179a576000915050611884565b806117a9576000915050611884565b808310156117bb576000915050611884565b600a546117cc576000915050611884565b6117d4612378565b6117e182601854866122c7565b9050600080600e54116117f5576000611819565b611819600e54610cf7600d548560006002811061180e57fe5b602002015190612149565b90506000806017541161182d576000611846565b611846601754610cf76016548660016002811061180e57fe5b600a546001600160a01b03891660009081526009602052604090205491925061187d91610cf790611877868661226d565b90612149565b9450505050505b92915050565b6002546001600160a01b031633146118d8576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b60008111611916576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b600754604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561197057600080fd5b505af1158015611984573d6000803e3d6000fd5b505050506040513d602081101561199a57600080fd5b5050600c546119a9908261226d565b600c5550565b6002546001600160a01b031633146119fd576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000611884824361176f565b60155481565b6005546001600160a01b031681565b60115481565b6001600160a01b038116611a8a576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b6002546001600160a01b03163314611aa157600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116611b07576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b6002546001600160a01b03163314611b57576040805162461bcd60e51b815260206004820152600e60248201526d3737ba1039bab832b920b236b4b760911b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60125481565b6008546001600160a01b031681565b60096020526000908152604090205481565b6003546001600160a01b031633148015611bb957503315155b611c02576040805162461bcd60e51b81526020600482015260156024820152743737ba103832b73234b733a9bab832b920b236b4b760591b604482015290519081900360640190fd5b60038054600280546001600160a01b03199081166001600160a01b03841617909155169055565b60175481565b60105481565b6002546001600160a01b03163314611c83576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b60008111611cc1576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b80600c541015611d05576040805162461bcd60e51b815260206004820152600a6024820152690dcdee840cadcdeeaced60b31b604482015290519081900360640190fd5b6007546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015611d5b57600080fd5b505af1158015611d6f573d6000803e3d6000fd5b505050506040513d6020811015611d8557600080fd5b5050600c54611d949082612210565b600c555050565b60008111611dd9576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b6000611df6601254610cf76011548561214990919063ffffffff16565b9050803414611e3a576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015290519081900360640190fd5b33600090815260096020526040902054821115611e8b576040805162461bcd60e51b815260206004820152600a6024820152690dcdee840cadcdeeaced60b31b604482015290519081900360640190fd5b6005546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015611ec4573d6000803e3d6000fd5b50336000908152600b6020526040902054431115612004576000611ee733611a1f565b9050801561200257600c54611efc9082612210565b600c556007546008546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b158015611f5857600080fd5b505af1158015611f6c573d6000803e3d6000fd5b505050506040513d6020811015611f8257600080fd5b5050600854604080516330d6a97560e01b81523360048201526024810184905290516001600160a01b03909216916330d6a9759160448082019260009290919082900301818387803b158015611fd757600080fd5b505af1158015611feb573d6000803e3d6000fd5b5050336000908152600b6020526040902043905550505b505b3360009081526009602052604090205461201e9083612210565b33600090815260096020526040902055600a5461203b9083612210565b600a556006546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561209257600080fd5b505af11580156120a6573d6000803e3d6000fd5b505050506040513d60208110156120bc57600080fd5b5050336000908152600960205260409020546120e357336000908152600b60205260408120555b60408051838152905133917f53d02005d2e370ce08a8b60d65e07879891c336e6513821a3923f11854b54027919081900360200190a25050565b60005461010090046001600160a01b031681565b6006546001600160a01b031681565b60005460ff1681565b60008261215857506000611884565b8282028284828161216557fe5b04146121a25760405162461bcd60e51b81526004018080602001828103825260218152602001806123976021913960400191505060405180910390fd5b9392505050565b60008082116121ff576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161220857fe5b049392505050565b600082821115612267576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156121a2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6122cf612378565b8184106122f0575060408051808201909152600080825260208201526121a2565b82821115806122fd575082155b156123285760408051808201909152806123178487612210565b8152602001600081525090506121a2565b8284106123545760408051808201909152600081526020810161234b8487612210565b905290506121a2565b60408051808201909152806123698587612210565b815260200161234b8486612210565b6040518060400160405280600290602082028036833750919291505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122009c68416b0c94d361c68bd059bf3c7c8d6f5e88ab7465c10a14f0730a7d8a26764736f6c634300060c0033
Deployed Bytecode
0x6080604052600436106102885760003560e01c8063abb1c39b1161015a578063d39ca7de116100c1578063ef56a08b1161007a578063ef56a08b14610882578063f3fef3a314610897578063f4265715146108d0578063f851a440146108ed578063fc0c546a14610902578063fed0a20e1461091757610288565b8063d39ca7de146107c8578063db588ec2146107fb578063e195232e14610810578063e771e91a14610825578063e7f9cefd14610858578063ed5998da1461086d57610288565b8063bbcd5bbe11610113578063bbcd5bbe146106f0578063c00007b014610723578063c2b2fdca14610756578063c415b95c1461076b578063ce77beaf14610780578063d2c35ce81461079557610288565b8063abb1c39b14610589578063ad7a672f146105b9578063b0e8a45d146105ce578063b1128e3e14610604578063b1dfb9b31461068d578063b6b55f25146106c657610288565b80634d474898116101fe5780638aa9a37f116101b75780638aa9a37f146104b75780638b70f359146104e7578063965d61b91461051a57806399e6f7001461052f578063a84ffad514610544578063aa5c3ab41461057457610288565b80634d474898146104135780634dd18bf5146104305780635b7f6ea8146104635780637a5d5cf414610478578063857d49d51461048d57806387f48f4e146104a257610288565b80631d851bbd116102505780631d851bbd14610353578063267822471461036857806329575f6a14610399578063379607f5146103ae57806340b584b4146103cb57806348028d63146103fe57610288565b806301e336671461028d57806309a07fd2146102d25780630a8d1be2146102f95780630e18b68114610329578063198858981461033e575b600080fd5b34801561029957600080fd5b506102d0600480360360608110156102b057600080fd5b506001600160a01b03813581169160208101359091169060400135610940565b005b3480156102de57600080fd5b506102e7610a1f565b60408051918252519081900360200190f35b34801561030557600080fd5b506102d06004803603604081101561031c57600080fd5b5080359060200135610a25565b34801561033557600080fd5b506102d0610aef565b34801561034a57600080fd5b506102e7610b7e565b34801561035f57600080fd5b506102e7610b84565b34801561037457600080fd5b5061037d610b8a565b604080516001600160a01b039092168252519081900360200190f35b3480156103a557600080fd5b5061037d610b99565b6102d0600480360360208110156103c457600080fd5b5035610ba8565b3480156103d757600080fd5b506102d0600480360360208110156103ee57600080fd5b50356001600160a01b0316610ec8565b34801561040a57600080fd5b5061037d610f45565b6102d06004803603602081101561042957600080fd5b5035610f54565b34801561043c57600080fd5b506102d06004803603602081101561045357600080fd5b50356001600160a01b031661128d565b34801561046f57600080fd5b506102e7611343565b34801561048457600080fd5b506102e7611349565b34801561049957600080fd5b5061037d61134f565b3480156104ae57600080fd5b506102e761135e565b3480156104c357600080fd5b506102d0600480360360408110156104da57600080fd5b5080359060200135611364565b3480156104f357600080fd5b506102e76004803603602081101561050a57600080fd5b50356001600160a01b031661142e565b34801561052657600080fd5b5061037d611440565b34801561053b57600080fd5b506102e761144f565b34801561055057600080fd5b506102d06004803603604081101561056757600080fd5b5080359060200135611455565b34801561058057600080fd5b506102e761151f565b34801561059557600080fd5b506102d0600480360360408110156105ac57600080fd5b5080359060200135611525565b3480156105c557600080fd5b506102e76115ef565b3480156105da57600080fd5b506102d0600480360360608110156105f157600080fd5b50803590602081013590604001356115f5565b34801561061057600080fd5b506102d060048036036101a081101561062857600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101358216916080820135169060a08101359060c08101359060e08101359061010081013590610120810135906101408101359061016081013590610180013561168e565b34801561069957600080fd5b506102e7600480360360408110156106b057600080fd5b506001600160a01b03813516906020013561176f565b3480156106d257600080fd5b506102d0600480360360208110156106e957600080fd5b503561188a565b3480156106fc57600080fd5b506102d06004803603602081101561071357600080fd5b50356001600160a01b03166119af565b34801561072f57600080fd5b506102e76004803603602081101561074657600080fd5b50356001600160a01b0316611a1f565b34801561076257600080fd5b506102e7611a2b565b34801561077757600080fd5b5061037d611a31565b34801561078c57600080fd5b506102e7611a40565b3480156107a157600080fd5b506102d0600480360360208110156107b857600080fd5b50356001600160a01b0316611a46565b3480156107d457600080fd5b506102d0600480360360208110156107eb57600080fd5b50356001600160a01b0316611ac3565b34801561080757600080fd5b506102e7611b79565b34801561081c57600080fd5b5061037d611b7f565b34801561083157600080fd5b506102e76004803603602081101561084857600080fd5b50356001600160a01b0316611b8e565b34801561086457600080fd5b506102d0611ba0565b34801561087957600080fd5b506102e7611c29565b34801561088e57600080fd5b506102e7611c2f565b3480156108a357600080fd5b506102d0600480360360408110156108ba57600080fd5b506001600160a01b038135169060200135611c35565b6102d0600480360360208110156108e657600080fd5b5035611d9b565b3480156108f957600080fd5b5061037d61211d565b34801561090e57600080fd5b5061037d612131565b34801561092357600080fd5b5061092c612140565b604080519115158252519081900360200190f35b6002546001600160a01b0316331461098e576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156109e557600080fd5b505af11580156109f9573d6000803e3d6000fd5b505050506040513d6020811015610a0f57600080fd5b5051610a1a57600080fd5b505050565b60135481565b60005461010090046001600160a01b0316331480610a4d57506004546001600160a01b031633145b80610a6257506002546001600160a01b031633145b610aa2576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b80610ae4576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c69642076616c756560981b604482015290519081900360640190fd5b600d91909155600e55565b6001546001600160a01b031633148015610b0857503315155b610b4c576040805162461bcd60e51b815260206004820152601060248201526f3737ba103832b73234b733a0b236b4b760811b604482015290519081900360640190fd5b6001805460008054610100600160a81b0319166101006001600160a01b038416021790556001600160a01b0319169055565b600e5481565b60185481565b6001546001600160a01b031681565b6002546001600160a01b031681565b43811115610bf4576040805162461bcd60e51b815260206004820152601460248201527334b73b30b634b210313637b1b590373ab6b132b960611b604482015290519081900360640190fd5b336000908152600b6020526040902054610c3d576040805162461bcd60e51b815260206004820152600560248201526432b93937b960d91b604482015290519081900360640190fd5b336000908152600b60205260409020548111610c8b576040805162461bcd60e51b81526020600482015260086024820152673a37b79039b7b7b760c11b604482015290519081900360640190fd5b6000610c97338361176f565b905060008111610cda576040805162461bcd60e51b81526020600482015260096024820152681b9bc81c995dd85c9960ba1b604482015290519081900360640190fd5b6000610cfd601454610cf76013548561214990919063ffffffff16565b906121a9565b9050803414610d41576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015290519081900360640190fd5b6005546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610d7a573d6000803e3d6000fd5b506007546008546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018690529051919092169163095ea7b39160448083019260209291908290030181600087803b158015610dd457600080fd5b505af1158015610de8573d6000803e3d6000fd5b505050506040513d6020811015610dfe57600080fd5b5050600854604080516330d6a97560e01b81523360048201526024810185905290516001600160a01b03909216916330d6a9759160448082019260009290919082900301818387803b158015610e5357600080fd5b505af1158015610e67573d6000803e3d6000fd5b5050600c54610e799250905083612210565b600c55336000818152600b6020908152604091829020869055815185815291517fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a9281900390910190a2505050565b6001600160a01b038116610f0c576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b6002546001600160a01b03163314610f2357600080fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031681565b60008111610f92576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b6000610faf601054610cf7600f548561214990919063ffffffff16565b9050803414610ff3576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015290519081900360640190fd5b6005546040516001600160a01b03909116903480156108fc02916000818181858888f1935050505015801561102c573d6000803e3d6000fd5b50336000908152600b602052604090205443111561116c57600061104f33611a1f565b9050801561116a57600c546110649082612210565b600c556007546008546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156110c057600080fd5b505af11580156110d4573d6000803e3d6000fd5b505050506040513d60208110156110ea57600080fd5b5050600854604080516330d6a97560e01b81523360048201526024810184905290516001600160a01b03909216916330d6a9759160448082019260009290919082900301818387803b15801561113f57600080fd5b505af1158015611153573d6000803e3d6000fd5b5050336000908152600b6020526040902043905550505b505b600654604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156111c657600080fd5b505af11580156111da573d6000803e3d6000fd5b505050506040513d60208110156111f057600080fd5b50503360009081526009602052604090205461120c908361226d565b33600090815260096020526040902055600a54611229908361226d565b600a55336000908152600b602052604090205461125357336000908152600b602052604090204390555b60408051838152905133917f3ad10ba9777a3bc21180a465e5459861d07cbdb271af9a0f10c993b365b760f8919081900360200190a25050565b6001600160a01b0381166112d1576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b60005461010090046001600160a01b03163314611321576040805162461bcd60e51b81526020600482015260096024820152683737ba1030b236b4b760b91b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600f5481565b60165481565b6004546001600160a01b031681565b60145481565b60005461010090046001600160a01b031633148061138c57506004546001600160a01b031633145b806113a157506002546001600160a01b031633145b6113e1576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b80611423576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c69642076616c756560981b604482015290519081900360640190fd5b601391909155601455565b600b6020526000908152604090205481565b6007546001600160a01b031681565b600d5481565b60005461010090046001600160a01b031633148061147d57506004546001600160a01b031633145b8061149257506002546001600160a01b031633145b6114d2576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b80611514576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c69642076616c756560981b604482015290519081900360640190fd5b600f91909155601055565b600c5481565b60005461010090046001600160a01b031633148061154d57506004546001600160a01b031633145b8061156257506002546001600160a01b031633145b6115a2576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b806115e4576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c69642076616c756560981b604482015290519081900360640190fd5b601191909155601255565b600a5481565b60005461010090046001600160a01b031633148061161d57506004546001600160a01b031633145b8061163257506002546001600160a01b031633145b61166f576040805162461bcd60e51b81526020600482015260096024820152683737ba1030b236b4b760b91b604482015290519081900360640190fd5b60168390556017829055806116845743611686565b805b601855505050565b60005460ff16156116d2576040805162461bcd60e51b8152602060048201526009602482015268696e697420646f6e6560b81b604482015290519081900360640190fd5b600780546001600160a01b039e8f166001600160a01b031991821617909155600680549d8f169d82169d909d17909c55600880549b8e169b8d169b909b17909a5560008054600280549a8f169a909d1699909917909b55600d96909655600e94909455600f9290925560105560115560125560135560149290925560ff19931661010002610100600160a81b031990911617919091166001179055565b6001600160a01b0382166000908152600b60205260408120544383111561179a576000915050611884565b806117a9576000915050611884565b808310156117bb576000915050611884565b600a546117cc576000915050611884565b6117d4612378565b6117e182601854866122c7565b9050600080600e54116117f5576000611819565b611819600e54610cf7600d548560006002811061180e57fe5b602002015190612149565b90506000806017541161182d576000611846565b611846601754610cf76016548660016002811061180e57fe5b600a546001600160a01b03891660009081526009602052604090205491925061187d91610cf790611877868661226d565b90612149565b9450505050505b92915050565b6002546001600160a01b031633146118d8576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b60008111611916576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b600754604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561197057600080fd5b505af1158015611984573d6000803e3d6000fd5b505050506040513d602081101561199a57600080fd5b5050600c546119a9908261226d565b600c5550565b6002546001600160a01b031633146119fd576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000611884824361176f565b60155481565b6005546001600160a01b031681565b60115481565b6001600160a01b038116611a8a576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b6002546001600160a01b03163314611aa157600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116611b07576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b6002546001600160a01b03163314611b57576040805162461bcd60e51b815260206004820152600e60248201526d3737ba1039bab832b920b236b4b760911b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60125481565b6008546001600160a01b031681565b60096020526000908152604090205481565b6003546001600160a01b031633148015611bb957503315155b611c02576040805162461bcd60e51b81526020600482015260156024820152743737ba103832b73234b733a9bab832b920b236b4b760591b604482015290519081900360640190fd5b60038054600280546001600160a01b03199081166001600160a01b03841617909155169055565b60175481565b60105481565b6002546001600160a01b03163314611c83576040805162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71030b236b4b760a11b604482015290519081900360640190fd5b60008111611cc1576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b80600c541015611d05576040805162461bcd60e51b815260206004820152600a6024820152690dcdee840cadcdeeaced60b31b604482015290519081900360640190fd5b6007546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015611d5b57600080fd5b505af1158015611d6f573d6000803e3d6000fd5b505050506040513d6020811015611d8557600080fd5b5050600c54611d949082612210565b600c555050565b60008111611dd9576040805162461bcd60e51b815260206004808301919091526024820152637a65726f60e01b604482015290519081900360640190fd5b6000611df6601254610cf76011548561214990919063ffffffff16565b9050803414611e3a576040805162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b604482015290519081900360640190fd5b33600090815260096020526040902054821115611e8b576040805162461bcd60e51b815260206004820152600a6024820152690dcdee840cadcdeeaced60b31b604482015290519081900360640190fd5b6005546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015611ec4573d6000803e3d6000fd5b50336000908152600b6020526040902054431115612004576000611ee733611a1f565b9050801561200257600c54611efc9082612210565b600c556007546008546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b158015611f5857600080fd5b505af1158015611f6c573d6000803e3d6000fd5b505050506040513d6020811015611f8257600080fd5b5050600854604080516330d6a97560e01b81523360048201526024810184905290516001600160a01b03909216916330d6a9759160448082019260009290919082900301818387803b158015611fd757600080fd5b505af1158015611feb573d6000803e3d6000fd5b5050336000908152600b6020526040902043905550505b505b3360009081526009602052604090205461201e9083612210565b33600090815260096020526040902055600a5461203b9083612210565b600a556006546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561209257600080fd5b505af11580156120a6573d6000803e3d6000fd5b505050506040513d60208110156120bc57600080fd5b5050336000908152600960205260409020546120e357336000908152600b60205260408120555b60408051838152905133917f53d02005d2e370ce08a8b60d65e07879891c336e6513821a3923f11854b54027919081900360200190a25050565b60005461010090046001600160a01b031681565b6006546001600160a01b031681565b60005460ff1681565b60008261215857506000611884565b8282028284828161216557fe5b04146121a25760405162461bcd60e51b81526004018080602001828103825260218152602001806123976021913960400191505060405180910390fd5b9392505050565b60008082116121ff576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161220857fe5b049392505050565b600082821115612267576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156121a2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6122cf612378565b8184106122f0575060408051808201909152600080825260208201526121a2565b82821115806122fd575082155b156123285760408051808201909152806123178487612210565b8152602001600081525090506121a2565b8284106123545760408051808201909152600081526020810161234b8487612210565b905290506121a2565b60408051808201909152806123698587612210565b815260200161234b8486612210565b6040518060400160405280600290602082028036833750919291505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122009c68416b0c94d361c68bd059bf3c7c8d6f5e88ab7465c10a14f0730a7d8a26764736f6c634300060c0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.