Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Gaming
Overview
Max Total Supply
5,000,000 0xGOLD
Holders
326 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 10 Decimals)
Balance
2.2336072384 0xGOLDValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
_0xGoldToken
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-08-09 */ pragma solidity ^0.4.18; // ---------------------------------------------------------------------------- // // Symbol : 0xGOLD // Name : 0xGold Token // Total supply : 5000000 (5 million) // Decimals : 10 // // ---------------------------------------------------------------------------- // Safe maths // ---------------------------------------------------------------------------- library SafeMath { function add(uint a, uint b) internal pure returns (uint c) { c = a + b; require(c >= a); } function sub(uint a, uint b) internal pure returns (uint c) { require(b <= a); c = a - b; } function mul(uint a, uint b) internal pure returns (uint c) { c = a * b; require(a == 0 || c / a == b); } function div(uint a, uint b) internal pure returns (uint c) { require(b > 0); c = a / b; } } library ExtendedMath { //return the smaller of the two inputs (a or b) function limitLessThan(uint a, uint b) internal pure returns (uint c) { if(a > b) return b; return a; } } // ---------------------------------------------------------------------------- // ERC-20 Token Interface // ---------------------------------------------------------------------------- contract ERC20Interface { function totalSupply() public constant returns (uint); function balanceOf(address tokenOwner) public constant returns (uint balance); function allowance(address tokenOwner, address spender) public constant returns (uint remaining); function transfer(address to, uint tokens) public returns (bool success); function approve(address spender, uint tokens) public returns (bool success); function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); } // ---------------------------------------------------------------------------- // Contract function to receive approval and execute function in one call // ---------------------------------------------------------------------------- contract ApproveAndCallFallBack { function receiveApproval(address from, uint256 tokens, address token, bytes data) public; } // ---------------------------------------------------------------------------- // Owned contract // ---------------------------------------------------------------------------- contract Owned { address public owner; address public newOwner; event OwnershipTransferred(address indexed _from, address indexed _to); function Owned() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership(address _newOwner) public onlyOwner { newOwner = _newOwner; } function acceptOwnership() public { require(msg.sender == newOwner); OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = address(0); } } contract ERC918Interface { function mint(uint256 nonce, bytes32 challenge_digest) public returns (bool success); function getChallengeNumber() public constant returns (bytes32); function getMiningDifficulty() public constant returns (uint); function getMiningTarget() public constant returns (uint); function getMiningReward() public constant returns (uint); event Mint(address indexed from, uint reward_amount, uint epochCount, bytes32 newChallengeNumber); address public lastRewardTo; uint public lastRewardAmount; uint public lastRewardEthBlockNumber; bytes32 public challengeNumber; } // ---------------------------------------------------------------------------- // ERC-20 Token // ---------------------------------------------------------------------------- contract _0xGoldToken is ERC20Interface, Owned, ERC918Interface { using SafeMath for uint; using ExtendedMath for uint; string public symbol; string public name; uint8 public decimals; uint public _totalSupply; uint public latestDifficultyPeriodStarted; uint public epochCount; //number of 'blocks' mined uint public _BLOCKS_PER_READJUSTMENT = 100; //a little number and a big number uint public _MINIMUM_TARGET = 2**16; uint public _MAXIMUM_TARGET = 2**234; address public parentAddress; // for merge mining uint public miningTarget; bytes32 public challengeNumber; //generate a new one when a new reward is minted uint public rewardEra; uint public maxSupplyForEra; address public lastRewardTo; uint public lastRewardAmount; uint public lastRewardEthBlockNumber; bool locked = false; mapping(bytes32 => bytes32) solutionForChallenge; uint public tokensMinted; mapping(address => uint) balances; mapping(address => mapping(address => uint)) allowed; // ------------------------------------------------------------------------ // Constructor // ------------------------------------------------------------------------ function _0xGoldToken() public onlyOwner{ symbol = "0xGOLD"; name = "0xGold Token"; decimals = 10; _totalSupply = 5000000 * 10**uint(decimals); if(locked) revert(); locked = true; tokensMinted = 500000000000000; // 50,000 rewardEra = 0; maxSupplyForEra = _totalSupply.div(2); miningTarget = _MAXIMUM_TARGET; latestDifficultyPeriodStarted = block.number; _startNewMiningEpoch(); parentAddress = 0xB6eD7644C69416d67B522e20bC294A9a9B405B31; // for merge mining balances[owner] = tokensMinted; Transfer(address(0), owner, tokensMinted); } function mint(uint256 nonce, bytes32 challenge_digest) public returns (bool success) { //the PoW must contain work that includes a recent ethereum block hash (challenge number) and the msg.sender's address to prevent MITM attacks bytes32 digest = keccak256(challengeNumber, msg.sender, nonce ); //the challenge digest must match the expected if (digest != challenge_digest) revert(); //the digest must be smaller than the target if(uint256(digest) > miningTarget) revert(); //only allow one reward for each challenge bytes32 solution = solutionForChallenge[challengeNumber]; solutionForChallenge[challengeNumber] = digest; if(solution != 0x0) revert(); //prevent the same answer from awarding twice uint reward_amount = getMiningReward(); balances[msg.sender] = balances[msg.sender].add(reward_amount); tokensMinted = tokensMinted.add(reward_amount); //Cannot mint more tokens than there are assert(tokensMinted <= maxSupplyForEra); //set readonly diagnostics data lastRewardTo = msg.sender; lastRewardAmount = reward_amount; lastRewardEthBlockNumber = block.number; _startNewMiningEpoch(); Mint(msg.sender, reward_amount, epochCount, challengeNumber ); return true; } //a new 'block' to be mined function _startNewMiningEpoch() internal { //if max supply for the era will be exceeded next reward round then enter the new era before that happens //2 is the final reward era, almost all tokens minted //once the final era is reached, more tokens will not be given out because the assert function if( tokensMinted.add(getMiningReward()) > maxSupplyForEra && rewardEra < 2) { rewardEra = rewardEra + 1; } //set the next minted supply at which the era will change // total supply is 50000000000000000 because of 10 decimal places maxSupplyForEra = _totalSupply - _totalSupply.div( 2**(rewardEra + 1)); epochCount = epochCount.add(1); //every so often, readjust difficulty. Dont readjust when deploying if(epochCount % _BLOCKS_PER_READJUSTMENT == 0) { _reAdjustDifficulty(); } //make the latest ethereum block hash a part of the next challenge for PoW to prevent pre-mining future blocks //do this last since this is a protection mechanism in the mint() function challengeNumber = block.blockhash(block.number - 1); } //readjust the target by 5 percent function _reAdjustDifficulty() internal { uint ethBlocksSinceLastDifficultyPeriod = block.number - latestDifficultyPeriodStarted; //assume 240 ethereum blocks per hour //we want miners to spend 7 minutes to mine each 'block', about 28 ethereum blocks = one 0xGOLD epoch uint epochsMined = _BLOCKS_PER_READJUSTMENT; //256 uint targetEthBlocksPerDiffPeriod = epochsMined * 28; //should be 28 times slower than ethereum //if there were less eth blocks passed in time than expected if( ethBlocksSinceLastDifficultyPeriod < targetEthBlocksPerDiffPeriod ) { uint excess_block_pct = (targetEthBlocksPerDiffPeriod.mul(100)).div( ethBlocksSinceLastDifficultyPeriod ); uint excess_block_pct_extra = excess_block_pct.sub(100).limitLessThan(1000); // If there were 5% more blocks mined than expected then this is 5. If there were 100% more blocks mined than expected then this is 100. //make it harder miningTarget = miningTarget.sub(miningTarget.div(2000).mul(excess_block_pct_extra)); //by up to 50 % }else{ uint shortage_block_pct = (ethBlocksSinceLastDifficultyPeriod.mul(100)).div( targetEthBlocksPerDiffPeriod ); uint shortage_block_pct_extra = shortage_block_pct.sub(100).limitLessThan(1000); //always between 0 and 1000 //make it easier miningTarget = miningTarget.add(miningTarget.div(2000).mul(shortage_block_pct_extra)); //by up to 50 % } latestDifficultyPeriodStarted = block.number; if(miningTarget < _MINIMUM_TARGET) //very difficult { miningTarget = _MINIMUM_TARGET; } if(miningTarget > _MAXIMUM_TARGET) //very easy { miningTarget = _MAXIMUM_TARGET; } } //this is a recent ethereum block hash, used to prevent pre-mining future blocks function getChallengeNumber() public constant returns (bytes32) { return challengeNumber; } //the number of zeroes the digest of the PoW solution requires. Auto adjusts function getMiningDifficulty() public constant returns (uint) { return _MAXIMUM_TARGET.div(miningTarget); } function getMiningTarget() public constant returns (uint) { return miningTarget; } //reward is cut in half every reward era (as tokens are mined) function getMiningReward() public constant returns (uint) { //every reward era, the reward amount halves. return (16 * 10**uint(decimals) ).div( 2**rewardEra ) ; } //help debug mining software function getMintDigest(uint256 nonce, bytes32 challenge_digest, bytes32 challenge_number) public view returns (bytes32 digesttest) { bytes32 digest = keccak256(challenge_number,msg.sender,nonce); return digest; } //help debug mining software function checkMintSolution(uint256 nonce, bytes32 challenge_digest, bytes32 challenge_number, uint testTarget) public view returns (bool success) { bytes32 digest = keccak256(challenge_number,msg.sender,nonce); if(uint256(digest) > testTarget) revert(); return (digest == challenge_digest); } // ------------------------------------------------------------------------ // Total supply // ------------------------------------------------------------------------ function totalSupply() public constant returns (uint) { return _totalSupply - balances[address(0)]; } // ------------------------------------------------------------------------ // Get the token balance for account `tokenOwner` // ------------------------------------------------------------------------ function balanceOf(address tokenOwner) public constant returns (uint balance) { return balances[tokenOwner]; } // ------------------------------------------------------------------------ // Transfer the balance from token owner's account to `to` account // - Owner's account must have sufficient balance to transfer // - 0 value transfers are allowed // ------------------------------------------------------------------------ function transfer(address to, uint tokens) public returns (bool success) { balances[msg.sender] = balances[msg.sender].sub(tokens); balances[to] = balances[to].add(tokens); Transfer(msg.sender, to, tokens); return true; } // ------------------------------------------------------------------------ // Token owner can approve for `spender` to transferFrom(...) `tokens` // from the token owner's account // ------------------------------------------------------------------------ function approve(address spender, uint tokens) public returns (bool success) { allowed[msg.sender][spender] = tokens; Approval(msg.sender, spender, tokens); return true; } // ------------------------------------------------------------------------ // Transfer `tokens` from the `from` account to the `to` account // ------------------------------------------------------------------------ function transferFrom(address from, address to, uint tokens) public returns (bool success) { balances[from] = balances[from].sub(tokens); allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens); balances[to] = balances[to].add(tokens); Transfer(from, to, tokens); return true; } // ------------------------------------------------------------------------ // Returns the amount of tokens approved by the owner that can be // transferred to the spender's account // ------------------------------------------------------------------------ function allowance(address tokenOwner, address spender) public constant returns (uint remaining) { return allowed[tokenOwner][spender]; } // ------------------------------------------------------------------------ // Token owner can approve for `spender` to transferFrom(...) `tokens` // from the token owner's account. The `spender` contract function // `receiveApproval(...)` is then executed // ------------------------------------------------------------------------ function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success) { allowed[msg.sender][spender] = tokens; Approval(msg.sender, spender, tokens); ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data); return true; } // ------------------------------------------------------------------------ // Don't accept ETH // ------------------------------------------------------------------------ function () public payable { revert(); } // ------------------------------------------------------------------------ // Owner can transfer out any accidentally sent ERC20 tokens // ------------------------------------------------------------------------ function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) { return ERC20Interface(tokenAddress).transfer(owner, tokens); } // ------------------------------------------------------------------------ // Merge Mining // ------------------------------------------------------------------------ function merge() public returns (bool success) { bytes32 future_challengeNumber = block.blockhash(block.number - 1); if(challengeNumber == future_challengeNumber){ return false; // ( this is likely the second time that mergeMint() has been called in a transaction, so return false (don't revert)) } //verify Parent::lastRewardTo == msg.sender; if(ERC918Interface(parentAddress).lastRewardTo() != msg.sender){ return false; // a different address called mint last so return false ( don't revert) } //verify Parent::lastRewardEthBlockNumber == block.number; if(ERC918Interface(parentAddress).lastRewardEthBlockNumber() != block.number){ return false; // parent::mint() was called in a different block number so return false ( don't revert) } bytes32 parentChallengeNumber = ERC918Interface(parentAddress).challengeNumber(); bytes32 solution = solutionForChallenge[parentChallengeNumber]; if(solution != 0x0) return false; //prevent the same answer from awarding twice bytes32 digest = 'merge'; solutionForChallenge[parentChallengeNumber] = digest; //so now we may safely run the relevant logic to give an award to the sender, and update the contract uint reward_amount = getMiningReward(); balances[msg.sender] = balances[msg.sender].add(reward_amount); tokensMinted = tokensMinted.add(reward_amount); //Cannot mint more tokens than there are assert(tokensMinted <= maxSupplyForEra); //set readonly diagnostics data lastRewardTo = msg.sender; lastRewardAmount = reward_amount; lastRewardEthBlockNumber = block.number; _startNewMiningEpoch(); Mint(msg.sender, reward_amount, epochCount, 0 ); // use 0 to indicate a merge mine return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"parentAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"merge","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardEthBlockNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningDifficulty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"}],"name":"mint","outputs":[{"name":"success","type":"bool"}],"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":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardEra","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningTarget","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningReward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getChallengeNumber","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxSupplyForEra","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensMinted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardTo","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"},{"name":"challenge_number","type":"bytes32"},{"name":"testTarget","type":"uint256"}],"name":"checkMintSolution","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"epochCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_MAXIMUM_TARGET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"miningTarget","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"challengeNumber","outputs":[{"name":"","type":"bytes32"}],"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":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"},{"name":"challenge_number","type":"bytes32"}],"name":"getMintDigest","outputs":[{"name":"digesttest","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_BLOCKS_PER_READJUSTMENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"latestDifficultyPeriodStarted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_MINIMUM_TARGET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"reward_amount","type":"uint256"},{"indexed":false,"name":"epochCount","type":"uint256"},{"indexed":false,"name":"newChallengeNumber","type":"bytes32"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
60606040526064600c5562010000600d557d040000000000000000000000000000000000000000000000000000000000600e556017805460ff1916905534156200004857600080fd5b60008054600160a060020a03338116600160a060020a031990921682179283905591909116146200007857600080fd5b6040805190810160405260068082527f3078474f4c4400000000000000000000000000000000000000000000000000006020830152908051620000c092916020019062000580565b5060408051908101604052600c81527f3078476f6c6420546f6b656e0000000000000000000000000000000000000000602082015260079080516200010a92916020019062000580565b506008805460ff1916600a90811791829055624c4b4060ff92831690910a0260095560175416156200013b57600080fd5b6017805460ff191660011790556601c6bf52634000601955600060125560095462000176906002640100000000620013746200021f82021704565b601355600e5460105543600a556200019b640100000000620012d76200024282021704565b600f8054600160a060020a03191673b6ed7644c69416d67b522e20bc294a9a9b405b3117905560195460008054600160a060020a039081168252601a60205260408083208490558254909116927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915190815260200160405180910390a362000622565b60008082116200022e57600080fd5b81838115156200023a57fe5b049392505050565b601354620002796200026164010000000062000d496200032182021704565b60195490640100000000620012c76200035682021704565b1180156200028957506002601254105b1562000299576012805460010190555b601254600954620002be9160010160020a640100000000620013746200021f82021704565b60095403601355600b54620002e3906001640100000000620012c76200035682021704565b600b819055600c5490811515620002f657fe5b061515620003165762000316640100000000620013aa6200036d82021704565b600019430140601155565b601254600854600091620003509160ff16600a0a6010029060020a6401000000006200021f8102620013741704565b90505b90565b818101828110156200036757600080fd5b92915050565b600a54600c54439190910390601c81026000808080848710156200046157620003c087620003ab876064640100000000620014e46200052882021704565b90640100000000620013746200021f82021704565b9350620003f96103e8620003e4866064640100000000620013956200055082021704565b90640100000000620015096200056682021704565b92506200045862000440846200042b6107d06010546200021f6401000000000262001374179091906401000000009004565b90640100000000620014e46200052882021704565b60105490640100000000620013956200055082021704565b601055620004f3565b6200048185620003ab896064640100000000620014e46200052882021704565b9150620004a56103e8620003e4846064640100000000620013956200055082021704565b9050620004ef620004d7826200042b6107d06010546200021f6401000000000262001374179091906401000000009004565b60105490640100000000620012c76200035682021704565b6010555b43600a55600d5460105410156200050b57600d546010555b600e5460105411156200051f57600e546010555b50505050505050565b8181028215806200054457508183828115156200054157fe5b04145b15156200036757600080fd5b6000828211156200056057600080fd5b50900390565b6000818311156200057957508062000367565b5090919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005c357805160ff1916838001178555620005f3565b82800160010185558215620005f3579182015b82811115620005f3578251825591602001919060010190620005d6565b506200060192915062000605565b5090565b6200035391905b808211156200060157600081556001016200060c565b61154d80620006326000396000f3006060604052600436106101bd5763ffffffff60e060020a600035041662821de381146101c257806306fdde03146101f1578063095ea7b31461027b5780630b65108b146102b1578063163aa00d146102c457806317da485f146102e95780631801fbe5146102fc57806318160ddd1461031557806323b872dd146103285780632d38bf7a14610350578063313ce5671461036357806332e997081461038c5780633eaaf86b1461039f578063490203a7146103b25780634ef37628146103c55780634fa972e1146103d85780636de9f32b146103eb5780636fd396d6146103fe57806370a082311461041157806379ba50971461043057806381269a5614610445578063829965cc1461046457806387a2a9d6146104775780638a769d351461048a5780638ae0368b1461049d5780638da5cb5b146104b057806395d89b41146104c357806397566aa0146104d6578063a9059cbb146104f2578063b5ade81b14610514578063bafedcaa14610527578063cae9ca511461053a578063cb9ae7071461059f578063d4ee1d90146105b2578063dc39d06d146105c5578063dc6e9cf9146105e7578063dd62ed3e146105fa578063f2fde38b1461061f575b600080fd5b34156101cd57600080fd5b6101d561063e565b604051600160a060020a03909116815260200160405180910390f35b34156101fc57600080fd5b61020461064d565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610240578082015183820152602001610228565b50505050905090810190601f16801561026d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561028657600080fd5b61029d600160a060020a03600435166024356106eb565b604051901515815260200160405180910390f35b34156102bc57600080fd5b61029d610758565b34156102cf57600080fd5b6102d7610a37565b60405190815260200160405180910390f35b34156102f457600080fd5b6102d7610a3d565b341561030757600080fd5b61029d600435602435610a5b565b341561032057600080fd5b6102d7610be9565b341561033357600080fd5b61029d600160a060020a0360043581169060243516604435610c1b565b341561035b57600080fd5b6102d7610d2e565b341561036e57600080fd5b610376610d34565b60405160ff909116815260200160405180910390f35b341561039757600080fd5b6102d7610d3d565b34156103aa57600080fd5b6102d7610d43565b34156103bd57600080fd5b6102d7610d49565b34156103d057600080fd5b6102d7610d68565b34156103e357600080fd5b6102d7610d6e565b34156103f657600080fd5b6102d7610d74565b341561040957600080fd5b6101d5610d7a565b341561041c57600080fd5b6102d7600160a060020a0360043516610d89565b341561043b57600080fd5b610443610da4565b005b341561045057600080fd5b61029d600435602435604435606435610e32565b341561046f57600080fd5b6102d7610e8a565b341561048257600080fd5b6102d7610e90565b341561049557600080fd5b6102d7610e96565b34156104a857600080fd5b6102d7610e9c565b34156104bb57600080fd5b6101d5610ea2565b34156104ce57600080fd5b610204610eb1565b34156104e157600080fd5b6102d7600435602435604435610f1c565b34156104fd57600080fd5b61029d600160a060020a0360043516602435610f62565b341561051f57600080fd5b6102d7611021565b341561053257600080fd5b6102d7611027565b341561054557600080fd5b61029d60048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061102d95505050505050565b34156105aa57600080fd5b6102d7611194565b34156105bd57600080fd5b6101d561119a565b34156105d057600080fd5b61029d600160a060020a03600435166024356111a9565b34156105f257600080fd5b6102d761124c565b341561060557600080fd5b6102d7600160a060020a0360043581169060243516611252565b341561062a57600080fd5b610443600160a060020a036004351661127d565b600f54600160a060020a031681565b60078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106e35780601f106106b8576101008083540402835291602001916106e3565b820191906000526020600020905b8154815290600101906020018083116106c657829003601f168201915b505050505081565b600160a060020a033381166000818152601b6020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60115460009060001943014090829081908190819085141561077d5760009550610a2f565b600f54600160a060020a033381169116636fd396d66000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156107c957600080fd5b6102c65a03f115156107da57600080fd5b50505060405180519050600160a060020a03161415156107fd5760009550610a2f565b600f544390600160a060020a031663163aa00d6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561084757600080fd5b6102c65a03f1151561085857600080fd5b505050604051805190501415156108725760009550610a2f565b600f54600160a060020a0316638ae0368b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156108ba57600080fd5b6102c65a03f115156108cb57600080fd5b505050604051805160008181526018602052604090205490955093505082156108f75760009550610a2f565b60008481526018602052604090207f6d65726765000000000000000000000000000000000000000000000000000000908190559150610934610d49565b600160a060020a0333166000908152601a6020526040902054909150610960908263ffffffff6112c716565b600160a060020a0333166000908152601a602052604090205560195461098c908263ffffffff6112c716565b601981905560135490111561099d57fe5b6014805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a03161790556015819055436016556109d66112d7565b33600160a060020a03167fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d82600b54600060405192835260208301919091526040808301919091526060909101905180910390a2600195505b505050505090565b60165481565b6000610a56601054600e5461137490919063ffffffff16565b905090565b6000806000806011543387604051928352600160a060020a03919091166c0100000000000000000000000002602083015260348201526054016040519081900390209250848314610aab57600080fd5b601054831115610aba57600080fd5b601154600090815260186020526040902080549084905591508115610ade57600080fd5b610ae6610d49565b600160a060020a0333166000908152601a6020526040902054909150610b12908263ffffffff6112c716565b600160a060020a0333166000908152601a6020526040902055601954610b3e908263ffffffff6112c716565b6019819055601354901115610b4f57fe5b6014805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a0316179055601581905543601655610b886112d7565b33600160a060020a03167fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d82600b5460115460405192835260208301919091526040808301919091526060909101905180910390a250600195945050505050565b60008052601a6020527fb75ecc04ed35f89790e98640e901bda41eceff0cb896cf2765fb697680253750546009540390565b600160a060020a0383166000908152601a6020526040812054610c44908363ffffffff61139516565b600160a060020a038086166000908152601a6020908152604080832094909455601b8152838220339093168252919091522054610c87908363ffffffff61139516565b600160a060020a038086166000908152601b6020908152604080832033851684528252808320949094559186168152601a9091522054610ccd908363ffffffff6112c716565b600160a060020a038085166000818152601a6020526040908190209390935591908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b60125481565b60085460ff1681565b60105490565b60095481565b601254600854600091610a569160ff16600a0a6010029060020a611374565b60115490565b60135481565b60195481565b601454600160a060020a031681565b600160a060020a03166000908152601a602052604090205490565b60015433600160a060020a03908116911614610dbf57600080fd5b600154600054600160a060020a0391821691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600080833387604051928352600160a060020a03919091166c010000000000000000000000000260208301526034820152605401604051908190039020905082811115610e7e57600080fd5b93909314949350505050565b600b5481565b600e5481565b60105481565b60115481565b600054600160a060020a031681565b60068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106e35780601f106106b8576101008083540402835291602001916106e3565b600080823386604051928352600160a060020a03919091166c01000000000000000000000000026020830152603482015260540160405190819003902095945050505050565b600160a060020a0333166000908152601a6020526040812054610f8b908363ffffffff61139516565b600160a060020a033381166000908152601a60205260408082209390935590851681522054610fc0908363ffffffff6112c716565b600160a060020a038085166000818152601a602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b600c5481565b60155481565b600160a060020a033381166000818152601b6020908152604080832094881680845294909152808220869055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a383600160a060020a0316638f4ffcb1338530866040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611128578082015183820152602001611110565b50505050905090810190601f1680156111555780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b151561117657600080fd5b6102c65a03f1151561118757600080fd5b5060019695505050505050565b600a5481565b600154600160a060020a031681565b6000805433600160a060020a039081169116146111c557600080fd5b60008054600160a060020a038086169263a9059cbb929091169085906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561122b57600080fd5b6102c65a03f1151561123c57600080fd5b5050506040518051949350505050565b600d5481565b600160a060020a039182166000908152601b6020908152604080832093909416825291909152205490565b60005433600160a060020a0390811691161461129857600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b8181018281101561075257600080fd5b6013546112f46112e5610d49565b6019549063ffffffff6112c716565b11801561130357506002601254105b15611312576012805460010190555b60125460095461132d9160010160020a63ffffffff61137416565b60095403601355600b5461134890600163ffffffff6112c716565b600b819055600c549081151561135a57fe5b061515611369576113696113aa565b600019430140601155565b600080821161138257600080fd5b818381151561138d57fe5b049392505050565b6000828211156113a457600080fd5b50900390565b600a54600c54439190910390601c8102600080808084871015611450576113e8876113dc87606463ffffffff6114e416565b9063ffffffff61137416565b935061140d6103e861140186606463ffffffff61139516565b9063ffffffff61150916565b92506114486114398461142d6107d060105461137490919063ffffffff16565b9063ffffffff6114e416565b6010549063ffffffff61139516565b6010556114b1565b611465856113dc89606463ffffffff6114e416565b915061147e6103e861140184606463ffffffff61139516565b90506114ad61149e8261142d6107d060105461137490919063ffffffff16565b6010549063ffffffff6112c716565b6010555b43600a55600d5460105410156114c857600d546010555b600e5460105411156114db57600e546010555b50505050505050565b8181028215806114fe57508183828115156114fb57fe5b04145b151561075257600080fd5b60008183111561151a575080610752565b50909190505600a165627a7a72305820550952450a435ffac15f34e5b89c08d807a518f40fefa3f258b8116679d2e7760029
Deployed Bytecode
0x6060604052600436106101bd5763ffffffff60e060020a600035041662821de381146101c257806306fdde03146101f1578063095ea7b31461027b5780630b65108b146102b1578063163aa00d146102c457806317da485f146102e95780631801fbe5146102fc57806318160ddd1461031557806323b872dd146103285780632d38bf7a14610350578063313ce5671461036357806332e997081461038c5780633eaaf86b1461039f578063490203a7146103b25780634ef37628146103c55780634fa972e1146103d85780636de9f32b146103eb5780636fd396d6146103fe57806370a082311461041157806379ba50971461043057806381269a5614610445578063829965cc1461046457806387a2a9d6146104775780638a769d351461048a5780638ae0368b1461049d5780638da5cb5b146104b057806395d89b41146104c357806397566aa0146104d6578063a9059cbb146104f2578063b5ade81b14610514578063bafedcaa14610527578063cae9ca511461053a578063cb9ae7071461059f578063d4ee1d90146105b2578063dc39d06d146105c5578063dc6e9cf9146105e7578063dd62ed3e146105fa578063f2fde38b1461061f575b600080fd5b34156101cd57600080fd5b6101d561063e565b604051600160a060020a03909116815260200160405180910390f35b34156101fc57600080fd5b61020461064d565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610240578082015183820152602001610228565b50505050905090810190601f16801561026d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561028657600080fd5b61029d600160a060020a03600435166024356106eb565b604051901515815260200160405180910390f35b34156102bc57600080fd5b61029d610758565b34156102cf57600080fd5b6102d7610a37565b60405190815260200160405180910390f35b34156102f457600080fd5b6102d7610a3d565b341561030757600080fd5b61029d600435602435610a5b565b341561032057600080fd5b6102d7610be9565b341561033357600080fd5b61029d600160a060020a0360043581169060243516604435610c1b565b341561035b57600080fd5b6102d7610d2e565b341561036e57600080fd5b610376610d34565b60405160ff909116815260200160405180910390f35b341561039757600080fd5b6102d7610d3d565b34156103aa57600080fd5b6102d7610d43565b34156103bd57600080fd5b6102d7610d49565b34156103d057600080fd5b6102d7610d68565b34156103e357600080fd5b6102d7610d6e565b34156103f657600080fd5b6102d7610d74565b341561040957600080fd5b6101d5610d7a565b341561041c57600080fd5b6102d7600160a060020a0360043516610d89565b341561043b57600080fd5b610443610da4565b005b341561045057600080fd5b61029d600435602435604435606435610e32565b341561046f57600080fd5b6102d7610e8a565b341561048257600080fd5b6102d7610e90565b341561049557600080fd5b6102d7610e96565b34156104a857600080fd5b6102d7610e9c565b34156104bb57600080fd5b6101d5610ea2565b34156104ce57600080fd5b610204610eb1565b34156104e157600080fd5b6102d7600435602435604435610f1c565b34156104fd57600080fd5b61029d600160a060020a0360043516602435610f62565b341561051f57600080fd5b6102d7611021565b341561053257600080fd5b6102d7611027565b341561054557600080fd5b61029d60048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061102d95505050505050565b34156105aa57600080fd5b6102d7611194565b34156105bd57600080fd5b6101d561119a565b34156105d057600080fd5b61029d600160a060020a03600435166024356111a9565b34156105f257600080fd5b6102d761124c565b341561060557600080fd5b6102d7600160a060020a0360043581169060243516611252565b341561062a57600080fd5b610443600160a060020a036004351661127d565b600f54600160a060020a031681565b60078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106e35780601f106106b8576101008083540402835291602001916106e3565b820191906000526020600020905b8154815290600101906020018083116106c657829003601f168201915b505050505081565b600160a060020a033381166000818152601b6020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60115460009060001943014090829081908190819085141561077d5760009550610a2f565b600f54600160a060020a033381169116636fd396d66000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156107c957600080fd5b6102c65a03f115156107da57600080fd5b50505060405180519050600160a060020a03161415156107fd5760009550610a2f565b600f544390600160a060020a031663163aa00d6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561084757600080fd5b6102c65a03f1151561085857600080fd5b505050604051805190501415156108725760009550610a2f565b600f54600160a060020a0316638ae0368b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156108ba57600080fd5b6102c65a03f115156108cb57600080fd5b505050604051805160008181526018602052604090205490955093505082156108f75760009550610a2f565b60008481526018602052604090207f6d65726765000000000000000000000000000000000000000000000000000000908190559150610934610d49565b600160a060020a0333166000908152601a6020526040902054909150610960908263ffffffff6112c716565b600160a060020a0333166000908152601a602052604090205560195461098c908263ffffffff6112c716565b601981905560135490111561099d57fe5b6014805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a03161790556015819055436016556109d66112d7565b33600160a060020a03167fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d82600b54600060405192835260208301919091526040808301919091526060909101905180910390a2600195505b505050505090565b60165481565b6000610a56601054600e5461137490919063ffffffff16565b905090565b6000806000806011543387604051928352600160a060020a03919091166c0100000000000000000000000002602083015260348201526054016040519081900390209250848314610aab57600080fd5b601054831115610aba57600080fd5b601154600090815260186020526040902080549084905591508115610ade57600080fd5b610ae6610d49565b600160a060020a0333166000908152601a6020526040902054909150610b12908263ffffffff6112c716565b600160a060020a0333166000908152601a6020526040902055601954610b3e908263ffffffff6112c716565b6019819055601354901115610b4f57fe5b6014805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a0316179055601581905543601655610b886112d7565b33600160a060020a03167fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d82600b5460115460405192835260208301919091526040808301919091526060909101905180910390a250600195945050505050565b60008052601a6020527fb75ecc04ed35f89790e98640e901bda41eceff0cb896cf2765fb697680253750546009540390565b600160a060020a0383166000908152601a6020526040812054610c44908363ffffffff61139516565b600160a060020a038086166000908152601a6020908152604080832094909455601b8152838220339093168252919091522054610c87908363ffffffff61139516565b600160a060020a038086166000908152601b6020908152604080832033851684528252808320949094559186168152601a9091522054610ccd908363ffffffff6112c716565b600160a060020a038085166000818152601a6020526040908190209390935591908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b60125481565b60085460ff1681565b60105490565b60095481565b601254600854600091610a569160ff16600a0a6010029060020a611374565b60115490565b60135481565b60195481565b601454600160a060020a031681565b600160a060020a03166000908152601a602052604090205490565b60015433600160a060020a03908116911614610dbf57600080fd5b600154600054600160a060020a0391821691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600080833387604051928352600160a060020a03919091166c010000000000000000000000000260208301526034820152605401604051908190039020905082811115610e7e57600080fd5b93909314949350505050565b600b5481565b600e5481565b60105481565b60115481565b600054600160a060020a031681565b60068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106e35780601f106106b8576101008083540402835291602001916106e3565b600080823386604051928352600160a060020a03919091166c01000000000000000000000000026020830152603482015260540160405190819003902095945050505050565b600160a060020a0333166000908152601a6020526040812054610f8b908363ffffffff61139516565b600160a060020a033381166000908152601a60205260408082209390935590851681522054610fc0908363ffffffff6112c716565b600160a060020a038085166000818152601a602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b600c5481565b60155481565b600160a060020a033381166000818152601b6020908152604080832094881680845294909152808220869055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a383600160a060020a0316638f4ffcb1338530866040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611128578082015183820152602001611110565b50505050905090810190601f1680156111555780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b151561117657600080fd5b6102c65a03f1151561118757600080fd5b5060019695505050505050565b600a5481565b600154600160a060020a031681565b6000805433600160a060020a039081169116146111c557600080fd5b60008054600160a060020a038086169263a9059cbb929091169085906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561122b57600080fd5b6102c65a03f1151561123c57600080fd5b5050506040518051949350505050565b600d5481565b600160a060020a039182166000908152601b6020908152604080832093909416825291909152205490565b60005433600160a060020a0390811691161461129857600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b8181018281101561075257600080fd5b6013546112f46112e5610d49565b6019549063ffffffff6112c716565b11801561130357506002601254105b15611312576012805460010190555b60125460095461132d9160010160020a63ffffffff61137416565b60095403601355600b5461134890600163ffffffff6112c716565b600b819055600c549081151561135a57fe5b061515611369576113696113aa565b600019430140601155565b600080821161138257600080fd5b818381151561138d57fe5b049392505050565b6000828211156113a457600080fd5b50900390565b600a54600c54439190910390601c8102600080808084871015611450576113e8876113dc87606463ffffffff6114e416565b9063ffffffff61137416565b935061140d6103e861140186606463ffffffff61139516565b9063ffffffff61150916565b92506114486114398461142d6107d060105461137490919063ffffffff16565b9063ffffffff6114e416565b6010549063ffffffff61139516565b6010556114b1565b611465856113dc89606463ffffffff6114e416565b915061147e6103e861140184606463ffffffff61139516565b90506114ad61149e8261142d6107d060105461137490919063ffffffff16565b6010549063ffffffff6112c716565b6010555b43600a55600d5460105410156114c857600d546010555b600e5460105411156114db57600e546010555b50505050505050565b8181028215806114fe57508183828115156114fb57fe5b04145b151561075257600080fd5b60008183111561151a575080610752565b50909190505600a165627a7a72305820550952450a435ffac15f34e5b89c08d807a518f40fefa3f258b8116679d2e7760029
Swarm Source
bzzr://550952450a435ffac15f34e5b89c08d807a518f40fefa3f258b8116679d2e776
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.