Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Latest 25 from a total of 1,512 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Low Compose | 5677703 | 2813 days ago | IN | 0.003 ETH | 0.00007079 | ||||
| Low Compose | 5592414 | 2828 days ago | IN | 0.003 ETH | 0.00016519 | ||||
| Low Compose | 5590558 | 2828 days ago | IN | 0.003 ETH | 0.00033038 | ||||
| Low Compose | 5590214 | 2829 days ago | IN | 0.003 ETH | 0.00033038 | ||||
| Low Compose | 5590212 | 2829 days ago | IN | 0.003 ETH | 0.00033038 | ||||
| Low Compose | 5590193 | 2829 days ago | IN | 0.003 ETH | 0.00049557 | ||||
| Low Compose | 5590191 | 2829 days ago | IN | 0.003 ETH | 0.00049557 | ||||
| High Compose | 5581458 | 2830 days ago | IN | 0.005 ETH | 0.00007151 | ||||
| Low Compose | 5580059 | 2830 days ago | IN | 0.003 ETH | 0.00012002 | ||||
| Low Compose | 5578450 | 2831 days ago | IN | 0.003 ETH | 0.00011799 | ||||
| Do Pause | 5578227 | 2831 days ago | IN | 0 ETH | 0.00013659 | ||||
| Low Compose | 5576139 | 2831 days ago | IN | 0.003 ETH | 0.00036599 | ||||
| Low Compose | 5575771 | 2831 days ago | IN | 0.003 ETH | 0.00036596 | ||||
| Low Compose | 5575763 | 2831 days ago | IN | 0.003 ETH | 0.0003658 | ||||
| High Compose | 5575464 | 2831 days ago | IN | 0.005 ETH | 0.00019015 | ||||
| High Compose | 5574539 | 2831 days ago | IN | 0.005 ETH | 0.00050502 | ||||
| Low Compose | 5574526 | 2831 days ago | IN | 0.003 ETH | 0.00054882 | ||||
| Low Compose | 5574522 | 2831 days ago | IN | 0.003 ETH | 0.00054884 | ||||
| Low Compose | 5574520 | 2831 days ago | IN | 0.003 ETH | 0.00054877 | ||||
| Low Compose | 5574518 | 2831 days ago | IN | 0.003 ETH | 0.00054877 | ||||
| Low Compose | 5574517 | 2831 days ago | IN | 0.003 ETH | 0.00054882 | ||||
| Low Compose | 5574477 | 2831 days ago | IN | 0.003 ETH | 0.00091458 | ||||
| High Compose | 5573835 | 2831 days ago | IN | 0.005 ETH | 0.00057042 | ||||
| Low Compose | 5573692 | 2831 days ago | IN | 0.003 ETH | 0.00036583 | ||||
| Low Compose | 5573690 | 2831 days ago | IN | 0.003 ETH | 0.0003659 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 5576139 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5576139 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5575771 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5575771 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5575763 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5575763 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5575464 | 2831 days ago | 0.0025 ETH | ||||
| Transfer | 5575464 | 2831 days ago | 0.0025 ETH | ||||
| Transfer | 5574539 | 2831 days ago | 0.0025 ETH | ||||
| Transfer | 5574539 | 2831 days ago | 0.0025 ETH | ||||
| Transfer | 5574526 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5574526 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5574522 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5574522 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5574520 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5574520 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5574518 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5574518 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5574517 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5574517 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5574477 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5574477 | 2831 days ago | 0.0015 ETH | ||||
| Transfer | 5573835 | 2831 days ago | 0.0025 ETH | ||||
| Transfer | 5573835 | 2831 days ago | 0.0025 ETH | ||||
| Transfer | 5573692 | 2831 days ago | 0.0015 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ActionCompose
Compiler Version
v0.4.21+commit.dfe3193c
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-04-26 */ /* ==================================================================== */ /* Copyright (c) 2018 The ether.online Project. All rights reserved. /* /* https://ether.online The first RPG game of blockchain /* /* authors [email protected] /* [email protected] /* ==================================================================== */ 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; } function withdraw(address _target, uint256 _amount) external { require(msg.sender == addrFinance || msg.sender == addrAdmin); require(_amount > 0); address receiver = _target == address(0) ? addrFinance : _target; uint256 balance = this.balance; if (_amount < balance) { receiver.transfer(_amount); } else { receiver.transfer(this.balance); } } } interface IDataMining { function getRecommender(address _target) external view returns(address); function subFreeMineral(address _target) external returns(bool); } interface IDataEquip { function isEquiped(address _target, uint256 _tokenId) external view returns(bool); function isEquipedAny2(address _target, uint256 _tokenId1, uint256 _tokenId2) external view returns(bool); function isEquipedAny3(address _target, uint256 _tokenId1, uint256 _tokenId2, uint256 _tokenId3) external view returns(bool); } contract Random { uint256 _seed; function _rand() internal returns (uint256) { _seed = uint256(keccak256(_seed, block.blockhash(block.number - 1), block.coinbase, block.difficulty)); return _seed; } function _randBySeed(uint256 _outSeed) internal view returns (uint256) { return uint256(keccak256(_outSeed, block.blockhash(block.number - 1), block.coinbase, block.difficulty)); } } /** * @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 WarToken is ERC721, AccessAdmin { /// @dev The equipment info struct Fashion { uint16 protoId; // 0 Equipment ID uint16 quality; // 1 Rarity: 1 Coarse/2 Good/3 Rare/4 Epic/5 Legendary uint16 pos; // 2 Slots: 1 Weapon/2 Hat/3 Cloth/4 Pant/5 Shoes/9 Pets uint16 health; // 3 Health uint16 atkMin; // 4 Min attack uint16 atkMax; // 5 Max attack uint16 defence; // 6 Defennse uint16 crit; // 7 Critical rate uint16 isPercent; // 8 Attr value type uint16 attrExt1; // 9 future stat 1 uint16 attrExt2; // 10 future stat 2 uint16 attrExt3; // 11 future stat 3 } /// @dev All equipments tokenArray (not exceeding 2^32-1) Fashion[] public fashionArray; /// @dev Amount of tokens destroyed uint256 destroyFashionCount; /// @dev Equipment token ID vs 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 WAR 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 WAR 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 protoId, uint16 quality, uint16 pos, 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 WarToken() 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 "WAR Token"; } function symbol() public pure returns(string) { return "WAR"; } /// @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 WAR /// @param _tokenId The tokenId of WAR /// @return Give The address of the owner of this WAR function ownerOf(uint256 _tokenId) external view /*isValidToken(_tokenId)*/ returns (address owner) { return fashionIdToOwner[_tokenId]; } /// @dev Transfers the ownership of an WAR from one address to another address /// @param _from The current owner of the WAR /// @param _to The new owner /// @param _tokenId The WAR 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 WAR from one address to another address /// @param _from The current owner of the WAR /// @param _to The new owner /// @param _tokenId The WAR to transfer function safeTransferFrom(address _from, address _to, uint256 _tokenId) external whenNotPaused { _safeTransferFrom(_from, _to, _tokenId, ""); } /// @dev Transfer ownership of an WAR, '_to' must be a vaild address, or the WAR will lost /// @param _from The current owner of the WAR /// @param _to The new owner /// @param _tokenId The WAR 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 WAR /// @param _approved The new approved WAR controller /// @param _tokenId The WAR 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 WAR /// @param _tokenId The WAR to find the approved address for /// @return The approved address for this WAR, 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 WARs /// @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 WARs tracked by this contract /// @return A count of valid WARs 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 WAR(If created: 0x0) /// @param _to The new owner of this WAR /// @param _tokenId The tokenId of the WAR 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 WAR 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 WAR 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[9] _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.protoId = _attrs[0]; fs.quality = _attrs[1]; fs.pos = _attrs[2]; if (_attrs[3] != 0) { fs.health = _attrs[3]; } if (_attrs[4] != 0) { fs.atkMin = _attrs[4]; fs.atkMax = _attrs[5]; } if (_attrs[6] != 0) { fs.defence = _attrs[6]; } if (_attrs[7] != 0) { fs.crit = _attrs[7]; } if (_attrs[8] != 0) { fs.isPercent = _attrs[8]; } _transfer(0, _owner, newFashionId); CreateFashion(_owner, newFashionId, _attrs[0], _attrs[1], _attrs[2], _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.health = _val; } else if(_index == 4) { _fs.atkMin = _val; } else if(_index == 5) { _fs.atkMax = _val; } else if(_index == 6) { _fs.defence = _val; } else if(_index == 7) { _fs.crit = _val; } else if(_index == 9) { _fs.attrExt1 = _val; } else if(_index == 10) { _fs.attrExt2 = _val; } else if(_index == 11) { _fs.attrExt3 = _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 function getFashion(uint256 _tokenId) external view isValidToken(_tokenId) returns (uint16[12] datas) { Fashion storage fs = fashionArray[_tokenId]; datas[0] = fs.protoId; datas[1] = fs.quality; datas[2] = fs.pos; datas[3] = fs.health; datas[4] = fs.atkMin; datas[5] = fs.atkMax; datas[6] = fs.defence; datas[7] = fs.crit; datas[8] = fs.isPercent; datas[9] = fs.attrExt1; datas[10] = fs.attrExt2; datas[11] = fs.attrExt3; } /// @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.protoId) * 100 + uint32(fs.quality) * 10 + fs.pos); } } /// @dev WAR token info returned based on Token ID transfered (64 at most) function getFashionsAttrs(uint256[] _tokens) external view returns(uint16[] attrs) { uint256 length = _tokens.length; require(length <= 64); attrs = new uint16[](length * 11); uint256 tokenId; uint256 index; for (uint256 i = 0; i < length; ++i) { tokenId = _tokens[i]; if (fashionIdToOwner[tokenId] != address(0)) { index = i * 11; Fashion storage fs = fashionArray[tokenId]; attrs[index] = fs.health; attrs[index + 1] = fs.atkMin; attrs[index + 2] = fs.atkMax; attrs[index + 3] = fs.defence; attrs[index + 4] = fs.crit; attrs[index + 5] = fs.isPercent; attrs[index + 6] = fs.attrExt1; attrs[index + 7] = fs.attrExt2; attrs[index + 8] = fs.attrExt3; } } } } contract ActionCompose is Random, AccessService { using SafeMath for uint256; event ComposeSuccess(address indexed owner, uint256 tokenId, uint16 protoId, uint16 quality, uint16 pos); /// @dev If the recommender can get reward bool isRecommendOpen; /// @dev prizepool percent uint256 constant prizePoolPercent = 50; /// @dev prizepool contact address address poolContract; /// @dev DataMining contract address IDataMining public dataContract; /// @dev DataEquip contract address IDataEquip public equipContract; /// @dev WarToken(NFT) contract address WarToken public tokenContract; function ActionCompose(address _nftAddr) public { addrAdmin = msg.sender; addrService = msg.sender; addrFinance = msg.sender; tokenContract = WarToken(_nftAddr); } function() external payable { } function setRecommendStatus(bool _isOpen) external onlyAdmin { require(_isOpen != isRecommendOpen); isRecommendOpen = _isOpen; } function setDataMining(address _addr) external onlyAdmin { require(_addr != address(0)); dataContract = IDataMining(_addr); } function setPrizePool(address _addr) external onlyAdmin { require(_addr != address(0)); poolContract = _addr; } function setDataEquip(address _addr) external onlyAdmin { require(_addr != address(0)); equipContract = IDataEquip(_addr); } function _getFashionParam(uint256 _seed, uint16 _protoId, uint16 _quality, uint16 _pos) internal pure returns(uint16[9] attrs) { uint256 curSeed = _seed; attrs[0] = _protoId; attrs[1] = _quality; attrs[2] = _pos; uint16 qtyParam = 0; if (_quality <= 3) { qtyParam = _quality - 1; } else if (_quality == 4) { qtyParam = 4; } else if (_quality == 5) { qtyParam = 6; } uint256 rdm = _protoId % 3; curSeed /= 10000; uint256 tmpVal = (curSeed % 10000) % 21 + 90; if (rdm == 0) { if (_pos == 1) { uint256 attr = (200 + qtyParam * 200) * tmpVal / 100; // +atk attrs[4] = uint16(attr * 40 / 100); attrs[5] = uint16(attr * 160 / 100); } else if (_pos == 2) { attrs[6] = uint16((40 + qtyParam * 40) * tmpVal / 100); // +def } else if (_pos == 3) { attrs[3] = uint16((600 + qtyParam * 600) * tmpVal / 100); // +hp } else if (_pos == 4) { attrs[6] = uint16((60 + qtyParam * 60) * tmpVal / 100); // +def } else { attrs[3] = uint16((400 + qtyParam * 400) * tmpVal / 100); // +hp } } else if (rdm == 1) { if (_pos == 1) { uint256 attr2 = (190 + qtyParam * 190) * tmpVal / 100; // +atk attrs[4] = uint16(attr2 * 50 / 100); attrs[5] = uint16(attr2 * 150 / 100); } else if (_pos == 2) { attrs[6] = uint16((42 + qtyParam * 42) * tmpVal / 100); // +def } else if (_pos == 3) { attrs[3] = uint16((630 + qtyParam * 630) * tmpVal / 100); // +hp } else if (_pos == 4) { attrs[6] = uint16((63 + qtyParam * 63) * tmpVal / 100); // +def } else { attrs[3] = uint16((420 + qtyParam * 420) * tmpVal / 100); // +hp } } else { if (_pos == 1) { uint256 attr3 = (210 + qtyParam * 210) * tmpVal / 100; // +atk attrs[4] = uint16(attr3 * 30 / 100); attrs[5] = uint16(attr3 * 170 / 100); } else if (_pos == 2) { attrs[6] = uint16((38 + qtyParam * 38) * tmpVal / 100); // +def } else if (_pos == 3) { attrs[3] = uint16((570 + qtyParam * 570) * tmpVal / 100); // +hp } else if (_pos == 4) { attrs[6] = uint16((57 + qtyParam * 57) * tmpVal / 100); // +def } else { attrs[3] = uint16((380 + qtyParam * 380) * tmpVal / 100); // +hp } } attrs[8] = 0; } function _transferHelper(uint256 ethVal) private { bool recommenderSended = false; uint256 fVal; uint256 pVal; if (isRecommendOpen) { address recommender = dataContract.getRecommender(msg.sender); if (recommender != address(0)) { uint256 rVal = ethVal.div(10); fVal = ethVal.sub(rVal).mul(prizePoolPercent).div(100); addrFinance.transfer(fVal); recommenderSended = true; recommender.transfer(rVal); pVal = ethVal.sub(rVal).sub(fVal); if (poolContract != address(0) && pVal > 0) { poolContract.transfer(pVal); } } } if (!recommenderSended) { fVal = ethVal.mul(prizePoolPercent).div(100); pVal = ethVal.sub(fVal); addrFinance.transfer(fVal); if (poolContract != address(0) && pVal > 0) { poolContract.transfer(pVal); } } } function lowCompose(uint256 token1, uint256 token2) external payable whenNotPaused { require(msg.value >= 0.003 ether); require(tokenContract.ownerOf(token1) == msg.sender); require(tokenContract.ownerOf(token2) == msg.sender); require(!equipContract.isEquipedAny2(msg.sender, token1, token2)); tokenContract.ownerOf(token1); uint16 protoId; uint16 quality; uint16 pos; uint16[12] memory fashionData = tokenContract.getFashion(token1); protoId = fashionData[0]; quality = fashionData[1]; pos = fashionData[2]; require(quality == 1 || quality == 2); fashionData = tokenContract.getFashion(token2); require(protoId == fashionData[0]); require(quality == fashionData[1]); require(pos == fashionData[2]); uint256 seed = _rand(); uint16[9] memory attrs = _getFashionParam(seed, protoId, quality + 1, pos); tokenContract.destroyFashion(token1, 1); tokenContract.destroyFashion(token2, 1); uint256 newTokenId = tokenContract.createFashion(msg.sender, attrs, 3); _transferHelper(0.003 ether); if (msg.value > 0.003 ether) { msg.sender.transfer(msg.value - 0.003 ether); } ComposeSuccess(msg.sender, newTokenId, attrs[0], attrs[1], attrs[2]); } function highCompose(uint256 token1, uint256 token2, uint256 token3) external payable whenNotPaused { require(msg.value >= 0.005 ether); require(tokenContract.ownerOf(token1) == msg.sender); require(tokenContract.ownerOf(token2) == msg.sender); require(tokenContract.ownerOf(token3) == msg.sender); require(!equipContract.isEquipedAny3(msg.sender, token1, token2, token3)); uint16 protoId; uint16 quality; uint16 pos; uint16[12] memory fashionData = tokenContract.getFashion(token1); protoId = fashionData[0]; quality = fashionData[1]; pos = fashionData[2]; require(quality == 3 || quality == 4); fashionData = tokenContract.getFashion(token2); require(protoId == fashionData[0]); require(quality == fashionData[1]); require(pos == fashionData[2]); fashionData = tokenContract.getFashion(token3); require(protoId == fashionData[0]); require(quality == fashionData[1]); require(pos == fashionData[2]); uint256 seed = _rand(); uint16[9] memory attrs = _getFashionParam(seed, protoId, quality + 1, pos); tokenContract.destroyFashion(token1, 1); tokenContract.destroyFashion(token2, 1); tokenContract.destroyFashion(token3, 1); uint256 newTokenId = tokenContract.createFashion(msg.sender, attrs, 4); _transferHelper(0.005 ether); if (msg.value > 0.005 ether) { msg.sender.transfer(msg.value - 0.005 ether); } ComposeSuccess(msg.sender, newTokenId, attrs[0], attrs[1], attrs[2]); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"dataContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"doUnpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"setPrizePool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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":"token1","type":"uint256"},{"name":"token2","type":"uint256"},{"name":"token3","type":"uint256"}],"name":"highCompose","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"token1","type":"uint256"},{"name":"token2","type":"uint256"}],"name":"lowCompose","outputs":[],"payable":true,"stateMutability":"payable","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":"_addr","type":"address"}],"name":"setDataEquip","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"equipContract","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":false,"inputs":[{"name":"_isOpen","type":"bool"}],"name":"setRecommendStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"setDataMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdraw","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":"owner","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"protoId","type":"uint16"},{"indexed":false,"name":"quality","type":"uint16"},{"indexed":false,"name":"pos","type":"uint16"}],"name":"ComposeSuccess","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"preAdmin","type":"address"},{"indexed":true,"name":"newAdmin","type":"address"}],"name":"AdminTransferred","type":"event"}]Contract Creation Code
60606040526001805460ff19169055341561001957600080fd5b604051602080611bf28339810160405280805160018054600160a060020a03338116610100810261010060a860020a0319938416811790931690921790925560028054600160a060020a03199081168317909155600380548216909217909155600780549290931691161790555050611b5b806100976000396000f3006060604052600436106100ed5763ffffffff60e060020a6000350416630d66881881146100ef57806330efb8d31461011e578063336c6d391461013157806355a373d61461015057806367d0661d14610163578063704b6c021461017657806382cb9df91461019557806391702ddc146101a8578063976f37fd146101b95780639b8d3064146101c7578063b187bd26146101e6578063ba112d501461020d578063bf8bdac11461022c578063bfae2f0e1461024b578063c11b22521461025e578063cdd977e014610271578063d80162fc14610284578063dbb62f241461029c578063f3fef3a3146102bb575b005b34156100fa57600080fd5b6101026102dd565b604051600160a060020a03909116815260200160405180910390f35b341561012957600080fd5b6100ed6102ec565b341561013c57600080fd5b6100ed600160a060020a0360043516610329565b341561015b57600080fd5b61010261038d565b341561016e57600080fd5b6100ed61039c565b341561018157600080fd5b6100ed600160a060020a03600435166103da565b34156101a057600080fd5b610102610485565b6100ed600435602435604435610494565b6100ed600435602435610b67565b34156101d257600080fd5b6100ed600160a060020a036004351661110e565b34156101f157600080fd5b6101f961118d565b604051901515815260200160405180910390f35b341561021857600080fd5b6100ed600160a060020a0360043516611196565b341561023757600080fd5b6100ed600160a060020a03600435166111fa565b341561025657600080fd5b610102611279565b341561026957600080fd5b61010261128d565b341561027c57600080fd5b61010261129c565b341561028f57600080fd5b6100ed60043515156112ab565b34156102a757600080fd5b6100ed600160a060020a0360043516611339565b34156102c657600080fd5b6100ed600160a060020a036004351660243561139d565b600554600160a060020a031681565b60015433600160a060020a03908116610100909204161461030c57600080fd5b60015460ff16151561031d57600080fd5b6001805460ff19169055565b60015433600160a060020a03908116610100909204161461034957600080fd5b600160a060020a038116151561035e57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600754600160a060020a031681565b60015433600160a060020a0390811661010090920416146103bc57600080fd5b60015460ff16156103cc57600080fd5b6001805460ff191681179055565b60015433600160a060020a0390811661010090920416146103fa57600080fd5b600160a060020a038116151561040f57600080fd5b600154600160a060020a03808316916101009004167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360018054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b600354600160a060020a031681565b60008060006104a1611aeb565b60006104ab611b14565b60015460009060ff16156104be57600080fd5b6611c37937e080003410156104d257600080fd5b600754600160a060020a033381169116636352211e8c60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561051e57600080fd5b5af1151561052b57600080fd5b50505060405180519050600160a060020a031614151561054a57600080fd5b600754600160a060020a033381169116636352211e8b60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561059657600080fd5b5af115156105a357600080fd5b50505060405180519050600160a060020a03161415156105c257600080fd5b600754600160a060020a033381169116636352211e8a60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561060e57600080fd5b5af1151561061b57600080fd5b50505060405180519050600160a060020a031614151561063a57600080fd5b600654600160a060020a031663f9c71f79338c8c8c60405160e060020a63ffffffff8716028152600160a060020a039094166004850152602484019290925260448301526064820152608401602060405180830381600087803b151561069f57600080fd5b5af115156106ac57600080fd5b50505060405180511590506106c057600080fd5b600754600160a060020a031663425189e08b60405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b151561070957600080fd5b5af1151561071657600080fd5b505050604051610180810160405293508351965060208401519550604084015194508561ffff166003148061074f57508561ffff166004145b151561075a57600080fd5b600754600160a060020a031663425189e08a60405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b15156107a357600080fd5b5af115156107b057600080fd5b50505060405161018081016040529350835161ffff8881169116146107d457600080fd5b602084015161ffff8781169116146107eb57600080fd5b604084015161ffff86811691161461080257600080fd5b600754600160a060020a031663425189e08960405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b151561084b57600080fd5b5af1151561085857600080fd5b50505060405161018081016040529350835161ffff88811691161461087c57600080fd5b602084015161ffff87811691161461089357600080fd5b604084015161ffff8681169116146108aa57600080fd5b6108b261149b565b92506108c3838888600101886114f4565b600754909250600160a060020a0316630378f83f8b600160405160e060020a63ffffffff8516028152600481019290925261ffff166024820152604401600060405180830381600087803b151561091957600080fd5b5af1151561092657600080fd5b5050600754600160a060020a03169050630378f83f8a600160405160e060020a63ffffffff8516028152600481019290925261ffff166024820152604401600060405180830381600087803b151561097d57600080fd5b5af1151561098a57600080fd5b5050600754600160a060020a03169050630378f83f89600160405160e060020a63ffffffff8516028152600481019290925261ffff166024820152604401600060405180830381600087803b15156109e157600080fd5b5af115156109ee57600080fd5b5050600754600160a060020a03169050639cc477b23384600460405160e060020a63ffffffff8616028152600160a060020a03841660048201908152906024018361012080838360005b83811015610a50578082015183820152602001610a38565b505050509050018261ffff1681526020019350505050602060405180830381600087803b1515610a7f57600080fd5b5af11515610a8c57600080fd5b505050604051805190509050610aa86611c37937e08000611802565b6611c37937e08000341115610af357600160a060020a0333166611c37937e07fff19340180156108fc0290604051600060405180830381858888f193505050501515610af357600080fd5b33600160a060020a03167fb8f93b6ee7a79dc8fb386209ef989a56e4f51f5735e63135fbbdf10c6e15383c8284516020860151604087015160405193845261ffff9283166020850152908216604080850191909152911660608301526080909101905180910390a250505050505050505050565b6000806000610b74611aeb565b6000610b7e611b14565b60015460009060ff1615610b9157600080fd5b660aa87bee538000341015610ba557600080fd5b600754600160a060020a033381169116636352211e8b60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610bf157600080fd5b5af11515610bfe57600080fd5b50505060405180519050600160a060020a0316141515610c1d57600080fd5b600754600160a060020a033381169116636352211e8a60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610c6957600080fd5b5af11515610c7657600080fd5b50505060405180519050600160a060020a0316141515610c9557600080fd5b600654600160a060020a03166348e06300338b8b60405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515610cf457600080fd5b5af11515610d0157600080fd5b5050506040518051159050610d1557600080fd5b600754600160a060020a0316636352211e8a60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610d5d57600080fd5b5af11515610d6a57600080fd5b50505060405180515050600754600160a060020a031663425189e08a60405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b1515610dbd57600080fd5b5af11515610dca57600080fd5b505050604051610180810160405293508351965060208401519550604084015194508561ffff1660011480610e0357508561ffff166002145b1515610e0e57600080fd5b600754600160a060020a031663425189e08960405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b1515610e5757600080fd5b5af11515610e6457600080fd5b50505060405161018081016040529350835161ffff888116911614610e8857600080fd5b602084015161ffff878116911614610e9f57600080fd5b604084015161ffff868116911614610eb657600080fd5b610ebe61149b565b9250610ecf838888600101886114f4565b600754909250600160a060020a0316630378f83f8a600160405160e060020a63ffffffff8516028152600481019290925261ffff166024820152604401600060405180830381600087803b1515610f2557600080fd5b5af11515610f3257600080fd5b5050600754600160a060020a03169050630378f83f89600160405160e060020a63ffffffff8516028152600481019290925261ffff166024820152604401600060405180830381600087803b1515610f8957600080fd5b5af11515610f9657600080fd5b5050600754600160a060020a03169050639cc477b23384600360405160e060020a63ffffffff8616028152600160a060020a03841660048201908152906024018361012080838360005b83811015610ff8578082015183820152602001610fe0565b505050509050018261ffff1681526020019350505050602060405180830381600087803b151561102757600080fd5b5af1151561103457600080fd5b505050604051805190509050611050660aa87bee538000611802565b660aa87bee53800034111561109b57600160a060020a033316660aa87bee537fff19340180156108fc0290604051600060405180830381858888f19350505050151561109b57600080fd5b33600160a060020a03167fb8f93b6ee7a79dc8fb386209ef989a56e4f51f5735e63135fbbdf10c6e15383c8284516020860151604087015160405193845261ffff9283166020850152908216604080850191909152911660608301526080909101905180910390a2505050505050505050565b60035433600160a060020a039081169116148061113e575060015433600160a060020a0390811661010090920416145b151561114957600080fd5b600160a060020a038116151561115e57600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60015460ff1681565b60015433600160a060020a0390811661010090920416146111b657600080fd5b600160a060020a03811615156111cb57600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60025433600160a060020a039081169116148061122a575060015433600160a060020a0390811661010090920416145b151561123557600080fd5b600160a060020a038116151561124a57600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6001546101009004600160a060020a031681565b600654600160a060020a031681565b600254600160a060020a031681565b60015433600160a060020a0390811661010090920416146112cb57600080fd5b60035474010000000000000000000000000000000000000000900460ff16151581151514156112f957600080fd5b60038054911515740100000000000000000000000000000000000000000274ff000000000000000000000000000000000000000019909216919091179055565b60015433600160a060020a03908116610100909204161461135957600080fd5b600160a060020a038116151561136e57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600354600090819033600160a060020a03908116911614806113d2575060015433600160a060020a0390811661010090920416145b15156113dd57600080fd5b600083116113ea57600080fd5b600160a060020a038416156113ff578361140c565b600354600160a060020a03165b915050600160a060020a033016318083101561145857600160a060020a03821683156108fc0284604051600060405180830381858888f19350505050151561145357600080fd5b611495565b81600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561149557600080fd5b50505050565b60008054600143034041446040519384526020840192909252600160a060020a03166c01000000000000000000000000026040808401919091526054830191909152607490910190519081900390206000819055905090565b6114fc611b14565b61ffff8085168252838116602083018190529083166040830152859060009081908190819081908190600390116115385760018a039550611560565b8961ffff166004141561154e5760049550611560565b8961ffff166005141561156057600695505b600361ffff8c160661ffff169450612710870496506015612710880681151561158557fe5b06605a0193508460001415611675578861ffff16600114156115e1576064602860c88881020161ffff90811687028390049182028390041660808b0152935060a084025b048860055b61ffff9092166020929092020152611670565b8861ffff166002141561160657606461ffff6028808902011685025b048860066115ce565b8861ffff166003141561162c57606461ffff610258808902011685025b048860036115ce565b8861ffff166004141561164c57606461ffff603c808902011685026115fd565b606461ffff610190808902011685025b048860035b61ffff90921660209290920201525b6117ea565b846001141561172c578861ffff16600114156116b7576064603260be8881020161ffff90811687028390049182028390041660808b01529250609683026115c9565b8861ffff16600214156116d757606461ffff602a808902011685026115fd565b8861ffff16600314156116f857606461ffff61027680890201168502611623565b8861ffff166004141561171857606461ffff603f808902011685026115fd565b606461ffff6101a48089020116850261165c565b8861ffff166001141561176957506064601e60d28781020161ffff90811686028390049182028390041660808a01529060aa820204886005611661565b8861ffff166002141561178e57606461ffff6026808902011685025b04886006611661565b8861ffff16600314156117af57606461ffff61023a8089020116850261165c565b8861ffff16600414156117cf57606461ffff603980890201168502611785565b606461ffff61017c8881020181168602919091041660608901525b50506000610100870152509398975050505050505050565b600354600090819081908190819074010000000000000000000000000000000000000000900460ff16156119cc57600554600160a060020a031663153154fd3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561188057600080fd5b5af1151561188d57600080fd5b5050506040518051925050600160a060020a038216156119cc576118b886600a63ffffffff611a8b16565b90506118ec60646118e060326118d48a8663ffffffff611aa716565b9063ffffffff611ab916565b9063ffffffff611a8b16565b600354909450600160a060020a031684156108fc0285604051600060405180830381858888f19350505050151561192257600080fd5b60019450600160a060020a03821681156108fc0282604051600060405180830381858888f19350505050151561195757600080fd5b6119778461196b888463ffffffff611aa716565b9063ffffffff611aa716565b600454909350600160a060020a0316158015906119945750600083115b156119cc57600454600160a060020a031683156108fc0284604051600060405180830381858888f1935050505015156119cc57600080fd5b841515611a83576119e960646118e088603263ffffffff611ab916565b93506119fb868563ffffffff611aa716565b600354909350600160a060020a031684156108fc0285604051600060405180830381858888f193505050501515611a3157600080fd5b600454600160a060020a031615801590611a4b5750600083115b15611a8357600454600160a060020a031683156108fc0284604051600060405180830381858888f193505050501515611a8357600080fd5b505050505050565b6000808284811515611a9957fe5b0490508091505b5092915050565b600082821115611ab357fe5b50900390565b600080831515611acc5760009150611aa0565b50828202828482811515611adc57fe5b0414611ae457fe5b9392505050565b610180604051908101604052600c815b600081526000199091019060200181611afb5790505090565b61012060405190810160405260008152600860208201611afb5600a165627a7a72305820a110c15ab5acf94905591b89e6d515046733c2c8678162e19bb619dd161c22970029000000000000000000000000da9c03dfd4d137f926c3cf6953cb951832eb08b2
Deployed Bytecode
0x6060604052600436106100ed5763ffffffff60e060020a6000350416630d66881881146100ef57806330efb8d31461011e578063336c6d391461013157806355a373d61461015057806367d0661d14610163578063704b6c021461017657806382cb9df91461019557806391702ddc146101a8578063976f37fd146101b95780639b8d3064146101c7578063b187bd26146101e6578063ba112d501461020d578063bf8bdac11461022c578063bfae2f0e1461024b578063c11b22521461025e578063cdd977e014610271578063d80162fc14610284578063dbb62f241461029c578063f3fef3a3146102bb575b005b34156100fa57600080fd5b6101026102dd565b604051600160a060020a03909116815260200160405180910390f35b341561012957600080fd5b6100ed6102ec565b341561013c57600080fd5b6100ed600160a060020a0360043516610329565b341561015b57600080fd5b61010261038d565b341561016e57600080fd5b6100ed61039c565b341561018157600080fd5b6100ed600160a060020a03600435166103da565b34156101a057600080fd5b610102610485565b6100ed600435602435604435610494565b6100ed600435602435610b67565b34156101d257600080fd5b6100ed600160a060020a036004351661110e565b34156101f157600080fd5b6101f961118d565b604051901515815260200160405180910390f35b341561021857600080fd5b6100ed600160a060020a0360043516611196565b341561023757600080fd5b6100ed600160a060020a03600435166111fa565b341561025657600080fd5b610102611279565b341561026957600080fd5b61010261128d565b341561027c57600080fd5b61010261129c565b341561028f57600080fd5b6100ed60043515156112ab565b34156102a757600080fd5b6100ed600160a060020a0360043516611339565b34156102c657600080fd5b6100ed600160a060020a036004351660243561139d565b600554600160a060020a031681565b60015433600160a060020a03908116610100909204161461030c57600080fd5b60015460ff16151561031d57600080fd5b6001805460ff19169055565b60015433600160a060020a03908116610100909204161461034957600080fd5b600160a060020a038116151561035e57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600754600160a060020a031681565b60015433600160a060020a0390811661010090920416146103bc57600080fd5b60015460ff16156103cc57600080fd5b6001805460ff191681179055565b60015433600160a060020a0390811661010090920416146103fa57600080fd5b600160a060020a038116151561040f57600080fd5b600154600160a060020a03808316916101009004167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360018054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b600354600160a060020a031681565b60008060006104a1611aeb565b60006104ab611b14565b60015460009060ff16156104be57600080fd5b6611c37937e080003410156104d257600080fd5b600754600160a060020a033381169116636352211e8c60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561051e57600080fd5b5af1151561052b57600080fd5b50505060405180519050600160a060020a031614151561054a57600080fd5b600754600160a060020a033381169116636352211e8b60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561059657600080fd5b5af115156105a357600080fd5b50505060405180519050600160a060020a03161415156105c257600080fd5b600754600160a060020a033381169116636352211e8a60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561060e57600080fd5b5af1151561061b57600080fd5b50505060405180519050600160a060020a031614151561063a57600080fd5b600654600160a060020a031663f9c71f79338c8c8c60405160e060020a63ffffffff8716028152600160a060020a039094166004850152602484019290925260448301526064820152608401602060405180830381600087803b151561069f57600080fd5b5af115156106ac57600080fd5b50505060405180511590506106c057600080fd5b600754600160a060020a031663425189e08b60405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b151561070957600080fd5b5af1151561071657600080fd5b505050604051610180810160405293508351965060208401519550604084015194508561ffff166003148061074f57508561ffff166004145b151561075a57600080fd5b600754600160a060020a031663425189e08a60405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b15156107a357600080fd5b5af115156107b057600080fd5b50505060405161018081016040529350835161ffff8881169116146107d457600080fd5b602084015161ffff8781169116146107eb57600080fd5b604084015161ffff86811691161461080257600080fd5b600754600160a060020a031663425189e08960405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b151561084b57600080fd5b5af1151561085857600080fd5b50505060405161018081016040529350835161ffff88811691161461087c57600080fd5b602084015161ffff87811691161461089357600080fd5b604084015161ffff8681169116146108aa57600080fd5b6108b261149b565b92506108c3838888600101886114f4565b600754909250600160a060020a0316630378f83f8b600160405160e060020a63ffffffff8516028152600481019290925261ffff166024820152604401600060405180830381600087803b151561091957600080fd5b5af1151561092657600080fd5b5050600754600160a060020a03169050630378f83f8a600160405160e060020a63ffffffff8516028152600481019290925261ffff166024820152604401600060405180830381600087803b151561097d57600080fd5b5af1151561098a57600080fd5b5050600754600160a060020a03169050630378f83f89600160405160e060020a63ffffffff8516028152600481019290925261ffff166024820152604401600060405180830381600087803b15156109e157600080fd5b5af115156109ee57600080fd5b5050600754600160a060020a03169050639cc477b23384600460405160e060020a63ffffffff8616028152600160a060020a03841660048201908152906024018361012080838360005b83811015610a50578082015183820152602001610a38565b505050509050018261ffff1681526020019350505050602060405180830381600087803b1515610a7f57600080fd5b5af11515610a8c57600080fd5b505050604051805190509050610aa86611c37937e08000611802565b6611c37937e08000341115610af357600160a060020a0333166611c37937e07fff19340180156108fc0290604051600060405180830381858888f193505050501515610af357600080fd5b33600160a060020a03167fb8f93b6ee7a79dc8fb386209ef989a56e4f51f5735e63135fbbdf10c6e15383c8284516020860151604087015160405193845261ffff9283166020850152908216604080850191909152911660608301526080909101905180910390a250505050505050505050565b6000806000610b74611aeb565b6000610b7e611b14565b60015460009060ff1615610b9157600080fd5b660aa87bee538000341015610ba557600080fd5b600754600160a060020a033381169116636352211e8b60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610bf157600080fd5b5af11515610bfe57600080fd5b50505060405180519050600160a060020a0316141515610c1d57600080fd5b600754600160a060020a033381169116636352211e8a60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610c6957600080fd5b5af11515610c7657600080fd5b50505060405180519050600160a060020a0316141515610c9557600080fd5b600654600160a060020a03166348e06300338b8b60405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b1515610cf457600080fd5b5af11515610d0157600080fd5b5050506040518051159050610d1557600080fd5b600754600160a060020a0316636352211e8a60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610d5d57600080fd5b5af11515610d6a57600080fd5b50505060405180515050600754600160a060020a031663425189e08a60405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b1515610dbd57600080fd5b5af11515610dca57600080fd5b505050604051610180810160405293508351965060208401519550604084015194508561ffff1660011480610e0357508561ffff166002145b1515610e0e57600080fd5b600754600160a060020a031663425189e08960405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b1515610e5757600080fd5b5af11515610e6457600080fd5b50505060405161018081016040529350835161ffff888116911614610e8857600080fd5b602084015161ffff878116911614610e9f57600080fd5b604084015161ffff868116911614610eb657600080fd5b610ebe61149b565b9250610ecf838888600101886114f4565b600754909250600160a060020a0316630378f83f8a600160405160e060020a63ffffffff8516028152600481019290925261ffff166024820152604401600060405180830381600087803b1515610f2557600080fd5b5af11515610f3257600080fd5b5050600754600160a060020a03169050630378f83f89600160405160e060020a63ffffffff8516028152600481019290925261ffff166024820152604401600060405180830381600087803b1515610f8957600080fd5b5af11515610f9657600080fd5b5050600754600160a060020a03169050639cc477b23384600360405160e060020a63ffffffff8616028152600160a060020a03841660048201908152906024018361012080838360005b83811015610ff8578082015183820152602001610fe0565b505050509050018261ffff1681526020019350505050602060405180830381600087803b151561102757600080fd5b5af1151561103457600080fd5b505050604051805190509050611050660aa87bee538000611802565b660aa87bee53800034111561109b57600160a060020a033316660aa87bee537fff19340180156108fc0290604051600060405180830381858888f19350505050151561109b57600080fd5b33600160a060020a03167fb8f93b6ee7a79dc8fb386209ef989a56e4f51f5735e63135fbbdf10c6e15383c8284516020860151604087015160405193845261ffff9283166020850152908216604080850191909152911660608301526080909101905180910390a2505050505050505050565b60035433600160a060020a039081169116148061113e575060015433600160a060020a0390811661010090920416145b151561114957600080fd5b600160a060020a038116151561115e57600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60015460ff1681565b60015433600160a060020a0390811661010090920416146111b657600080fd5b600160a060020a03811615156111cb57600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60025433600160a060020a039081169116148061122a575060015433600160a060020a0390811661010090920416145b151561123557600080fd5b600160a060020a038116151561124a57600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6001546101009004600160a060020a031681565b600654600160a060020a031681565b600254600160a060020a031681565b60015433600160a060020a0390811661010090920416146112cb57600080fd5b60035474010000000000000000000000000000000000000000900460ff16151581151514156112f957600080fd5b60038054911515740100000000000000000000000000000000000000000274ff000000000000000000000000000000000000000019909216919091179055565b60015433600160a060020a03908116610100909204161461135957600080fd5b600160a060020a038116151561136e57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600354600090819033600160a060020a03908116911614806113d2575060015433600160a060020a0390811661010090920416145b15156113dd57600080fd5b600083116113ea57600080fd5b600160a060020a038416156113ff578361140c565b600354600160a060020a03165b915050600160a060020a033016318083101561145857600160a060020a03821683156108fc0284604051600060405180830381858888f19350505050151561145357600080fd5b611495565b81600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561149557600080fd5b50505050565b60008054600143034041446040519384526020840192909252600160a060020a03166c01000000000000000000000000026040808401919091526054830191909152607490910190519081900390206000819055905090565b6114fc611b14565b61ffff8085168252838116602083018190529083166040830152859060009081908190819081908190600390116115385760018a039550611560565b8961ffff166004141561154e5760049550611560565b8961ffff166005141561156057600695505b600361ffff8c160661ffff169450612710870496506015612710880681151561158557fe5b06605a0193508460001415611675578861ffff16600114156115e1576064602860c88881020161ffff90811687028390049182028390041660808b0152935060a084025b048860055b61ffff9092166020929092020152611670565b8861ffff166002141561160657606461ffff6028808902011685025b048860066115ce565b8861ffff166003141561162c57606461ffff610258808902011685025b048860036115ce565b8861ffff166004141561164c57606461ffff603c808902011685026115fd565b606461ffff610190808902011685025b048860035b61ffff90921660209290920201525b6117ea565b846001141561172c578861ffff16600114156116b7576064603260be8881020161ffff90811687028390049182028390041660808b01529250609683026115c9565b8861ffff16600214156116d757606461ffff602a808902011685026115fd565b8861ffff16600314156116f857606461ffff61027680890201168502611623565b8861ffff166004141561171857606461ffff603f808902011685026115fd565b606461ffff6101a48089020116850261165c565b8861ffff166001141561176957506064601e60d28781020161ffff90811686028390049182028390041660808a01529060aa820204886005611661565b8861ffff166002141561178e57606461ffff6026808902011685025b04886006611661565b8861ffff16600314156117af57606461ffff61023a8089020116850261165c565b8861ffff16600414156117cf57606461ffff603980890201168502611785565b606461ffff61017c8881020181168602919091041660608901525b50506000610100870152509398975050505050505050565b600354600090819081908190819074010000000000000000000000000000000000000000900460ff16156119cc57600554600160a060020a031663153154fd3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561188057600080fd5b5af1151561188d57600080fd5b5050506040518051925050600160a060020a038216156119cc576118b886600a63ffffffff611a8b16565b90506118ec60646118e060326118d48a8663ffffffff611aa716565b9063ffffffff611ab916565b9063ffffffff611a8b16565b600354909450600160a060020a031684156108fc0285604051600060405180830381858888f19350505050151561192257600080fd5b60019450600160a060020a03821681156108fc0282604051600060405180830381858888f19350505050151561195757600080fd5b6119778461196b888463ffffffff611aa716565b9063ffffffff611aa716565b600454909350600160a060020a0316158015906119945750600083115b156119cc57600454600160a060020a031683156108fc0284604051600060405180830381858888f1935050505015156119cc57600080fd5b841515611a83576119e960646118e088603263ffffffff611ab916565b93506119fb868563ffffffff611aa716565b600354909350600160a060020a031684156108fc0285604051600060405180830381858888f193505050501515611a3157600080fd5b600454600160a060020a031615801590611a4b5750600083115b15611a8357600454600160a060020a031683156108fc0284604051600060405180830381858888f193505050501515611a8357600080fd5b505050505050565b6000808284811515611a9957fe5b0490508091505b5092915050565b600082821115611ab357fe5b50900390565b600080831515611acc5760009150611aa0565b50828202828482811515611adc57fe5b0414611ae457fe5b9392505050565b610180604051908101604052600c815b600081526000199091019060200181611afb5790505090565b61012060405190810160405260008152600860208201611afb5600a165627a7a72305820a110c15ab5acf94905591b89e6d515046733c2c8678162e19bb619dd161c22970029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000da9c03dfd4d137f926c3cf6953cb951832eb08b2
-----Decoded View---------------
Arg [0] : _nftAddr (address): 0xDA9c03dFd4D137F926c3cF6953cb951832Eb08b2
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000da9c03dfd4d137f926c3cf6953cb951832eb08b2
Swarm Source
bzzr://a110c15ab5acf94905591b89e6d515046733c2c8678162e19bb619dd161c2297
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.