More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,803 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Get Reward | 17691951 | 533 days ago | IN | 0 ETH | 0.00296938 | ||||
Get Reward | 17207340 | 601 days ago | IN | 0 ETH | 0.00426524 | ||||
Get Reward | 17207268 | 601 days ago | IN | 0 ETH | 0.0047615 | ||||
Get Reward | 17207266 | 601 days ago | IN | 0 ETH | 0.00935106 | ||||
Get Reward | 16752036 | 665 days ago | IN | 0 ETH | 0.00103111 | ||||
Get Reward | 16752030 | 665 days ago | IN | 0 ETH | 0.00109814 | ||||
Get Reward | 16752026 | 665 days ago | IN | 0 ETH | 0.00127726 | ||||
Get Reward | 16706363 | 672 days ago | IN | 0 ETH | 0.00268555 | ||||
Get Reward | 16668156 | 677 days ago | IN | 0 ETH | 0.00112132 | ||||
Get Reward | 16658176 | 678 days ago | IN | 0 ETH | 0.00136968 | ||||
Get Reward | 16404624 | 714 days ago | IN | 0 ETH | 0.00258129 | ||||
Withdraw Bonded ... | 16376967 | 718 days ago | IN | 0 ETH | 0.00242537 | ||||
Get Reward | 16173936 | 746 days ago | IN | 0 ETH | 0.00083118 | ||||
Stake | 16168274 | 747 days ago | IN | 0 ETH | 0.00116288 | ||||
Stake | 16168251 | 747 days ago | IN | 0 ETH | 0.00165232 | ||||
Get Reward | 16127258 | 753 days ago | IN | 0 ETH | 0.00082435 | ||||
Get Reward | 16101909 | 756 days ago | IN | 0 ETH | 0.00074198 | ||||
Get Reward | 16101894 | 756 days ago | IN | 0 ETH | 0.00095624 | ||||
Withdraw Unbonde... | 16101884 | 756 days ago | IN | 0 ETH | 0.00090954 | ||||
Withdraw Bonded ... | 16101877 | 756 days ago | IN | 0 ETH | 0.00094547 | ||||
Get Reward | 16101871 | 756 days ago | IN | 0 ETH | 0.00118362 | ||||
Withdraw Unbonde... | 16052477 | 763 days ago | IN | 0 ETH | 0.00082358 | ||||
Withdraw Unbonde... | 15993907 | 771 days ago | IN | 0 ETH | 0.00095877 | ||||
Withdraw Bonded ... | 15993903 | 771 days ago | IN | 0 ETH | 0.00118792 | ||||
Get Reward | 15979164 | 773 days ago | IN | 0 ETH | 0.00081844 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
VotingStakingRewards
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
byzantium EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.4.24; import "@aragon/os/contracts/lib/math/SafeMath.sol"; import "@aragon/os/contracts/lib/math/SafeMath64.sol"; import "@aragon/os/contracts/lib/math/Math.sol"; import "./interfaces/IVeXBE.sol"; import "./interfaces/IERC20.sol"; import "./interfaces/IBoostLogicProvider.sol"; import "./utils/VotingPausable.sol"; import "./utils/VotingNonReentrant.sol"; import "./utils/VotingOwnable.sol"; import "./utils/VotingInitializable.sol"; contract VotingStakingRewards is VotingPausable, VotingNonReentrant, VotingOwnable, VotingInitializable { using SafeMath for uint256; /* ========== EVENTS ========== */ event RewardAdded(uint256 reward); event Staked(address indexed user, uint256 amount); event Withdrawn(address indexed user, uint256 amount); event RewardPaid(address indexed user, uint256 reward); uint256 public constant PCT_BASE = 10**18; // 0% = 0; 1% = 10^16; 100% = 10^18 uint256 internal constant MAX_BOOST_LEVEL = PCT_BASE; address public treasury; struct BondedReward { uint256 amount; uint256 unlockTime; } mapping(address => bool) public allowance; mapping(address => BondedReward) public bondedRewardLocks; uint256 public penaltyPct = PCT_BASE / 2; // PCT_BASE is 10^18 uint256 public inverseMaxBoostCoefficient = 40; // 1 / inverseMaxBoostCoefficient = max boost coef. (ex. if 40 then 1 / (40 / 100) = 2.5) IERC20 public rewardsToken; IERC20 public stakingToken; uint256 public periodFinish; uint256 public rewardRate; uint256 public rewardsDuration; uint256 public lastUpdateTime; uint256 public rewardPerTokenStored; address public rewardsDistribution; uint256 public bondedLockDuration; mapping(address => uint256) public userRewardPerTokenPaid; mapping(address => uint256) public rewards; uint256 public totalSupply; mapping(address => uint256) internal _balances; IVeXBE public token; IBoostLogicProvider public boostLogicProvider; function configure( address _rewardsDistribution, IERC20 _rewardsToken, IERC20 _stakingToken, uint256 _rewardsDuration, IVeXBE _token, IBoostLogicProvider _boostLogicProvider, address _treasury, uint256 _bondedLockDuration, address[] memory _allowance ) public initializer { rewardsToken = _rewardsToken; stakingToken = _stakingToken; rewardsDistribution = _rewardsDistribution; rewardsDuration = _rewardsDuration; token = _token; boostLogicProvider = _boostLogicProvider; treasury = _treasury; require(_bondedLockDuration > 0, "badBondDuration"); bondedLockDuration = _bondedLockDuration; for (uint256 i = 0; i < _allowance.length; i++) { allowance[_allowance[i]] = true; } } /* ========== MODIFIERS ========== */ modifier updateReward(address account) { uint256 _lastTimeReward = lastTimeRewardApplicable(); uint256 _duration = _lastTimeReward.sub(lastUpdateTime); rewardPerTokenStored = _rewardPerToken(_duration); lastUpdateTime = _lastTimeReward; if (account != address(0)) { (uint256 userEarned, uint256 toTreasury) = potentialXbeReturns( 0, account ); rewards[account] = userEarned; userRewardPerTokenPaid[account] = rewardPerTokenStored; // transfer remaining reward share to treasury if (toTreasury > 0) { require( stakingToken.transfer(treasury, toTreasury), "!boostDelta" ); } } _; } modifier onlyRewardsDistribution() { require( msg.sender == rewardsDistribution, "Caller is not RewardsDistribution contract" ); _; } /* ========== OWNERS FUNCTIONS ========== */ function setRewardsDistribution(address _rewardsDistribution) external onlyOwner { rewardsDistribution = _rewardsDistribution; } function setInverseMaxBoostCoefficient(uint256 _inverseMaxBoostCoefficient) external onlyOwner { inverseMaxBoostCoefficient = _inverseMaxBoostCoefficient; require( _inverseMaxBoostCoefficient > 0 && _inverseMaxBoostCoefficient < 100, "invalidInverseMaxBoostCoefficient" ); } function setPenaltyPct(uint256 _penaltyPct) external onlyOwner { penaltyPct = _penaltyPct; require(_penaltyPct < PCT_BASE, "tooHighPct"); } function setBondedLockDuration(uint256 _bondedLockDuration) external onlyOwner { bondedLockDuration = _bondedLockDuration; } function setBoostLogicProvider(address _boostLogicProvider) external onlyOwner { boostLogicProvider = IBoostLogicProvider(_boostLogicProvider); } function setAddressWhoCanAutoStake(address _addr, bool _flag) external onlyOwner { allowance[_addr] = _flag; } /* ========== VIEWS ========== */ function balanceOf(address account) external view returns (uint256) { return _balances[account]; } function lastTimeRewardApplicable() public view returns (uint256) { return Math.min256(block.timestamp, periodFinish); } function rewardPerToken() external view returns (uint256) { return _rewardPerToken(lastTimeRewardApplicable().sub(lastUpdateTime)); } function _rewardPerToken(uint256 duration) internal view returns (uint256) { if (totalSupply == 0) { return rewardPerTokenStored; } return rewardPerTokenStored.add( duration.mul(rewardRate).mul(PCT_BASE).div(totalSupply) ); } /* ========== RESTRICTED FUNCTIONS ========== */ function notifyRewardAmount(uint256 reward) external onlyRewardsDistribution updateReward(address(0)) { if (block.timestamp >= periodFinish) { rewardRate = reward.div(rewardsDuration); } else { uint256 remaining = periodFinish.sub(block.timestamp); uint256 leftover = remaining.mul(rewardRate); rewardRate = reward.add(leftover).div(rewardsDuration); } // Ensure the provided reward amount is not more than the balance in the contract. // This keeps the reward rate in the right range, preventing overflows due to // very high values of rewardRate in the earned and rewardsPerToken functions; // Reward + leftover must be less than 2^256 / 10^18 to avoid overflow. uint256 balance = rewardsToken.balanceOf(address(this)); require( rewardRate <= balance.div(rewardsDuration), "Provided reward too high" ); lastUpdateTime = block.timestamp; periodFinish = block.timestamp.add(rewardsDuration); emit RewardAdded(reward); } function _stake(address _for, uint256 _amount) internal { require(_amount > 0, "Cannot stake 0"); totalSupply = totalSupply.add(_amount); _balances[_for] = _balances[_for].add(_amount); require( stakingToken.transferFrom(msg.sender, address(this), _amount), "!t" ); emit Staked(_for, _amount); } function stakeFor(address _for, uint256 amount) external nonReentrant whenNotPaused updateReward(_for) { require(allowance[msg.sender], "stakeNotApproved"); _stake(_for, amount); BondedReward memory rewardLock = bondedRewardLocks[_for]; if (block.timestamp >= rewardLock.unlockTime) { bondedRewardLocks[_for].amount = amount; } else { bondedRewardLocks[_for].amount = rewardLock.amount.add(amount); } bondedRewardLocks[_for].unlockTime = block.timestamp.add( bondedLockDuration ); } function stake(uint256 amount) external nonReentrant whenNotPaused updateReward(msg.sender) { _stake(msg.sender, amount); } function withdrawBondedOrWithPenalty() external nonReentrant updateReward(msg.sender) { uint256 amount = bondedRewardLocks[msg.sender].amount; uint256 escrowed = token.lockedAmount(msg.sender); amount = Math.min256(amount, _balances[msg.sender].sub(escrowed)); totalSupply = totalSupply.sub(amount); _balances[msg.sender] = _balances[msg.sender].sub(amount); if (block.timestamp >= bondedRewardLocks[msg.sender].unlockTime) { require(stakingToken.transfer(msg.sender, amount), "!tBonded"); } else { uint256 penalty = amount.mul(penaltyPct).div(PCT_BASE); uint256 toTransfer = amount.sub(penalty); require( stakingToken.transfer(msg.sender, toTransfer), "!tBondedWithPenalty" ); require(stakingToken.transfer(treasury, penalty), "!tPenalty"); } delete bondedRewardLocks[msg.sender]; emit Withdrawn(msg.sender, amount); } function withdrawUnbonded(uint256 amount) external nonReentrant updateReward(msg.sender) { require(amount > 0, "!withdraw0"); uint256 escrowed = token.lockedAmount(msg.sender); require( _balances[msg.sender].sub(escrowed).sub( bondedRewardLocks[msg.sender].amount ) >= amount, "escrow amount failure" ); totalSupply = totalSupply.sub(amount); _balances[msg.sender] = _balances[msg.sender].sub(amount); require(stakingToken.transfer(msg.sender, amount), "!t"); emit Withdrawn(msg.sender, amount); } function _baseBoostLevel() internal view returns (uint256) { return PCT_BASE.mul(inverseMaxBoostCoefficient).div(100); } function _lockedBoostLevel(address account) internal view returns (uint256) { IVeXBE veXBE = token; uint256 votingBalance = veXBE.balanceOf(account); uint256 votingTotal = veXBE.totalSupply(); uint256 lockedAmount = veXBE.lockedAmount(account); if (votingTotal == 0 || votingBalance == 0) { return _baseBoostLevel(); } uint256 res = PCT_BASE .mul(inverseMaxBoostCoefficient) .add( uint256(100) .sub(inverseMaxBoostCoefficient) .mul(PCT_BASE) .mul(veXBE.lockedSupply()) .div(votingTotal) .mul(votingBalance) .div(lockedAmount) ) .div(100); return res < MAX_BOOST_LEVEL ? res : MAX_BOOST_LEVEL; } function calculateBoostLevel(address account) public view returns (uint256) { IVeXBE veXBE = token; uint256 lockedAmount = veXBE.lockedAmount(account); uint256 stakedAmount = _balances[account]; if (stakedAmount == 0 || lockedAmount == 0) { return _baseBoostLevel(); } uint256 lockedBoost = boostLogicProvider.hasMaxBoostLevel(account) ? MAX_BOOST_LEVEL : _lockedBoostLevel(account); return lockedBoost .mul(lockedAmount) .add(_baseBoostLevel().mul(stakedAmount.sub(lockedAmount))) .div(stakedAmount); } function earned(address account) external view returns ( uint256 // userEarned ) { uint256 duration = lastTimeRewardApplicable().sub(lastUpdateTime); (uint256 userEarned, ) = potentialXbeReturns(duration, account); return userEarned; } function potentialXbeReturns(uint256 duration, address account) public view returns ( uint256, uint256 // userEarned, toTreasury ) { uint256 boostLevel = calculateBoostLevel(account); require(boostLevel <= MAX_BOOST_LEVEL, "badBoostLevel"); uint256 maxBoostedReward = _balances[account] .mul(_rewardPerToken(duration).sub(userRewardPerTokenPaid[account])) .div(PCT_BASE); uint256 toUser = maxBoostedReward.mul(boostLevel).div(PCT_BASE); uint256 toTreasury = maxBoostedReward.sub(toUser); return (toUser.add(rewards[account]), toTreasury); } function getReward() external nonReentrant updateReward(msg.sender) { uint256 reward = rewards[msg.sender]; if (reward > 0) { rewards[msg.sender] = 0; require(rewardsToken.transfer(msg.sender, reward), "!t"); emit RewardPaid(msg.sender, reward); } } }
pragma solidity ^0.4.24; /** * @title Math * @dev Assorted math operations */ library Math { function max64(uint64 a, uint64 b) internal pure returns (uint64) { return a >= b ? a : b; } function min64(uint64 a, uint64 b) internal pure returns (uint64) { return a < b ? a : b; } function max256(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } function min256(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } }
// See https://github.com/OpenZeppelin/openzeppelin-solidity/blob/d51e38758e1d985661534534d5c61e27bece5042/contracts/math/SafeMath.sol // Adapted to use pragma ^0.4.24 and satisfy our linter rules pragma solidity ^0.4.24; /** * @title SafeMath * @dev Math operations with safety checks that revert on error */ library SafeMath { string private constant ERROR_ADD_OVERFLOW = "MATH_ADD_OVERFLOW"; string private constant ERROR_SUB_UNDERFLOW = "MATH_SUB_UNDERFLOW"; string private constant ERROR_MUL_OVERFLOW = "MATH_MUL_OVERFLOW"; string private constant ERROR_DIV_ZERO = "MATH_DIV_ZERO"; /** * @dev Multiplies two numbers, reverts on overflow. */ function mul(uint256 _a, uint256 _b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (_a == 0) { return 0; } uint256 c = _a * _b; require(c / _a == _b, ERROR_MUL_OVERFLOW); return c; } /** * @dev Integer division of two numbers truncating the quotient, reverts on division by zero. */ function div(uint256 _a, uint256 _b) internal pure returns (uint256) { require(_b > 0, ERROR_DIV_ZERO); // Solidity only automatically asserts when dividing by 0 uint256 c = _a / _b; // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 _a, uint256 _b) internal pure returns (uint256) { require(_b <= _a, ERROR_SUB_UNDERFLOW); uint256 c = _a - _b; return c; } /** * @dev Adds two numbers, reverts on overflow. */ function add(uint256 _a, uint256 _b) internal pure returns (uint256) { uint256 c = _a + _b; require(c >= _a, ERROR_ADD_OVERFLOW); return c; } /** * @dev Divides two numbers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, ERROR_DIV_ZERO); return a % b; } }
// See https://github.com/OpenZeppelin/openzeppelin-solidity/blob/d51e38758e1d985661534534d5c61e27bece5042/contracts/math/SafeMath.sol // Adapted for uint64, pragma ^0.4.24, and satisfying our linter rules // Also optimized the mul() implementation, see https://github.com/aragon/aragonOS/pull/417 pragma solidity ^0.4.24; /** * @title SafeMath64 * @dev Math operations for uint64 with safety checks that revert on error */ library SafeMath64 { string private constant ERROR_ADD_OVERFLOW = "MATH64_ADD_OVERFLOW"; string private constant ERROR_SUB_UNDERFLOW = "MATH64_SUB_UNDERFLOW"; string private constant ERROR_MUL_OVERFLOW = "MATH64_MUL_OVERFLOW"; string private constant ERROR_DIV_ZERO = "MATH64_DIV_ZERO"; /** * @dev Multiplies two numbers, reverts on overflow. */ function mul(uint64 _a, uint64 _b) internal pure returns (uint64) { uint256 c = uint256(_a) * uint256(_b); require(c < 0x010000000000000000, ERROR_MUL_OVERFLOW); // 2**64 (less gas this way) return uint64(c); } /** * @dev Integer division of two numbers truncating the quotient, reverts on division by zero. */ function div(uint64 _a, uint64 _b) internal pure returns (uint64) { require(_b > 0, ERROR_DIV_ZERO); // Solidity only automatically asserts when dividing by 0 uint64 c = _a / _b; // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint64 _a, uint64 _b) internal pure returns (uint64) { require(_b <= _a, ERROR_SUB_UNDERFLOW); uint64 c = _a - _b; return c; } /** * @dev Adds two numbers, reverts on overflow. */ function add(uint64 _a, uint64 _b) internal pure returns (uint64) { uint64 c = _a + _b; require(c >= _a, ERROR_ADD_OVERFLOW); return c; } /** * @dev Divides two numbers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint64 a, uint64 b) internal pure returns (uint64) { require(b != 0, ERROR_DIV_ZERO); return a % b; } }
pragma solidity ^0.4.24; interface IBoostLogicProvider { function hasMaxBoostLevel(address account) external view returns (bool); }
pragma solidity ^0.4.24; /** * @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); }
pragma solidity ^0.4.24; interface IVeXBE { function getLastUserSlope(address addr) external view returns (int128); function lockedEnd(address addr) external view returns (uint256); function lockedAmount(address addr) external view returns (uint256); function userPointEpoch(address addr) external view returns (uint256); function userPointHistoryTs(address addr, uint256 epoch) external view returns (uint256); function balanceOfAt(address addr, uint256 _block) external view returns (uint256); function balanceOf(address addr) external view returns (uint256); function balanceOf(address addr, uint256 timestamp) external view returns (uint256); function totalSupply() external view returns (uint256); function lockedSupply() external view returns (uint256); function lockStarts(address addr) external view returns (uint256); function totalSupplyAt(uint256 _block) external view returns (uint256); }
pragma solidity ^0.4.24; contract VotingInitializable { /** * @dev Indicates that the contract has been initialized. */ bool private _initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private _initializing; /** * @dev Modifier to protect an initializer function from being invoked twice. */ modifier initializer() { require(_initializing || !_initialized, "alreadyInitialized"); bool isTopLevelCall = !_initializing; if (isTopLevelCall) { _initializing = true; _initialized = true; } _; if (isTopLevelCall) { _initializing = false; } } }
pragma solidity ^0.4.24; contract VotingNonReentrant { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status = _NOT_ENTERED; modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
pragma solidity ^0.4.24; contract VotingOwnable { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(msg.sender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == msg.sender, "!owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0), "owner0"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
pragma solidity ^0.4.24; contract VotingPausable { bool public paused; address private pauser; constructor() public { pauser = msg.sender; } modifier whenNotPaused() { require(!paused, "paused"); _; } function setPaused(bool _paused) external { require(msg.sender == pauser, "!pauser"); paused = _paused; } function transferOwnership(address newPauser) public { require(msg.sender == pauser, "!pauser"); pauser = newPauser; } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "byzantium", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"earned","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawBondedOrWithPenalty","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"rewards","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"duration","type":"uint256"},{"name":"account","type":"address"}],"name":"potentialXbeReturns","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_rewardsDistribution","type":"address"}],"name":"setRewardsDistribution","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_for","type":"address"},{"name":"amount","type":"uint256"}],"name":"stakeFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardsDuration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"reward","type":"uint256"}],"name":"notifyRewardAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"penaltyPct","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardsDistribution","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"calculateBoostLevel","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_flag","type":"bool"}],"name":"setAddressWhoCanAutoStake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_inverseMaxBoostCoefficient","type":"uint256"}],"name":"setInverseMaxBoostCoefficient","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"treasury","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_penaltyPct","type":"uint256"}],"name":"setPenaltyPct","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stakingToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdrawUnbonded","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_rewardsDistribution","type":"address"},{"name":"_rewardsToken","type":"address"},{"name":"_stakingToken","type":"address"},{"name":"_rewardsDuration","type":"uint256"},{"name":"_token","type":"address"},{"name":"_boostLogicProvider","type":"address"},{"name":"_treasury","type":"address"},{"name":"_bondedLockDuration","type":"uint256"},{"name":"_allowance","type":"address[]"}],"name":"configure","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bondedLockDuration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_bondedLockDuration","type":"uint256"}],"name":"setBondedLockDuration","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_boostLogicProvider","type":"address"}],"name":"setBoostLogicProvider","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"bondedRewardLocks","outputs":[{"name":"amount","type":"uint256"},{"name":"unlockTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"inverseMaxBoostCoefficient","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"boostLogicProvider","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUpdateTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardsToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerTokenStored","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"periodFinish","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PCT_BASE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
6080604052600180556002670de0b6b3a76400000460065560286007556000805461010060a860020a0319163361010081029190911790915561004a9064010000000061004f810204565b6100a1565b60028054600160a060020a03838116600160a060020a0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b613292806100b06000396000f3006080604052600436106102185763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416628cc262811461021d57806301d8d119146102505780630700037d14610267578063160292b41461028857806316c38b3c146102c557806318160ddd146102df57806319762143146102f45780632ee4090814610315578063386a9525146103395780633c6b16ab1461034e5780633d18b912146103665780633d74bb091461037b5780633e5beab9146103905780633fc6df6e146103c557806349c48f4b146103f65780635c975abb146104175780635cd7202e1461042c578063601f3cef1461045257806361d027b31461046a5780636c1f75081461047f57806370a0823114610497578063715018a6146104b857806372f702f3146104cd5780637467f7b9146104e25780637b0a47ee146104fa57806380faa57d1461050f57806387adc134146105245780638b876347146105b35780638da5cb5b146105d45780638eda7063146105e9578063990c214b146105fe578063a5c573a814610616578063a694fc3a14610637578063a79f4d581461064f578063ad36e49714610670578063b611709714610685578063c8f33c911461069a578063cd3daf9d146106af578063d1af0c7d146106c4578063df136d65146106d9578063ebe2b12b146106ee578063f2fde38b14610703578063fc0c546a14610724578063fc157cb414610739575b600080fd5b34801561022957600080fd5b5061023e600160a060020a036004351661074e565b60408051918252519081900360200190f35b34801561025c57600080fd5b50610265610782565b005b34801561027357600080fd5b5061023e600160a060020a0360043516610d78565b34801561029457600080fd5b506102ac600435600160a060020a0360243516610d8a565b6040805192835260208301919091528051918290030190f35b3480156102d157600080fd5b506102656004351515610ec5565b3480156102eb57600080fd5b5061023e610f3f565b34801561030057600080fd5b50610265600160a060020a0360043516610f45565b34801561032157600080fd5b50610265600160a060020a0360043516602435610fc7565b34801561034557600080fd5b5061023e611308565b34801561035a57600080fd5b5061026560043561130e565b34801561037257600080fd5b506102656116bb565b34801561038757600080fd5b5061023e6119a5565b34801561039c57600080fd5b506103b1600160a060020a03600435166119ab565b604080519115158252519081900360200190f35b3480156103d157600080fd5b506103da6119c0565b60408051600160a060020a039092168252519081900360200190f35b34801561040257600080fd5b5061023e600160a060020a03600435166119cf565b34801561042357600080fd5b506103b1611b9d565b34801561043857600080fd5b50610265600160a060020a03600435166024351515611ba6565b34801561045e57600080fd5b50610265600435611c24565b34801561047657600080fd5b506103da611d0b565b34801561048b57600080fd5b50610265600435611d1a565b3480156104a357600080fd5b5061023e600160a060020a0360043516611dd1565b3480156104c457600080fd5b50610265611df0565b3480156104d957600080fd5b506103da611e4f565b3480156104ee57600080fd5b50610265600435611e5e565b34801561050657600080fd5b5061023e6122c5565b34801561051b57600080fd5b5061023e6122cb565b34801561053057600080fd5b5060408051610104356004818101356020818102858101820190965281855261026595600160a060020a038435811696602480358316976044358416976064359760843586169760a43587169760c4359097169660e435963696949561012495919491019290918291850190849080828437509497506122de9650505050505050565b3480156105bf57600080fd5b5061023e600160a060020a0360043516612572565b3480156105e057600080fd5b506103da612584565b3480156105f557600080fd5b5061023e612593565b34801561060a57600080fd5b50610265600435612599565b34801561062257600080fd5b50610265600160a060020a03600435166125f1565b34801561064357600080fd5b50610265600435612673565b34801561065b57600080fd5b506102ac600160a060020a036004351661287a565b34801561067c57600080fd5b5061023e612893565b34801561069157600080fd5b506103da612899565b3480156106a657600080fd5b5061023e6128a8565b3480156106bb57600080fd5b5061023e6128ae565b3480156106d057600080fd5b506103da6128c6565b3480156106e557600080fd5b5061023e6128d5565b3480156106fa57600080fd5b5061023e6128db565b34801561070f57600080fd5b50610265600160a060020a03600435166128e1565b34801561073057600080fd5b506103da61299d565b34801561074557600080fd5b5061023e6129ac565b600080600061076d600d546107616122cb565b9063ffffffff6129b816565b91506107798285610d8a565b50949350505050565b6000806000806002600154141515156107d3576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020613227833981519152604482015290519081900360640190fd5b60026001553360008080806107e66122cb565b93506107fd600d54856129b890919063ffffffff16565b925061080883612a8f565b600e55600d849055600160a060020a0385161561092b5761082a600086610d8a565b600160a060020a0387166000908152601260209081526040808320859055600e546011909252822055919350915081111561092b576009546003546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156108bb57600080fd5b505af11580156108cf573d6000803e3d6000fd5b505050506040513d60208110156108e557600080fd5b5051151561092b576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020613247833981519152604482015290519081900360640190fd5b33600081815260056020908152604080832054601554825160e360020a63142a7ce102815260048101969096529151909d50600160a060020a039091169363a153e7089360248083019493928390030190829087803b15801561098d57600080fd5b505af11580156109a1573d6000803e3d6000fd5b505050506040513d60208110156109b757600080fd5b5051336000908152601460205260409020549098506109e7908a906109e2908b63ffffffff6129b816565b612ae4565b6013549099506109fd908a63ffffffff6129b816565b60135533600090815260146020526040902054610a20908a63ffffffff6129b816565b336000908152601460209081526040808320939093556005905220600101544210610b23576009546040805160e060020a63a9059cbb028152336004820152602481018c90529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015610a9c57600080fd5b505af1158015610ab0573d6000803e3d6000fd5b505050506040513d6020811015610ac657600080fd5b50511515610b1e576040805160e560020a62461bcd02815260206004820152600860248201527f2174426f6e646564000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610d1c565b610b50670de0b6b3a7640000610b446006548c612afc90919063ffffffff16565b9063ffffffff612baf16565b9650610b62898863ffffffff6129b816565b6009546040805160e060020a63a9059cbb028152336004820152602481018490529051929850600160a060020a039091169163a9059cbb916044808201926020929091908290030181600087803b158015610bbc57600080fd5b505af1158015610bd0573d6000803e3d6000fd5b505050506040513d6020811015610be657600080fd5b50511515610c3e576040805160e560020a62461bcd02815260206004820152601360248201527f2174426f6e6465645769746850656e616c747900000000000000000000000000604482015290519081900360640190fd5b6009546003546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018b90529051919092169163a9059cbb9160448083019260209291908290030181600087803b158015610c9a57600080fd5b505af1158015610cae573d6000803e3d6000fd5b505050506040513d6020811015610cc457600080fd5b50511515610d1c576040805160e560020a62461bcd02815260206004820152600960248201527f217450656e616c74790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b3360008181526005602090815260408083208381556001019290925581518c815291517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59281900390910190a250506001805550505050505050565b60126020526000908152604090205481565b600080600080600080610d9c876119cf565b9350670de0b6b3a7640000841115610dfe576040805160e560020a62461bcd02815260206004820152600d60248201527f626164426f6f73744c6576656c00000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038716600090815260116020526040902054610e5b90670de0b6b3a764000090610b4490610e36906107618d612a8f565b600160a060020a038b166000908152601460205260409020549063ffffffff612afc16565b9250610e79670de0b6b3a7640000610b44858763ffffffff612afc16565b9150610e8b838363ffffffff6129b816565b600160a060020a038816600090815260126020526040902054909150610eb890839063ffffffff612c4f16565b9890975095505050505050565b6000546101009004600160a060020a03163314610f2c576040805160e560020a62461bcd02815260206004820152600760248201527f2170617573657200000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460ff1916911515919091179055565b60135481565b33610f4e612584565b600160a060020a031614610f98576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b600f805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b610fcf61320f565b60015460021415611018576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020613227833981519152604482015290519081900360640190fd5b600260015560005460ff1615611078576040805160e560020a62461bcd02815260206004820152600660248201527f7061757365640000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b826000806000806110876122cb565b935061109e600d54856129b890919063ffffffff16565b92506110a983612a8f565b600e55600d849055600160a060020a038516156111cc576110cb600086610d8a565b600160a060020a0387166000908152601260209081526040808320859055600e54601190925282205591935091508111156111cc576009546003546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561115c57600080fd5b505af1158015611170573d6000803e3d6000fd5b505050506040513d602081101561118657600080fd5b505115156111cc576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020613247833981519152604482015290519081900360640190fd5b3360009081526004602052604090205460ff161515611235576040805160e560020a62461bcd02815260206004820152601060248201527f7374616b654e6f74417070726f76656400000000000000000000000000000000604482015290519081900360640190fd5b61123f8888612cdd565b600160a060020a03881660009081526005602090815260409182902082518084019093528054835260010154908201819052909650421061129a57600160a060020a03881660009081526005602052604090208790556112c6565b85516112ac908863ffffffff612c4f16565b600160a060020a0389166000908152600560205260409020555b6010546112da90429063ffffffff612c4f16565b600160a060020a03909816600090815260056020526040902060019081019890985550505093805550505050565b600c5481565b600f5460009081908190600160a060020a0316331461139d576040805160e560020a62461bcd02815260206004820152602a60248201527f43616c6c6572206973206e6f742052657761726473446973747269627574696f60448201527f6e20636f6e747261637400000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008060008060006113ad6122cb565b93506113c4600d54856129b890919063ffffffff16565b92506113cf83612a8f565b600e55600d849055600160a060020a038516156114f2576113f1600086610d8a565b600160a060020a0387166000908152601260209081526040808320859055600e54601190925282205591935091508111156114f2576009546003546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561148257600080fd5b505af1158015611496573d6000803e3d6000fd5b505050506040513d60208110156114ac57600080fd5b505115156114f2576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020613247833981519152604482015290519081900360640190fd5b600a54421061151757600c5461150f908a9063ffffffff612baf16565b600b5561155f565b600a5461152a904263ffffffff6129b816565b9750611541600b5489612afc90919063ffffffff16565b600c5490975061155b90610b448b8a63ffffffff612c4f16565b600b555b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b1580156115c557600080fd5b505af11580156115d9573d6000803e3d6000fd5b505050506040513d60208110156115ef57600080fd5b5051600c5490965061160890879063ffffffff612baf16565b600b541115611661576040805160e560020a62461bcd02815260206004820152601860248201527f50726f76696465642072657761726420746f6f20686967680000000000000000604482015290519081900360640190fd5b42600d819055600c5461167a919063ffffffff612c4f16565b600a55604080518a815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1505050505050505050565b60015460009060021415611707576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020613227833981519152604482015290519081900360640190fd5b600260015533600080808061171a6122cb565b9350611731600d54856129b890919063ffffffff16565b925061173c83612a8f565b600e55600d849055600160a060020a0385161561185f5761175e600086610d8a565b600160a060020a0387166000908152601260209081526040808320859055600e546011909252822055919350915081111561185f576009546003546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156117ef57600080fd5b505af1158015611803573d6000803e3d6000fd5b505050506040513d602081101561181957600080fd5b5051151561185f576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020613247833981519152604482015290519081900360640190fd5b33600090815260126020526040812054965086111561199957336000818152601260209081526040808320839055600854815160e060020a63a9059cbb0281526004810195909552602485018b90529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b1580156118e057600080fd5b505af11580156118f4573d6000803e3d6000fd5b505050506040513d602081101561190a57600080fd5b50511515611962576040805160e560020a62461bcd02815260206004820152600260248201527f2174000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60408051878152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25b50506001805550505050565b60065481565b60046020526000908152604090205460ff1681565b600f54600160a060020a031681565b6015546040805160e360020a63142a7ce1028152600160a060020a03848116600483015291516000939290921691839182918291859163a153e7089160248082019260209290919082900301818787803b158015611a2c57600080fd5b505af1158015611a40573d6000803e3d6000fd5b505050506040513d6020811015611a5657600080fd5b5051600160a060020a0387166000908152601460205260409020549093509150811580611a81575082155b15611a9557611a8e612ebd565b9450611b94565b601654604080517f713b66a4000000000000000000000000000000000000000000000000000000008152600160a060020a0389811660048301529151919092169163713b66a49160248083019260209291908290030181600087803b158015611afd57600080fd5b505af1158015611b11573d6000803e3d6000fd5b505050506040513d6020811015611b2757600080fd5b5051611b3b57611b3686612ee1565b611b45565b670de0b6b3a76400005b9050611b9182610b44611b75611b61838863ffffffff6129b816565b611b69612ebd565b9063ffffffff612afc16565b611b85858863ffffffff612afc16565b9063ffffffff612c4f16565b94505b50505050919050565b60005460ff1681565b33611baf612584565b600160a060020a031614611bf9576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b600160a060020a03919091166000908152600460205260409020805460ff1916911515919091179055565b33611c2d612584565b600160a060020a031614611c77576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b6007819055600081118015611c8c5750606481105b1515611d08576040805160e560020a62461bcd02815260206004820152602160248201527f696e76616c6964496e76657273654d6178426f6f7374436f656666696369656e60448201527f7400000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50565b600354600160a060020a031681565b33611d23612584565b600160a060020a031614611d6d576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b6006819055670de0b6b3a76400008110611d08576040805160e560020a62461bcd02815260206004820152600a60248201527f746f6f4869676850637400000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381166000908152601460205260409020545b919050565b33611df9612584565b600160a060020a031614611e43576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b611e4d60006131b0565b565b600954600160a060020a031681565b60015460009060021415611eaa576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020613227833981519152604482015290519081900360640190fd5b6002600155336000808080611ebd6122cb565b9350611ed4600d54856129b890919063ffffffff16565b9250611edf83612a8f565b600e55600d849055600160a060020a0385161561200257611f01600086610d8a565b600160a060020a0387166000908152601260209081526040808320859055600e5460119092528220559193509150811115612002576009546003546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b158015611f9257600080fd5b505af1158015611fa6573d6000803e3d6000fd5b505050506040513d6020811015611fbc57600080fd5b50511515612002576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020613247833981519152604482015290519081900360640190fd5b6000871161205a576040805160e560020a62461bcd02815260206004820152600a60248201527f2177697468647261773000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6015546040805160e360020a63142a7ce10281523360048201529051600160a060020a039092169163a153e708916024808201926020929091908290030181600087803b1580156120aa57600080fd5b505af11580156120be573d6000803e3d6000fd5b505050506040513d60208110156120d457600080fd5b505133600090815260056020908152604080832054601490925290912054919750889161210c9190610761908a63ffffffff6129b816565b1015612162576040805160e560020a62461bcd02815260206004820152601560248201527f657363726f7720616d6f756e74206661696c7572650000000000000000000000604482015290519081900360640190fd5b601354612175908863ffffffff6129b816565b60135533600090815260146020526040902054612198908863ffffffff6129b816565b33600081815260146020908152604080832094909455600954845160e060020a63a9059cbb0281526004810194909452602484018c90529351600160a060020a039094169363a9059cbb93604480820194918390030190829087803b15801561220057600080fd5b505af1158015612214573d6000803e3d6000fd5b505050506040513d602081101561222a57600080fd5b50511515612282576040805160e560020a62461bcd02815260206004820152600260248201527f2174000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60408051888152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a25050600180555050505050565b600b5481565b60006122d942600a54612ae4565b905090565b60025460009081907501000000000000000000000000000000000000000000900460ff1680612328575060025474010000000000000000000000000000000000000000900460ff16155b151561237e576040805160e560020a62461bcd02815260206004820152601260248201527f616c7265616479496e697469616c697a65640000000000000000000000000000604482015290519081900360640190fd5b506002547501000000000000000000000000000000000000000000900460ff1615801561240e576002805474ff00000000000000000000000000000000000000001975ff0000000000000000000000000000000000000000001990911675010000000000000000000000000000000000000000001716740100000000000000000000000000000000000000001790555b6008805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a038d8116919091179092556009805482168c8416179055600f805482168e8416179055600c8a90556015805482168a841617905560168054821689841617905560038054909116918716919091179055600084116124da576040805160e560020a62461bcd02815260206004820152600f60248201527f626164426f6e644475726174696f6e0000000000000000000000000000000000604482015290519081900360640190fd5b6010849055600091505b825182101561253f57600160046000858581518110151561250157fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600191909101906124e4565b8015612565576002805475ff000000000000000000000000000000000000000000191690555b5050505050505050505050565b60116020526000908152604090205481565b600254600160a060020a031690565b60105481565b336125a2612584565b600160a060020a0316146125ec576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b601055565b336125fa612584565b600160a060020a031614612644576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b6016805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600214156126bc576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020613227833981519152604482015290519081900360640190fd5b600260015560005460ff161561271c576040805160e560020a62461bcd02815260206004820152600660248201527f7061757365640000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b3360008060008061272b6122cb565b9350612742600d54856129b890919063ffffffff16565b925061274d83612a8f565b600e55600d849055600160a060020a038516156128705761276f600086610d8a565b600160a060020a0387166000908152601260209081526040808320859055600e5460119092528220559193509150811115612870576009546003546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561280057600080fd5b505af1158015612814573d6000803e3d6000fd5b505050506040513d602081101561282a57600080fd5b50511515612870576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020613247833981519152604482015290519081900360640190fd5b6119993387612cdd565b6005602052600090815260409020805460019091015482565b60075481565b601654600160a060020a031681565b600d5481565b60006122d96128c1600d546107616122cb565b612a8f565b600854600160a060020a031681565b600e5481565b600a5481565b336128ea612584565b600160a060020a031614612934576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b600160a060020a0381161515612994576040805160e560020a62461bcd02815260206004820152600660248201527f6f776e6572300000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b611d08816131b0565b601554600160a060020a031681565b670de0b6b3a764000081565b60408051808201909152601281527f4d4154485f5355425f554e444552464c4f5700000000000000000000000000006020820152600090819084841115612a805760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612a45578181015183820152602001612a2d565b50505050905090810190601f168015612a725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050808203805b5092915050565b600060135460001415612aa55750600e54611deb565b612ade612acf601354610b44670de0b6b3a7640000611b69600b5488612afc90919063ffffffff16565b600e549063ffffffff612c4f16565b92915050565b6000818310612af35781612af5565b825b9392505050565b600080831515612b0f5760009150612a88565b50828202828482811515612b1f57fe5b60408051808201909152601181527f4d4154485f4d554c5f4f564552464c4f5700000000000000000000000000000060208201529291900414612ba75760405160e560020a62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015612a45578181015183820152602001612a2d565b509392505050565b60408051808201909152600d81527f4d4154485f4449565f5a45524f0000000000000000000000000000000000000060208201526000908190818411612c3a5760405160e560020a62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015612a45578181015183820152602001612a2d565b508284811515612c4657fe5b04949350505050565b60408051808201909152601181527f4d4154485f4144445f4f564552464c4f5700000000000000000000000000000060208201526000908383019084821015612ba75760405160e560020a62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015612a45578181015183820152602001612a2d565b60008111612d35576040805160e560020a62461bcd02815260206004820152600e60248201527f43616e6e6f74207374616b652030000000000000000000000000000000000000604482015290519081900360640190fd5b601354612d48908263ffffffff612c4f16565b601355600160a060020a038216600090815260146020526040902054612d74908263ffffffff612c4f16565b600160a060020a0380841660009081526014602090815260408083209490945560095484517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810187905294519316936323b872dd9360648083019491928390030190829087803b158015612df857600080fd5b505af1158015612e0c573d6000803e3d6000fd5b505050506040513d6020811015612e2257600080fd5b50511515612e7a576040805160e560020a62461bcd02815260206004820152600260248201527f2174000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b604080518281529051600160a060020a038416917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25050565b60006122d96064610b44600754670de0b6b3a7640000612afc90919063ffffffff16565b601554604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a03848116600483015291516000939290921691839182918291829186916370a0823191602480830192602092919082900301818787803b158015612f5557600080fd5b505af1158015612f69573d6000803e3d6000fd5b505050506040513d6020811015612f7f57600080fd5b5051604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051919550600160a060020a038716916318160ddd916004808201926020929091908290030181600087803b158015612fe057600080fd5b505af1158015612ff4573d6000803e3d6000fd5b505050506040513d602081101561300a57600080fd5b50516040805160e360020a63142a7ce1028152600160a060020a038a8116600483015291519295509087169163a153e708916024808201926020929091908290030181600087803b15801561305e57600080fd5b505af1158015613072573d6000803e3d6000fd5b505050506040513d602081101561308857600080fd5b50519150821580613097575083155b156130ab576130a4612ebd565b95506131a6565b6131826064610b4461316685610b4489611b698a610b448e600160a060020a031663ca5c7b916040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561311957600080fd5b505af115801561312d573d6000803e3d6000fd5b505050506040513d602081101561314357600080fd5b5051600754611b6990670de0b6b3a764000090829060649063ffffffff6129b816565b600754611b8590670de0b6b3a76400009063ffffffff612afc16565b9050670de0b6b3a764000081106131a157670de0b6b3a76400006131a3565b805b95505b5050505050919050565b60028054600160a060020a0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60408051808201909152600080825260208201529056005265656e7472616e637947756172643a207265656e7472616e742063616c6c0021626f6f737444656c7461000000000000000000000000000000000000000000a165627a7a7230582052938fb1667cfedf5179e88ee87d253b1439fc51e96a86b3c30d636814ae080c0029
Deployed Bytecode
0x6080604052600436106102185763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416628cc262811461021d57806301d8d119146102505780630700037d14610267578063160292b41461028857806316c38b3c146102c557806318160ddd146102df57806319762143146102f45780632ee4090814610315578063386a9525146103395780633c6b16ab1461034e5780633d18b912146103665780633d74bb091461037b5780633e5beab9146103905780633fc6df6e146103c557806349c48f4b146103f65780635c975abb146104175780635cd7202e1461042c578063601f3cef1461045257806361d027b31461046a5780636c1f75081461047f57806370a0823114610497578063715018a6146104b857806372f702f3146104cd5780637467f7b9146104e25780637b0a47ee146104fa57806380faa57d1461050f57806387adc134146105245780638b876347146105b35780638da5cb5b146105d45780638eda7063146105e9578063990c214b146105fe578063a5c573a814610616578063a694fc3a14610637578063a79f4d581461064f578063ad36e49714610670578063b611709714610685578063c8f33c911461069a578063cd3daf9d146106af578063d1af0c7d146106c4578063df136d65146106d9578063ebe2b12b146106ee578063f2fde38b14610703578063fc0c546a14610724578063fc157cb414610739575b600080fd5b34801561022957600080fd5b5061023e600160a060020a036004351661074e565b60408051918252519081900360200190f35b34801561025c57600080fd5b50610265610782565b005b34801561027357600080fd5b5061023e600160a060020a0360043516610d78565b34801561029457600080fd5b506102ac600435600160a060020a0360243516610d8a565b6040805192835260208301919091528051918290030190f35b3480156102d157600080fd5b506102656004351515610ec5565b3480156102eb57600080fd5b5061023e610f3f565b34801561030057600080fd5b50610265600160a060020a0360043516610f45565b34801561032157600080fd5b50610265600160a060020a0360043516602435610fc7565b34801561034557600080fd5b5061023e611308565b34801561035a57600080fd5b5061026560043561130e565b34801561037257600080fd5b506102656116bb565b34801561038757600080fd5b5061023e6119a5565b34801561039c57600080fd5b506103b1600160a060020a03600435166119ab565b604080519115158252519081900360200190f35b3480156103d157600080fd5b506103da6119c0565b60408051600160a060020a039092168252519081900360200190f35b34801561040257600080fd5b5061023e600160a060020a03600435166119cf565b34801561042357600080fd5b506103b1611b9d565b34801561043857600080fd5b50610265600160a060020a03600435166024351515611ba6565b34801561045e57600080fd5b50610265600435611c24565b34801561047657600080fd5b506103da611d0b565b34801561048b57600080fd5b50610265600435611d1a565b3480156104a357600080fd5b5061023e600160a060020a0360043516611dd1565b3480156104c457600080fd5b50610265611df0565b3480156104d957600080fd5b506103da611e4f565b3480156104ee57600080fd5b50610265600435611e5e565b34801561050657600080fd5b5061023e6122c5565b34801561051b57600080fd5b5061023e6122cb565b34801561053057600080fd5b5060408051610104356004818101356020818102858101820190965281855261026595600160a060020a038435811696602480358316976044358416976064359760843586169760a43587169760c4359097169660e435963696949561012495919491019290918291850190849080828437509497506122de9650505050505050565b3480156105bf57600080fd5b5061023e600160a060020a0360043516612572565b3480156105e057600080fd5b506103da612584565b3480156105f557600080fd5b5061023e612593565b34801561060a57600080fd5b50610265600435612599565b34801561062257600080fd5b50610265600160a060020a03600435166125f1565b34801561064357600080fd5b50610265600435612673565b34801561065b57600080fd5b506102ac600160a060020a036004351661287a565b34801561067c57600080fd5b5061023e612893565b34801561069157600080fd5b506103da612899565b3480156106a657600080fd5b5061023e6128a8565b3480156106bb57600080fd5b5061023e6128ae565b3480156106d057600080fd5b506103da6128c6565b3480156106e557600080fd5b5061023e6128d5565b3480156106fa57600080fd5b5061023e6128db565b34801561070f57600080fd5b50610265600160a060020a03600435166128e1565b34801561073057600080fd5b506103da61299d565b34801561074557600080fd5b5061023e6129ac565b600080600061076d600d546107616122cb565b9063ffffffff6129b816565b91506107798285610d8a565b50949350505050565b6000806000806002600154141515156107d3576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020613227833981519152604482015290519081900360640190fd5b60026001553360008080806107e66122cb565b93506107fd600d54856129b890919063ffffffff16565b925061080883612a8f565b600e55600d849055600160a060020a0385161561092b5761082a600086610d8a565b600160a060020a0387166000908152601260209081526040808320859055600e546011909252822055919350915081111561092b576009546003546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156108bb57600080fd5b505af11580156108cf573d6000803e3d6000fd5b505050506040513d60208110156108e557600080fd5b5051151561092b576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020613247833981519152604482015290519081900360640190fd5b33600081815260056020908152604080832054601554825160e360020a63142a7ce102815260048101969096529151909d50600160a060020a039091169363a153e7089360248083019493928390030190829087803b15801561098d57600080fd5b505af11580156109a1573d6000803e3d6000fd5b505050506040513d60208110156109b757600080fd5b5051336000908152601460205260409020549098506109e7908a906109e2908b63ffffffff6129b816565b612ae4565b6013549099506109fd908a63ffffffff6129b816565b60135533600090815260146020526040902054610a20908a63ffffffff6129b816565b336000908152601460209081526040808320939093556005905220600101544210610b23576009546040805160e060020a63a9059cbb028152336004820152602481018c90529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015610a9c57600080fd5b505af1158015610ab0573d6000803e3d6000fd5b505050506040513d6020811015610ac657600080fd5b50511515610b1e576040805160e560020a62461bcd02815260206004820152600860248201527f2174426f6e646564000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610d1c565b610b50670de0b6b3a7640000610b446006548c612afc90919063ffffffff16565b9063ffffffff612baf16565b9650610b62898863ffffffff6129b816565b6009546040805160e060020a63a9059cbb028152336004820152602481018490529051929850600160a060020a039091169163a9059cbb916044808201926020929091908290030181600087803b158015610bbc57600080fd5b505af1158015610bd0573d6000803e3d6000fd5b505050506040513d6020811015610be657600080fd5b50511515610c3e576040805160e560020a62461bcd02815260206004820152601360248201527f2174426f6e6465645769746850656e616c747900000000000000000000000000604482015290519081900360640190fd5b6009546003546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018b90529051919092169163a9059cbb9160448083019260209291908290030181600087803b158015610c9a57600080fd5b505af1158015610cae573d6000803e3d6000fd5b505050506040513d6020811015610cc457600080fd5b50511515610d1c576040805160e560020a62461bcd02815260206004820152600960248201527f217450656e616c74790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b3360008181526005602090815260408083208381556001019290925581518c815291517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59281900390910190a250506001805550505050505050565b60126020526000908152604090205481565b600080600080600080610d9c876119cf565b9350670de0b6b3a7640000841115610dfe576040805160e560020a62461bcd02815260206004820152600d60248201527f626164426f6f73744c6576656c00000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038716600090815260116020526040902054610e5b90670de0b6b3a764000090610b4490610e36906107618d612a8f565b600160a060020a038b166000908152601460205260409020549063ffffffff612afc16565b9250610e79670de0b6b3a7640000610b44858763ffffffff612afc16565b9150610e8b838363ffffffff6129b816565b600160a060020a038816600090815260126020526040902054909150610eb890839063ffffffff612c4f16565b9890975095505050505050565b6000546101009004600160a060020a03163314610f2c576040805160e560020a62461bcd02815260206004820152600760248201527f2170617573657200000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460ff1916911515919091179055565b60135481565b33610f4e612584565b600160a060020a031614610f98576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b600f805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b610fcf61320f565b60015460021415611018576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020613227833981519152604482015290519081900360640190fd5b600260015560005460ff1615611078576040805160e560020a62461bcd02815260206004820152600660248201527f7061757365640000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b826000806000806110876122cb565b935061109e600d54856129b890919063ffffffff16565b92506110a983612a8f565b600e55600d849055600160a060020a038516156111cc576110cb600086610d8a565b600160a060020a0387166000908152601260209081526040808320859055600e54601190925282205591935091508111156111cc576009546003546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561115c57600080fd5b505af1158015611170573d6000803e3d6000fd5b505050506040513d602081101561118657600080fd5b505115156111cc576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020613247833981519152604482015290519081900360640190fd5b3360009081526004602052604090205460ff161515611235576040805160e560020a62461bcd02815260206004820152601060248201527f7374616b654e6f74417070726f76656400000000000000000000000000000000604482015290519081900360640190fd5b61123f8888612cdd565b600160a060020a03881660009081526005602090815260409182902082518084019093528054835260010154908201819052909650421061129a57600160a060020a03881660009081526005602052604090208790556112c6565b85516112ac908863ffffffff612c4f16565b600160a060020a0389166000908152600560205260409020555b6010546112da90429063ffffffff612c4f16565b600160a060020a03909816600090815260056020526040902060019081019890985550505093805550505050565b600c5481565b600f5460009081908190600160a060020a0316331461139d576040805160e560020a62461bcd02815260206004820152602a60248201527f43616c6c6572206973206e6f742052657761726473446973747269627574696f60448201527f6e20636f6e747261637400000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008060008060006113ad6122cb565b93506113c4600d54856129b890919063ffffffff16565b92506113cf83612a8f565b600e55600d849055600160a060020a038516156114f2576113f1600086610d8a565b600160a060020a0387166000908152601260209081526040808320859055600e54601190925282205591935091508111156114f2576009546003546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561148257600080fd5b505af1158015611496573d6000803e3d6000fd5b505050506040513d60208110156114ac57600080fd5b505115156114f2576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020613247833981519152604482015290519081900360640190fd5b600a54421061151757600c5461150f908a9063ffffffff612baf16565b600b5561155f565b600a5461152a904263ffffffff6129b816565b9750611541600b5489612afc90919063ffffffff16565b600c5490975061155b90610b448b8a63ffffffff612c4f16565b600b555b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b1580156115c557600080fd5b505af11580156115d9573d6000803e3d6000fd5b505050506040513d60208110156115ef57600080fd5b5051600c5490965061160890879063ffffffff612baf16565b600b541115611661576040805160e560020a62461bcd02815260206004820152601860248201527f50726f76696465642072657761726420746f6f20686967680000000000000000604482015290519081900360640190fd5b42600d819055600c5461167a919063ffffffff612c4f16565b600a55604080518a815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1505050505050505050565b60015460009060021415611707576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020613227833981519152604482015290519081900360640190fd5b600260015533600080808061171a6122cb565b9350611731600d54856129b890919063ffffffff16565b925061173c83612a8f565b600e55600d849055600160a060020a0385161561185f5761175e600086610d8a565b600160a060020a0387166000908152601260209081526040808320859055600e546011909252822055919350915081111561185f576009546003546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156117ef57600080fd5b505af1158015611803573d6000803e3d6000fd5b505050506040513d602081101561181957600080fd5b5051151561185f576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020613247833981519152604482015290519081900360640190fd5b33600090815260126020526040812054965086111561199957336000818152601260209081526040808320839055600854815160e060020a63a9059cbb0281526004810195909552602485018b90529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b1580156118e057600080fd5b505af11580156118f4573d6000803e3d6000fd5b505050506040513d602081101561190a57600080fd5b50511515611962576040805160e560020a62461bcd02815260206004820152600260248201527f2174000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60408051878152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25b50506001805550505050565b60065481565b60046020526000908152604090205460ff1681565b600f54600160a060020a031681565b6015546040805160e360020a63142a7ce1028152600160a060020a03848116600483015291516000939290921691839182918291859163a153e7089160248082019260209290919082900301818787803b158015611a2c57600080fd5b505af1158015611a40573d6000803e3d6000fd5b505050506040513d6020811015611a5657600080fd5b5051600160a060020a0387166000908152601460205260409020549093509150811580611a81575082155b15611a9557611a8e612ebd565b9450611b94565b601654604080517f713b66a4000000000000000000000000000000000000000000000000000000008152600160a060020a0389811660048301529151919092169163713b66a49160248083019260209291908290030181600087803b158015611afd57600080fd5b505af1158015611b11573d6000803e3d6000fd5b505050506040513d6020811015611b2757600080fd5b5051611b3b57611b3686612ee1565b611b45565b670de0b6b3a76400005b9050611b9182610b44611b75611b61838863ffffffff6129b816565b611b69612ebd565b9063ffffffff612afc16565b611b85858863ffffffff612afc16565b9063ffffffff612c4f16565b94505b50505050919050565b60005460ff1681565b33611baf612584565b600160a060020a031614611bf9576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b600160a060020a03919091166000908152600460205260409020805460ff1916911515919091179055565b33611c2d612584565b600160a060020a031614611c77576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b6007819055600081118015611c8c5750606481105b1515611d08576040805160e560020a62461bcd02815260206004820152602160248201527f696e76616c6964496e76657273654d6178426f6f7374436f656666696369656e60448201527f7400000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50565b600354600160a060020a031681565b33611d23612584565b600160a060020a031614611d6d576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b6006819055670de0b6b3a76400008110611d08576040805160e560020a62461bcd02815260206004820152600a60248201527f746f6f4869676850637400000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381166000908152601460205260409020545b919050565b33611df9612584565b600160a060020a031614611e43576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b611e4d60006131b0565b565b600954600160a060020a031681565b60015460009060021415611eaa576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020613227833981519152604482015290519081900360640190fd5b6002600155336000808080611ebd6122cb565b9350611ed4600d54856129b890919063ffffffff16565b9250611edf83612a8f565b600e55600d849055600160a060020a0385161561200257611f01600086610d8a565b600160a060020a0387166000908152601260209081526040808320859055600e5460119092528220559193509150811115612002576009546003546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b158015611f9257600080fd5b505af1158015611fa6573d6000803e3d6000fd5b505050506040513d6020811015611fbc57600080fd5b50511515612002576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020613247833981519152604482015290519081900360640190fd5b6000871161205a576040805160e560020a62461bcd02815260206004820152600a60248201527f2177697468647261773000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6015546040805160e360020a63142a7ce10281523360048201529051600160a060020a039092169163a153e708916024808201926020929091908290030181600087803b1580156120aa57600080fd5b505af11580156120be573d6000803e3d6000fd5b505050506040513d60208110156120d457600080fd5b505133600090815260056020908152604080832054601490925290912054919750889161210c9190610761908a63ffffffff6129b816565b1015612162576040805160e560020a62461bcd02815260206004820152601560248201527f657363726f7720616d6f756e74206661696c7572650000000000000000000000604482015290519081900360640190fd5b601354612175908863ffffffff6129b816565b60135533600090815260146020526040902054612198908863ffffffff6129b816565b33600081815260146020908152604080832094909455600954845160e060020a63a9059cbb0281526004810194909452602484018c90529351600160a060020a039094169363a9059cbb93604480820194918390030190829087803b15801561220057600080fd5b505af1158015612214573d6000803e3d6000fd5b505050506040513d602081101561222a57600080fd5b50511515612282576040805160e560020a62461bcd02815260206004820152600260248201527f2174000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60408051888152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a25050600180555050505050565b600b5481565b60006122d942600a54612ae4565b905090565b60025460009081907501000000000000000000000000000000000000000000900460ff1680612328575060025474010000000000000000000000000000000000000000900460ff16155b151561237e576040805160e560020a62461bcd02815260206004820152601260248201527f616c7265616479496e697469616c697a65640000000000000000000000000000604482015290519081900360640190fd5b506002547501000000000000000000000000000000000000000000900460ff1615801561240e576002805474ff00000000000000000000000000000000000000001975ff0000000000000000000000000000000000000000001990911675010000000000000000000000000000000000000000001716740100000000000000000000000000000000000000001790555b6008805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a038d8116919091179092556009805482168c8416179055600f805482168e8416179055600c8a90556015805482168a841617905560168054821689841617905560038054909116918716919091179055600084116124da576040805160e560020a62461bcd02815260206004820152600f60248201527f626164426f6e644475726174696f6e0000000000000000000000000000000000604482015290519081900360640190fd5b6010849055600091505b825182101561253f57600160046000858581518110151561250157fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600191909101906124e4565b8015612565576002805475ff000000000000000000000000000000000000000000191690555b5050505050505050505050565b60116020526000908152604090205481565b600254600160a060020a031690565b60105481565b336125a2612584565b600160a060020a0316146125ec576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b601055565b336125fa612584565b600160a060020a031614612644576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b6016805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600214156126bc576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020613227833981519152604482015290519081900360640190fd5b600260015560005460ff161561271c576040805160e560020a62461bcd02815260206004820152600660248201527f7061757365640000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b3360008060008061272b6122cb565b9350612742600d54856129b890919063ffffffff16565b925061274d83612a8f565b600e55600d849055600160a060020a038516156128705761276f600086610d8a565b600160a060020a0387166000908152601260209081526040808320859055600e5460119092528220559193509150811115612870576009546003546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561280057600080fd5b505af1158015612814573d6000803e3d6000fd5b505050506040513d602081101561282a57600080fd5b50511515612870576040805160e560020a62461bcd02815260206004820152600b6024820152600080516020613247833981519152604482015290519081900360640190fd5b6119993387612cdd565b6005602052600090815260409020805460019091015482565b60075481565b601654600160a060020a031681565b600d5481565b60006122d96128c1600d546107616122cb565b612a8f565b600854600160a060020a031681565b600e5481565b600a5481565b336128ea612584565b600160a060020a031614612934576040805160e560020a62461bcd028152602060048201526006602482015260d160020a6510b7bbb732b902604482015290519081900360640190fd5b600160a060020a0381161515612994576040805160e560020a62461bcd02815260206004820152600660248201527f6f776e6572300000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b611d08816131b0565b601554600160a060020a031681565b670de0b6b3a764000081565b60408051808201909152601281527f4d4154485f5355425f554e444552464c4f5700000000000000000000000000006020820152600090819084841115612a805760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612a45578181015183820152602001612a2d565b50505050905090810190601f168015612a725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050808203805b5092915050565b600060135460001415612aa55750600e54611deb565b612ade612acf601354610b44670de0b6b3a7640000611b69600b5488612afc90919063ffffffff16565b600e549063ffffffff612c4f16565b92915050565b6000818310612af35781612af5565b825b9392505050565b600080831515612b0f5760009150612a88565b50828202828482811515612b1f57fe5b60408051808201909152601181527f4d4154485f4d554c5f4f564552464c4f5700000000000000000000000000000060208201529291900414612ba75760405160e560020a62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015612a45578181015183820152602001612a2d565b509392505050565b60408051808201909152600d81527f4d4154485f4449565f5a45524f0000000000000000000000000000000000000060208201526000908190818411612c3a5760405160e560020a62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015612a45578181015183820152602001612a2d565b508284811515612c4657fe5b04949350505050565b60408051808201909152601181527f4d4154485f4144445f4f564552464c4f5700000000000000000000000000000060208201526000908383019084821015612ba75760405160e560020a62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015612a45578181015183820152602001612a2d565b60008111612d35576040805160e560020a62461bcd02815260206004820152600e60248201527f43616e6e6f74207374616b652030000000000000000000000000000000000000604482015290519081900360640190fd5b601354612d48908263ffffffff612c4f16565b601355600160a060020a038216600090815260146020526040902054612d74908263ffffffff612c4f16565b600160a060020a0380841660009081526014602090815260408083209490945560095484517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810187905294519316936323b872dd9360648083019491928390030190829087803b158015612df857600080fd5b505af1158015612e0c573d6000803e3d6000fd5b505050506040513d6020811015612e2257600080fd5b50511515612e7a576040805160e560020a62461bcd02815260206004820152600260248201527f2174000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b604080518281529051600160a060020a038416917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25050565b60006122d96064610b44600754670de0b6b3a7640000612afc90919063ffffffff16565b601554604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a03848116600483015291516000939290921691839182918291829186916370a0823191602480830192602092919082900301818787803b158015612f5557600080fd5b505af1158015612f69573d6000803e3d6000fd5b505050506040513d6020811015612f7f57600080fd5b5051604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051919550600160a060020a038716916318160ddd916004808201926020929091908290030181600087803b158015612fe057600080fd5b505af1158015612ff4573d6000803e3d6000fd5b505050506040513d602081101561300a57600080fd5b50516040805160e360020a63142a7ce1028152600160a060020a038a8116600483015291519295509087169163a153e708916024808201926020929091908290030181600087803b15801561305e57600080fd5b505af1158015613072573d6000803e3d6000fd5b505050506040513d602081101561308857600080fd5b50519150821580613097575083155b156130ab576130a4612ebd565b95506131a6565b6131826064610b4461316685610b4489611b698a610b448e600160a060020a031663ca5c7b916040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561311957600080fd5b505af115801561312d573d6000803e3d6000fd5b505050506040513d602081101561314357600080fd5b5051600754611b6990670de0b6b3a764000090829060649063ffffffff6129b816565b600754611b8590670de0b6b3a76400009063ffffffff612afc16565b9050670de0b6b3a764000081106131a157670de0b6b3a76400006131a3565b805b95505b5050505050919050565b60028054600160a060020a0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60408051808201909152600080825260208201529056005265656e7472616e637947756172643a207265656e7472616e742063616c6c0021626f6f737444656c7461000000000000000000000000000000000000000000a165627a7a7230582052938fb1667cfedf5179e88ee87d253b1439fc51e96a86b3c30d636814ae080c0029
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.