Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Sponsored
Latest 25 from a total of 135 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Free Car | 7929895 | 1447 days 18 hrs ago | IN | 0 ETH | 0.0013658 | ||||
Free Car | 7690527 | 1485 days 4 hrs ago | IN | 0 ETH | 0.00136333 | ||||
Free Car | 7666598 | 1488 days 21 hrs ago | IN | 0 ETH | 0.00054434 | ||||
Free Car | 7635701 | 1493 days 17 hrs ago | IN | 0 ETH | 0.00135839 | ||||
Free Car | 7524266 | 1511 days 1 hr ago | IN | 0 ETH | 0.00045197 | ||||
Free Car | 7500892 | 1514 days 16 hrs ago | IN | 0 ETH | 0.00090229 | ||||
Free Car | 7499559 | 1514 days 21 hrs ago | IN | 0 ETH | 0.0018013 | ||||
Free Car | 7460827 | 1520 days 23 hrs ago | IN | 0 ETH | 0.000899 | ||||
Free Car | 7458531 | 1521 days 8 hrs ago | IN | 0 ETH | 0.00067301 | ||||
Free Car | 7425408 | 1526 days 12 hrs ago | IN | 0 ETH | 0.0008957 | ||||
Car Presell | 7400060 | 1530 days 10 hrs ago | IN | 0.075 ETH | 0.00075913 | ||||
Free Car | 7400048 | 1530 days 10 hrs ago | IN | 0 ETH | 0.00089405 | ||||
Free Car | 7381912 | 1533 days 6 hrs ago | IN | 0 ETH | 0.0004462 | ||||
Free Car | 7361806 | 1536 days 9 hrs ago | IN | 0 ETH | 0.00089076 | ||||
Free Car | 7320119 | 1542 days 21 hrs ago | IN | 0 ETH | 0.00133367 | ||||
Free Car | 7308723 | 1544 days 16 hrs ago | IN | 0 ETH | 0.00133119 | ||||
Free Car | 7301454 | 1545 days 19 hrs ago | IN | 0 ETH | 0.00088581 | ||||
Free Car | 7296324 | 1546 days 14 hrs ago | IN | 0 ETH | 0.00088417 | ||||
Free Car | 7258842 | 1554 days 5 hrs ago | IN | 0 ETH | 0.00132819 | ||||
Free Car | 7234140 | 1560 days 41 mins ago | IN | 0 ETH | 0.00220218 | ||||
Free Car | 7207344 | 1566 days 10 hrs ago | IN | 0 ETH | 0.00087922 | ||||
Free Car | 7203539 | 1567 days 7 hrs ago | IN | 0 ETH | 0.00131636 | ||||
Free Car | 7200103 | 1568 days 2 hrs ago | IN | 0 ETH | 0.00131389 | ||||
Car Presell | 7195383 | 1569 days 2 hrs ago | IN | 0.112 ETH | 0.00103779 | ||||
Car Presell | 7184136 | 1571 days 8 hrs ago | IN | 0.225 ETH | 0.00043746 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
7400060 | 1530 days 10 hrs ago | 0.015 ETH | ||||
7400060 | 1530 days 10 hrs ago | 0.06 ETH | ||||
7195383 | 1569 days 2 hrs ago | 0.0224 ETH | ||||
7195383 | 1569 days 2 hrs ago | 0.0896 ETH | ||||
7184136 | 1571 days 8 hrs ago | 0.045 ETH | ||||
7184136 | 1571 days 8 hrs ago | 0.18 ETH | ||||
7169419 | 1574 days 8 hrs ago | 0.045 ETH | ||||
7169419 | 1574 days 8 hrs ago | 0.18 ETH | ||||
7165777 | 1575 days 2 hrs ago | 0.045 ETH | ||||
7165777 | 1575 days 2 hrs ago | 0.18 ETH | ||||
7162024 | 1575 days 21 hrs ago | 0.045 ETH | ||||
7162024 | 1575 days 21 hrs ago | 0.18 ETH | ||||
7161978 | 1575 days 21 hrs ago | 0.1126 ETH | ||||
7161978 | 1575 days 21 hrs ago | 0.4504 ETH | ||||
7155114 | 1577 days 7 hrs ago | 0.015 ETH | ||||
7155114 | 1577 days 7 hrs ago | 0.06 ETH | ||||
7154359 | 1577 days 10 hrs ago | 0.015 ETH | ||||
7154359 | 1577 days 10 hrs ago | 0.06 ETH | ||||
7145946 | 1579 days 3 hrs ago | 0.015 ETH | ||||
7145946 | 1579 days 3 hrs ago | 0.06 ETH | ||||
7145441 | 1579 days 6 hrs ago | 0.1126 ETH | ||||
7145441 | 1579 days 6 hrs ago | 0.4504 ETH | ||||
7144237 | 1579 days 12 hrs ago | 0.015 ETH | ||||
7144237 | 1579 days 12 hrs ago | 0.06 ETH | ||||
7144236 | 1579 days 12 hrs ago | 0.015 ETH |
Loading...
Loading
Contract Name:
CarsPresell
Compiler Version
v0.4.25-nightly.2018.5.18+commit.4d7b092c
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-01-17 */ /* ==================================================================== */ /* Copyright (c) 2018 The CryptoRacing Project. All rights reserved. /* /* The first idle car race game of blockchain /* ==================================================================== */ pragma solidity ^0.4.20; /// @title ERC-165 Standard Interface Detection /// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md interface ERC165 { function supportsInterface(bytes4 interfaceID) external view returns (bool); } /// @title ERC-721 Non-Fungible Token Standard /// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md contract ERC721 is ERC165 { event Transfer(address indexed _from, address indexed _to, uint256 _tokenId); event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId); event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); function balanceOf(address _owner) external view returns (uint256); function ownerOf(uint256 _tokenId) external view returns (address); function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external; function safeTransferFrom(address _from, address _to, uint256 _tokenId) external; function transferFrom(address _from, address _to, uint256 _tokenId) external; function approve(address _approved, uint256 _tokenId) external; function setApprovalForAll(address _operator, bool _approved) external; function getApproved(uint256 _tokenId) external view returns (address); function isApprovedForAll(address _owner, address _operator) external view returns (bool); } /// @title ERC-721 Non-Fungible Token Standard interface ERC721TokenReceiver { function onERC721Received(address _from, uint256 _tokenId, bytes data) external returns(bytes4); } contract AccessAdmin { bool public isPaused = false; address public addrAdmin; event AdminTransferred(address indexed preAdmin, address indexed newAdmin); function AccessAdmin() public { addrAdmin = msg.sender; } modifier onlyAdmin() { require(msg.sender == addrAdmin); _; } modifier whenNotPaused() { require(!isPaused); _; } modifier whenPaused { require(isPaused); _; } function setAdmin(address _newAdmin) external onlyAdmin { require(_newAdmin != address(0)); AdminTransferred(addrAdmin, _newAdmin); addrAdmin = _newAdmin; } function doPause() external onlyAdmin whenNotPaused { isPaused = true; } function doUnpause() external onlyAdmin whenPaused { isPaused = false; } } contract AccessService is AccessAdmin { address public addrService; address public addrFinance; modifier onlyService() { require(msg.sender == addrService); _; } modifier onlyFinance() { require(msg.sender == addrFinance); _; } function setService(address _newService) external { require(msg.sender == addrService || msg.sender == addrAdmin); require(_newService != address(0)); addrService = _newService; } function setFinance(address _newFinance) external { require(msg.sender == addrFinance || msg.sender == addrAdmin); require(_newFinance != address(0)); addrFinance = _newFinance; } } /* ==================================================================== */ /* equipmentId /* 10001 T1 /* 10002 T2 /* 10003 T3 /* 10004 T4 /* 10005 T5 /* 10006 T6 /* 10007 freeCar /* ==================================================================== */ contract RaceToken is ERC721, AccessAdmin { /// @dev The equipment info struct Fashion { uint16 equipmentId; // 0 Equipment ID uint16 quality; // 1 Rarity: 1 Coarse/2 Good/3 Rare/4 Epic/5 Legendary uint16 pos; // 2 Slots: 1 Engine/2 Turbine/3 BodySystem/4 Pipe/5 Suspension/6 NO2/7 Tyre/8 Transmission/9 Car uint16 production; // 3 Race bonus productivity uint16 attack; // 4 Attack uint16 defense; // 5 Defense uint16 plunder; // 6 Plunder uint16 productionMultiplier; // 7 Percent value uint16 attackMultiplier; // 8 Percent value uint16 defenseMultiplier; // 9 Percent value uint16 plunderMultiplier; // 10 Percent value uint16 level; // 11 level uint16 isPercent; // 12 Percent value } /// @dev All equipments tokenArray (not exceeding 2^32-1) Fashion[] public fashionArray; /// @dev Amount of tokens destroyed uint256 destroyFashionCount; /// @dev Equipment token ID belong to owner address mapping (uint256 => address) fashionIdToOwner; /// @dev Equipments owner by the owner (array) mapping (address => uint256[]) ownerToFashionArray; /// @dev Equipment token ID search in owner array mapping (uint256 => uint256) fashionIdToOwnerIndex; /// @dev The authorized address for each Race mapping (uint256 => address) fashionIdToApprovals; /// @dev The authorized operators for each address mapping (address => mapping (address => bool)) operatorToApprovals; /// @dev Trust contract mapping (address => bool) actionContracts; //设置可调用当前合约的其他合约 function setActionContract(address _actionAddr, bool _useful) external onlyAdmin { actionContracts[_actionAddr] = _useful; } function getActionContract(address _actionAddr) external view onlyAdmin returns(bool) { return actionContracts[_actionAddr]; } /// @dev This emits when the approved address for an Race is changed or reaffirmed. event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId); /// @dev This emits when an operator is enabled or disabled for an owner. event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); /// @dev This emits when the equipment ownership changed event Transfer(address indexed from, address indexed to, uint256 tokenId); /// @dev This emits when the equipment created event CreateFashion(address indexed owner, uint256 tokenId, uint16 equipmentId, uint16 quality, uint16 pos, uint16 level, uint16 createType); /// @dev This emits when the equipment's attributes changed event ChangeFashion(address indexed owner, uint256 tokenId, uint16 changeType); /// @dev This emits when the equipment destroyed event DeleteFashion(address indexed owner, uint256 tokenId, uint16 deleteType); function RaceToken() public { addrAdmin = msg.sender; fashionArray.length += 1; } // modifier /// @dev Check if token ID is valid modifier isValidToken(uint256 _tokenId) { require(_tokenId >= 1 && _tokenId <= fashionArray.length); require(fashionIdToOwner[_tokenId] != address(0)); _; } modifier canTransfer(uint256 _tokenId) { address owner = fashionIdToOwner[_tokenId]; require(msg.sender == owner || msg.sender == fashionIdToApprovals[_tokenId] || operatorToApprovals[owner][msg.sender]); _; } // ERC721 function supportsInterface(bytes4 _interfaceId) external view returns(bool) { // ERC165 || ERC721 || ERC165^ERC721 return (_interfaceId == 0x01ffc9a7 || _interfaceId == 0x80ac58cd || _interfaceId == 0x8153916a) && (_interfaceId != 0xffffffff); } function name() public pure returns(string) { return "Race Token"; } function symbol() public pure returns(string) { return "Race"; } /// @dev Search for token quantity address /// @param _owner Address that needs to be searched /// @return Returns token quantity function balanceOf(address _owner) external view returns(uint256) { require(_owner != address(0)); return ownerToFashionArray[_owner].length; } /// @dev Find the owner of an Race /// @param _tokenId The tokenId of Race /// @return Give The address of the owner of this Race function ownerOf(uint256 _tokenId) external view /*isValidToken(_tokenId)*/ returns (address owner) { return fashionIdToOwner[_tokenId]; } /// @dev Transfers the ownership of an Race from one address to another address /// @param _from The current owner of the Race /// @param _to The new owner /// @param _tokenId The Race to transfer /// @param data Additional data with no specified format, sent in call to `_to` function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external whenNotPaused { _safeTransferFrom(_from, _to, _tokenId, data); } /// @dev Transfers the ownership of an Race from one address to another address /// @param _from The current owner of the Race /// @param _to The new owner /// @param _tokenId The Race to transfer function safeTransferFrom(address _from, address _to, uint256 _tokenId) external whenNotPaused { _safeTransferFrom(_from, _to, _tokenId, ""); } /// @dev Transfer ownership of an Race, '_to' must be a vaild address, or the Race will lost /// @param _from The current owner of the Race /// @param _to The new owner /// @param _tokenId The Race to transfer function transferFrom(address _from, address _to, uint256 _tokenId) external whenNotPaused isValidToken(_tokenId) canTransfer(_tokenId) { address owner = fashionIdToOwner[_tokenId]; require(owner != address(0)); require(_to != address(0)); require(owner == _from); _transfer(_from, _to, _tokenId); } /// @dev Set or reaffirm the approved address for an Race /// @param _approved The new approved Race controller /// @param _tokenId The Race to approve function approve(address _approved, uint256 _tokenId) external whenNotPaused { address owner = fashionIdToOwner[_tokenId]; require(owner != address(0)); require(msg.sender == owner || operatorToApprovals[owner][msg.sender]); fashionIdToApprovals[_tokenId] = _approved; Approval(owner, _approved, _tokenId); } /// @dev Enable or disable approval for a third party ("operator") to manage all your asset. /// @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 whenNotPaused { operatorToApprovals[msg.sender][_operator] = _approved; ApprovalForAll(msg.sender, _operator, _approved); } /// @dev Get the approved address for a single Race /// @param _tokenId The Race to find the approved address for /// @return The approved address for this Race, or the zero address if there is none function getApproved(uint256 _tokenId) external view isValidToken(_tokenId) returns (address) { return fashionIdToApprovals[_tokenId]; } /// @dev Query if an address is an authorized operator for another address /// @param _owner The address that owns the Races /// @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) { return operatorToApprovals[_owner][_operator]; } /// @dev Count Races tracked by this contract /// @return A count of valid Races 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) { return fashionArray.length - destroyFashionCount - 1; } /// @dev Do the real transfer with out any condition checking /// @param _from The old owner of this Race(If created: 0x0) /// @param _to The new owner of this Race /// @param _tokenId The tokenId of the Race function _transfer(address _from, address _to, uint256 _tokenId) internal { if (_from != address(0)) { uint256 indexFrom = fashionIdToOwnerIndex[_tokenId]; uint256[] storage fsArray = ownerToFashionArray[_from]; require(fsArray[indexFrom] == _tokenId); // If the Race is not the element of array, change it to with the last if (indexFrom != fsArray.length - 1) { uint256 lastTokenId = fsArray[fsArray.length - 1]; fsArray[indexFrom] = lastTokenId; fashionIdToOwnerIndex[lastTokenId] = indexFrom; } fsArray.length -= 1; if (fashionIdToApprovals[_tokenId] != address(0)) { delete fashionIdToApprovals[_tokenId]; } } // Give the Race to '_to' fashionIdToOwner[_tokenId] = _to; ownerToFashionArray[_to].push(_tokenId); fashionIdToOwnerIndex[_tokenId] = ownerToFashionArray[_to].length - 1; Transfer(_from != address(0) ? _from : this, _to, _tokenId); } /// @dev Actually perform the safeTransferFrom function _safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) internal isValidToken(_tokenId) canTransfer(_tokenId) { address owner = fashionIdToOwner[_tokenId]; require(owner != address(0)); require(_to != address(0)); require(owner == _from); _transfer(_from, _to, _tokenId); // Do the callback after everything is done to avoid reentrancy attack uint256 codeSize; assembly { codeSize := extcodesize(_to) } if (codeSize == 0) { return; } bytes4 retval = ERC721TokenReceiver(_to).onERC721Received(_from, _tokenId, data); // bytes4(keccak256("onERC721Received(address,uint256,bytes)")) = 0xf0b9e5ba; require(retval == 0xf0b9e5ba); } //---------------------------------------------------------------------------------------------------------- /// @dev Equipment creation /// @param _owner Owner of the equipment created /// @param _attrs Attributes of the equipment created /// @return Token ID of the equipment created function createFashion(address _owner, uint16[13] _attrs, uint16 _createType) external whenNotPaused returns(uint256) { require(actionContracts[msg.sender]); require(_owner != address(0)); uint256 newFashionId = fashionArray.length; require(newFashionId < 4294967296); fashionArray.length += 1; Fashion storage fs = fashionArray[newFashionId]; fs.equipmentId = _attrs[0]; fs.quality = _attrs[1]; fs.pos = _attrs[2]; if (_attrs[3] != 0) { fs.production = _attrs[3]; } if (_attrs[4] != 0) { fs.attack = _attrs[4]; } if (_attrs[5] != 0) { fs.defense = _attrs[5]; } if (_attrs[6] != 0) { fs.plunder = _attrs[6]; } if (_attrs[7] != 0) { fs.productionMultiplier = _attrs[7]; } if (_attrs[8] != 0) { fs.attackMultiplier = _attrs[8]; } if (_attrs[9] != 0) { fs.defenseMultiplier = _attrs[9]; } if (_attrs[10] != 0) { fs.plunderMultiplier = _attrs[10]; } if (_attrs[11] != 0) { fs.level = _attrs[11]; } if (_attrs[12] != 0) { fs.isPercent = _attrs[12]; } _transfer(0, _owner, newFashionId); CreateFashion(_owner, newFashionId, _attrs[0], _attrs[1], _attrs[2], _attrs[11], _createType); return newFashionId; } /// @dev One specific attribute of the equipment modified function _changeAttrByIndex(Fashion storage _fs, uint16 _index, uint16 _val) internal { if (_index == 3) { _fs.production = _val; } else if(_index == 4) { _fs.attack = _val; } else if(_index == 5) { _fs.defense = _val; } else if(_index == 6) { _fs.plunder = _val; }else if(_index == 7) { _fs.productionMultiplier = _val; }else if(_index == 8) { _fs.attackMultiplier = _val; }else if(_index == 9) { _fs.defenseMultiplier = _val; }else if(_index == 10) { _fs.plunderMultiplier = _val; } else if(_index == 11) { _fs.level = _val; } } /// @dev Equiment attributes modified (max 4 stats modified) /// @param _tokenId Equipment Token ID /// @param _idxArray Stats order that must be modified /// @param _params Stat value that must be modified /// @param _changeType Modification type such as enhance, socket, etc. function changeFashionAttr(uint256 _tokenId, uint16[4] _idxArray, uint16[4] _params, uint16 _changeType) external whenNotPaused isValidToken(_tokenId) { require(actionContracts[msg.sender]); Fashion storage fs = fashionArray[_tokenId]; if (_idxArray[0] > 0) { _changeAttrByIndex(fs, _idxArray[0], _params[0]); } if (_idxArray[1] > 0) { _changeAttrByIndex(fs, _idxArray[1], _params[1]); } if (_idxArray[2] > 0) { _changeAttrByIndex(fs, _idxArray[2], _params[2]); } if (_idxArray[3] > 0) { _changeAttrByIndex(fs, _idxArray[3], _params[3]); } ChangeFashion(fashionIdToOwner[_tokenId], _tokenId, _changeType); } /// @dev Equipment destruction /// @param _tokenId Equipment Token ID /// @param _deleteType Destruction type, such as craft function destroyFashion(uint256 _tokenId, uint16 _deleteType) external whenNotPaused isValidToken(_tokenId) { require(actionContracts[msg.sender]); address _from = fashionIdToOwner[_tokenId]; uint256 indexFrom = fashionIdToOwnerIndex[_tokenId]; uint256[] storage fsArray = ownerToFashionArray[_from]; require(fsArray[indexFrom] == _tokenId); if (indexFrom != fsArray.length - 1) { uint256 lastTokenId = fsArray[fsArray.length - 1]; fsArray[indexFrom] = lastTokenId; fashionIdToOwnerIndex[lastTokenId] = indexFrom; } fsArray.length -= 1; fashionIdToOwner[_tokenId] = address(0); delete fashionIdToOwnerIndex[_tokenId]; destroyFashionCount += 1; Transfer(_from, 0, _tokenId); DeleteFashion(_from, _tokenId, _deleteType); } /// @dev Safe transfer by trust contracts function safeTransferByContract(uint256 _tokenId, address _to) external whenNotPaused { require(actionContracts[msg.sender]); require(_tokenId >= 1 && _tokenId <= fashionArray.length); address owner = fashionIdToOwner[_tokenId]; require(owner != address(0)); require(_to != address(0)); require(owner != _to); _transfer(owner, _to, _tokenId); } //---------------------------------------------------------------------------------------------------------- /// @dev Get fashion attrs by tokenId front function getFashionFront(uint256 _tokenId) external view isValidToken(_tokenId) returns (uint256[14] datas) { Fashion storage fs = fashionArray[_tokenId]; datas[0] = fs.equipmentId; datas[1] = fs.quality; datas[2] = fs.pos; datas[3] = fs.production; datas[4] = fs.attack; datas[5] = fs.defense; datas[6] = fs.plunder; datas[7] = fs.productionMultiplier; datas[8] = fs.attackMultiplier; datas[9] = fs.defenseMultiplier; datas[10] = fs.plunderMultiplier; datas[11] = fs.level; datas[12] = fs.isPercent; datas[13] = _tokenId; } /// @dev Get fashion attrs by tokenId back function getFashion(uint256 _tokenId) external view isValidToken(_tokenId) returns (uint16[13] datas) { Fashion storage fs = fashionArray[_tokenId]; datas[0] = fs.equipmentId; datas[1] = fs.quality; datas[2] = fs.pos; datas[3] = fs.production; datas[4] = fs.attack; datas[5] = fs.defense; datas[6] = fs.plunder; datas[7] = fs.productionMultiplier; datas[8] = fs.attackMultiplier; datas[9] = fs.defenseMultiplier; datas[10] = fs.plunderMultiplier; datas[11] = fs.level; datas[12] = fs.isPercent; } /// @dev Get tokenIds and flags by owner function getOwnFashions(address _owner) external view returns(uint256[] tokens, uint32[] flags) { require(_owner != address(0)); uint256[] storage fsArray = ownerToFashionArray[_owner]; uint256 length = fsArray.length; tokens = new uint256[](length); flags = new uint32[](length); for (uint256 i = 0; i < length; ++i) { tokens[i] = fsArray[i]; Fashion storage fs = fashionArray[fsArray[i]]; flags[i] = uint32(uint32(fs.equipmentId) * 10000 + uint32(fs.quality) * 100 + fs.pos); } } /// @dev Race token info returned based on Token ID transfered (64 at most) function getFashionsAttrs(uint256[] _tokens) external view returns(uint256[] attrs) { uint256 length = _tokens.length; attrs = new uint256[](length * 14); uint256 tokenId; uint256 index; for (uint256 i = 0; i < length; ++i) { tokenId = _tokens[i]; if (fashionIdToOwner[tokenId] != address(0)) { index = i * 14; Fashion storage fs = fashionArray[tokenId]; attrs[index] = fs.equipmentId; attrs[index + 1] = fs.quality; attrs[index + 2] = fs.pos; attrs[index + 3] = fs.production; attrs[index + 4] = fs.attack; attrs[index + 5] = fs.defense; attrs[index + 6] = fs.plunder; attrs[index + 7] = fs.productionMultiplier; attrs[index + 8] = fs.attackMultiplier; attrs[index + 9] = fs.defenseMultiplier; attrs[index + 10] = fs.plunderMultiplier; attrs[index + 11] = fs.level; attrs[index + 12] = fs.isPercent; attrs[index + 13] = tokenId; } } } } //Tournament bonus interface interface IRaceCoin { function addTotalEtherPool(uint256 amount) external; function addPlayerToList(address player) external; function increasePlayersAttribute(address player, uint16[13] param) external; function reducePlayersAttribute(address player, uint16[13] param) external; } contract CarsPresell is AccessService { using SafeMath for uint256; RaceToken tokenContract; IRaceCoin public raceCoinContract; //Bonus pool address address poolContract; ///Bonus pool ratio uint256 constant prizeGoldPercent = 80; //referer uint256 constant refererPercent = 5; //The maximum number of cars per quality uint16 private carCountsLimit; mapping (uint16 => uint16) carPresellCounter; mapping (address => uint16[]) presellLimit; mapping (address => uint16) freeCarCount; event CarPreSelled(address indexed buyer, uint16 equipmentId); event FreeCarsObtained(address indexed buyer, uint16 equipmentId); event PresellReferalGain(address referal, address player, uint256 amount); function CarsPresell(address _nftAddr) public { addrAdmin = msg.sender; addrService = msg.sender; addrFinance = msg.sender; tokenContract = RaceToken(_nftAddr); //Maximum number of vehicles per class carCountsLimit = 500; carPresellCounter[10001] = 100; carPresellCounter[10002] = 100; carPresellCounter[10003] = 100; carPresellCounter[10004] = 100; carPresellCounter[10005] = 100; carPresellCounter[10006] = 100; } function() external payable { } function setRaceTokenAddr(address _nftAddr) external onlyAdmin { tokenContract = RaceToken(_nftAddr); } //Set up tournament bonus address function setRaceCoin(address _addr) external onlyAdmin { require(_addr != address(0)); poolContract = _addr; raceCoinContract = IRaceCoin(_addr); } //Increase the number of pre-sale cars, the maximum limit of each vehicle is 500 vehicles. function setCarCounts(uint16 _carId, uint16 _carCounts) external onlyAdmin { require( carPresellCounter[_carId] <= carCountsLimit); uint16 curSupply = carPresellCounter[_carId]; require((curSupply + _carCounts)<= carCountsLimit); carPresellCounter[_carId] = curSupply + _carCounts; } //Get free cars function freeCar(uint16 _equipmentId) external payable whenNotPaused { require(freeCarCount[msg.sender] != 1); uint256 payBack = 0; uint16[] storage buyArray = presellLimit[msg.sender]; if(_equipmentId == 10007){ require(msg.value >= 0.0 ether); payBack = (msg.value - 0.0 ether); uint16[13] memory param0 = [10007, 7, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]; tokenContract.createFashion(msg.sender, param0, 1); raceCoinContract.increasePlayersAttribute(msg.sender, param0); buyArray.push(10007); if (payBack > 0) { msg.sender.transfer(payBack); } freeCarCount[msg.sender] = 1; raceCoinContract.addPlayerToList(msg.sender); emit FreeCarsObtained(msg.sender,_equipmentId); } } //Whether a free car has been received. function getFreeCarCount(address _owner) external view returns(uint16){ require(_owner != address(0)); if(freeCarCount[msg.sender] != 1){ freeCarCount[msg.sender] = 0; } return freeCarCount[msg.sender]; } function UpdateCurrentCarCount(uint16 _equipmentId,uint16 curSupply) internal { carPresellCounter[_equipmentId] = (curSupply - 1); } function carPresell(address referer,uint16 _equipmentId) external payable whenNotPaused { uint16 curSupply = carPresellCounter[_equipmentId]; require(curSupply > 0); uint16[] storage buyArray = presellLimit[msg.sender]; uint256 curBuyCnt = buyArray.length; require(curBuyCnt < 21); uint256 payBack = 0; if (_equipmentId == 10001) { require(msg.value >= 0.075 ether); payBack = (msg.value - 0.075 ether); uint16[13] memory param1 = [10001, 1, 9, 10, 0, 0, 0, 5, 0, 0, 0, 0, 0]; // 10 productivity 5% productivity plus tokenContract.createFashion(msg.sender, param1, 1); raceCoinContract.increasePlayersAttribute(msg.sender, param1); buyArray.push(10001); raceCoinContract.addPlayerToList(msg.sender); } else if(_equipmentId == 10002) { require(msg.value >= 0.112 ether); payBack = (msg.value - 0.112 ether); uint16[13] memory param2 = [10002, 2, 9, 15, 0, 0, 0, 8, 5, 0, 0, 0, 0]; // 15 productivity 8% productivity plus 5% attack bonus tokenContract.createFashion(msg.sender, param2, 1); raceCoinContract.increasePlayersAttribute(msg.sender, param2); buyArray.push(10002); raceCoinContract.addPlayerToList(msg.sender); } else if(_equipmentId == 10003) { require(msg.value >= 0.225 ether); payBack = (msg.value - 0.225 ether); uint16[13] memory param3 = [10003, 3, 9, 30, 0, 0, 0, 15, 10, 5, 0, 0, 0]; // 30 productivity 15% productivity plus 10% attack plus 5% defense plus tokenContract.createFashion(msg.sender, param3, 1); raceCoinContract.increasePlayersAttribute(msg.sender, param3); buyArray.push(10003); raceCoinContract.addPlayerToList(msg.sender); } else if(_equipmentId == 10004) { require(msg.value >= 0.563 ether); payBack = (msg.value - 0.563 ether); uint16[13] memory param4 = [10004, 4, 9, 75, 0, 0, 0, 38, 25, 13, 5, 0, 0]; // 75 productivity 38% productivity plus 25% attack plus 13% defense plus 5% predatory addition. tokenContract.createFashion(msg.sender, param4, 1); raceCoinContract.increasePlayersAttribute(msg.sender, param4); buyArray.push(10004); raceCoinContract.addPlayerToList(msg.sender); } else if(_equipmentId == 10005){ require(msg.value >= 1.7 ether); payBack = (msg.value - 1.7 ether); uint16[13] memory param5 = [10005, 5, 9, 225, 0, 0, 0, 113, 75, 38, 15, 0, 0]; // 225 productivity 113% productivity plus 75% attack plus 38% defense plus 15% predatory addition. tokenContract.createFashion(msg.sender, param5, 1); raceCoinContract.increasePlayersAttribute(msg.sender, param5); buyArray.push(10005); raceCoinContract.addPlayerToList(msg.sender); }else if(_equipmentId == 10006){ require(msg.value >= 6 ether); payBack = (msg.value - 6 ether); uint16[13] memory param6 = [10006, 6, 9, 788, 0, 0, 0, 394, 263, 131, 53, 0, 0]; // 788 productivity 394% productivity plus 263% attack plus 131% defense plus 53% predatory addition. tokenContract.createFashion(msg.sender, param6, 1); raceCoinContract.increasePlayersAttribute(msg.sender, param6); buyArray.push(10006); raceCoinContract.addPlayerToList(msg.sender); } UpdateCurrentCarCount(_equipmentId,curSupply); emit CarPreSelled(msg.sender, _equipmentId); uint256 ethVal = msg.value.sub(payBack); uint256 referalDivs; if (referer != address(0) && referer != msg.sender) { referalDivs = ethVal.mul(refererPercent).div(100); // 5% referer.transfer(referalDivs); emit PresellReferalGain(referer, msg.sender, referalDivs); } //Capital injection into capital pool if (poolContract != address(0) && ethVal.mul(prizeGoldPercent).div(100) > 0) { poolContract.transfer(ethVal.mul(prizeGoldPercent).div(100)); raceCoinContract.addTotalEtherPool(ethVal.mul(prizeGoldPercent).div(100)); } //The rest of the account is entered into the developer account. if(referalDivs > 0){ addrFinance.transfer(ethVal.sub(ethVal.mul(prizeGoldPercent).div(100)).sub(ethVal.mul(refererPercent).div(100))); }else{ addrFinance.transfer(ethVal.sub(ethVal.mul(prizeGoldPercent).div(100))); } if (payBack > 0) { msg.sender.transfer(payBack); } } function withdraw() external { require(msg.sender == addrFinance || msg.sender == addrAdmin); addrFinance.transfer(this.balance); } function getCarCanPresellCount() external view returns (uint16[6] cntArray) { cntArray[0] = carPresellCounter[10001]; cntArray[1] = carPresellCounter[10002]; cntArray[2] = carPresellCounter[10003]; cntArray[3] = carPresellCounter[10004]; cntArray[4] = carPresellCounter[10005]; cntArray[5] = carPresellCounter[10006]; } function getBuyCount(address _owner) external view returns (uint32) { return uint32(presellLimit[_owner].length); } function getBuyArray(address _owner) external view returns (uint16[]) { uint16[] storage buyArray = presellLimit[_owner]; return buyArray; } } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure 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; } /** * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"setRaceCoin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"referer","type":"address"},{"name":"_equipmentId","type":"uint16"}],"name":"carPresell","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"doUnpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getFreeCarCount","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"raceCoinContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_carId","type":"uint16"},{"name":"_carCounts","type":"uint16"}],"name":"setCarCounts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"doPause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"addrFinance","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newFinance","type":"address"}],"name":"setFinance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_equipmentId","type":"uint16"}],"name":"freeCar","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_newService","type":"address"}],"name":"setService","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"addrAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"addrService","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCarCanPresellCount","outputs":[{"name":"cntArray","type":"uint16[6]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getBuyCount","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getBuyArray","outputs":[{"name":"","type":"uint16[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nftAddr","type":"address"}],"name":"setRaceTokenAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_nftAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"equipmentId","type":"uint16"}],"name":"CarPreSelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"equipmentId","type":"uint16"}],"name":"FreeCarsObtained","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"referal","type":"address"},{"indexed":false,"name":"player","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"PresellReferalGain","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"preAdmin","type":"address"},{"indexed":true,"name":"newAdmin","type":"address"}],"name":"AdminTransferred","type":"event"}]
Contract Creation Code
608060405260008060006101000a81548160ff02191690831515021790555034801561002a57600080fd5b50604051602080613e5f8339810180604052810190808051906020019092919050505033600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101f4600560146101000a81548161ffff021916908361ffff16021790555060646006600061271161ffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff16021790555060646006600061271261ffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff16021790555060646006600061271361ffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff16021790555060646006600061271461ffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff16021790555060646006600061271561ffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff16021790555060646006600061271661ffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff16021790555050613b60806102ff6000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806312bcf07d146101145780631aec50cd1461015757806330efb8d31461019b5780633ccfd60b146101b2578063558dc444146101c957806362b33b5514610228578063649f357c1461027f57806367d0661d146102be578063704b6c02146102d557806382cb9df9146103185780639b8d30641461036f578063b187bd26146103b2578063bedb8a3f146103e1578063bf8bdac114610405578063bfae2f0e14610448578063cdd977e01461049f578063cecfbf34146104f6578063d489c0bf14610549578063e5d3d9d7146105ac578063f6d75e8214610644575b005b34801561012057600080fd5b50610155600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610687565b005b610199600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803561ffff1690602001909291905050506107a4565b005b3480156101a757600080fd5b506101b0612788565b005b3480156101be57600080fd5b506101c761281a565b005b3480156101d557600080fd5b5061020a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612950565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561023457600080fd5b5061023d612a99565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561028b57600080fd5b506102bc600480360381019080803561ffff169060200190929190803561ffff169060200190929190505050612abf565b005b3480156102ca57600080fd5b506102d3612bfe565b005b3480156102e157600080fd5b50610316600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c91565b005b34801561032457600080fd5b5061032d612de9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037b57600080fd5b506103b0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e0f565b005b3480156103be57600080fd5b506103c7612f43565b604051808215151515815260200191505060405180910390f35b610403600480360381019080803561ffff169060200190929190505050612f55565b005b34801561041157600080fd5b50610446600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613549565b005b34801561045457600080fd5b5061045d61367d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104ab57600080fd5b506104b46136a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561050257600080fd5b5061050b6136c9565b6040518082600660200280838360005b8381101561053657808201518184015260208101905061051b565b5050505090500191505060405180910390f35b34801561055557600080fd5b5061058a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613890565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156105b857600080fd5b506105ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506138dc565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610630578082015181840152602081019050610615565b505050509050019250505060405180910390f35b34801561065057600080fd5b50610685600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506139a1565b005b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106e357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561071f57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000806107b2613aed565b6107ba613aed565b6107c2613aed565b6107ca613aed565b6107d2613aed565b6107da613aed565b6000806000809054906101000a900460ff161515156107f857600080fd5b600660008e61ffff1661ffff16815260200190815260200160002060009054906101000a900461ffff169b5060008c61ffff1611151561083757600080fd5b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209a508a80549050995060158a10151561088e57600080fd5b600098506127118d61ffff161415610cc45767010a741a4627800034101515156108b757600080fd5b67010a741a46278000340398506101a06040519081016040528061271161ffff168152602001600161ffff168152602001600961ffff168152602001600a61ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001600561ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152509750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f1406049338a60016040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600d60200280838360005b83811015610a2b578082015181840152602081019050610a10565b505050509050018261ffff1681526020019350505050602060405180830381600087803b158015610a5b57600080fd5b505af1158015610a6f573d6000803e3d6000fd5b505050506040513d6020811015610a8557600080fd5b810190808051906020019092919050505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634aab17f9338a6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600d60200280838360005b83811015610b5f578082015181840152602081019050610b44565b5050505090500192505050600060405180830381600087803b158015610b8457600080fd5b505af1158015610b98573d6000803e3d6000fd5b505050508a612711908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328ed9d80336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610ca757600080fd5b505af1158015610cbb573d6000803e3d6000fd5b505050506121c2565b6127128d61ffff1614156110f65767018de76816d800003410151515610ce957600080fd5b67018de76816d80000340398506101a06040519081016040528061271261ffff168152602001600261ffff168152602001600961ffff168152602001600f61ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001600861ffff168152602001600561ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152509650600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f1406049338960016040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600d60200280838360005b83811015610e5d578082015181840152602081019050610e42565b505050509050018261ffff1681526020019350505050602060405180830381600087803b158015610e8d57600080fd5b505af1158015610ea1573d6000803e3d6000fd5b505050506040513d6020811015610eb757600080fd5b810190808051906020019092919050505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634aab17f933896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600d60200280838360005b83811015610f91578082015181840152602081019050610f76565b5050505090500192505050600060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b505050508a612712908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328ed9d80336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156110d957600080fd5b505af11580156110ed573d6000803e3d6000fd5b505050506121c1565b6127138d61ffff1614156115285767031f5c4ed2768000341015151561111b57600080fd5b67031f5c4ed2768000340398506101a06040519081016040528061271361ffff168152602001600361ffff168152602001600961ffff168152602001601e61ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001600f61ffff168152602001600a61ffff168152602001600561ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152509550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f1406049338860016040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600d60200280838360005b8381101561128f578082015181840152602081019050611274565b505050509050018261ffff1681526020019350505050602060405180830381600087803b1580156112bf57600080fd5b505af11580156112d3573d6000803e3d6000fd5b505050506040513d60208110156112e957600080fd5b810190808051906020019092919050505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634aab17f933886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600d60200280838360005b838110156113c35780820151818401526020810190506113a8565b5050505090500192505050600060405180830381600087803b1580156113e857600080fd5b505af11580156113fc573d6000803e3d6000fd5b505050508a612713908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328ed9d80336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561150b57600080fd5b505af115801561151f573d6000803e3d6000fd5b505050506121c0565b6127148d61ffff16141561195a576707d02d84608b8000341015151561154d57600080fd5b6707d02d84608b8000340398506101a06040519081016040528061271461ffff168152602001600461ffff168152602001600961ffff168152602001604b61ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001602661ffff168152602001601961ffff168152602001600d61ffff168152602001600561ffff168152602001600061ffff168152602001600061ffff168152509450600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f1406049338760016040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600d60200280838360005b838110156116c15780820151818401526020810190506116a6565b505050509050018261ffff1681526020019350505050602060405180830381600087803b1580156116f157600080fd5b505af1158015611705573d6000803e3d6000fd5b505050506040513d602081101561171b57600080fd5b810190808051906020019092919050505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634aab17f933876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600d60200280838360005b838110156117f55780820151818401526020810190506117da565b5050505090500192505050600060405180830381600087803b15801561181a57600080fd5b505af115801561182e573d6000803e3d6000fd5b505050508a612714908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328ed9d80336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561193d57600080fd5b505af1158015611951573d6000803e3d6000fd5b505050506121bf565b6127158d61ffff161415611d8c576717979cfe362a0000341015151561197f57600080fd5b6717979cfe362a0000340398506101a06040519081016040528061271561ffff168152602001600561ffff168152602001600961ffff16815260200160e161ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001607161ffff168152602001604b61ffff168152602001602661ffff168152602001600f61ffff168152602001600061ffff168152602001600061ffff168152509350600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f1406049338660016040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600d60200280838360005b83811015611af3578082015181840152602081019050611ad8565b505050509050018261ffff1681526020019350505050602060405180830381600087803b158015611b2357600080fd5b505af1158015611b37573d6000803e3d6000fd5b505050506040513d6020811015611b4d57600080fd5b810190808051906020019092919050505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634aab17f933866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600d60200280838360005b83811015611c27578082015181840152602081019050611c0c565b5050505090500192505050600060405180830381600087803b158015611c4c57600080fd5b505af1158015611c60573d6000803e3d6000fd5b505050508a612715908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328ed9d80336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611d6f57600080fd5b505af1158015611d83573d6000803e3d6000fd5b505050506121be565b6127168d61ffff1614156121bd576753444835ec5800003410151515611db157600080fd5b6753444835ec580000340398506101a06040519081016040528061271661ffff168152602001600661ffff168152602001600961ffff16815260200161031461ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff16815260200161018a61ffff16815260200161010761ffff168152602001608361ffff168152602001603561ffff168152602001600061ffff168152602001600061ffff168152509250600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f1406049338560016040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600d60200280838360005b83811015611f28578082015181840152602081019050611f0d565b505050509050018261ffff1681526020019350505050602060405180830381600087803b158015611f5857600080fd5b505af1158015611f6c573d6000803e3d6000fd5b505050506040513d6020811015611f8257600080fd5b810190808051906020019092919050505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634aab17f933856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600d60200280838360005b8381101561205c578082015181840152602081019050612041565b5050505090500192505050600060405180830381600087803b15801561208157600080fd5b505af1158015612095573d6000803e3d6000fd5b505050508a612716908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328ed9d80336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156121a457600080fd5b505af11580156121b8573d6000803e3d6000fd5b505050505b5b5b5b5b5b6121cc8d8d613a41565b3373ffffffffffffffffffffffffffffffffffffffff167f1916d27b07f08435c37b17f9f23255ee9623457f8eb8752e32510255850b5dc38e604051808261ffff1661ffff16815260200191505060405180910390a26122358934613a7e90919063ffffffff16565b9150600073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff16141580156122a057503373ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614155b156123b5576122cc60646122be600585613a9790919063ffffffff16565b613ad290919063ffffffff16565b90508d73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612314573d6000803e3d6000fd5b507fe360cd1808f32f51cd18f90bf94f40accf77a3213b3adfa84384c8d7845f309e8e3383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a15b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561243a57506000612438606461242a605086613a9790919063ffffffff16565b613ad290919063ffffffff16565b115b1561259e57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6124a26064612494605087613a9790919063ffffffff16565b613ad290919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156124cd573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e7526bd6125336064612525605087613a9790919063ffffffff16565b613ad290919063ffffffff16565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561258557600080fd5b505af1158015612599573d6000803e3d6000fd5b505050505b600081111561268557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61265461260d60646125ff600588613a9790919063ffffffff16565b613ad290919063ffffffff16565b612646612637606461262960508a613a9790919063ffffffff16565b613ad290919063ffffffff16565b87613a7e90919063ffffffff16565b613a7e90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561267f573d6000803e3d6000fd5b50612727565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6126fa6126eb60646126dd605088613a9790919063ffffffff16565b613ad290919063ffffffff16565b85613a7e90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612725573d6000803e3d6000fd5b505b6000891115612778573373ffffffffffffffffffffffffffffffffffffffff166108fc8a9081150290604051600060405180830381858888f19350505050158015612776573d6000803e3d6000fd5b505b5050505050505050505050505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127e457600080fd5b6000809054906101000a900460ff1615156127fe57600080fd5b60008060006101000a81548160ff021916908315150217905550565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806128c35750600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156128ce57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561294d573d6000803e3d6000fd5b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561298d57600080fd5b6001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff16141515612a44576000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff169050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b1c57600080fd5b600560149054906101000a900461ffff1661ffff16600660008561ffff1661ffff16815260200190815260200160002060009054906101000a900461ffff1661ffff1611151515612b6c57600080fd5b600660008461ffff1661ffff16815260200190815260200160002060009054906101000a900461ffff169050600560149054906101000a900461ffff1661ffff1682820161ffff1611151515612bc157600080fd5b818101600660008561ffff1661ffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff160217905550505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c5a57600080fd5b6000809054906101000a900460ff16151515612c7557600080fd5b60016000806101000a81548160ff021916908315150217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ced57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612d2957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a380600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612eb85750600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612ec357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612eff57600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900460ff1681565b600080612f60613aed565b6000809054906101000a900460ff16151515612f7b57600080fd5b6001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff1614151515612fdc57600080fd5b60009250600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091506127178461ffff161415613543576000341015151561303f57600080fd5b6000340392506101a06040519081016040528061271761ffff168152602001600761ffff168152602001600961ffff168152602001600161ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152602001600061ffff168152509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f1406049338360016040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600d60200280838360005b838110156131ac578082015181840152602081019050613191565b505050509050018261ffff1681526020019350505050602060405180830381600087803b1580156131dc57600080fd5b505af11580156131f0573d6000803e3d6000fd5b505050506040513d602081101561320657600080fd5b810190808051906020019092919050505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634aab17f933836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600d60200280838360005b838110156132e05780820151818401526020810190506132c5565b5050505090500192505050600060405180830381600087803b15801561330557600080fd5b505af1158015613319573d6000803e3d6000fd5b5050505081612717908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff1602179055505060008311156133bc573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156133ba573d6000803e3d6000fd5b505b6001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328ed9d80336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156134d457600080fd5b505af11580156134e8573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167fee82114fb2a33ead719c44bab6c2e40e71cfd9898d84245be54d80a1048ce0ba85604051808261ffff1661ffff16815260200191505060405180910390a25b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806135f25750600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156135fd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561363957600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6136d1613b11565b6006600061271161ffff16815260200190815260200160002060009054906101000a900461ffff1681600060068110151561370857fe5b602002019061ffff16908161ffff16815250506006600061271261ffff16815260200190815260200160002060009054906101000a900461ffff1681600160068110151561375257fe5b602002019061ffff16908161ffff16815250506006600061271361ffff16815260200190815260200160002060009054906101000a900461ffff1681600260068110151561379c57fe5b602002019061ffff16908161ffff16815250506006600061271461ffff16815260200190815260200160002060009054906101000a900461ffff168160036006811015156137e657fe5b602002019061ffff16908161ffff16815250506006600061271561ffff16815260200190815260200160002060009054906101000a900461ffff1681600460068110151561383057fe5b602002019061ffff16908161ffff16815250506006600061271661ffff16815260200190815260200160002060009054906101000a900461ffff1681600560068110151561387a57fe5b602002019061ffff16908161ffff168152505090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60606000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508080548060200260200160405190810160405280929190818152602001828054801561399457602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161395b5790505b5050505050915050919050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156139fd57600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018103600660008461ffff1661ffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505050565b6000828211151515613a8c57fe5b818303905092915050565b6000806000841415613aac5760009150613acb565b8284029050828482811515613abd57fe5b04141515613ac757fe5b8091505b5092915050565b6000808284811515613ae057fe5b0490508091505092915050565b6101a060405190810160405280600d90602082028038833980820191505090505090565b60c0604051908101604052806006906020820280388339808201915050905050905600a165627a7a72305820aa8e9598dc4200cb983a146698456e49f74e5a50908dabd7d025514071af25db0029000000000000000000000000df9ca851164984d7665d4db1da0921c77c6105ad
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000df9ca851164984d7665d4db1da0921c77c6105ad
-----Decoded View---------------
Arg [0] : _nftAddr (address): 0xDf9ca851164984d7665d4DB1dA0921c77C6105Ad
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000df9ca851164984d7665d4db1da0921c77c6105ad
Swarm Source
bzzr://aa8e9598dc4200cb983a146698456e49f74e5a50908dabd7d025514071af25db
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.
[ Download: CSV Export ]
[ 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.