More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 148,339 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 21584259 | 43 hrs ago | IN | 0 ETH | 0.00029063 | ||||
Set Approval For... | 21550251 | 6 days ago | IN | 0 ETH | 0.00017635 | ||||
Set Approval For... | 21485328 | 15 days ago | IN | 0 ETH | 0.00034681 | ||||
Set Approval For... | 21481694 | 16 days ago | IN | 0 ETH | 0.00030981 | ||||
Set Approval For... | 21404239 | 26 days ago | IN | 0 ETH | 0.00052725 | ||||
Set Approval For... | 21325188 | 37 days ago | IN | 0 ETH | 0.00110814 | ||||
Set Approval For... | 21282338 | 43 days ago | IN | 0 ETH | 0.00080396 | ||||
Set Approval For... | 21220613 | 52 days ago | IN | 0 ETH | 0.00022796 | ||||
Approve | 21189539 | 56 days ago | IN | 0 ETH | 0.00105625 | ||||
Set Approval For... | 21163390 | 60 days ago | IN | 0 ETH | 0.00035865 | ||||
Set Approval For... | 21019282 | 80 days ago | IN | 0 ETH | 0.00016393 | ||||
Set Approval For... | 21011673 | 81 days ago | IN | 0 ETH | 0.00016348 | ||||
Set Approval For... | 21011670 | 81 days ago | IN | 0 ETH | 0.00017269 | ||||
Set Approval For... | 20998880 | 83 days ago | IN | 0 ETH | 0.00022698 | ||||
Transfer From | 20889676 | 98 days ago | IN | 0 ETH | 0.00015151 | ||||
Transfer From | 20889674 | 98 days ago | IN | 0 ETH | 0.00015003 | ||||
Set Approval For... | 20844935 | 105 days ago | IN | 0 ETH | 0.00043578 | ||||
Set Approval For... | 20798510 | 111 days ago | IN | 0 ETH | 0.00028509 | ||||
Set Approval For... | 20759332 | 116 days ago | IN | 0 ETH | 0.00011548 | ||||
Set Approval For... | 20748521 | 118 days ago | IN | 0 ETH | 0.00010867 | ||||
Set Approval For... | 20718252 | 122 days ago | IN | 0 ETH | 0.00005254 | ||||
Set Approval For... | 20708590 | 124 days ago | IN | 0 ETH | 0.00006598 | ||||
Set Approval For... | 20647495 | 132 days ago | IN | 0 ETH | 0.00001984 | ||||
Transfer From | 20616753 | 136 days ago | IN | 0 ETH | 0.0000659 | ||||
Transfer From | 20616749 | 136 days ago | IN | 0 ETH | 0.00006214 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
AxieCore
Compiler Version
v0.4.19+commit.c4cbbb05
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-04-02 */ pragma solidity ^0.4.19; // File: contracts/erc/erc165/IERC165.sol /// @title ERC-165 Standard Interface Detection /// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md interface IERC165 { /// @notice Query if a contract implements an interface /// @param interfaceID The interface identifier, as specified in ERC-165 /// @dev Interface identification is specified in ERC-165. This function /// uses less than 30,000 gas. /// @return `true` if the contract implements `interfaceID` and /// `interfaceID` is not 0xffffffff, `false` otherwise function supportsInterface(bytes4 interfaceID) external view returns (bool); } // File: contracts/erc/erc165/ERC165.sol contract ERC165 is IERC165 { /// @dev You must not set element 0xffffffff to true mapping (bytes4 => bool) internal supportedInterfaces; function ERC165() internal { supportedInterfaces[0x01ffc9a7] = true; // ERC-165 } function supportsInterface(bytes4 interfaceID) external view returns (bool) { return supportedInterfaces[interfaceID]; } } // File: contracts/erc/erc721/IERC721Base.sol /// @title ERC-721 Non-Fungible Token Standard /// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md /// Note: the ERC-165 identifier for this interface is 0x6466353c interface IERC721Base /* is IERC165 */ { /// @dev This emits when ownership of any NFT changes by any mechanism. /// This event emits when NFTs are created (`from` == 0) and destroyed /// (`to` == 0). Exception: during contract creation, any number of NFTs /// may be created and assigned without emitting Transfer. At the time of /// any transfer, the approved address for that NFT (if any) is reset to none. event Transfer(address indexed _from, address indexed _to, uint256 _tokenId); /// @dev This emits when the approved address for an NFT is changed or /// reaffirmed. The zero address indicates there is no approved address. /// When a Transfer event emits, this also indicates that the approved /// address for that NFT (if any) is reset to none. event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId); /// @dev This emits when an operator is enabled or disabled for an owner. /// The operator can manage all NFTs of the owner. event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); /// @notice Count all NFTs assigned to an owner /// @dev NFTs assigned to the zero address are considered invalid, and this /// function throws for queries about the zero address. /// @param _owner An address for whom to query the balance /// @return The number of NFTs owned by `_owner`, possibly zero function balanceOf(address _owner) external view returns (uint256); /// @notice Find the owner of an NFT /// @param _tokenId The identifier for an NFT /// @dev NFTs assigned to zero address are considered invalid, and queries /// about them do throw. /// @return The address of the owner of the NFT function ownerOf(uint256 _tokenId) external view returns (address); /// @notice Transfers the ownership of an NFT from one address to another address /// @dev Throws unless `msg.sender` is the current owner, an authorized /// operator, or the approved address for this NFT. Throws if `_from` is /// not the current owner. Throws if `_to` is the zero address. Throws if /// `_tokenId` is not a valid NFT. When transfer is complete, this function /// checks if `_to` is a smart contract (code size > 0). If so, it calls /// `onERC721Received` on `_to` and throws if the return value is not /// `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`. /// @param _from The current owner of the NFT /// @param _to The new owner /// @param _tokenId The NFT to transfer /// @param _data Additional data with no specified format, sent in call to `_to` // solium-disable-next-line arg-overflow function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes _data) external payable; /// @notice Transfers the ownership of an NFT from one address to another address /// @dev This works identically to the other function with an extra data parameter, /// except this function just sets data to [] /// @param _from The current owner of the NFT /// @param _to The new owner /// @param _tokenId The NFT to transfer function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE /// TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE /// THEY MAY BE PERMANENTLY LOST /// @dev Throws unless `msg.sender` is the current owner, an authorized /// operator, or the approved address for this NFT. Throws if `_from` is /// not the current owner. Throws if `_to` is the zero address. Throws if /// `_tokenId` is not a valid NFT. /// @param _from The current owner of the NFT /// @param _to The new owner /// @param _tokenId The NFT to transfer function transferFrom(address _from, address _to, uint256 _tokenId) external payable; /// @notice Set or reaffirm the approved address for an NFT /// @dev The zero address indicates there is no approved address. /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized /// operator of the current owner. /// @param _approved The new approved NFT controller /// @param _tokenId The NFT to approve function approve(address _approved, uint256 _tokenId) external payable; /// @notice Enable or disable approval for a third party ("operator") to manage /// all your asset. /// @dev Emits the ApprovalForAll event /// @param _operator Address to add to the set of authorized operators. /// @param _approved True if the operators is approved, false to revoke approval function setApprovalForAll(address _operator, bool _approved) external; /// @notice Get the approved address for a single NFT /// @dev Throws if `_tokenId` is not a valid NFT /// @param _tokenId The NFT to find the approved address for /// @return The approved address for this NFT, or the zero address if there is none function getApproved(uint256 _tokenId) external view returns (address); /// @notice Query if an address is an authorized operator for another address /// @param _owner The address that owns the NFTs /// @param _operator The address that acts on behalf of the owner /// @return True if `_operator` is an approved operator for `_owner`, false otherwise function isApprovedForAll(address _owner, address _operator) external view returns (bool); } // File: contracts/erc/erc721/IERC721Enumerable.sol /// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension /// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md /// Note: the ERC-165 identifier for this interface is 0x780e9d63 interface IERC721Enumerable /* is IERC721Base */ { /// @notice Count NFTs tracked by this contract /// @return A count of valid NFTs tracked by this contract, where each one of /// them has an assigned and queryable owner not equal to the zero address function totalSupply() external view returns (uint256); /// @notice Enumerate valid NFTs /// @dev Throws if `_index` >= `totalSupply()`. /// @param _index A counter less than `totalSupply()` /// @return The token identifier for the `_index`th NFT, /// (sort order not specified) function tokenByIndex(uint256 _index) external view returns (uint256); /// @notice Enumerate NFTs assigned to an owner /// @dev Throws if `_index` >= `balanceOf(_owner)` or if /// `_owner` is the zero address, representing invalid NFTs. /// @param _owner An address where we are interested in NFTs owned by them /// @param _index A counter less than `balanceOf(_owner)` /// @return The token identifier for the `_index`th NFT assigned to `_owner`, /// (sort order not specified) function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256 _tokenId); } // File: contracts/erc/erc721/IERC721TokenReceiver.sol /// @dev Note: the ERC-165 identifier for this interface is 0xf0b9e5ba interface IERC721TokenReceiver { /// @notice Handle the receipt of an NFT /// @dev The ERC721 smart contract calls this function on the recipient /// after a `transfer`. This function MAY throw to revert and reject the /// transfer. This function MUST use 50,000 gas or less. Return of other /// than the magic value MUST result in the transaction being reverted. /// Note: the contract address is always the message sender. /// @param _from The sending address /// @param _tokenId The NFT identifier which is being transfered /// @param _data Additional data with no specified format /// @return `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))` /// unless throwing function onERC721Received(address _from, uint256 _tokenId, bytes _data) external returns (bytes4); } // File: contracts/core/dependency/AxieManager.sol interface AxieSpawningManager { function isSpawningAllowed(uint256 _genes, address _owner) external returns (bool); function isRebirthAllowed(uint256 _axieId, uint256 _genes) external returns (bool); } interface AxieRetirementManager { function isRetirementAllowed(uint256 _axieId, bool _rip) external returns (bool); } interface AxieMarketplaceManager { function isTransferAllowed(address _from, address _to, uint256 _axieId) external returns (bool); } interface AxieGeneManager { function isEvolvementAllowed(uint256 _axieId, uint256 _newGenes) external returns (bool); } // File: contracts/core/dependency/AxieDependency.sol contract AxieDependency { address public whitelistSetterAddress; AxieSpawningManager public spawningManager; AxieRetirementManager public retirementManager; AxieMarketplaceManager public marketplaceManager; AxieGeneManager public geneManager; mapping (address => bool) public whitelistedSpawner; mapping (address => bool) public whitelistedByeSayer; mapping (address => bool) public whitelistedMarketplace; mapping (address => bool) public whitelistedGeneScientist; function AxieDependency() internal { whitelistSetterAddress = msg.sender; } modifier onlyWhitelistSetter() { require(msg.sender == whitelistSetterAddress); _; } modifier whenSpawningAllowed(uint256 _genes, address _owner) { require( spawningManager == address(0) || spawningManager.isSpawningAllowed(_genes, _owner) ); _; } modifier whenRebirthAllowed(uint256 _axieId, uint256 _genes) { require( spawningManager == address(0) || spawningManager.isRebirthAllowed(_axieId, _genes) ); _; } modifier whenRetirementAllowed(uint256 _axieId, bool _rip) { require( retirementManager == address(0) || retirementManager.isRetirementAllowed(_axieId, _rip) ); _; } modifier whenTransferAllowed(address _from, address _to, uint256 _axieId) { require( marketplaceManager == address(0) || marketplaceManager.isTransferAllowed(_from, _to, _axieId) ); _; } modifier whenEvolvementAllowed(uint256 _axieId, uint256 _newGenes) { require( geneManager == address(0) || geneManager.isEvolvementAllowed(_axieId, _newGenes) ); _; } modifier onlySpawner() { require(whitelistedSpawner[msg.sender]); _; } modifier onlyByeSayer() { require(whitelistedByeSayer[msg.sender]); _; } modifier onlyMarketplace() { require(whitelistedMarketplace[msg.sender]); _; } modifier onlyGeneScientist() { require(whitelistedGeneScientist[msg.sender]); _; } /* * @dev Setting the whitelist setter address to `address(0)` would be a irreversible process. * This is to lock changes to Axie's contracts after their development is done. */ function setWhitelistSetter(address _newSetter) external onlyWhitelistSetter { whitelistSetterAddress = _newSetter; } function setSpawningManager(address _manager) external onlyWhitelistSetter { spawningManager = AxieSpawningManager(_manager); } function setRetirementManager(address _manager) external onlyWhitelistSetter { retirementManager = AxieRetirementManager(_manager); } function setMarketplaceManager(address _manager) external onlyWhitelistSetter { marketplaceManager = AxieMarketplaceManager(_manager); } function setGeneManager(address _manager) external onlyWhitelistSetter { geneManager = AxieGeneManager(_manager); } function setSpawner(address _spawner, bool _whitelisted) external onlyWhitelistSetter { require(whitelistedSpawner[_spawner] != _whitelisted); whitelistedSpawner[_spawner] = _whitelisted; } function setByeSayer(address _byeSayer, bool _whitelisted) external onlyWhitelistSetter { require(whitelistedByeSayer[_byeSayer] != _whitelisted); whitelistedByeSayer[_byeSayer] = _whitelisted; } function setMarketplace(address _marketplace, bool _whitelisted) external onlyWhitelistSetter { require(whitelistedMarketplace[_marketplace] != _whitelisted); whitelistedMarketplace[_marketplace] = _whitelisted; } function setGeneScientist(address _geneScientist, bool _whitelisted) external onlyWhitelistSetter { require(whitelistedGeneScientist[_geneScientist] != _whitelisted); whitelistedGeneScientist[_geneScientist] = _whitelisted; } } // File: contracts/core/AxieAccessControl.sol contract AxieAccessControl { address public ceoAddress; address public cfoAddress; address public cooAddress; function AxieAccessControl() internal { ceoAddress = msg.sender; } modifier onlyCEO() { require(msg.sender == ceoAddress); _; } modifier onlyCFO() { require(msg.sender == cfoAddress); _; } modifier onlyCOO() { require(msg.sender == cooAddress); _; } modifier onlyCLevel() { require( // solium-disable operator-whitespace msg.sender == ceoAddress || msg.sender == cfoAddress || msg.sender == cooAddress // solium-enable operator-whitespace ); _; } function setCEO(address _newCEO) external onlyCEO { require(_newCEO != address(0)); ceoAddress = _newCEO; } function setCFO(address _newCFO) external onlyCEO { cfoAddress = _newCFO; } function setCOO(address _newCOO) external onlyCEO { cooAddress = _newCOO; } function withdrawBalance() external onlyCFO { cfoAddress.transfer(this.balance); } } // File: contracts/core/lifecycle/AxiePausable.sol contract AxiePausable is AxieAccessControl { bool public paused = false; modifier whenNotPaused() { require(!paused); _; } modifier whenPaused { require(paused); _; } function pause() external onlyCLevel whenNotPaused { paused = true; } function unpause() public onlyCEO whenPaused { paused = false; } } // File: zeppelin/contracts/math/SafeMath.sol /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal constant returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal constant returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal constant returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal constant returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } // File: contracts/core/erc721/AxieERC721BaseEnumerable.sol contract AxieERC721BaseEnumerable is ERC165, IERC721Base, IERC721Enumerable, AxieDependency, AxiePausable { using SafeMath for uint256; // @dev Total amount of tokens. uint256 private _totalTokens; // @dev Mapping from token index to ID. mapping (uint256 => uint256) private _overallTokenId; // @dev Mapping from token ID to index. mapping (uint256 => uint256) private _overallTokenIndex; // @dev Mapping from token ID to owner. mapping (uint256 => address) private _tokenOwner; // @dev For a given owner and a given operator, store whether // the operator is allowed to manage tokens on behalf of the owner. mapping (address => mapping (address => bool)) private _tokenOperator; // @dev Mapping from token ID to approved address. mapping (uint256 => address) private _tokenApproval; // @dev Mapping from owner to list of owned token IDs. mapping (address => uint256[]) private _ownedTokens; // @dev Mapping from token ID to index in the owned token list. mapping (uint256 => uint256) private _ownedTokenIndex; function AxieERC721BaseEnumerable() internal { supportedInterfaces[0x6466353c] = true; // ERC-721 Base supportedInterfaces[0x780e9d63] = true; // ERC-721 Enumerable } // solium-disable function-order modifier mustBeValidToken(uint256 _tokenId) { require(_tokenOwner[_tokenId] != address(0)); _; } function _isTokenOwner(address _ownerToCheck, uint256 _tokenId) private view returns (bool) { return _tokenOwner[_tokenId] == _ownerToCheck; } function _isTokenOperator(address _operatorToCheck, uint256 _tokenId) private view returns (bool) { return whitelistedMarketplace[_operatorToCheck] || _tokenOperator[_tokenOwner[_tokenId]][_operatorToCheck]; } function _isApproved(address _approvedToCheck, uint256 _tokenId) private view returns (bool) { return _tokenApproval[_tokenId] == _approvedToCheck; } modifier onlyTokenOwner(uint256 _tokenId) { require(_isTokenOwner(msg.sender, _tokenId)); _; } modifier onlyTokenOwnerOrOperator(uint256 _tokenId) { require(_isTokenOwner(msg.sender, _tokenId) || _isTokenOperator(msg.sender, _tokenId)); _; } modifier onlyTokenAuthorized(uint256 _tokenId) { require( // solium-disable operator-whitespace _isTokenOwner(msg.sender, _tokenId) || _isTokenOperator(msg.sender, _tokenId) || _isApproved(msg.sender, _tokenId) // solium-enable operator-whitespace ); _; } // ERC-721 Base function balanceOf(address _owner) external view returns (uint256) { require(_owner != address(0)); return _ownedTokens[_owner].length; } function ownerOf(uint256 _tokenId) external view mustBeValidToken(_tokenId) returns (address) { return _tokenOwner[_tokenId]; } function _addTokenTo(address _to, uint256 _tokenId) private { require(_to != address(0)); _tokenOwner[_tokenId] = _to; uint256 length = _ownedTokens[_to].length; _ownedTokens[_to].push(_tokenId); _ownedTokenIndex[_tokenId] = length; } function _mint(address _to, uint256 _tokenId) internal { require(_tokenOwner[_tokenId] == address(0)); _addTokenTo(_to, _tokenId); _overallTokenId[_totalTokens] = _tokenId; _overallTokenIndex[_tokenId] = _totalTokens; _totalTokens = _totalTokens.add(1); Transfer(address(0), _to, _tokenId); } function _removeTokenFrom(address _from, uint256 _tokenId) private { require(_from != address(0)); uint256 _tokenIndex = _ownedTokenIndex[_tokenId]; uint256 _lastTokenIndex = _ownedTokens[_from].length.sub(1); uint256 _lastTokenId = _ownedTokens[_from][_lastTokenIndex]; _tokenOwner[_tokenId] = address(0); // Insert the last token into the position previously occupied by the removed token. _ownedTokens[_from][_tokenIndex] = _lastTokenId; _ownedTokenIndex[_lastTokenId] = _tokenIndex; // Resize the array. delete _ownedTokens[_from][_lastTokenIndex]; _ownedTokens[_from].length--; // Remove the array if no more tokens are owned to prevent pollution. if (_ownedTokens[_from].length == 0) { delete _ownedTokens[_from]; } // Update the index of the removed token. delete _ownedTokenIndex[_tokenId]; } function _burn(uint256 _tokenId) internal { address _from = _tokenOwner[_tokenId]; require(_from != address(0)); _removeTokenFrom(_from, _tokenId); _totalTokens = _totalTokens.sub(1); uint256 _tokenIndex = _overallTokenIndex[_tokenId]; uint256 _lastTokenId = _overallTokenId[_totalTokens]; delete _overallTokenIndex[_tokenId]; delete _overallTokenId[_totalTokens]; _overallTokenId[_tokenIndex] = _lastTokenId; _overallTokenIndex[_lastTokenId] = _tokenIndex; Transfer(_from, address(0), _tokenId); } function _isContract(address _address) private view returns (bool) { uint _size; // solium-disable-next-line security/no-inline-assembly assembly { _size := extcodesize(_address) } return _size > 0; } function _transferFrom( address _from, address _to, uint256 _tokenId, bytes _data, bool _check ) internal mustBeValidToken(_tokenId) onlyTokenAuthorized(_tokenId) whenTransferAllowed(_from, _to, _tokenId) { require(_isTokenOwner(_from, _tokenId)); require(_to != address(0)); require(_to != _from); _removeTokenFrom(_from, _tokenId); delete _tokenApproval[_tokenId]; Approval(_from, address(0), _tokenId); _addTokenTo(_to, _tokenId); if (_check && _isContract(_to)) { IERC721TokenReceiver(_to).onERC721Received.gas(50000)(_from, _tokenId, _data); } Transfer(_from, _to, _tokenId); } // solium-disable arg-overflow function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes _data) external payable { _transferFrom(_from, _to, _tokenId, _data, true); } function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable { _transferFrom(_from, _to, _tokenId, "", true); } function transferFrom(address _from, address _to, uint256 _tokenId) external payable { _transferFrom(_from, _to, _tokenId, "", false); } // solium-enable arg-overflow function approve( address _approved, uint256 _tokenId ) external payable mustBeValidToken(_tokenId) onlyTokenOwnerOrOperator(_tokenId) whenNotPaused { address _owner = _tokenOwner[_tokenId]; require(_owner != _approved); require(_tokenApproval[_tokenId] != _approved); _tokenApproval[_tokenId] = _approved; Approval(_owner, _approved, _tokenId); } function setApprovalForAll(address _operator, bool _approved) external whenNotPaused { require(_tokenOperator[msg.sender][_operator] != _approved); _tokenOperator[msg.sender][_operator] = _approved; ApprovalForAll(msg.sender, _operator, _approved); } function getApproved(uint256 _tokenId) external view mustBeValidToken(_tokenId) returns (address) { return _tokenApproval[_tokenId]; } function isApprovedForAll(address _owner, address _operator) external view returns (bool) { return _tokenOperator[_owner][_operator]; } // ERC-721 Enumerable function totalSupply() external view returns (uint256) { return _totalTokens; } function tokenByIndex(uint256 _index) external view returns (uint256) { require(_index < _totalTokens); return _overallTokenId[_index]; } function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256 _tokenId) { require(_owner != address(0)); require(_index < _ownedTokens[_owner].length); return _ownedTokens[_owner][_index]; } } // File: contracts/erc/erc721/IERC721Metadata.sol /// @title ERC-721 Non-Fungible Token Standard, optional metadata extension /// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md /// Note: the ERC-165 identifier for this interface is 0x5b5e139f interface IERC721Metadata /* is IERC721Base */ { /// @notice A descriptive name for a collection of NFTs in this contract function name() external pure returns (string _name); /// @notice An abbreviated name for NFTs in this contract function symbol() external pure returns (string _symbol); /// @notice A distinct Uniform Resource Identifier (URI) for a given asset. /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC /// 3986. The URI may point to a JSON file that conforms to the "ERC721 /// Metadata JSON Schema". function tokenURI(uint256 _tokenId) external view returns (string); } // File: contracts/core/erc721/AxieERC721Metadata.sol contract AxieERC721Metadata is AxieERC721BaseEnumerable, IERC721Metadata { string public tokenURIPrefix = "https://axieinfinity.com/erc/721/axies/"; string public tokenURISuffix = ".json"; function AxieERC721Metadata() internal { supportedInterfaces[0x5b5e139f] = true; // ERC-721 Metadata } function name() external pure returns (string) { return "Axie"; } function symbol() external pure returns (string) { return "AXIE"; } function setTokenURIAffixes(string _prefix, string _suffix) external onlyCEO { tokenURIPrefix = _prefix; tokenURISuffix = _suffix; } function tokenURI( uint256 _tokenId ) external view mustBeValidToken(_tokenId) returns (string) { bytes memory _tokenURIPrefixBytes = bytes(tokenURIPrefix); bytes memory _tokenURISuffixBytes = bytes(tokenURISuffix); uint256 _tmpTokenId = _tokenId; uint256 _length; do { _length++; _tmpTokenId /= 10; } while (_tmpTokenId > 0); bytes memory _tokenURIBytes = new bytes(_tokenURIPrefixBytes.length + _length + 5); uint256 _i = _tokenURIBytes.length - 6; _tmpTokenId = _tokenId; do { _tokenURIBytes[_i--] = byte(48 + _tmpTokenId % 10); _tmpTokenId /= 10; } while (_tmpTokenId > 0); for (_i = 0; _i < _tokenURIPrefixBytes.length; _i++) { _tokenURIBytes[_i] = _tokenURIPrefixBytes[_i]; } for (_i = 0; _i < _tokenURISuffixBytes.length; _i++) { _tokenURIBytes[_tokenURIBytes.length + _i - 5] = _tokenURISuffixBytes[_i]; } return string(_tokenURIBytes); } } // File: contracts/core/erc721/AxieERC721.sol // solium-disable-next-line no-empty-blocks contract AxieERC721 is AxieERC721BaseEnumerable, AxieERC721Metadata { } // File: contracts/core/AxieCore.sol // solium-disable-next-line no-empty-blocks contract AxieCore is AxieERC721 { struct Axie { uint256 genes; uint256 bornAt; } Axie[] axies; event AxieSpawned(uint256 indexed _axieId, address indexed _owner, uint256 _genes); event AxieRebirthed(uint256 indexed _axieId, uint256 _genes); event AxieRetired(uint256 indexed _axieId); event AxieEvolved(uint256 indexed _axieId, uint256 _oldGenes, uint256 _newGenes); function AxieCore() public { axies.push(Axie(0, now)); // The void Axie _spawnAxie(0, msg.sender); // Will be Puff _spawnAxie(0, msg.sender); // Will be Kotaro _spawnAxie(0, msg.sender); // Will be Ginger _spawnAxie(0, msg.sender); // Will be Stella } function getAxie( uint256 _axieId ) external view mustBeValidToken(_axieId) returns (uint256 /* _genes */, uint256 /* _bornAt */) { Axie storage _axie = axies[_axieId]; return (_axie.genes, _axie.bornAt); } function spawnAxie( uint256 _genes, address _owner ) external onlySpawner whenSpawningAllowed(_genes, _owner) returns (uint256) { return _spawnAxie(_genes, _owner); } function rebirthAxie( uint256 _axieId, uint256 _genes ) external onlySpawner mustBeValidToken(_axieId) whenRebirthAllowed(_axieId, _genes) { Axie storage _axie = axies[_axieId]; _axie.genes = _genes; _axie.bornAt = now; AxieRebirthed(_axieId, _genes); } function retireAxie( uint256 _axieId, bool _rip ) external onlyByeSayer whenRetirementAllowed(_axieId, _rip) { _burn(_axieId); if (_rip) { delete axies[_axieId]; } AxieRetired(_axieId); } function evolveAxie( uint256 _axieId, uint256 _newGenes ) external onlyGeneScientist mustBeValidToken(_axieId) whenEvolvementAllowed(_axieId, _newGenes) { uint256 _oldGenes = axies[_axieId].genes; axies[_axieId].genes = _newGenes; AxieEvolved(_axieId, _oldGenes, _newGenes); } function _spawnAxie(uint256 _genes, address _owner) private returns (uint256 _axieId) { Axie memory _axie = Axie(_genes, now); _axieId = axies.push(_axie) - 1; _mint(_owner, _axieId); AxieSpawned(_axieId, _owner, _genes); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cfoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_approved","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"ceoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_axieId","type":"uint256"},{"name":"_genes","type":"uint256"}],"name":"rebirthAxie","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"whitelistSetterAddress","outputs":[{"name":"","type":"address"}],"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":"marketplaceManager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"setRetirementManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_geneScientist","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setGeneScientist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_newCEO","type":"address"}],"name":"setCEO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newCOO","type":"address"}],"name":"setCOO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"name":"_tokenId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"setMarketplaceManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_newCFO","type":"address"}],"name":"setCFO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"retirementManager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newSetter","type":"address"}],"name":"setWhitelistSetter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_genes","type":"uint256"},{"name":"_owner","type":"address"}],"name":"spawnAxie","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_marketplace","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setMarketplace","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"geneManager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_byeSayer","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setByeSayer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"setSpawningManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"setGeneManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistedByeSayer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"spawningManager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistedGeneScientist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spawner","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setSpawner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_operator","type":"address"},{"name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistedMarketplace","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_axieId","type":"uint256"}],"name":"getAxie","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_axieId","type":"uint256"},{"name":"_newGenes","type":"uint256"}],"name":"evolveAxie","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cooAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"tokenURIPrefix","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistedSpawner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_axieId","type":"uint256"},{"name":"_rip","type":"bool"}],"name":"retireAxie","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenURISuffix","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_prefix","type":"string"},{"name":"_suffix","type":"string"}],"name":"setTokenURIAffixes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_axieId","type":"uint256"},{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_genes","type":"uint256"}],"name":"AxieSpawned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_axieId","type":"uint256"},{"indexed":false,"name":"_genes","type":"uint256"}],"name":"AxieRebirthed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_axieId","type":"uint256"}],"name":"AxieRetired","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_axieId","type":"uint256"},{"indexed":false,"name":"_oldGenes","type":"uint256"},{"indexed":false,"name":"_newGenes","type":"uint256"}],"name":"AxieEvolved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_operator","type":"address"},{"indexed":false,"name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"}]
Contract Creation Code
60606040818152600c805460a060020a60ff02191690555190810160405280602781526020017f68747470733a2f2f61786965696e66696e6974792e636f6d2f6572632f37323181526020017f2f61786965732f00000000000000000000000000000000000000000000000000815250601590805162000084929160200190620004bf565b5060408051908101604052600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208201526016908051620000ce929160200190620004bf565b503415620000db57600080fd5b600060208190527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff1990811660019081179092558154600160a060020a033316600160a060020a031991821681178455600a80549092161790557f77218e6e0a7dc0a9ee09daeaab3dc6c60094df0c2747e685a4b5f67f6cd5ebd880548216831790557f77b7bbe0e49b76487c9476b5db3354cf5270619d0037ccb899c2a4c4a75b431880548216831790557f5b5e139f000000000000000000000000000000000000000000000000000000009092527f9562381dfbc2d8b8b66e765249f330164b73e329e5f01670660643571d1974df805490921681179091556017805490918101620001ee838262000544565b916000526020600020906002020160006040805190810160405260008152426020820152919050815181556020820151816001015550505062000247600033620002a26401000000000262001fdf176401000000009004565b506200026360003364010000000062001fdf620002a282021704565b506200027f60003364010000000062001fdf620002a282021704565b506200029b60003364010000000062001fdf620002a282021704565b50620005f4565b6000620002ae62000578565b6040805190810160405284815242602082015260178054919250600191808301620002da838262000544565b6000928352602090922084916002020181518155602082015160019091015550039150620003178383640100000000620023966200035c82021704565b82600160a060020a0316827f0aa75ef3ef0b2c4f092828edf4e4ded5a223d08350535710b957679883ff3a3c8660405190815260200160405180910390a35092915050565b600081815260106020526040902054600160a060020a0316156200037f57600080fd5b6200039982826401000000006200230b6200042282021704565b600d80546000908152600e602090815260408083208590559254848352600f909152919020819055620003dc90600164010000000062002453620004a882021704565b600d55600160a060020a03821660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b6000600160a060020a03831615156200043a57600080fd5b5060008181526010602090815260408083208054600160a060020a031916600160a060020a03871690811790915583526013909152902080549081600181016200048583826200058f565b506000918252602080832091909101849055928152601490925260409091205550565b600082820183811015620004b857fe5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200050257805160ff191683800117855562000532565b8280016001018555821562000532579182015b828111156200053257825182559160200191906001019062000515565b5062000540929150620005b1565b5090565b8154818355818115116200057357600202816002028360005260206000209182019101620005739190620005d1565b505050565b604080519081016040526000808252602082015290565b8154818355818115116200057357600083815260209020620005739181019083015b620005ce91905b80821115620005405760008155600101620005b8565b90565b620005ce91905b80821115620005405760008082556001820155600201620005d8565b6125e080620006046000396000f3006060604052600436106102585763ffffffff60e060020a60003504166301ffc9a7811461025d5780630519ce79146102a657806306fdde03146102d5578063081812fc1461035f578063095ea7b3146103755780630a0f81681461038e5780630d2cc54a146103a15780631412409a146103ba57806318160ddd146103cd5780631889500c146103f25780631a68b1a1146104055780631f8df2cd1461042457806323b872dd1461044857806327d7874c146104655780632ba73c15146104845780632f745c59146104a35780632ffb054e146104c55780633f4ba83a146104e457806342842e0e146104f75780634e0a3379146105145780634f6ccce71461053357806352ac882c14610549578063547a5eee1461055c5780635c975abb1461057b5780635dcc6dbc1461058e5780635fd8c710146105b05780636352211e146105c357806370a08231146105d95780637419e77a146105f857806380173a191461061c57806381b2dad91461062f5780638456cb59146106535780638c37e31e14610666578063927aaa7c1461068557806395d89b41146106a45780639848146a146106b757806398f5ee5d146106d657806399165bf4146106e95780639f186edb14610708578063a22cb4651461072c578063a306dfbe14610750578063a64729061461076f578063ae67b4c31461079d578063b047fb50146107b6578063b88d4fde146107c9578063c0ac9983146107f5578063c84c9e4514610808578063c87b56dd14610827578063c9644b771461083d578063dbbc853b14610858578063e985e9c51461086b578063faf4212514610890575b600080fd5b341561026857600080fd5b6102927bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600435166108ba565b604051901515815260200160405180910390f35b34156102b157600080fd5b6102b96108ee565b604051600160a060020a03909116815260200160405180910390f35b34156102e057600080fd5b6102e86108fd565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561032457808201518382015260200161030c565b50505050905090810190601f1680156103515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036a57600080fd5b6102b960043561093f565b61038c600160a060020a0360043516602435610981565b005b341561039957600080fd5b6102b9610aa0565b34156103ac57600080fd5b61038c600435602435610aaf565b34156103c557600080fd5b6102b9610bf5565b34156103d857600080fd5b6103e0610c04565b60405190815260200160405180910390f35b34156103fd57600080fd5b6102b9610c0a565b341561041057600080fd5b61038c600160a060020a0360043516610c19565b341561042f57600080fd5b61038c600160a060020a03600435166024351515610c56565b61038c600160a060020a0360043581169060243516604435610cc8565b341561047057600080fd5b61038c600160a060020a0360043516610ce8565b341561048f57600080fd5b61038c600160a060020a0360043516610d3a565b34156104ae57600080fd5b6103e0600160a060020a0360043516602435610d77565b34156104d057600080fd5b61038c600160a060020a0360043516610dea565b34156104ef57600080fd5b61038c610e27565b61038c600160a060020a0360043581169060243516604435610e7a565b341561051f57600080fd5b61038c600160a060020a0360043516610e96565b341561053e57600080fd5b6103e0600435610ed3565b341561055457600080fd5b6102b9610ef7565b341561056757600080fd5b61038c600160a060020a0360043516610f06565b341561058657600080fd5b610292610f43565b341561059957600080fd5b6103e0600435600160a060020a0360243516610f53565b34156105bb57600080fd5b61038c61102b565b34156105ce57600080fd5b6102b9600435611081565b34156105e457600080fd5b6103e0600160a060020a03600435166110c3565b341561060357600080fd5b61038c600160a060020a036004351660243515156110f6565b341561062757600080fd5b6102b9611168565b341561063a57600080fd5b61038c600160a060020a03600435166024351515611177565b341561065e57600080fd5b61038c6111e9565b341561067157600080fd5b61038c600160a060020a0360043516611275565b341561069057600080fd5b61038c600160a060020a03600435166112b2565b34156106af57600080fd5b6102e86112ef565b34156106c257600080fd5b610292600160a060020a0360043516611330565b34156106e157600080fd5b6102b9611345565b34156106f457600080fd5b610292600160a060020a0360043516611354565b341561071357600080fd5b61038c600160a060020a03600435166024351515611369565b341561073757600080fd5b61038c600160a060020a036004351660243515156113db565b341561075b57600080fd5b610292600160a060020a036004351661149b565b341561077a57600080fd5b6107856004356114b0565b60405191825260208201526040908101905180910390f35b34156107a857600080fd5b61038c60043560243561150c565b34156107c157600080fd5b6102b9611673565b61038c600160a060020a0360048035821691602480359091169160443591606435908101910135611682565b341561080057600080fd5b6102e86116c7565b341561081357600080fd5b610292600160a060020a0360043516611765565b341561083257600080fd5b6102e860043561177a565b341561084857600080fd5b61038c6004356024351515611a65565b341561086357600080fd5b6102e8611b8a565b341561087657600080fd5b610292600160a060020a0360043581169060243516611bf5565b341561089b57600080fd5b61038c6024600480358281019290820135918135918201910135611c23565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526020819052604090205460ff1690565b600b54600160a060020a031681565b610905612462565b60408051908101604052600481527f4178696500000000000000000000000000000000000000000000000000000000602082015290505b90565b6000818152601060205260408120548290600160a060020a0316151561096457600080fd5b5050600090815260126020526040902054600160a060020a031690565b6000818152601060205260408120548290600160a060020a031615156109a657600080fd5b826109b13382611c57565b806109c157506109c13382611c77565b15156109cc57600080fd5b600c5460a060020a900460ff16156109e357600080fd5b600084815260106020526040902054600160a060020a0390811693508516831415610a0d57600080fd5b600084815260126020526040902054600160a060020a0386811691161415610a3457600080fd5b600084815260126020526040908190208054600160a060020a031916600160a060020a0388811691821790925591908516907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259087905190815260200160405180910390a35050505050565b600a54600160a060020a031681565b600160a060020a03331660009081526006602052604081205460ff161515610ad657600080fd5b6000838152601060205260409020548390600160a060020a03161515610afb57600080fd5b60025484908490600160a060020a03161580610b855750600254600160a060020a031663d4d33ece838360006040516020015260405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515610b6957600080fd5b6102c65a03f11515610b7a57600080fd5b505050604051805190505b1515610b9057600080fd5b6017805487908110610b9e57fe5b600091825260209091206002909102018581554260018201559350857f90f712fe1864fe3fbc2bd97b660fbfec7c30d013d3961ac72ea12cffc09e06638660405190815260200160405180910390a2505050505050565b600154600160a060020a031681565b600d5490565b600454600160a060020a031681565b60015433600160a060020a03908116911614610c3457600080fd5b60038054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a03908116911614610c7157600080fd5b600160a060020a03821660009081526009602052604090205460ff1615158115151415610c9d57600080fd5b600160a060020a03919091166000908152600960205260409020805460ff1916911515919091179055565b610ce383838360206040519081016040526000808252611cd5565b505050565b600a5433600160a060020a03908116911614610d0357600080fd5b600160a060020a0381161515610d1857600080fd5b600a8054600160a060020a031916600160a060020a0392909216919091179055565b600a5433600160a060020a03908116911614610d5557600080fd5b600c8054600160a060020a031916600160a060020a0392909216919091179055565b6000600160a060020a0383161515610d8e57600080fd5b600160a060020a0383166000908152601360205260409020548210610db257600080fd5b600160a060020a0383166000908152601360205260409020805483908110610dd657fe5b906000526020600020900154905092915050565b60015433600160a060020a03908116911614610e0557600080fd5b60048054600160a060020a031916600160a060020a0392909216919091179055565b600a5433600160a060020a03908116911614610e4257600080fd5b600c5460a060020a900460ff161515610e5a57600080fd5b600c805474ff000000000000000000000000000000000000000019169055565b610ce38383836020604051908101604052600081526001611cd5565b600a5433600160a060020a03908116911614610eb157600080fd5b600b8054600160a060020a031916600160a060020a0392909216919091179055565b600d546000908210610ee457600080fd5b506000908152600e602052604090205490565b600354600160a060020a031681565b60015433600160a060020a03908116911614610f2157600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b600c5460a060020a900460ff1681565b600160a060020a03331660009081526006602052604081205460ff161515610f7a57600080fd5b60025483908390600160a060020a0316158061100d5750600254600160a060020a0316630e972421838360006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401602060405180830381600087803b1515610ff157600080fd5b6102c65a03f1151561100257600080fd5b505050604051805190505b151561101857600080fd5b6110228585611fdf565b95945050505050565b600b5433600160a060020a0390811691161461104657600080fd5b600b54600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561107f57600080fd5b565b6000818152601060205260408120548290600160a060020a031615156110a657600080fd5b5050600090815260106020526040902054600160a060020a031690565b6000600160a060020a03821615156110da57600080fd5b50600160a060020a031660009081526013602052604090205490565b60015433600160a060020a0390811691161461111157600080fd5b600160a060020a03821660009081526008602052604090205460ff161515811515141561113d57600080fd5b600160a060020a03919091166000908152600860205260409020805460ff1916911515919091179055565b600554600160a060020a031681565b60015433600160a060020a0390811691161461119257600080fd5b600160a060020a03821660009081526007602052604090205460ff16151581151514156111be57600080fd5b600160a060020a03919091166000908152600760205260409020805460ff1916911515919091179055565b600a5433600160a060020a03908116911614806112145750600b5433600160a060020a039081169116145b8061122d5750600c5433600160a060020a039081169116145b151561123857600080fd5b600c5460a060020a900460ff161561124f57600080fd5b600c805474ff0000000000000000000000000000000000000000191660a060020a179055565b60015433600160a060020a0390811691161461129057600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a039081169116146112cd57600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b6112f7612462565b60408051908101604052600481527f41584945000000000000000000000000000000000000000000000000000000006020820152905090565b60076020526000908152604090205460ff1681565b600254600160a060020a031681565b60096020526000908152604090205460ff1681565b60015433600160a060020a0390811691161461138457600080fd5b600160a060020a03821660009081526006602052604090205460ff16151581151514156113b057600080fd5b600160a060020a03919091166000908152600660205260409020805460ff1916911515919091179055565b600c5460a060020a900460ff16156113f257600080fd5b600160a060020a0333811660009081526011602090815260408083209386168352929052205460ff161515811515141561142b57600080fd5b33600160a060020a0390811660008181526011602090815260408083209487168084529490915290819020805460ff19168515151790557f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190849051901515815260200160405180910390a35050565b60086020526000908152604090205460ff1681565b600081815260106020526040812054819081908490600160a060020a031615156114d957600080fd5b60178054869081106114e757fe5b9060005260206000209060020201915081600001548260010154935093505050915091565b600160a060020a03331660009081526009602052604081205460ff16151561153357600080fd5b6000838152601060205260409020548390600160a060020a0316151561155857600080fd5b60055484908490600160a060020a031615806115e25750600554600160a060020a0316639613bc90838360006040516020015260405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b15156115c657600080fd5b6102c65a03f115156115d757600080fd5b505050604051805190505b15156115ed57600080fd5b60178054879081106115fb57fe5b90600052602060002090600202016000015493508460178781548110151561161f57fe5b6000918252602090912060029091020155857f6715bb2e56d8b9cd079426816318abbb6ee679a7e8e64602b38bf5c074b58e55858760405191825260208201526040908101905180910390a2505050505050565b600c54600160a060020a031681565b6116c085858585858080601f01602080910402602001604051908101604052818152929190602084018383808284375060019450611cd59350505050565b5050505050565b60158054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561175d5780601f106117325761010080835404028352916020019161175d565b820191906000526020600020905b81548152906001019060200180831161174057829003601f168201915b505050505081565b60066020526000908152604090205460ff1681565b611782612462565b61178a612462565b611792612462565b60008061179d612462565b6000878152601060205260408120548890600160a060020a031615156117c257600080fd5b60158054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118585780601f1061182d57610100808354040283529160200191611858565b820191906000526020600020905b81548152906001019060200180831161183b57829003601f168201915b5050505050965060168054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118f55780601f106118ca576101008083540402835291602001916118f5565b820191906000526020600020905b8154815290600101906020018083116118d857829003601f168201915b505050505095508894505b600190930192600a85049450600085111561191a57611900565b8387510160050160405180591061192e5750595b818152601f19601f830116810160200160405290509250600683510391508894505b60001982019160f860020a6030600a880601029084908151811061197057fe5b906020010190600160f860020a031916908160001a905350600a85049450600085111561199c57611950565b600091505b86518210156119f7578682815181106119b657fe5b016020015160f860020a900460f860020a028383815181106119d457fe5b906020010190600160f860020a031916908160001a9053506001909101906119a1565b600091505b8551821015611a5857858281518110611a1157fe5b016020015160f860020a900460f860020a02836005848651010381518110611a3557fe5b906020010190600160f860020a031916908160001a9053506001909101906119fc565b5090979650505050505050565b600160a060020a03331660009081526007602052604090205460ff161515611a8c57600080fd5b60035482908290600160a060020a03161580611b185750600354600160a060020a03166318dcdfbe838360006040516020015260405160e060020a63ffffffff8516028152600481019290925215156024820152604401602060405180830381600087803b1515611afc57600080fd5b6102c65a03f11515611b0d57600080fd5b505050604051805190505b1515611b2357600080fd5b611b2c84612085565b8215611b57576017805485908110611b4057fe5b600091825260208220600290910201818155600101555b837fc7e9cc512eb27debd93c5ff5830060459d7e6777ebcb540f3c9e2e520eb2502b60405160405180910390a250505050565b60168054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561175d5780601f106117325761010080835404028352916020019161175d565b600160a060020a03918216600090815260116020908152604080832093909416825291909152205460ff1690565b600a5433600160a060020a03908116911614611c3e57600080fd5b611c4a60158585612474565b506116c060168383612474565b600090815260106020526040902054600160a060020a0391821691161490565b600160a060020a03821660009081526008602052604081205460ff1680611cce5750600082815260106020908152604080832054600160a060020a03908116845260118352818420908716845290915290205460ff165b9392505050565b6000838152601060205260409020548390600160a060020a03161515611cfa57600080fd5b83611d053382611c57565b80611d155750611d153382611c77565b80611d255750611d25338261215a565b1515611d3057600080fd5b600454879087908790600160a060020a03161580611dd15750600454600160a060020a031663f7ebc39a84848460006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611db557600080fd5b6102c65a03f11515611dc657600080fd5b505050604051805190505b1515611ddc57600080fd5b611de68a89611c57565b1515611df157600080fd5b600160a060020a0389161515611e0657600080fd5b600160a060020a03898116908b161415611e1f57600080fd5b611e298a8961217a565b6000888152601260205260408082208054600160a060020a0319169055600160a060020a038c16907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925908b905190815260200160405180910390a3611e8e898961230b565b858015611e9f5750611e9f8961238e565b15611f8c5788600160a060020a031663f0b9e5ba61c3508c8b8b6040518563ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611f26578082015183820152602001611f0e565b50505050905090810190601f168015611f535780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600088803b1515611f7357600080fd5b87f11515611f8057600080fd5b50505050604051805150505b88600160a060020a03168a600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a60405190815260200160405180910390a350505050505050505050565b6000611fe96124f2565b60408051908101604052848152426020820152601780549192506001918083016120138382612509565b60009283526020909220849160020201815181556020820151816001015550500391506120408383612396565b82600160a060020a0316827f0aa75ef3ef0b2c4f092828edf4e4ded5a223d08350535710b957679883ff3a3c8660405190815260200160405180910390a35092915050565b600081815260106020526040812054600160a060020a031690808215156120ab57600080fd5b6120b5838561217a565b600d546120c990600163ffffffff61244116565b600d8181556000868152600f602081815260408084208054968552600e835281852054908590559454845280842084905585845280842085905584845291905280822084905592945090925090600160a060020a038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9087905190815260200160405180910390a350505050565b600090815260126020526040902054600160a060020a0391821691161490565b60008080600160a060020a038516151561219357600080fd5b600084815260146020908152604080832054600160a060020a03891684526013909252909120549093506121ce90600163ffffffff61244116565b600160a060020a0386166000908152601360205260409020805491935090839081106121f657fe5b60009182526020808320909101548683526010825260408084208054600160a060020a0319169055600160a060020a038916845260139092529120805491925082918590811061224257fe5b6000918252602080832090910192909255828152601482526040808220869055600160a060020a038816825260139092522080548390811061228057fe5b60009182526020808320909101829055600160a060020a038716825260139052604090208054906122b5906000198301612535565b50600160a060020a03851660009081526013602052604090205415156122f657600160a060020a03851660009081526013602052604081206122f691612559565b50505060009081526014602052604081205550565b6000600160a060020a038316151561232257600080fd5b5060008181526010602090815260408083208054600160a060020a031916600160a060020a038716908117909155835260139091529020805490816001810161236b8382612535565b506000918252602080832091909101849055928152601490925260409091205550565b6000903b1190565b600081815260106020526040902054600160a060020a0316156123b857600080fd5b6123c2828261230b565b600d80546000908152600e602090815260408083208590559254848352600f9091529190208190556123fb90600163ffffffff61245316565b600d55600160a060020a03821660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b60008282111561244d57fe5b50900390565b600082820183811015611cce57fe5b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106124b55782800160ff198235161785556124e2565b828001600101855582156124e2579182015b828111156124e25782358255916020019190600101906124c7565b506124ee92915061257a565b5090565b604080519081016040526000808252602082015290565b815481835581811511610ce357600202816002028360005260206000209182019101610ce39190612594565b815481835581811511610ce357600083815260209020610ce391810190830161257a565b5080546000825590600052602060002090810190612577919061257a565b50565b61093c91905b808211156124ee5760008155600101612580565b61093c91905b808211156124ee576000808255600182015560020161259a5600a165627a7a723058205c581cfc083f257425f5769585ca2b5795a24934862554ed6f13b530d4fdb0510029
Deployed Bytecode
0x6060604052600436106102585763ffffffff60e060020a60003504166301ffc9a7811461025d5780630519ce79146102a657806306fdde03146102d5578063081812fc1461035f578063095ea7b3146103755780630a0f81681461038e5780630d2cc54a146103a15780631412409a146103ba57806318160ddd146103cd5780631889500c146103f25780631a68b1a1146104055780631f8df2cd1461042457806323b872dd1461044857806327d7874c146104655780632ba73c15146104845780632f745c59146104a35780632ffb054e146104c55780633f4ba83a146104e457806342842e0e146104f75780634e0a3379146105145780634f6ccce71461053357806352ac882c14610549578063547a5eee1461055c5780635c975abb1461057b5780635dcc6dbc1461058e5780635fd8c710146105b05780636352211e146105c357806370a08231146105d95780637419e77a146105f857806380173a191461061c57806381b2dad91461062f5780638456cb59146106535780638c37e31e14610666578063927aaa7c1461068557806395d89b41146106a45780639848146a146106b757806398f5ee5d146106d657806399165bf4146106e95780639f186edb14610708578063a22cb4651461072c578063a306dfbe14610750578063a64729061461076f578063ae67b4c31461079d578063b047fb50146107b6578063b88d4fde146107c9578063c0ac9983146107f5578063c84c9e4514610808578063c87b56dd14610827578063c9644b771461083d578063dbbc853b14610858578063e985e9c51461086b578063faf4212514610890575b600080fd5b341561026857600080fd5b6102927bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600435166108ba565b604051901515815260200160405180910390f35b34156102b157600080fd5b6102b96108ee565b604051600160a060020a03909116815260200160405180910390f35b34156102e057600080fd5b6102e86108fd565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561032457808201518382015260200161030c565b50505050905090810190601f1680156103515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036a57600080fd5b6102b960043561093f565b61038c600160a060020a0360043516602435610981565b005b341561039957600080fd5b6102b9610aa0565b34156103ac57600080fd5b61038c600435602435610aaf565b34156103c557600080fd5b6102b9610bf5565b34156103d857600080fd5b6103e0610c04565b60405190815260200160405180910390f35b34156103fd57600080fd5b6102b9610c0a565b341561041057600080fd5b61038c600160a060020a0360043516610c19565b341561042f57600080fd5b61038c600160a060020a03600435166024351515610c56565b61038c600160a060020a0360043581169060243516604435610cc8565b341561047057600080fd5b61038c600160a060020a0360043516610ce8565b341561048f57600080fd5b61038c600160a060020a0360043516610d3a565b34156104ae57600080fd5b6103e0600160a060020a0360043516602435610d77565b34156104d057600080fd5b61038c600160a060020a0360043516610dea565b34156104ef57600080fd5b61038c610e27565b61038c600160a060020a0360043581169060243516604435610e7a565b341561051f57600080fd5b61038c600160a060020a0360043516610e96565b341561053e57600080fd5b6103e0600435610ed3565b341561055457600080fd5b6102b9610ef7565b341561056757600080fd5b61038c600160a060020a0360043516610f06565b341561058657600080fd5b610292610f43565b341561059957600080fd5b6103e0600435600160a060020a0360243516610f53565b34156105bb57600080fd5b61038c61102b565b34156105ce57600080fd5b6102b9600435611081565b34156105e457600080fd5b6103e0600160a060020a03600435166110c3565b341561060357600080fd5b61038c600160a060020a036004351660243515156110f6565b341561062757600080fd5b6102b9611168565b341561063a57600080fd5b61038c600160a060020a03600435166024351515611177565b341561065e57600080fd5b61038c6111e9565b341561067157600080fd5b61038c600160a060020a0360043516611275565b341561069057600080fd5b61038c600160a060020a03600435166112b2565b34156106af57600080fd5b6102e86112ef565b34156106c257600080fd5b610292600160a060020a0360043516611330565b34156106e157600080fd5b6102b9611345565b34156106f457600080fd5b610292600160a060020a0360043516611354565b341561071357600080fd5b61038c600160a060020a03600435166024351515611369565b341561073757600080fd5b61038c600160a060020a036004351660243515156113db565b341561075b57600080fd5b610292600160a060020a036004351661149b565b341561077a57600080fd5b6107856004356114b0565b60405191825260208201526040908101905180910390f35b34156107a857600080fd5b61038c60043560243561150c565b34156107c157600080fd5b6102b9611673565b61038c600160a060020a0360048035821691602480359091169160443591606435908101910135611682565b341561080057600080fd5b6102e86116c7565b341561081357600080fd5b610292600160a060020a0360043516611765565b341561083257600080fd5b6102e860043561177a565b341561084857600080fd5b61038c6004356024351515611a65565b341561086357600080fd5b6102e8611b8a565b341561087657600080fd5b610292600160a060020a0360043581169060243516611bf5565b341561089b57600080fd5b61038c6024600480358281019290820135918135918201910135611c23565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526020819052604090205460ff1690565b600b54600160a060020a031681565b610905612462565b60408051908101604052600481527f4178696500000000000000000000000000000000000000000000000000000000602082015290505b90565b6000818152601060205260408120548290600160a060020a0316151561096457600080fd5b5050600090815260126020526040902054600160a060020a031690565b6000818152601060205260408120548290600160a060020a031615156109a657600080fd5b826109b13382611c57565b806109c157506109c13382611c77565b15156109cc57600080fd5b600c5460a060020a900460ff16156109e357600080fd5b600084815260106020526040902054600160a060020a0390811693508516831415610a0d57600080fd5b600084815260126020526040902054600160a060020a0386811691161415610a3457600080fd5b600084815260126020526040908190208054600160a060020a031916600160a060020a0388811691821790925591908516907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259087905190815260200160405180910390a35050505050565b600a54600160a060020a031681565b600160a060020a03331660009081526006602052604081205460ff161515610ad657600080fd5b6000838152601060205260409020548390600160a060020a03161515610afb57600080fd5b60025484908490600160a060020a03161580610b855750600254600160a060020a031663d4d33ece838360006040516020015260405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515610b6957600080fd5b6102c65a03f11515610b7a57600080fd5b505050604051805190505b1515610b9057600080fd5b6017805487908110610b9e57fe5b600091825260209091206002909102018581554260018201559350857f90f712fe1864fe3fbc2bd97b660fbfec7c30d013d3961ac72ea12cffc09e06638660405190815260200160405180910390a2505050505050565b600154600160a060020a031681565b600d5490565b600454600160a060020a031681565b60015433600160a060020a03908116911614610c3457600080fd5b60038054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a03908116911614610c7157600080fd5b600160a060020a03821660009081526009602052604090205460ff1615158115151415610c9d57600080fd5b600160a060020a03919091166000908152600960205260409020805460ff1916911515919091179055565b610ce383838360206040519081016040526000808252611cd5565b505050565b600a5433600160a060020a03908116911614610d0357600080fd5b600160a060020a0381161515610d1857600080fd5b600a8054600160a060020a031916600160a060020a0392909216919091179055565b600a5433600160a060020a03908116911614610d5557600080fd5b600c8054600160a060020a031916600160a060020a0392909216919091179055565b6000600160a060020a0383161515610d8e57600080fd5b600160a060020a0383166000908152601360205260409020548210610db257600080fd5b600160a060020a0383166000908152601360205260409020805483908110610dd657fe5b906000526020600020900154905092915050565b60015433600160a060020a03908116911614610e0557600080fd5b60048054600160a060020a031916600160a060020a0392909216919091179055565b600a5433600160a060020a03908116911614610e4257600080fd5b600c5460a060020a900460ff161515610e5a57600080fd5b600c805474ff000000000000000000000000000000000000000019169055565b610ce38383836020604051908101604052600081526001611cd5565b600a5433600160a060020a03908116911614610eb157600080fd5b600b8054600160a060020a031916600160a060020a0392909216919091179055565b600d546000908210610ee457600080fd5b506000908152600e602052604090205490565b600354600160a060020a031681565b60015433600160a060020a03908116911614610f2157600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b600c5460a060020a900460ff1681565b600160a060020a03331660009081526006602052604081205460ff161515610f7a57600080fd5b60025483908390600160a060020a0316158061100d5750600254600160a060020a0316630e972421838360006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401602060405180830381600087803b1515610ff157600080fd5b6102c65a03f1151561100257600080fd5b505050604051805190505b151561101857600080fd5b6110228585611fdf565b95945050505050565b600b5433600160a060020a0390811691161461104657600080fd5b600b54600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561107f57600080fd5b565b6000818152601060205260408120548290600160a060020a031615156110a657600080fd5b5050600090815260106020526040902054600160a060020a031690565b6000600160a060020a03821615156110da57600080fd5b50600160a060020a031660009081526013602052604090205490565b60015433600160a060020a0390811691161461111157600080fd5b600160a060020a03821660009081526008602052604090205460ff161515811515141561113d57600080fd5b600160a060020a03919091166000908152600860205260409020805460ff1916911515919091179055565b600554600160a060020a031681565b60015433600160a060020a0390811691161461119257600080fd5b600160a060020a03821660009081526007602052604090205460ff16151581151514156111be57600080fd5b600160a060020a03919091166000908152600760205260409020805460ff1916911515919091179055565b600a5433600160a060020a03908116911614806112145750600b5433600160a060020a039081169116145b8061122d5750600c5433600160a060020a039081169116145b151561123857600080fd5b600c5460a060020a900460ff161561124f57600080fd5b600c805474ff0000000000000000000000000000000000000000191660a060020a179055565b60015433600160a060020a0390811691161461129057600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a039081169116146112cd57600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b6112f7612462565b60408051908101604052600481527f41584945000000000000000000000000000000000000000000000000000000006020820152905090565b60076020526000908152604090205460ff1681565b600254600160a060020a031681565b60096020526000908152604090205460ff1681565b60015433600160a060020a0390811691161461138457600080fd5b600160a060020a03821660009081526006602052604090205460ff16151581151514156113b057600080fd5b600160a060020a03919091166000908152600660205260409020805460ff1916911515919091179055565b600c5460a060020a900460ff16156113f257600080fd5b600160a060020a0333811660009081526011602090815260408083209386168352929052205460ff161515811515141561142b57600080fd5b33600160a060020a0390811660008181526011602090815260408083209487168084529490915290819020805460ff19168515151790557f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190849051901515815260200160405180910390a35050565b60086020526000908152604090205460ff1681565b600081815260106020526040812054819081908490600160a060020a031615156114d957600080fd5b60178054869081106114e757fe5b9060005260206000209060020201915081600001548260010154935093505050915091565b600160a060020a03331660009081526009602052604081205460ff16151561153357600080fd5b6000838152601060205260409020548390600160a060020a0316151561155857600080fd5b60055484908490600160a060020a031615806115e25750600554600160a060020a0316639613bc90838360006040516020015260405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b15156115c657600080fd5b6102c65a03f115156115d757600080fd5b505050604051805190505b15156115ed57600080fd5b60178054879081106115fb57fe5b90600052602060002090600202016000015493508460178781548110151561161f57fe5b6000918252602090912060029091020155857f6715bb2e56d8b9cd079426816318abbb6ee679a7e8e64602b38bf5c074b58e55858760405191825260208201526040908101905180910390a2505050505050565b600c54600160a060020a031681565b6116c085858585858080601f01602080910402602001604051908101604052818152929190602084018383808284375060019450611cd59350505050565b5050505050565b60158054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561175d5780601f106117325761010080835404028352916020019161175d565b820191906000526020600020905b81548152906001019060200180831161174057829003601f168201915b505050505081565b60066020526000908152604090205460ff1681565b611782612462565b61178a612462565b611792612462565b60008061179d612462565b6000878152601060205260408120548890600160a060020a031615156117c257600080fd5b60158054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118585780601f1061182d57610100808354040283529160200191611858565b820191906000526020600020905b81548152906001019060200180831161183b57829003601f168201915b5050505050965060168054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118f55780601f106118ca576101008083540402835291602001916118f5565b820191906000526020600020905b8154815290600101906020018083116118d857829003601f168201915b505050505095508894505b600190930192600a85049450600085111561191a57611900565b8387510160050160405180591061192e5750595b818152601f19601f830116810160200160405290509250600683510391508894505b60001982019160f860020a6030600a880601029084908151811061197057fe5b906020010190600160f860020a031916908160001a905350600a85049450600085111561199c57611950565b600091505b86518210156119f7578682815181106119b657fe5b016020015160f860020a900460f860020a028383815181106119d457fe5b906020010190600160f860020a031916908160001a9053506001909101906119a1565b600091505b8551821015611a5857858281518110611a1157fe5b016020015160f860020a900460f860020a02836005848651010381518110611a3557fe5b906020010190600160f860020a031916908160001a9053506001909101906119fc565b5090979650505050505050565b600160a060020a03331660009081526007602052604090205460ff161515611a8c57600080fd5b60035482908290600160a060020a03161580611b185750600354600160a060020a03166318dcdfbe838360006040516020015260405160e060020a63ffffffff8516028152600481019290925215156024820152604401602060405180830381600087803b1515611afc57600080fd5b6102c65a03f11515611b0d57600080fd5b505050604051805190505b1515611b2357600080fd5b611b2c84612085565b8215611b57576017805485908110611b4057fe5b600091825260208220600290910201818155600101555b837fc7e9cc512eb27debd93c5ff5830060459d7e6777ebcb540f3c9e2e520eb2502b60405160405180910390a250505050565b60168054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561175d5780601f106117325761010080835404028352916020019161175d565b600160a060020a03918216600090815260116020908152604080832093909416825291909152205460ff1690565b600a5433600160a060020a03908116911614611c3e57600080fd5b611c4a60158585612474565b506116c060168383612474565b600090815260106020526040902054600160a060020a0391821691161490565b600160a060020a03821660009081526008602052604081205460ff1680611cce5750600082815260106020908152604080832054600160a060020a03908116845260118352818420908716845290915290205460ff165b9392505050565b6000838152601060205260409020548390600160a060020a03161515611cfa57600080fd5b83611d053382611c57565b80611d155750611d153382611c77565b80611d255750611d25338261215a565b1515611d3057600080fd5b600454879087908790600160a060020a03161580611dd15750600454600160a060020a031663f7ebc39a84848460006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611db557600080fd5b6102c65a03f11515611dc657600080fd5b505050604051805190505b1515611ddc57600080fd5b611de68a89611c57565b1515611df157600080fd5b600160a060020a0389161515611e0657600080fd5b600160a060020a03898116908b161415611e1f57600080fd5b611e298a8961217a565b6000888152601260205260408082208054600160a060020a0319169055600160a060020a038c16907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925908b905190815260200160405180910390a3611e8e898961230b565b858015611e9f5750611e9f8961238e565b15611f8c5788600160a060020a031663f0b9e5ba61c3508c8b8b6040518563ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611f26578082015183820152602001611f0e565b50505050905090810190601f168015611f535780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600088803b1515611f7357600080fd5b87f11515611f8057600080fd5b50505050604051805150505b88600160a060020a03168a600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a60405190815260200160405180910390a350505050505050505050565b6000611fe96124f2565b60408051908101604052848152426020820152601780549192506001918083016120138382612509565b60009283526020909220849160020201815181556020820151816001015550500391506120408383612396565b82600160a060020a0316827f0aa75ef3ef0b2c4f092828edf4e4ded5a223d08350535710b957679883ff3a3c8660405190815260200160405180910390a35092915050565b600081815260106020526040812054600160a060020a031690808215156120ab57600080fd5b6120b5838561217a565b600d546120c990600163ffffffff61244116565b600d8181556000868152600f602081815260408084208054968552600e835281852054908590559454845280842084905585845280842085905584845291905280822084905592945090925090600160a060020a038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9087905190815260200160405180910390a350505050565b600090815260126020526040902054600160a060020a0391821691161490565b60008080600160a060020a038516151561219357600080fd5b600084815260146020908152604080832054600160a060020a03891684526013909252909120549093506121ce90600163ffffffff61244116565b600160a060020a0386166000908152601360205260409020805491935090839081106121f657fe5b60009182526020808320909101548683526010825260408084208054600160a060020a0319169055600160a060020a038916845260139092529120805491925082918590811061224257fe5b6000918252602080832090910192909255828152601482526040808220869055600160a060020a038816825260139092522080548390811061228057fe5b60009182526020808320909101829055600160a060020a038716825260139052604090208054906122b5906000198301612535565b50600160a060020a03851660009081526013602052604090205415156122f657600160a060020a03851660009081526013602052604081206122f691612559565b50505060009081526014602052604081205550565b6000600160a060020a038316151561232257600080fd5b5060008181526010602090815260408083208054600160a060020a031916600160a060020a038716908117909155835260139091529020805490816001810161236b8382612535565b506000918252602080832091909101849055928152601490925260409091205550565b6000903b1190565b600081815260106020526040902054600160a060020a0316156123b857600080fd5b6123c2828261230b565b600d80546000908152600e602090815260408083208590559254848352600f9091529190208190556123fb90600163ffffffff61245316565b600d55600160a060020a03821660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b60008282111561244d57fe5b50900390565b600082820183811015611cce57fe5b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106124b55782800160ff198235161785556124e2565b828001600101855582156124e2579182015b828111156124e25782358255916020019190600101906124c7565b506124ee92915061257a565b5090565b604080519081016040526000808252602082015290565b815481835581811511610ce357600202816002028360005260206000209182019101610ce39190612594565b815481835581811511610ce357600083815260209020610ce391810190830161257a565b5080546000825590600052602060002090810190612577919061257a565b50565b61093c91905b808211156124ee5760008155600101612580565b61093c91905b808211156124ee576000808255600182015560020161259a5600a165627a7a723058205c581cfc083f257425f5769585ca2b5795a24934862554ed6f13b530d4fdb0510029
Swarm Source
bzzr://5c581cfc083f257425f5769585ca2b5795a24934862554ed6f13b530d4fdb051
Loading...
Loading
Loading...
Loading
OVERVIEW
Axie Infinity is a digital pet community centered around collecting, training, raising, and battling fantasy creatures called Axie.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.