Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 5241041 | 462 days ago | IN | 0 ETH | 0.00016941 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
StakingInfo
Compiler Version
v0.5.17+commit.d19bba13
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-12-01 */ /** Matic network contracts */ pragma solidity ^0.5.2; interface IGovernance { function update(address target, bytes calldata data) external; } contract Governable { IGovernance public governance; constructor(address _governance) public { governance = IGovernance(_governance); } modifier onlyGovernance() { _assertGovernance(); _; } function _assertGovernance() private view { require( msg.sender == address(governance), "Only governance contract is authorized" ); } } contract IWithdrawManager { function createExitQueue(address token) external; function verifyInclusion( bytes calldata data, uint8 offset, bool verifyTxInclusion ) external view returns (uint256 age); function addExitToQueue( address exitor, address childToken, address rootToken, uint256 exitAmountOrTokenId, bytes32 txHash, bool isRegularExit, uint256 priority ) external; function addInput( uint256 exitId, uint256 age, address utxoOwner, address token ) external; function challengeExit( uint256 exitId, uint256 inputId, bytes calldata challengeData, address adjudicatorPredicate ) external; } contract Registry is Governable { // @todo hardcode constants bytes32 private constant WETH_TOKEN = keccak256("wethToken"); bytes32 private constant DEPOSIT_MANAGER = keccak256("depositManager"); bytes32 private constant STAKE_MANAGER = keccak256("stakeManager"); bytes32 private constant VALIDATOR_SHARE = keccak256("validatorShare"); bytes32 private constant WITHDRAW_MANAGER = keccak256("withdrawManager"); bytes32 private constant CHILD_CHAIN = keccak256("childChain"); bytes32 private constant STATE_SENDER = keccak256("stateSender"); bytes32 private constant SLASHING_MANAGER = keccak256("slashingManager"); address public erc20Predicate; address public erc721Predicate; mapping(bytes32 => address) public contractMap; mapping(address => address) public rootToChildToken; mapping(address => address) public childToRootToken; mapping(address => bool) public proofValidatorContracts; mapping(address => bool) public isERC721; enum Type {Invalid, ERC20, ERC721, Custom} struct Predicate { Type _type; } mapping(address => Predicate) public predicates; event TokenMapped(address indexed rootToken, address indexed childToken); event ProofValidatorAdded(address indexed validator, address indexed from); event ProofValidatorRemoved(address indexed validator, address indexed from); event PredicateAdded(address indexed predicate, address indexed from); event PredicateRemoved(address indexed predicate, address indexed from); event ContractMapUpdated(bytes32 indexed key, address indexed previousContract, address indexed newContract); constructor(address _governance) public Governable(_governance) {} function updateContractMap(bytes32 _key, address _address) external onlyGovernance { emit ContractMapUpdated(_key, contractMap[_key], _address); contractMap[_key] = _address; } /** * @dev Map root token to child token * @param _rootToken Token address on the root chain * @param _childToken Token address on the child chain * @param _isERC721 Is the token being mapped ERC721 */ function mapToken( address _rootToken, address _childToken, bool _isERC721 ) external onlyGovernance { require(_rootToken != address(0x0) && _childToken != address(0x0), "INVALID_TOKEN_ADDRESS"); rootToChildToken[_rootToken] = _childToken; childToRootToken[_childToken] = _rootToken; isERC721[_rootToken] = _isERC721; IWithdrawManager(contractMap[WITHDRAW_MANAGER]).createExitQueue(_rootToken); emit TokenMapped(_rootToken, _childToken); } function addErc20Predicate(address predicate) public onlyGovernance { require(predicate != address(0x0), "Can not add null address as predicate"); erc20Predicate = predicate; addPredicate(predicate, Type.ERC20); } function addErc721Predicate(address predicate) public onlyGovernance { erc721Predicate = predicate; addPredicate(predicate, Type.ERC721); } function addPredicate(address predicate, Type _type) public onlyGovernance { require(predicates[predicate]._type == Type.Invalid, "Predicate already added"); predicates[predicate]._type = _type; emit PredicateAdded(predicate, msg.sender); } function removePredicate(address predicate) public onlyGovernance { require(predicates[predicate]._type != Type.Invalid, "Predicate does not exist"); delete predicates[predicate]; emit PredicateRemoved(predicate, msg.sender); } function getValidatorShareAddress() public view returns (address) { return contractMap[VALIDATOR_SHARE]; } function getWethTokenAddress() public view returns (address) { return contractMap[WETH_TOKEN]; } function getDepositManagerAddress() public view returns (address) { return contractMap[DEPOSIT_MANAGER]; } function getStakeManagerAddress() public view returns (address) { return contractMap[STAKE_MANAGER]; } function getSlashingManagerAddress() public view returns (address) { return contractMap[SLASHING_MANAGER]; } function getWithdrawManagerAddress() public view returns (address) { return contractMap[WITHDRAW_MANAGER]; } function getChildChainAndStateSender() public view returns (address, address) { return (contractMap[CHILD_CHAIN], contractMap[STATE_SENDER]); } function isTokenMapped(address _token) public view returns (bool) { return rootToChildToken[_token] != address(0x0); } function isTokenMappedAndIsErc721(address _token) public view returns (bool) { require(isTokenMapped(_token), "TOKEN_NOT_MAPPED"); return isERC721[_token]; } function isTokenMappedAndGetPredicate(address _token) public view returns (address) { if (isTokenMappedAndIsErc721(_token)) { return erc721Predicate; } return erc20Predicate; } function isChildTokenErc721(address childToken) public view returns (bool) { address rootToken = childToRootToken[childToken]; require(rootToken != address(0x0), "Child token is not mapped"); return isERC721[rootToken]; } } library SafeMath { /** * @dev Multiplies two unsigned integers, 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); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 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 unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Divides two unsigned integers 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); return a % b; } } contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor () internal { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @return the address of the owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner()); _; } /** * @return true if `msg.sender` is the owner of the contract. */ function isOwner() public view returns (bool) { return msg.sender == _owner; } /** * @dev Allows the current owner to relinquish control of the contract. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. * @notice Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // dummy interface to avoid cyclic dependency contract IStakeManagerLocal { enum Status {Inactive, Active, Locked, Unstaked} struct Validator { uint256 amount; uint256 reward; uint256 activationEpoch; uint256 deactivationEpoch; uint256 jailTime; address signer; address contractAddress; Status status; } mapping(uint256 => Validator) public validators; bytes32 public accountStateRoot; uint256 public activeAmount; // delegation amount from validator contract uint256 public validatorRewards; function currentValidatorSetTotalStake() public view returns (uint256); // signer to Validator mapping function signerToValidator(address validatorAddress) public view returns (uint256); function isValidator(uint256 validatorId) public view returns (bool); } contract StakingInfo is Ownable { using SafeMath for uint256; mapping(uint256 => uint256) public validatorNonce; /// @dev Emitted when validator stakes in '_stakeFor()' in StakeManager. /// @param signer validator address. /// @param validatorId unique integer to identify a validator. /// @param nonce to synchronize the events in heimdal. /// @param activationEpoch validator's first epoch as proposer. /// @param amount staking amount. /// @param total total staking amount. /// @param signerPubkey public key of the validator event Staked( address indexed signer, uint256 indexed validatorId, uint256 nonce, uint256 indexed activationEpoch, uint256 amount, uint256 total, bytes signerPubkey ); /// @dev Emitted when validator unstakes in 'unstakeClaim()' /// @param user address of the validator. /// @param validatorId unique integer to identify a validator. /// @param amount staking amount. /// @param total total staking amount. event Unstaked( address indexed user, uint256 indexed validatorId, uint256 amount, uint256 total ); /// @dev Emitted when validator unstakes in '_unstake()'. /// @param user address of the validator. /// @param validatorId unique integer to identify a validator. /// @param nonce to synchronize the events in heimdal. /// @param deactivationEpoch last epoch for validator. /// @param amount staking amount. event UnstakeInit( address indexed user, uint256 indexed validatorId, uint256 nonce, uint256 deactivationEpoch, uint256 indexed amount ); /// @dev Emitted when the validator public key is updated in 'updateSigner()'. /// @param validatorId unique integer to identify a validator. /// @param nonce to synchronize the events in heimdal. /// @param oldSigner old address of the validator. /// @param newSigner new address of the validator. /// @param signerPubkey public key of the validator. event SignerChange( uint256 indexed validatorId, uint256 nonce, address indexed oldSigner, address indexed newSigner, bytes signerPubkey ); event Restaked(uint256 indexed validatorId, uint256 amount, uint256 total); event Jailed( uint256 indexed validatorId, uint256 indexed exitEpoch, address indexed signer ); event UnJailed(uint256 indexed validatorId, address indexed signer); event Slashed(uint256 indexed nonce, uint256 indexed amount); event ThresholdChange(uint256 newThreshold, uint256 oldThreshold); event DynastyValueChange(uint256 newDynasty, uint256 oldDynasty); event ProposerBonusChange( uint256 newProposerBonus, uint256 oldProposerBonus ); event RewardUpdate(uint256 newReward, uint256 oldReward); /// @dev Emitted when validator confirms the auction bid and at the time of restaking in confirmAuctionBid() and restake(). /// @param validatorId unique integer to identify a validator. /// @param nonce to synchronize the events in heimdal. /// @param newAmount the updated stake amount. event StakeUpdate( uint256 indexed validatorId, uint256 indexed nonce, uint256 indexed newAmount ); event ClaimRewards( uint256 indexed validatorId, uint256 indexed amount, uint256 indexed totalAmount ); event StartAuction( uint256 indexed validatorId, uint256 indexed amount, uint256 indexed auctionAmount ); event ConfirmAuction( uint256 indexed newValidatorId, uint256 indexed oldValidatorId, uint256 indexed amount ); event TopUpFee(address indexed user, uint256 indexed fee); event ClaimFee(address indexed user, uint256 indexed fee); // Delegator events event ShareMinted( uint256 indexed validatorId, address indexed user, uint256 indexed amount, uint256 tokens ); event ShareBurned( uint256 indexed validatorId, address indexed user, uint256 indexed amount, uint256 tokens ); event DelegatorClaimedRewards( uint256 indexed validatorId, address indexed user, uint256 indexed rewards ); event DelegatorRestaked( uint256 indexed validatorId, address indexed user, uint256 indexed totalStaked ); event DelegatorUnstaked( uint256 indexed validatorId, address indexed user, uint256 amount ); event UpdateCommissionRate( uint256 indexed validatorId, uint256 indexed newCommissionRate, uint256 indexed oldCommissionRate ); Registry public registry; modifier onlyValidatorContract(uint256 validatorId) { address _contract; (, , , , , , _contract, ) = IStakeManagerLocal( registry.getStakeManagerAddress() ) .validators(validatorId); require(_contract == msg.sender, "Invalid sender, not validator"); _; } modifier StakeManagerOrValidatorContract(uint256 validatorId) { address _contract; address _stakeManager = registry.getStakeManagerAddress(); (, , , , , , _contract, ) = IStakeManagerLocal(_stakeManager).validators( validatorId ); require(_contract == msg.sender || _stakeManager == msg.sender, "Invalid sender, not stake manager or validator contract"); _; } modifier onlyStakeManager() { require(registry.getStakeManagerAddress() == msg.sender, "Invalid sender, not stake manager"); _; } modifier onlySlashingManager() { require(registry.getSlashingManagerAddress() == msg.sender, "Invalid sender, not slashing manager"); _; } constructor(address _registry) public { registry = Registry(_registry); } function updateNonce( uint256[] calldata validatorIds, uint256[] calldata nonces ) external onlyOwner { require(validatorIds.length == nonces.length, "args length mismatch"); for (uint256 i = 0; i < validatorIds.length; ++i) { validatorNonce[validatorIds[i]] = nonces[i]; } } function logStaked( address signer, bytes memory signerPubkey, uint256 validatorId, uint256 activationEpoch, uint256 amount, uint256 total ) public onlyStakeManager { validatorNonce[validatorId] = validatorNonce[validatorId].add(1); emit Staked( signer, validatorId, validatorNonce[validatorId], activationEpoch, amount, total, signerPubkey ); } function logUnstaked( address user, uint256 validatorId, uint256 amount, uint256 total ) public onlyStakeManager { emit Unstaked(user, validatorId, amount, total); } function logUnstakeInit( address user, uint256 validatorId, uint256 deactivationEpoch, uint256 amount ) public onlyStakeManager { validatorNonce[validatorId] = validatorNonce[validatorId].add(1); emit UnstakeInit( user, validatorId, validatorNonce[validatorId], deactivationEpoch, amount ); } function logSignerChange( uint256 validatorId, address oldSigner, address newSigner, bytes memory signerPubkey ) public onlyStakeManager { validatorNonce[validatorId] = validatorNonce[validatorId].add(1); emit SignerChange( validatorId, validatorNonce[validatorId], oldSigner, newSigner, signerPubkey ); } function logRestaked(uint256 validatorId, uint256 amount, uint256 total) public onlyStakeManager { emit Restaked(validatorId, amount, total); } function logJailed(uint256 validatorId, uint256 exitEpoch, address signer) public onlyStakeManager { emit Jailed(validatorId, exitEpoch, signer); } function logUnjailed(uint256 validatorId, address signer) public onlyStakeManager { emit UnJailed(validatorId, signer); } function logSlashed(uint256 nonce, uint256 amount) public onlySlashingManager { emit Slashed(nonce, amount); } function logThresholdChange(uint256 newThreshold, uint256 oldThreshold) public onlyStakeManager { emit ThresholdChange(newThreshold, oldThreshold); } function logDynastyValueChange(uint256 newDynasty, uint256 oldDynasty) public onlyStakeManager { emit DynastyValueChange(newDynasty, oldDynasty); } function logProposerBonusChange( uint256 newProposerBonus, uint256 oldProposerBonus ) public onlyStakeManager { emit ProposerBonusChange(newProposerBonus, oldProposerBonus); } function logRewardUpdate(uint256 newReward, uint256 oldReward) public onlyStakeManager { emit RewardUpdate(newReward, oldReward); } function logStakeUpdate(uint256 validatorId) public StakeManagerOrValidatorContract(validatorId) { validatorNonce[validatorId] = validatorNonce[validatorId].add(1); emit StakeUpdate( validatorId, validatorNonce[validatorId], totalValidatorStake(validatorId) ); } function logClaimRewards( uint256 validatorId, uint256 amount, uint256 totalAmount ) public onlyStakeManager { emit ClaimRewards(validatorId, amount, totalAmount); } function logStartAuction( uint256 validatorId, uint256 amount, uint256 auctionAmount ) public onlyStakeManager { emit StartAuction(validatorId, amount, auctionAmount); } function logConfirmAuction( uint256 newValidatorId, uint256 oldValidatorId, uint256 amount ) public onlyStakeManager { emit ConfirmAuction(newValidatorId, oldValidatorId, amount); } function logTopUpFee(address user, uint256 fee) public onlyStakeManager { emit TopUpFee(user, fee); } function logClaimFee(address user, uint256 fee) public onlyStakeManager { emit ClaimFee(user, fee); } function getStakerDetails(uint256 validatorId) public view returns ( uint256 amount, uint256 reward, uint256 activationEpoch, uint256 deactivationEpoch, address signer, uint256 _status ) { IStakeManagerLocal stakeManager = IStakeManagerLocal( registry.getStakeManagerAddress() ); address _contract; IStakeManagerLocal.Status status; ( amount, reward, activationEpoch, deactivationEpoch, , signer, _contract, status ) = stakeManager.validators(validatorId); _status = uint256(status); if (_contract != address(0x0)) { reward += IStakeManagerLocal(_contract).validatorRewards(); } } function totalValidatorStake(uint256 validatorId) public view returns (uint256 validatorStake) { address contractAddress; (validatorStake, , , , , , contractAddress, ) = IStakeManagerLocal( registry.getStakeManagerAddress() ) .validators(validatorId); if (contractAddress != address(0x0)) { validatorStake += IStakeManagerLocal(contractAddress).activeAmount(); } } function getAccountStateRoot() public view returns (bytes32 accountStateRoot) { accountStateRoot = IStakeManagerLocal(registry.getStakeManagerAddress()) .accountStateRoot(); } function getValidatorContractAddress(uint256 validatorId) public view returns (address ValidatorContract) { (, , , , , , ValidatorContract, ) = IStakeManagerLocal( registry.getStakeManagerAddress() ) .validators(validatorId); } // validator Share contract logging func function logShareMinted( uint256 validatorId, address user, uint256 amount, uint256 tokens ) public onlyValidatorContract(validatorId) { emit ShareMinted(validatorId, user, amount, tokens); } function logShareBurned( uint256 validatorId, address user, uint256 amount, uint256 tokens ) public onlyValidatorContract(validatorId) { emit ShareBurned(validatorId, user, amount, tokens); } function logDelegatorClaimRewards( uint256 validatorId, address user, uint256 rewards ) public onlyValidatorContract(validatorId) { emit DelegatorClaimedRewards(validatorId, user, rewards); } function logDelegatorRestaked( uint256 validatorId, address user, uint256 totalStaked ) public onlyValidatorContract(validatorId) { emit DelegatorRestaked(validatorId, user, totalStaked); } function logDelegatorUnstaked(uint256 validatorId, address user, uint256 amount) public onlyValidatorContract(validatorId) { emit DelegatorUnstaked(validatorId, user, amount); } // deprecated function logUpdateCommissionRate( uint256 validatorId, uint256 newCommissionRate, uint256 oldCommissionRate ) public onlyValidatorContract(validatorId) { emit UpdateCommissionRate( validatorId, newCommissionRate, oldCommissionRate ); } }
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"ClaimFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"ClaimRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValidatorId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValidatorId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ConfirmAuction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"rewards","type":"uint256"}],"name":"DelegatorClaimedRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"totalStaked","type":"uint256"}],"name":"DelegatorRestaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DelegatorUnstaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newDynasty","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldDynasty","type":"uint256"}],"name":"DynastyValueChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"exitEpoch","type":"uint256"},{"indexed":true,"internalType":"address","name":"signer","type":"address"}],"name":"Jailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newProposerBonus","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldProposerBonus","type":"uint256"}],"name":"ProposerBonusChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"total","type":"uint256"}],"name":"Restaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newReward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldReward","type":"uint256"}],"name":"RewardUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ShareBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ShareMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nonce","type":"uint256"},{"indexed":true,"internalType":"address","name":"oldSigner","type":"address"},{"indexed":true,"internalType":"address","name":"newSigner","type":"address"},{"indexed":false,"internalType":"bytes","name":"signerPubkey","type":"bytes"}],"name":"SignerChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"nonce","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Slashed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"nonce","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"StakeUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"signer","type":"address"},{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nonce","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"activationEpoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"total","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"signerPubkey","type":"bytes"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"auctionAmount","type":"uint256"}],"name":"StartAuction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldThreshold","type":"uint256"}],"name":"ThresholdChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"TopUpFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":true,"internalType":"address","name":"signer","type":"address"}],"name":"UnJailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nonce","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"deactivationEpoch","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UnstakeInit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"total","type":"uint256"}],"name":"Unstaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"validatorId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newCommissionRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldCommissionRate","type":"uint256"}],"name":"UpdateCommissionRate","type":"event"},{"constant":true,"inputs":[],"name":"getAccountStateRoot","outputs":[{"internalType":"bytes32","name":"accountStateRoot","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"}],"name":"getStakerDetails","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"activationEpoch","type":"uint256"},{"internalType":"uint256","name":"deactivationEpoch","type":"uint256"},{"internalType":"address","name":"signer","type":"address"},{"internalType":"uint256","name":"_status","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"}],"name":"getValidatorContractAddress","outputs":[{"internalType":"address","name":"ValidatorContract","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"logClaimFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"logClaimRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newValidatorId","type":"uint256"},{"internalType":"uint256","name":"oldValidatorId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"logConfirmAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"rewards","type":"uint256"}],"name":"logDelegatorClaimRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"totalStaked","type":"uint256"}],"name":"logDelegatorRestaked","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"logDelegatorUnstaked","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newDynasty","type":"uint256"},{"internalType":"uint256","name":"oldDynasty","type":"uint256"}],"name":"logDynastyValueChange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"},{"internalType":"uint256","name":"exitEpoch","type":"uint256"},{"internalType":"address","name":"signer","type":"address"}],"name":"logJailed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newProposerBonus","type":"uint256"},{"internalType":"uint256","name":"oldProposerBonus","type":"uint256"}],"name":"logProposerBonusChange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"name":"logRestaked","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newReward","type":"uint256"},{"internalType":"uint256","name":"oldReward","type":"uint256"}],"name":"logRewardUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"logShareBurned","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"logShareMinted","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"},{"internalType":"address","name":"oldSigner","type":"address"},{"internalType":"address","name":"newSigner","type":"address"},{"internalType":"bytes","name":"signerPubkey","type":"bytes"}],"name":"logSignerChange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"logSlashed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"}],"name":"logStakeUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"signerPubkey","type":"bytes"},{"internalType":"uint256","name":"validatorId","type":"uint256"},{"internalType":"uint256","name":"activationEpoch","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"name":"logStaked","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"auctionAmount","type":"uint256"}],"name":"logStartAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"},{"internalType":"uint256","name":"oldThreshold","type":"uint256"}],"name":"logThresholdChange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"logTopUpFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"},{"internalType":"address","name":"signer","type":"address"}],"name":"logUnjailed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"validatorId","type":"uint256"},{"internalType":"uint256","name":"deactivationEpoch","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"logUnstakeInit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"validatorId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"name":"logUnstaked","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"},{"internalType":"uint256","name":"newCommissionRate","type":"uint256"},{"internalType":"uint256","name":"oldCommissionRate","type":"uint256"}],"name":"logUpdateCommissionRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"registry","outputs":[{"internalType":"contract Registry","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"validatorId","type":"uint256"}],"name":"totalValidatorStake","outputs":[{"internalType":"uint256","name":"validatorStake","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256[]","name":"validatorIds","type":"uint256[]"},{"internalType":"uint256[]","name":"nonces","type":"uint256[]"}],"name":"updateNonce","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"validatorNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051612eb3380380612eb38339818101604052602081101561003357600080fd5b5051600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600280546001600160a01b0319166001600160a01b0392909216919091179055612e06806100ad6000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c8063a3b1d8cb11610125578063ca7d34b6116100ad578063f1382b531161007c578063f1382b5314610894578063f1980a50146108cc578063f2fde38b146108ef578063f92ec5af14610915578063fb77c94e1461094157610211565b8063ca7d34b614610773578063e12ab1af14610790578063eae3f749146107b9578063ebde9f931461087757610211565b8063b6fa74c4116100f4578063b6fa74c4146105f9578063b7721d2d1461061c578063b80fbce51461064e578063c69d057314610712578063c98cc0021461074a57610211565b8063a3b1d8cb14610549578063a449d7951461056c578063ae2e26b114610598578063b685b26a146105d057610211565b8063605be9be116101a85780637f88a957116101775780637f88a9571461049e57806381dc101b146104d05780638da5cb5b146105025780638f32d59b1461050a578063a0e300a61461052657610211565b8063605be9be14610403578063715018a61461043557806378daaf691461043d5780637b1039991461049657610211565b80634b6b87ce116101e45780634b6b87ce1461036b578063532e19a9146103855780635616a7cc146103a25780635e04d483146103cb57610211565b80630934a6df14610216578063122b648114610241578063178d46aa1461026d57806333a8383c146102a6575b600080fd5b61023f6004803603606081101561022c57600080fd5b5080359060208101359060400135610964565b005b61023f6004803603604081101561025757600080fd5b506001600160a01b038135169060200135610a4d565b61028a6004803603602081101561028357600080fd5b5035610b3c565b604080516001600160a01b039092168252519081900360200190f35b61023f600480360360c08110156102bc57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156102e657600080fd5b8201836020820111156102f857600080fd5b803590602001918460018302840111600160201b8311171561031957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060208101359060408101359060600135610c2d565b610373610df2565b60408051918252519081900360200190f35b61023f6004803603602081101561039b57600080fd5b5035610ed6565b61023f600480360360608110156103b857600080fd5b50803590602081013590604001356110a5565b61023f600480360360808110156103e157600080fd5b506001600160a01b038135169060208101359060408101359060600135611199565b61023f6004803603606081101561041957600080fd5b508035906001600160a01b0360208201351690604001356112cf565b61023f61145a565b61045a6004803603602081101561045357600080fd5b50356114b5565b6040805196875260208701959095528585019390935260608501919091526001600160a01b0316608084015260a0830152519081900360c00190f35b61028a61167e565b61023f600480360360608110156104b457600080fd5b508035906001600160a01b03602082013516906040013561168d565b61023f600480360360608110156104e657600080fd5b50803590602081013590604001356001600160a01b0316611810565b61028a611902565b610512611911565b604080519115158252519081900360200190f35b61023f6004803603604081101561053c57600080fd5b5080359060200135611922565b61023f6004803603604081101561055f57600080fd5b5080359060200135611a16565b61023f6004803603604081101561058257600080fd5b506001600160a01b038135169060200135611b0a565b61023f600480360360808110156105ae57600080fd5b506001600160a01b038135169060208101359060408101359060600135611bf9565b61023f600480360360608110156105e657600080fd5b5080359060208101359060400135611cfe565b61023f6004803603604081101561060f57600080fd5b5080359060200135611de7565b61023f6004803603606081101561063257600080fd5b508035906001600160a01b036020820135169060400135611edb565b61023f6004803603608081101561066457600080fd5b8135916001600160a01b03602082013581169260408301359091169190810190608081016060820135600160201b81111561069e57600080fd5b8201836020820111156106b057600080fd5b803590602001918460018302840111600160201b831117156106d157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061205e945050505050565b61023f6004803603608081101561072857600080fd5b508035906001600160a01b036020820135169060408101359060600135612202565b61023f6004803603606081101561076057600080fd5b5080359060208101359060400135612391565b6103736004803603602081101561078957600080fd5b503561250b565b61023f600480360360608110156107a657600080fd5b508035906020810135906040013561268b565b61023f600480360360408110156107cf57600080fd5b810190602081018135600160201b8111156107e957600080fd5b8201836020820111156107fb57600080fd5b803590602001918460208302840111600160201b8311171561081c57600080fd5b919390929091602081019035600160201b81111561083957600080fd5b82018360208201111561084b57600080fd5b803590602001918460208302840111600160201b8311171561086c57600080fd5b509092509050612774565b6103736004803603602081101561088d57600080fd5b5035612827565b61023f600480360360808110156108aa57600080fd5b508035906001600160a01b036020820135169060408101359060600135612839565b61023f600480360360408110156108e257600080fd5b50803590602001356129c8565b61023f6004803603602081101561090557600080fd5b50356001600160a01b0316612abc565b61023f6004803603604081101561092b57600080fd5b50803590602001356001600160a01b0316612ad9565b61023f6004803603604081101561095757600080fd5b5080359060200135612bc8565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b1580156109a857600080fd5b505afa1580156109bc573d6000803e3d6000fd5b505050506040513d60208110156109d257600080fd5b50516001600160a01b031614610a195760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b8082847f683d0f47c7fa11331f4e9563b3f5a7fdc3d3c5b75c600357a91d991f5a13a43760405160405180910390a4505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015610a9157600080fd5b505afa158015610aa5573d6000803e3d6000fd5b505050506040513d6020811015610abb57600080fd5b50516001600160a01b031614610b025760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b60405181906001600160a01b038416907ff40b9ca28516abde647ef8ed0e7b155e16347eb4d8dd6eb29989ed2c0c3d27e890600090a35050565b60025460408051630a1ef8f960e21b815290516000926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015610b8157600080fd5b505afa158015610b95573d6000803e3d6000fd5b505050506040513d6020811015610bab57600080fd5b505160408051630d6a8b9160e21b81526004810185905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b158015610bf757600080fd5b505afa158015610c0b573d6000803e3d6000fd5b505050506040513d610100811015610c2257600080fd5b5060c0015192915050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015610c7157600080fd5b505afa158015610c85573d6000803e3d6000fd5b505050506040513d6020811015610c9b57600080fd5b50516001600160a01b031614610ce25760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b600084815260016020819052604090912054610d039163ffffffff612cae16565b60016000868152602001908152602001600020819055508284876001600160a01b03167f68c13e4125b983d7e2d6114246f443e567ec6c4ee5b4d4a7ef6100b1402bfd84600160008981526020019081526020016000205486868b6040518085815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610dad578181015183820152602001610d95565b50505050905090810190601f168015610dda5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a4505050505050565b60025460408051630a1ef8f960e21b815290516000926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015610e3757600080fd5b505afa158015610e4b573d6000803e3d6000fd5b505050506040513d6020811015610e6157600080fd5b50516040805163017c2b9160e41b815290516001600160a01b03909216916317c2b91091600480820192602092909190829003018186803b158015610ea557600080fd5b505afa158015610eb9573d6000803e3d6000fd5b505050506040513d6020811015610ecf57600080fd5b5051919050565b80600080600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2857600080fd5b505afa158015610f3c573d6000803e3d6000fd5b505050506040513d6020811015610f5257600080fd5b505160408051630d6a8b9160e21b81526004810186905290519192506001600160a01b038316916335aa2e449160248082019261010092909190829003018186803b158015610fa057600080fd5b505afa158015610fb4573d6000803e3d6000fd5b505050506040513d610100811015610fcb57600080fd5b5060c0015191506001600160a01b038216331480610ff157506001600160a01b03811633145b61102c5760405162461bcd60e51b8152600401808060200182810382526037815260200180612d5a6037913960400191505060405180910390fd5b60008481526001602081905260409091205461104d9163ffffffff612cae16565b6000858152600160205260409020556110658461250b565b600085815260016020526040808220549051909187917f35af9eea1f0e7b300b0a14fae90139a072470e44daa3f14b5069bebbc1265bda9190a450505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b1580156110e957600080fd5b505afa1580156110fd573d6000803e3d6000fd5b505050506040513d602081101561111357600080fd5b50516001600160a01b03161461115a5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b6040805183815260208101839052815185927f09b24121f82c610c13909ec63bd0843468819a45f6eda5838c3a80568c2046a8928290030190a2505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b1580156111dd57600080fd5b505afa1580156111f1573d6000803e3d6000fd5b505050506040513d602081101561120757600080fd5b50516001600160a01b03161461124e5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b60008381526001602081905260409091205461126f9163ffffffff612cae16565b600084815260016020908152604091829020839055815192835282018490528051839286926001600160a01b038916927f69b288bb79cd5386c9fe0af060f650e823bcdfa96a44cdc07f862db060f571209281900390910190a450505050565b826000600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561132057600080fd5b505afa158015611334573d6000803e3d6000fd5b505050506040513d602081101561134a57600080fd5b505160408051630d6a8b9160e21b81526004810185905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b15801561139657600080fd5b505afa1580156113aa573d6000803e3d6000fd5b505050506040513d6101008110156113c157600080fd5b5060c0015190506001600160a01b0381163314611413576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d91833981519152604482015290519081900360640190fd5b6040805184815290516001600160a01b0386169187917f770c7c7d8e20347e5080e2ac70e8519793bedaff621f044396fd8d6d052c4aa89181900360200190a35050505050565b611462611911565b61146b57600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000806000806000806000600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561150e57600080fd5b505afa158015611522573d6000803e3d6000fd5b505050506040513d602081101561153857600080fd5b505160408051630d6a8b9160e21b8152600481018b9052905191925060009182916001600160a01b038516916335aa2e449160248082019261010092909190829003018186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d6101008110156115b657600080fd5b50805160208201516040830151606084015160a085015160c086015160e090960151949e50929c50909a509850965090925090508060038111156115f657fe5b93506001600160a01b0382161561167257816001600160a01b0316635d1e36166040518163ffffffff1660e01b815260040160206040518083038186803b15801561164057600080fd5b505afa158015611654573d6000803e3d6000fd5b505050506040513d602081101561166a57600080fd5b505197909701965b50505091939550919395565b6002546001600160a01b031681565b826000600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b1580156116de57600080fd5b505afa1580156116f2573d6000803e3d6000fd5b505050506040513d602081101561170857600080fd5b505160408051630d6a8b9160e21b81526004810185905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b15801561175457600080fd5b505afa158015611768573d6000803e3d6000fd5b505050506040513d61010081101561177f57600080fd5b5060c0015190506001600160a01b03811633146117d1576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d91833981519152604482015290519081900360640190fd5b82846001600160a01b0316867f0f9ccdda16b467e719059c85ebd8383fcb7f8ffa5576629fe3b842836e04dad160405160405180910390a45050505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b15801561185457600080fd5b505afa158015611868573d6000803e3d6000fd5b505050506040513d602081101561187e57600080fd5b50516001600160a01b0316146118c55760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b806001600160a01b031682847ff6566d8fbe8f23227826ba3da2ecc1ec48698c5be051a829965e3358fd5b965860405160405180910390a4505050565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b15801561196657600080fd5b505afa15801561197a573d6000803e3d6000fd5b505050506040513d602081101561199057600080fd5b50516001600160a01b0316146119d75760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b604080518381526020810183905281517f9444bfcfa6aed72a15da73de1220dcc07d7864119c44abfec0037bbcacefda98929181900390910190a15050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015611a5a57600080fd5b505afa158015611a6e573d6000803e3d6000fd5b505050506040513d6020811015611a8457600080fd5b50516001600160a01b031614611acb5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b604080518381526020810183905281517f4a501a9c4d5cce5c32415945bbc8973764f31b844e3e8fd4c15f51f315ac8792929181900390910190a15050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015611b4e57600080fd5b505afa158015611b62573d6000803e3d6000fd5b505050506040513d6020811015611b7857600080fd5b50516001600160a01b031614611bbf5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b60405181906001600160a01b038416907f2c3bb5458e3dd671c31974c4ca8e8ebc2cdd892ae8602374d9a6f789b00c6b9490600090a35050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015611c3d57600080fd5b505afa158015611c51573d6000803e3d6000fd5b505050506040513d6020811015611c6757600080fd5b50516001600160a01b031614611cae5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b82846001600160a01b03167f204fccf0d92ed8d48f204adb39b2e81e92bad0dedb93f5716ca9478cfb57de008484604051808381526020018281526020019250505060405180910390a350505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015611d4257600080fd5b505afa158015611d56573d6000803e3d6000fd5b505050506040513d6020811015611d6c57600080fd5b50516001600160a01b031614611db35760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b8082847f41e5e4590cfcde2f03ee9281c54d03acad8adffb83f8310d66b894532470ba3560405160405180910390a4505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015611e2b57600080fd5b505afa158015611e3f573d6000803e3d6000fd5b505050506040513d6020811015611e5557600080fd5b50516001600160a01b031614611e9c5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b604080518381526020810183905281517ff67f33e8589d3ea0356303c0f9a8e764873692159f777ff79e4fc523d389dfcd929181900390910190a15050565b826000600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b158015611f2c57600080fd5b505afa158015611f40573d6000803e3d6000fd5b505050506040513d6020811015611f5657600080fd5b505160408051630d6a8b9160e21b81526004810185905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b158015611fa257600080fd5b505afa158015611fb6573d6000803e3d6000fd5b505050506040513d610100811015611fcd57600080fd5b5060c0015190506001600160a01b038116331461201f576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d91833981519152604482015290519081900360640190fd5b82846001600160a01b0316867f31d1715032654fde9867c0f095aecce1113049e30b9f4ecbaa6954ed6c63b8df60405160405180910390a45050505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b1580156120a257600080fd5b505afa1580156120b6573d6000803e3d6000fd5b505050506040513d60208110156120cc57600080fd5b50516001600160a01b0316146121135760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b6000848152600160208190526040909120546121349163ffffffff612cae16565b6000858152600160209081526040808320849055805184815280830182815286519282019290925285516001600160a01b0380891696908a16958b957f086044c0612a8c965d4cccd907f0d588e40ad68438bd4c1274cac60f4c3a9d1f9592948a949093926060850192860191908190849084905b838110156121c15781810151838201526020016121a9565b50505050905090810190601f1680156121ee5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a450505050565b836000600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561225357600080fd5b505afa158015612267573d6000803e3d6000fd5b505050506040513d602081101561227d57600080fd5b505160408051630d6a8b9160e21b81526004810185905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b1580156122c957600080fd5b505afa1580156122dd573d6000803e3d6000fd5b505050506040513d6101008110156122f457600080fd5b5060c0015190506001600160a01b0381163314612346576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d91833981519152604482015290519081900360640190fd5b83856001600160a01b0316877fc9afff0972d33d68c8d330fe0ebd0e9f54491ad8c59ae17330a9206f280f0865866040518082815260200191505060405180910390a4505050505050565b826000600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b1580156123e257600080fd5b505afa1580156123f6573d6000803e3d6000fd5b505050506040513d602081101561240c57600080fd5b505160408051630d6a8b9160e21b81526004810185905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b15801561245857600080fd5b505afa15801561246c573d6000803e3d6000fd5b505050506040513d61010081101561248357600080fd5b5060c0015190506001600160a01b03811633146124d5576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d91833981519152604482015290519081900360640190fd5b8284867f7d5da5ece9d43013d62ab966f4704ca376b92be29ca6fbb958154baf1c0dc17e60405160405180910390a45050505050565b600080600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561255c57600080fd5b505afa158015612570573d6000803e3d6000fd5b505050506040513d602081101561258657600080fd5b505160408051630d6a8b9160e21b81526004810186905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b1580156125d257600080fd5b505afa1580156125e6573d6000803e3d6000fd5b505050506040513d6101008110156125fd57600080fd5b50805160c09091015190925090506001600160a01b0381161561268557806001600160a01b0316633a09bf446040518163ffffffff1660e01b815260040160206040518083038186803b15801561265357600080fd5b505afa158015612667573d6000803e3d6000fd5b505050506040513d602081101561267d57600080fd5b505191909101905b50919050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b1580156126cf57600080fd5b505afa1580156126e3573d6000803e3d6000fd5b505050506040513d60208110156126f957600080fd5b50516001600160a01b0316146127405760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b8082847f1002381ecf76700f6f0ab4c90b9f523e39df7b0482b71ec63cf62cf85412047060405160405180910390a4505050565b61277c611911565b61278557600080fd5b8281146127d0576040805162461bcd60e51b81526020600482015260146024820152730c2e4cee640d8cadccee8d040dad2e6dac2e8c6d60631b604482015290519081900360640190fd5b60005b83811015612820578282828181106127e757fe5b90506020020135600160008787858181106127fe57fe5b60209081029290920135835250810191909152604001600020556001016127d3565b5050505050565b60016020526000908152604090205481565b836000600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561288a57600080fd5b505afa15801561289e573d6000803e3d6000fd5b505050506040513d60208110156128b457600080fd5b505160408051630d6a8b9160e21b81526004810185905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b15801561290057600080fd5b505afa158015612914573d6000803e3d6000fd5b505050506040513d61010081101561292b57600080fd5b5060c0015190506001600160a01b038116331461297d576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d91833981519152604482015290519081900360640190fd5b83856001600160a01b0316877f7e86625aa6e668407f095af342e0cc237809c4c5086b4d665a0067de122980a9866040518082815260200191505060405180910390a4505050505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015612a0c57600080fd5b505afa158015612a20573d6000803e3d6000fd5b505050506040513d6020811015612a3657600080fd5b50516001600160a01b031614612a7d5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b604080518381526020810183905281517f5d16a900896e1160c2033bc940e6b072d3dc3b6a996fefb9b3b9b9678841824c929181900390910190a15050565b612ac4611911565b612acd57600080fd5b612ad681612cc7565b50565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015612b1d57600080fd5b505afa158015612b31573d6000803e3d6000fd5b505050506040513d6020811015612b4757600080fd5b50516001600160a01b031614612b8e5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b6040516001600160a01b0382169083907fd3cb87a9c75a0d21336afc0f79f7e398f06748db5ce1815af01d315c7c135c0b90600090a35050565b60025460408051631ab0168360e31b8152905133926001600160a01b03169163d580b418916004808301926020929190829003018186803b158015612c0c57600080fd5b505afa158015612c20573d6000803e3d6000fd5b505050506040513d6020811015612c3657600080fd5b50516001600160a01b031614612c7d5760405162461bcd60e51b8152600401808060200182810382526024815260200180612d366024913960400191505060405180910390fd5b604051819083907f4f5f38ee30b01a960b4dfdcd520a3ca59c1a664a32dcfe5418ca79b0de6b723690600090a35050565b600082820183811015612cc057600080fd5b9392505050565b6001600160a01b038116612cda57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe496e76616c69642073656e6465722c206e6f7420736c617368696e67206d616e61676572496e76616c69642073656e6465722c206e6f74207374616b65206d616e61676572206f722076616c696461746f7220636f6e7472616374496e76616c69642073656e6465722c206e6f742076616c696461746f72000000496e76616c69642073656e6465722c206e6f74207374616b65206d616e61676572a265627a7a7231582055129ce61ec6f161a7caeddc706971417e1f95847099b77b0bcd2ad8e2138d6064736f6c63430005110032000000000000000000000000fe92f7c3a701e43d8479738c8844bcc555b9e5cd
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102115760003560e01c8063a3b1d8cb11610125578063ca7d34b6116100ad578063f1382b531161007c578063f1382b5314610894578063f1980a50146108cc578063f2fde38b146108ef578063f92ec5af14610915578063fb77c94e1461094157610211565b8063ca7d34b614610773578063e12ab1af14610790578063eae3f749146107b9578063ebde9f931461087757610211565b8063b6fa74c4116100f4578063b6fa74c4146105f9578063b7721d2d1461061c578063b80fbce51461064e578063c69d057314610712578063c98cc0021461074a57610211565b8063a3b1d8cb14610549578063a449d7951461056c578063ae2e26b114610598578063b685b26a146105d057610211565b8063605be9be116101a85780637f88a957116101775780637f88a9571461049e57806381dc101b146104d05780638da5cb5b146105025780638f32d59b1461050a578063a0e300a61461052657610211565b8063605be9be14610403578063715018a61461043557806378daaf691461043d5780637b1039991461049657610211565b80634b6b87ce116101e45780634b6b87ce1461036b578063532e19a9146103855780635616a7cc146103a25780635e04d483146103cb57610211565b80630934a6df14610216578063122b648114610241578063178d46aa1461026d57806333a8383c146102a6575b600080fd5b61023f6004803603606081101561022c57600080fd5b5080359060208101359060400135610964565b005b61023f6004803603604081101561025757600080fd5b506001600160a01b038135169060200135610a4d565b61028a6004803603602081101561028357600080fd5b5035610b3c565b604080516001600160a01b039092168252519081900360200190f35b61023f600480360360c08110156102bc57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156102e657600080fd5b8201836020820111156102f857600080fd5b803590602001918460018302840111600160201b8311171561031957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060208101359060408101359060600135610c2d565b610373610df2565b60408051918252519081900360200190f35b61023f6004803603602081101561039b57600080fd5b5035610ed6565b61023f600480360360608110156103b857600080fd5b50803590602081013590604001356110a5565b61023f600480360360808110156103e157600080fd5b506001600160a01b038135169060208101359060408101359060600135611199565b61023f6004803603606081101561041957600080fd5b508035906001600160a01b0360208201351690604001356112cf565b61023f61145a565b61045a6004803603602081101561045357600080fd5b50356114b5565b6040805196875260208701959095528585019390935260608501919091526001600160a01b0316608084015260a0830152519081900360c00190f35b61028a61167e565b61023f600480360360608110156104b457600080fd5b508035906001600160a01b03602082013516906040013561168d565b61023f600480360360608110156104e657600080fd5b50803590602081013590604001356001600160a01b0316611810565b61028a611902565b610512611911565b604080519115158252519081900360200190f35b61023f6004803603604081101561053c57600080fd5b5080359060200135611922565b61023f6004803603604081101561055f57600080fd5b5080359060200135611a16565b61023f6004803603604081101561058257600080fd5b506001600160a01b038135169060200135611b0a565b61023f600480360360808110156105ae57600080fd5b506001600160a01b038135169060208101359060408101359060600135611bf9565b61023f600480360360608110156105e657600080fd5b5080359060208101359060400135611cfe565b61023f6004803603604081101561060f57600080fd5b5080359060200135611de7565b61023f6004803603606081101561063257600080fd5b508035906001600160a01b036020820135169060400135611edb565b61023f6004803603608081101561066457600080fd5b8135916001600160a01b03602082013581169260408301359091169190810190608081016060820135600160201b81111561069e57600080fd5b8201836020820111156106b057600080fd5b803590602001918460018302840111600160201b831117156106d157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061205e945050505050565b61023f6004803603608081101561072857600080fd5b508035906001600160a01b036020820135169060408101359060600135612202565b61023f6004803603606081101561076057600080fd5b5080359060208101359060400135612391565b6103736004803603602081101561078957600080fd5b503561250b565b61023f600480360360608110156107a657600080fd5b508035906020810135906040013561268b565b61023f600480360360408110156107cf57600080fd5b810190602081018135600160201b8111156107e957600080fd5b8201836020820111156107fb57600080fd5b803590602001918460208302840111600160201b8311171561081c57600080fd5b919390929091602081019035600160201b81111561083957600080fd5b82018360208201111561084b57600080fd5b803590602001918460208302840111600160201b8311171561086c57600080fd5b509092509050612774565b6103736004803603602081101561088d57600080fd5b5035612827565b61023f600480360360808110156108aa57600080fd5b508035906001600160a01b036020820135169060408101359060600135612839565b61023f600480360360408110156108e257600080fd5b50803590602001356129c8565b61023f6004803603602081101561090557600080fd5b50356001600160a01b0316612abc565b61023f6004803603604081101561092b57600080fd5b50803590602001356001600160a01b0316612ad9565b61023f6004803603604081101561095757600080fd5b5080359060200135612bc8565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b1580156109a857600080fd5b505afa1580156109bc573d6000803e3d6000fd5b505050506040513d60208110156109d257600080fd5b50516001600160a01b031614610a195760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b8082847f683d0f47c7fa11331f4e9563b3f5a7fdc3d3c5b75c600357a91d991f5a13a43760405160405180910390a4505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015610a9157600080fd5b505afa158015610aa5573d6000803e3d6000fd5b505050506040513d6020811015610abb57600080fd5b50516001600160a01b031614610b025760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b60405181906001600160a01b038416907ff40b9ca28516abde647ef8ed0e7b155e16347eb4d8dd6eb29989ed2c0c3d27e890600090a35050565b60025460408051630a1ef8f960e21b815290516000926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015610b8157600080fd5b505afa158015610b95573d6000803e3d6000fd5b505050506040513d6020811015610bab57600080fd5b505160408051630d6a8b9160e21b81526004810185905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b158015610bf757600080fd5b505afa158015610c0b573d6000803e3d6000fd5b505050506040513d610100811015610c2257600080fd5b5060c0015192915050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015610c7157600080fd5b505afa158015610c85573d6000803e3d6000fd5b505050506040513d6020811015610c9b57600080fd5b50516001600160a01b031614610ce25760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b600084815260016020819052604090912054610d039163ffffffff612cae16565b60016000868152602001908152602001600020819055508284876001600160a01b03167f68c13e4125b983d7e2d6114246f443e567ec6c4ee5b4d4a7ef6100b1402bfd84600160008981526020019081526020016000205486868b6040518085815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610dad578181015183820152602001610d95565b50505050905090810190601f168015610dda5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a4505050505050565b60025460408051630a1ef8f960e21b815290516000926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015610e3757600080fd5b505afa158015610e4b573d6000803e3d6000fd5b505050506040513d6020811015610e6157600080fd5b50516040805163017c2b9160e41b815290516001600160a01b03909216916317c2b91091600480820192602092909190829003018186803b158015610ea557600080fd5b505afa158015610eb9573d6000803e3d6000fd5b505050506040513d6020811015610ecf57600080fd5b5051919050565b80600080600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2857600080fd5b505afa158015610f3c573d6000803e3d6000fd5b505050506040513d6020811015610f5257600080fd5b505160408051630d6a8b9160e21b81526004810186905290519192506001600160a01b038316916335aa2e449160248082019261010092909190829003018186803b158015610fa057600080fd5b505afa158015610fb4573d6000803e3d6000fd5b505050506040513d610100811015610fcb57600080fd5b5060c0015191506001600160a01b038216331480610ff157506001600160a01b03811633145b61102c5760405162461bcd60e51b8152600401808060200182810382526037815260200180612d5a6037913960400191505060405180910390fd5b60008481526001602081905260409091205461104d9163ffffffff612cae16565b6000858152600160205260409020556110658461250b565b600085815260016020526040808220549051909187917f35af9eea1f0e7b300b0a14fae90139a072470e44daa3f14b5069bebbc1265bda9190a450505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b1580156110e957600080fd5b505afa1580156110fd573d6000803e3d6000fd5b505050506040513d602081101561111357600080fd5b50516001600160a01b03161461115a5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b6040805183815260208101839052815185927f09b24121f82c610c13909ec63bd0843468819a45f6eda5838c3a80568c2046a8928290030190a2505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b1580156111dd57600080fd5b505afa1580156111f1573d6000803e3d6000fd5b505050506040513d602081101561120757600080fd5b50516001600160a01b03161461124e5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b60008381526001602081905260409091205461126f9163ffffffff612cae16565b600084815260016020908152604091829020839055815192835282018490528051839286926001600160a01b038916927f69b288bb79cd5386c9fe0af060f650e823bcdfa96a44cdc07f862db060f571209281900390910190a450505050565b826000600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561132057600080fd5b505afa158015611334573d6000803e3d6000fd5b505050506040513d602081101561134a57600080fd5b505160408051630d6a8b9160e21b81526004810185905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b15801561139657600080fd5b505afa1580156113aa573d6000803e3d6000fd5b505050506040513d6101008110156113c157600080fd5b5060c0015190506001600160a01b0381163314611413576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d91833981519152604482015290519081900360640190fd5b6040805184815290516001600160a01b0386169187917f770c7c7d8e20347e5080e2ac70e8519793bedaff621f044396fd8d6d052c4aa89181900360200190a35050505050565b611462611911565b61146b57600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000806000806000806000600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561150e57600080fd5b505afa158015611522573d6000803e3d6000fd5b505050506040513d602081101561153857600080fd5b505160408051630d6a8b9160e21b8152600481018b9052905191925060009182916001600160a01b038516916335aa2e449160248082019261010092909190829003018186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d6101008110156115b657600080fd5b50805160208201516040830151606084015160a085015160c086015160e090960151949e50929c50909a509850965090925090508060038111156115f657fe5b93506001600160a01b0382161561167257816001600160a01b0316635d1e36166040518163ffffffff1660e01b815260040160206040518083038186803b15801561164057600080fd5b505afa158015611654573d6000803e3d6000fd5b505050506040513d602081101561166a57600080fd5b505197909701965b50505091939550919395565b6002546001600160a01b031681565b826000600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b1580156116de57600080fd5b505afa1580156116f2573d6000803e3d6000fd5b505050506040513d602081101561170857600080fd5b505160408051630d6a8b9160e21b81526004810185905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b15801561175457600080fd5b505afa158015611768573d6000803e3d6000fd5b505050506040513d61010081101561177f57600080fd5b5060c0015190506001600160a01b03811633146117d1576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d91833981519152604482015290519081900360640190fd5b82846001600160a01b0316867f0f9ccdda16b467e719059c85ebd8383fcb7f8ffa5576629fe3b842836e04dad160405160405180910390a45050505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b15801561185457600080fd5b505afa158015611868573d6000803e3d6000fd5b505050506040513d602081101561187e57600080fd5b50516001600160a01b0316146118c55760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b806001600160a01b031682847ff6566d8fbe8f23227826ba3da2ecc1ec48698c5be051a829965e3358fd5b965860405160405180910390a4505050565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b15801561196657600080fd5b505afa15801561197a573d6000803e3d6000fd5b505050506040513d602081101561199057600080fd5b50516001600160a01b0316146119d75760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b604080518381526020810183905281517f9444bfcfa6aed72a15da73de1220dcc07d7864119c44abfec0037bbcacefda98929181900390910190a15050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015611a5a57600080fd5b505afa158015611a6e573d6000803e3d6000fd5b505050506040513d6020811015611a8457600080fd5b50516001600160a01b031614611acb5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b604080518381526020810183905281517f4a501a9c4d5cce5c32415945bbc8973764f31b844e3e8fd4c15f51f315ac8792929181900390910190a15050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015611b4e57600080fd5b505afa158015611b62573d6000803e3d6000fd5b505050506040513d6020811015611b7857600080fd5b50516001600160a01b031614611bbf5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b60405181906001600160a01b038416907f2c3bb5458e3dd671c31974c4ca8e8ebc2cdd892ae8602374d9a6f789b00c6b9490600090a35050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015611c3d57600080fd5b505afa158015611c51573d6000803e3d6000fd5b505050506040513d6020811015611c6757600080fd5b50516001600160a01b031614611cae5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b82846001600160a01b03167f204fccf0d92ed8d48f204adb39b2e81e92bad0dedb93f5716ca9478cfb57de008484604051808381526020018281526020019250505060405180910390a350505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015611d4257600080fd5b505afa158015611d56573d6000803e3d6000fd5b505050506040513d6020811015611d6c57600080fd5b50516001600160a01b031614611db35760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b8082847f41e5e4590cfcde2f03ee9281c54d03acad8adffb83f8310d66b894532470ba3560405160405180910390a4505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015611e2b57600080fd5b505afa158015611e3f573d6000803e3d6000fd5b505050506040513d6020811015611e5557600080fd5b50516001600160a01b031614611e9c5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b604080518381526020810183905281517ff67f33e8589d3ea0356303c0f9a8e764873692159f777ff79e4fc523d389dfcd929181900390910190a15050565b826000600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b158015611f2c57600080fd5b505afa158015611f40573d6000803e3d6000fd5b505050506040513d6020811015611f5657600080fd5b505160408051630d6a8b9160e21b81526004810185905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b158015611fa257600080fd5b505afa158015611fb6573d6000803e3d6000fd5b505050506040513d610100811015611fcd57600080fd5b5060c0015190506001600160a01b038116331461201f576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d91833981519152604482015290519081900360640190fd5b82846001600160a01b0316867f31d1715032654fde9867c0f095aecce1113049e30b9f4ecbaa6954ed6c63b8df60405160405180910390a45050505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b1580156120a257600080fd5b505afa1580156120b6573d6000803e3d6000fd5b505050506040513d60208110156120cc57600080fd5b50516001600160a01b0316146121135760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b6000848152600160208190526040909120546121349163ffffffff612cae16565b6000858152600160209081526040808320849055805184815280830182815286519282019290925285516001600160a01b0380891696908a16958b957f086044c0612a8c965d4cccd907f0d588e40ad68438bd4c1274cac60f4c3a9d1f9592948a949093926060850192860191908190849084905b838110156121c15781810151838201526020016121a9565b50505050905090810190601f1680156121ee5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a450505050565b836000600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561225357600080fd5b505afa158015612267573d6000803e3d6000fd5b505050506040513d602081101561227d57600080fd5b505160408051630d6a8b9160e21b81526004810185905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b1580156122c957600080fd5b505afa1580156122dd573d6000803e3d6000fd5b505050506040513d6101008110156122f457600080fd5b5060c0015190506001600160a01b0381163314612346576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d91833981519152604482015290519081900360640190fd5b83856001600160a01b0316877fc9afff0972d33d68c8d330fe0ebd0e9f54491ad8c59ae17330a9206f280f0865866040518082815260200191505060405180910390a4505050505050565b826000600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b1580156123e257600080fd5b505afa1580156123f6573d6000803e3d6000fd5b505050506040513d602081101561240c57600080fd5b505160408051630d6a8b9160e21b81526004810185905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b15801561245857600080fd5b505afa15801561246c573d6000803e3d6000fd5b505050506040513d61010081101561248357600080fd5b5060c0015190506001600160a01b03811633146124d5576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d91833981519152604482015290519081900360640190fd5b8284867f7d5da5ece9d43013d62ab966f4704ca376b92be29ca6fbb958154baf1c0dc17e60405160405180910390a45050505050565b600080600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561255c57600080fd5b505afa158015612570573d6000803e3d6000fd5b505050506040513d602081101561258657600080fd5b505160408051630d6a8b9160e21b81526004810186905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b1580156125d257600080fd5b505afa1580156125e6573d6000803e3d6000fd5b505050506040513d6101008110156125fd57600080fd5b50805160c09091015190925090506001600160a01b0381161561268557806001600160a01b0316633a09bf446040518163ffffffff1660e01b815260040160206040518083038186803b15801561265357600080fd5b505afa158015612667573d6000803e3d6000fd5b505050506040513d602081101561267d57600080fd5b505191909101905b50919050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b1580156126cf57600080fd5b505afa1580156126e3573d6000803e3d6000fd5b505050506040513d60208110156126f957600080fd5b50516001600160a01b0316146127405760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b8082847f1002381ecf76700f6f0ab4c90b9f523e39df7b0482b71ec63cf62cf85412047060405160405180910390a4505050565b61277c611911565b61278557600080fd5b8281146127d0576040805162461bcd60e51b81526020600482015260146024820152730c2e4cee640d8cadccee8d040dad2e6dac2e8c6d60631b604482015290519081900360640190fd5b60005b83811015612820578282828181106127e757fe5b90506020020135600160008787858181106127fe57fe5b60209081029290920135835250810191909152604001600020556001016127d3565b5050505050565b60016020526000908152604090205481565b836000600260009054906101000a90046001600160a01b03166001600160a01b031663287be3e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561288a57600080fd5b505afa15801561289e573d6000803e3d6000fd5b505050506040513d60208110156128b457600080fd5b505160408051630d6a8b9160e21b81526004810185905290516001600160a01b03909216916335aa2e449160248082019261010092909190829003018186803b15801561290057600080fd5b505afa158015612914573d6000803e3d6000fd5b505050506040513d61010081101561292b57600080fd5b5060c0015190506001600160a01b038116331461297d576040805162461bcd60e51b815260206004820152601d6024820152600080516020612d91833981519152604482015290519081900360640190fd5b83856001600160a01b0316877f7e86625aa6e668407f095af342e0cc237809c4c5086b4d665a0067de122980a9866040518082815260200191505060405180910390a4505050505050565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015612a0c57600080fd5b505afa158015612a20573d6000803e3d6000fd5b505050506040513d6020811015612a3657600080fd5b50516001600160a01b031614612a7d5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b604080518381526020810183905281517f5d16a900896e1160c2033bc940e6b072d3dc3b6a996fefb9b3b9b9678841824c929181900390910190a15050565b612ac4611911565b612acd57600080fd5b612ad681612cc7565b50565b60025460408051630a1ef8f960e21b8152905133926001600160a01b03169163287be3e4916004808301926020929190829003018186803b158015612b1d57600080fd5b505afa158015612b31573d6000803e3d6000fd5b505050506040513d6020811015612b4757600080fd5b50516001600160a01b031614612b8e5760405162461bcd60e51b8152600401808060200182810382526021815260200180612db16021913960400191505060405180910390fd5b6040516001600160a01b0382169083907fd3cb87a9c75a0d21336afc0f79f7e398f06748db5ce1815af01d315c7c135c0b90600090a35050565b60025460408051631ab0168360e31b8152905133926001600160a01b03169163d580b418916004808301926020929190829003018186803b158015612c0c57600080fd5b505afa158015612c20573d6000803e3d6000fd5b505050506040513d6020811015612c3657600080fd5b50516001600160a01b031614612c7d5760405162461bcd60e51b8152600401808060200182810382526024815260200180612d366024913960400191505060405180910390fd5b604051819083907f4f5f38ee30b01a960b4dfdcd520a3ca59c1a664a32dcfe5418ca79b0de6b723690600090a35050565b600082820183811015612cc057600080fd5b9392505050565b6001600160a01b038116612cda57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe496e76616c69642073656e6465722c206e6f7420736c617368696e67206d616e61676572496e76616c69642073656e6465722c206e6f74207374616b65206d616e61676572206f722076616c696461746f7220636f6e7472616374496e76616c69642073656e6465722c206e6f742076616c696461746f72000000496e76616c69642073656e6465722c206e6f74207374616b65206d616e61676572a265627a7a7231582055129ce61ec6f161a7caeddc706971417e1f95847099b77b0bcd2ad8e2138d6064736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000fe92f7c3a701e43d8479738c8844bcc555b9e5cd
-----Decoded View---------------
Arg [0] : _registry (address): 0xfE92F7c3a701e43d8479738c8844bCc555b9e5CD
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000fe92f7c3a701e43d8479738c8844bcc555b9e5cd
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.