ETH Price: $3,117.48 (+1.49%)
 

Overview

ETH Balance

0.445214157573333379 ETH

Eth Value

$1,387.95 (@ $3,117.48/ETH)

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Share Withdraw185224282023-11-07 20:20:35766 days ago1699388435IN
0xeAE08961...313c8D858
0 ETH0.0020793660
New Auction70274322019-01-07 19:55:442531 days ago1546890944IN
0xeAE08961...313c8D858
0 ETH0.000304923
New Auction70252912019-01-07 10:52:022532 days ago1546858322IN
0xeAE08961...313c8D858
0 ETH0.000203282
New Auction69261742018-12-21 10:35:492549 days ago1545388549IN
0xeAE08961...313c8D858
0 ETH0.000577425
New Auction68608982018-12-10 12:48:242560 days ago1544446104IN
0xeAE08961...313c8D858
0 ETH0.000508215
New Auction67052302018-11-14 21:33:252585 days ago1542231205IN
0xeAE08961...313c8D858
0 ETH0.000508215
Change Price66952062018-11-13 5:56:572587 days ago1542088617IN
0xeAE08961...313c8D858
0 ETH0.00013815
New Auction66885292018-11-12 4:00:202588 days ago1541995220IN
0xeAE08961...313c8D858
0 ETH0.000254062.2
New Auction66885252018-11-12 3:59:532588 days ago1541995193IN
0xeAE08961...313c8D858
0 ETH0.000254062.2
New Auction66885232018-11-12 3:59:372588 days ago1541995177IN
0xeAE08961...313c8D858
0 ETH0.000223752.2
New Auction66885152018-11-12 3:57:052588 days ago1541995025IN
0xeAE08961...313c8D858
0 ETH0.000223752.2
New Auction66840502018-11-11 10:28:222589 days ago1541932102IN
0xeAE08961...313c8D858
0 ETH0.000346453
New Auction66755882018-11-10 1:11:572590 days ago1541812317IN
0xeAE08961...313c8D858
0 ETH0.000508215
New Auction66755822018-11-10 1:10:592590 days ago1541812259IN
0xeAE08961...313c8D858
0 ETH0.00057715
New Auction66329282018-11-03 1:18:412597 days ago1541207921IN
0xeAE08961...313c8D858
0 ETH0.000369543.2
New Auction66329182018-11-03 1:15:522597 days ago1541207752IN
0xeAE08961...313c8D858
0 ETH0.000369543.2
Share Withdraw66227982018-11-01 9:13:562599 days ago1541063636IN
0xeAE08961...313c8D858
0 ETH0.000245786
New Auction66134062018-10-30 20:21:082600 days ago1540930868IN
0xeAE08961...313c8D858
0 ETH0.000304923
New Auction66134022018-10-30 20:20:082600 days ago1540930808IN
0xeAE08961...313c8D858
0 ETH0.000304923
New Auction66134022018-10-30 20:20:082600 days ago1540930808IN
0xeAE08961...313c8D858
0 ETH0.000304923
New Auction66134002018-10-30 20:19:422600 days ago1540930782IN
0xeAE08961...313c8D858
0 ETH0.000304923
New Auction66133962018-10-30 20:19:042600 days ago1540930744IN
0xeAE08961...313c8D858
0 ETH0.000304923
New Auction66133962018-10-30 20:19:042600 days ago1540930744IN
0xeAE08961...313c8D858
0 ETH0.000304923
New Auction66133962018-10-30 20:19:042600 days ago1540930744IN
0xeAE08961...313c8D858
0 ETH0.000304923
New Auction66133942018-10-30 20:18:482600 days ago1540930728IN
0xeAE08961...313c8D858
0 ETH0.000304923
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer232238532025-08-26 7:39:59109 days ago1756193999
0xeAE08961...313c8D858
0.00118181 ETH
Transfer185224282023-11-07 20:20:35766 days ago1699388435
0xeAE08961...313c8D858
0.00738969 ETH
Transfer66227982018-11-01 9:13:562599 days ago1541063636
0xeAE08961...313c8D858
0.85754978 ETH
Transfer66110702018-10-30 11:01:582601 days ago1540897318
0xeAE08961...313c8D858
0.00121818 ETH
Transfer64440462018-10-03 6:00:592628 days ago1538546459
0xeAE08961...313c8D858
0.0045 ETH
Transfer64440462018-10-03 6:00:592628 days ago1538546459
0xeAE08961...313c8D858
0.0001 ETH
Transfer64440462018-10-03 6:00:592628 days ago1538546459
0xeAE08961...313c8D858
0.0001 ETH
Transfer64440462018-10-03 6:00:592628 days ago1538546459
0xeAE08961...313c8D858
0.0045 ETH
Transfer64440462018-10-03 6:00:592628 days ago1538546459
0xeAE08961...313c8D858
0.0001 ETH
Transfer64440462018-10-03 6:00:592628 days ago1538546459
0xeAE08961...313c8D858
0.0001 ETH
Transfer64272942018-09-30 12:21:242631 days ago1538310084
0xeAE08961...313c8D858
0.009 ETH
Transfer64272942018-09-30 12:21:242631 days ago1538310084
0xeAE08961...313c8D858
0.0002 ETH
Transfer64272942018-09-30 12:21:242631 days ago1538310084
0xeAE08961...313c8D858
0.0002 ETH
Transfer62828332018-09-06 14:47:122655 days ago1536245232
0xeAE08961...313c8D858
0.072 ETH
Transfer62828332018-09-06 14:47:122655 days ago1536245232
0xeAE08961...313c8D858
0.0016 ETH
Transfer62828332018-09-06 14:47:122655 days ago1536245232
0xeAE08961...313c8D858
0.0016 ETH
Transfer62659532018-09-03 18:54:002657 days ago1536000840
0xeAE08961...313c8D858
0.009 ETH
Transfer62659532018-09-03 18:54:002657 days ago1536000840
0xeAE08961...313c8D858
0.0002 ETH
Transfer62659532018-09-03 18:54:002657 days ago1536000840
0xeAE08961...313c8D858
0.0002 ETH
Transfer62659422018-09-03 18:50:592657 days ago1536000659
0xeAE08961...313c8D858
0.0099 ETH
Transfer62659422018-09-03 18:50:592657 days ago1536000659
0xeAE08961...313c8D858
0.00022 ETH
Transfer62659422018-09-03 18:50:592657 days ago1536000659
0xeAE08961...313c8D858
0.00022 ETH
Transfer62504802018-09-01 4:21:132660 days ago1535775673
0xeAE08961...313c8D858
0.0063 ETH
Transfer62504802018-09-01 4:21:132660 days ago1535775673
0xeAE08961...313c8D858
0.00014 ETH
Transfer62504802018-09-01 4:21:132660 days ago1535775673
0xeAE08961...313c8D858
0.00014 ETH
View All Internal Transactions
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ActionAuction

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-05-17
*/

/* ==================================================================== */
/* 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 AccessNoWithdraw is AccessAdmin {
    address public addrService;
    address public addrFinance;

    modifier onlyService() {
        require(msg.sender == addrService);
        _;
    }

    modifier onlyFinance() {
        require(msg.sender == addrFinance);
        _;
    }

    modifier onlyManager() { 
        require(msg.sender == addrService || msg.sender == addrAdmin || 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;
    }
}

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);
}

interface IDataAuction {
    function isOnSale(uint256 _tokenId) external view returns(bool);
    function isOnSaleAny2(uint256 _tokenId1, uint256 _tokenId2) external view returns(bool);
    function isOnSaleAny3(uint256 _tokenId1, uint256 _tokenId2, uint256 _tokenId3) external view returns(bool);
}

interface IEOMarketToken {
    function transfer(address _to, uint256 _value) external;
    function transferFrom(address _from, address _to, uint256 _value) external returns (bool);
    function approve(address _spender, uint256 _value) external; 
    function approveAndCall(address _spender, uint256 _value, bytes _extraData) external returns (bool);
    function balanceOf(address _from) external view returns(uint256);
    function totalSupply() external view returns(uint256);
    function totalSold() external view returns(uint256);
    function getShareholders() external view returns(address[100] addrArray, uint256[100] amountArray, uint256 soldAmount);
}

/**
 * @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 ActionAuction is AccessNoWithdraw {
    using SafeMath for uint256; 

    event AuctionCreate(uint256 indexed index, address indexed seller, uint256 tokenId);
    event AuctionSold(uint256 indexed index, address indexed seller, address indexed buyer, uint256 tokenId, uint256 price);
    event AuctionCancel(uint256 indexed index, address indexed seller, uint256 tokenId);
    event AuctionPriceChange(uint256 indexed index, address indexed seller, uint256 tokenId, uint64 newGwei);

    struct Auction {
        address seller;     // Current owner
        uint64 tokenId;     // WarToken Id
        uint64 price;       // Sale price(Gwei)
        uint64 tmStart;     // Sale start time(unixtime)
        uint64 tmSell;      // Sale out time(unixtime)
    }

    /// @dev Auction Array
    Auction[] public auctionArray;
    /// @dev Latest auction index by tokenId
    mapping(uint256 => uint256) public latestAction;
    /// @dev WarToken(NFT) contract address
    WarToken public tokenContract;
    /// @dev DataEquip contract address
    IDataEquip public equipContract;
    /// @dev EOST token address
    IEOMarketToken public eostContract;
    /// @dev Plat Auction address
    IDataAuction public platAuction;
    /// @dev prizepool contact address
    address public poolContract;
    /// @dev share balance
    mapping(address => uint256) public shareBalances;
    /// @dev share holder withdraw history
    mapping(address => uint256) public shareHistory;
    /// @dev Auction fee have not alloted
    uint256 public accumulateFee;
    /// @dev Binary search start index
    uint64 public searchStartIndex;
    /// @dev Auction order lifetime(sec)
    uint64 public auctionDuration = 172800;
    /// @dev Trade sum(Gwei)
    uint64 public auctionSumGwei;

    function ActionAuction(address _nftAddr) public {
        addrAdmin = msg.sender;
        addrService = msg.sender;
        addrFinance = msg.sender;

        tokenContract = WarToken(_nftAddr);

        Auction memory order = Auction(0, 0, 0, 1, 1);
        auctionArray.push(order);
    }

    function() external {}

    function setDataEquip(address _addr) external onlyAdmin {
        require(_addr != address(0));
        equipContract = IDataEquip(_addr);
    }

    function setEOMarketToken(address _addr) external onlyAdmin {
        require(_addr != address(0));
        eostContract = IEOMarketToken(_addr);
    }

    function setPlatAuction(address _addr) external onlyAdmin {
        require(_addr != address(0));
        platAuction = IDataAuction(_addr);
    }

    function setPrizePool(address _addr) external onlyAdmin {
        require(_addr != address(0));
        poolContract = _addr;
    }

    function setDuration(uint64 _duration) external onlyAdmin {
        require(_duration >= 300 && _duration <= 8640000);
        auctionDuration = _duration;
    }

    function newAuction(uint256 _tokenId, uint64 _priceGwei) 
        external
        whenNotPaused
    {
        require(tokenContract.ownerOf(_tokenId) == msg.sender);
        require(!equipContract.isEquiped(msg.sender, _tokenId));
        require(_priceGwei >= 1000000 && _priceGwei <= 999000000000);

        uint16[12] memory fashion = tokenContract.getFashion(_tokenId);
        require(fashion[1] > 1);

        uint64 tmNow = uint64(block.timestamp);
        uint256 lastIndex = latestAction[_tokenId];
        // still on selling?
        if (lastIndex > 0) {
            Auction storage oldOrder = auctionArray[lastIndex];
            require((oldOrder.tmStart + auctionDuration) <= tmNow || oldOrder.tmSell > 0);
        }

        if (address(platAuction) != address(0)) {
            require(!platAuction.isOnSale(_tokenId));
        }
        
        uint256 newAuctionIndex = auctionArray.length;
        auctionArray.length += 1;
        Auction storage order = auctionArray[newAuctionIndex];
        order.seller = msg.sender;
        order.tokenId = uint64(_tokenId);
        order.price = _priceGwei;
        uint64 lastActionStart = auctionArray[newAuctionIndex - 1].tmStart;
        // Make the arry is sorted by tmStart
        if (tmNow >= lastActionStart) {
            order.tmStart = tmNow;
        } else {
            order.tmStart = lastActionStart;
        }
        
        latestAction[_tokenId] = newAuctionIndex;

        AuctionCreate(newAuctionIndex, msg.sender, _tokenId);
    }

    function cancelAuction(uint256 _tokenId) external whenNotPaused {
        require(tokenContract.ownerOf(_tokenId) == msg.sender);
        uint256 lastIndex = latestAction[_tokenId];
        require(lastIndex > 0);
        Auction storage order = auctionArray[lastIndex];
        require(order.seller == msg.sender);
        require(order.tmSell == 0);
        order.tmSell = 1;
        AuctionCancel(lastIndex, msg.sender, _tokenId);
    }

    function changePrice(uint256 _tokenId, uint64 _priceGwei) external whenNotPaused {
        require(tokenContract.ownerOf(_tokenId) == msg.sender);
        uint256 lastIndex = latestAction[_tokenId];
        require(lastIndex > 0);
        Auction storage order = auctionArray[lastIndex];
        require(order.seller == msg.sender);
        require(order.tmSell == 0);

        uint64 tmNow = uint64(block.timestamp);
        require(order.tmStart + auctionDuration > tmNow);
        
        require(_priceGwei >= 1000000 && _priceGwei <= 999000000000);
        order.price = _priceGwei;

        AuctionPriceChange(lastIndex, msg.sender, _tokenId, _priceGwei);
    }

    function _shareDevCut(uint256 val) internal {
        uint256 shareVal = val.mul(6).div(10);
        uint256 leftVal = val.sub(shareVal);
        uint256 devVal = leftVal.div(2);
        accumulateFee = accumulateFee.add(shareVal);
        addrFinance.transfer(devVal);
        if (poolContract != address(0)) {
            poolContract.transfer(leftVal.sub(devVal));
        } else {
            accumulateFee = accumulateFee.add(leftVal.sub(devVal));
        }
    }

    function bid(uint256 _tokenId) 
        external
        payable
        whenNotPaused
    {
        uint256 lastIndex = latestAction[_tokenId];
        require(lastIndex > 0);
        Auction storage order = auctionArray[lastIndex];

        uint64 tmNow = uint64(block.timestamp);
        require(order.tmStart + auctionDuration > tmNow);
        require(order.tmSell == 0);

        address realOwner = tokenContract.ownerOf(_tokenId);
        require(realOwner == order.seller);
        require(realOwner != msg.sender);

        uint256 price = order.price * 1000000000;
        require(msg.value == price);

        order.tmSell = tmNow;
        auctionSumGwei += order.price;
        uint256 sellerProceeds = price.mul(9).div(10);
        uint256 devCut = price.sub(sellerProceeds);
       
        tokenContract.safeTransferByContract(_tokenId, msg.sender);

        _shareDevCut(devCut);
        realOwner.transfer(sellerProceeds);

        AuctionSold(lastIndex, realOwner, msg.sender, _tokenId, price);
    }

    function updateShares() 
        external
        /*onlyManager*/
    {
        uint256 currentFee = accumulateFee;
        var (addrArray, amountArray, soldAmount) = eostContract.getShareholders();  
        require(soldAmount > 0); 
        uint256 avg = currentFee.div(soldAmount);
        uint256 shareVal;
        address addrZero = address(0);
        address addrHolder;
        for (uint64 i = 0; i < 100; ++i) {
            addrHolder = addrArray[i];
            if (addrHolder == addrZero) {
                break;
            }
            shareVal = avg.mul(amountArray[i]);
            uint256 oldBalance = shareBalances[addrHolder];
            shareBalances[addrHolder] = oldBalance.add(shareVal);
            currentFee = currentFee.sub(shareVal);
        }

        assert(currentFee <= 100);
        accumulateFee = currentFee;
    }

    /// @dev For EOST holders withdraw 
    function shareWithdraw() external {
        address holder = msg.sender;
        uint256 sBalance = shareBalances[holder];
        require (sBalance > 0);
        assert (sBalance <= this.balance);
        shareBalances[holder] = 0;          // Must before transfer
        shareHistory[holder] += sBalance;
        holder.transfer(sBalance);
    }

    /// @dev deposit bonus for EOST holders
    function depositBonus () 
        external 
        payable 
    {
        require (msg.value > 0);
        accumulateFee.add(msg.value);
    }

    function _getStartIndex(uint64 startIndex) internal view returns(uint64) {
        // use low_bound
        uint64 tmFind = uint64(block.timestamp) - auctionDuration;
        uint64 first = startIndex;
        uint64 middle;
        uint64 half;
        uint64 len = uint64(auctionArray.length - startIndex);

        while(len > 0) {
            half = len / 2;
            middle = first + half;
            if (auctionArray[middle].tmStart < tmFind) {
                first = middle + 1;
                len = len - half - 1;
            } else {
                len = half;
            }
        }
        return first;
    }

    function resetSearchStartIndex () internal {
        searchStartIndex = _getStartIndex(searchStartIndex);
    }
    
    function _getAuctionIdArray(uint64 _startIndex, uint64 _count) 
        internal 
        view 
        returns(uint64[])
    {
        uint64 tmFind = uint64(block.timestamp) - auctionDuration;
        uint64 start = _startIndex > 0 ? _startIndex : _getStartIndex(0);
        uint256 length = auctionArray.length;
        uint256 maxLen = _count > 0 ? _count : length - start;
        if (maxLen == 0) {
            maxLen = 1;
        }
        uint64[] memory auctionIdArray = new uint64[](maxLen);
        uint64 counter = 0;
        for (uint64 i = start; i < length; ++i) {
            if (auctionArray[i].tmStart > tmFind && auctionArray[i].tmSell == 0) {
                auctionIdArray[counter++] = i;
                if (_count > 0 && counter == _count) {
                    break;
                }
            }
        }
        if (counter == auctionIdArray.length) {
            return auctionIdArray;
        } else {
            uint64[] memory realIdArray = new uint64[](counter);
            for (uint256 j = 0; j < counter; ++j) {
                realIdArray[j] = auctionIdArray[j];
            }
            return realIdArray;
        }
    } 

    function getAuctionIdArray(uint64 _startIndex, uint64 _count) external view returns(uint64[]) {
        return _getAuctionIdArray(_startIndex, _count);
    }
    
    function getAuctionArray(uint64 _startIndex, uint64 _count) 
        external 
        view 
        returns(
        uint64[] auctionIdArray, 
        address[] sellerArray, 
        uint64[] tokenIdArray, 
        uint64[] priceArray, 
        uint64[] tmStartArray)
    {
        auctionIdArray = _getAuctionIdArray(_startIndex, _count);
        uint256 length = auctionIdArray.length;
        sellerArray = new address[](length);
        tokenIdArray = new uint64[](length);
        priceArray = new uint64[](length);
        tmStartArray = new uint64[](length);
        
        for (uint256 i = 0; i < length; ++i) {
            Auction storage tmpAuction = auctionArray[auctionIdArray[i]];
            sellerArray[i] = tmpAuction.seller;
            tokenIdArray[i] = tmpAuction.tokenId;
            priceArray[i] = tmpAuction.price;
            tmStartArray[i] = tmpAuction.tmStart; 
        }
    } 

    function getAuction(uint64 auctionId) external view returns(
        address seller,
        uint64 tokenId,
        uint64 price,
        uint64 tmStart,
        uint64 tmSell) 
    {
        require (auctionId < auctionArray.length); 
        Auction memory auction = auctionArray[auctionId];
        seller = auction.seller;
        tokenId = auction.tokenId;
        price = auction.price;
        tmStart = auction.tmStart;
        tmSell = auction.tmSell;
    }

    function getAuctionTotal() external view returns(uint256) {
        return auctionArray.length - 1;
    }

    function getStartIndex(uint64 _startIndex) external view returns(uint256) {
        require (_startIndex < auctionArray.length);
        return _getStartIndex(_startIndex);
    }

    function isOnSale(uint256 _tokenId) external view returns(bool) {
        uint256 lastIndex = latestAction[_tokenId];
        if (lastIndex > 0) {
            Auction storage order = auctionArray[lastIndex];
            uint64 tmNow = uint64(block.timestamp);
            if ((order.tmStart + auctionDuration > tmNow) && order.tmSell == 0) {
                return true;
            }
        }
        return false;
    }

    function isOnSaleAny2(uint256 _tokenId1, uint256 _tokenId2) external view returns(bool) {
        uint256 lastIndex = latestAction[_tokenId1];
        uint64 tmNow = uint64(block.timestamp);
        if (lastIndex > 0) {
            Auction storage order1 = auctionArray[lastIndex];
            if ((order1.tmStart + auctionDuration > tmNow) && order1.tmSell == 0) {
                return true;
            }
        }
        lastIndex = latestAction[_tokenId2];
        if (lastIndex > 0) {
            Auction storage order2 = auctionArray[lastIndex];
            if ((order2.tmStart + auctionDuration > tmNow) && order2.tmSell == 0) {
                return true;
            }
        }
        return false;
    }

    function isOnSaleAny3(uint256 _tokenId1, uint256 _tokenId2, uint256 _tokenId3) external view returns(bool) {
        uint256 lastIndex = latestAction[_tokenId1];
        uint64 tmNow = uint64(block.timestamp);
        if (lastIndex > 0) {
            Auction storage order1 = auctionArray[lastIndex];
            if ((order1.tmStart + auctionDuration > tmNow) && order1.tmSell == 0) {
                return true;
            }
        }
        lastIndex = latestAction[_tokenId2];
        if (lastIndex > 0) {
            Auction storage order2 = auctionArray[lastIndex];
            if ((order2.tmStart + auctionDuration > tmNow) && order2.tmSell == 0) {
                return true;
            }
        }
        lastIndex = latestAction[_tokenId3];
        if (lastIndex > 0) {
            Auction storage order3 = auctionArray[lastIndex];
            if ((order3.tmStart + auctionDuration > tmNow) && order3.tmSell == 0) {
                return true;
            }
        }
        return false;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"setEOMarketToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"setPlatAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"auctionDuration","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_priceGwei","type":"uint64"}],"name":"changePrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_priceGwei","type":"uint64"}],"name":"newAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"accumulateFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"searchStartIndex","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"updateShares","outputs":[],"payable":false,"stateMutability":"nonpayable","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":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"bid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_duration","type":"uint64"}],"name":"setDuration","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"depositBonus","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"tokenContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"latestAction","outputs":[{"name":"","type":"uint256"}],"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":"eostContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"addrFinance","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"poolContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"cancelAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newFinance","type":"address"}],"name":"setFinance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId1","type":"uint256"},{"name":"_tokenId2","type":"uint256"}],"name":"isOnSaleAny2","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"auctionSumGwei","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"platAuction","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"shareHistory","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":true,"inputs":[{"name":"auctionId","type":"uint64"}],"name":"getAuction","outputs":[{"name":"seller","type":"address"},{"name":"tokenId","type":"uint64"},{"name":"price","type":"uint64"},{"name":"tmStart","type":"uint64"},{"name":"tmSell","type":"uint64"}],"payable":false,"stateMutability":"view","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":false,"inputs":[],"name":"shareWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"addrService","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAuctionTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_startIndex","type":"uint64"}],"name":"getStartIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_startIndex","type":"uint64"},{"name":"_count","type":"uint64"}],"name":"getAuctionIdArray","outputs":[{"name":"","type":"uint64[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"isOnSale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_startIndex","type":"uint64"},{"name":"_count","type":"uint64"}],"name":"getAuctionArray","outputs":[{"name":"auctionIdArray","type":"uint64[]"},{"name":"sellerArray","type":"address[]"},{"name":"tokenIdArray","type":"uint64[]"},{"name":"priceArray","type":"uint64[]"},{"name":"tmStartArray","type":"uint64[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"auctionArray","outputs":[{"name":"seller","type":"address"},{"name":"tokenId","type":"uint64"},{"name":"price","type":"uint64"},{"name":"tmStart","type":"uint64"},{"name":"tmSell","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId1","type":"uint256"},{"name":"_tokenId2","type":"uint256"},{"name":"_tokenId3","type":"uint256"}],"name":"isOnSaleAny3","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"shareBalances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_nftAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"index","type":"uint256"},{"indexed":true,"name":"seller","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"AuctionCreate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"index","type":"uint256"},{"indexed":true,"name":"seller","type":"address"},{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"}],"name":"AuctionSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"index","type":"uint256"},{"indexed":true,"name":"seller","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"AuctionCancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"index","type":"uint256"},{"indexed":true,"name":"seller","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"newGwei","type":"uint64"}],"name":"AuctionPriceChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"preAdmin","type":"address"},{"indexed":true,"name":"newAdmin","type":"address"}],"name":"AdminTransferred","type":"event"}]

60606040526000805460ff19169055600d8054604060020a608060020a0319166a02a300000000000000000017905534156200003a57600080fd5b60405160208062002b6a8339810160405280805191506200005c9050620001f3565b6000805461010060a860020a031990811661010033600160a060020a0390811691820292831790931690911790925560018054600160a060020a031990811684179091556002805482169093179092556005805490921690841617905560a0604051908101604090815260008083526020830181905290820152600160608201819052608082018190526003805492935091908101620000fd838262000221565b6000928352602090922083916002020181518154600160a060020a031916600160a060020a0391909116178155602082015181546001604060020a0391909116740100000000000000000000000000000000000000000260a060020a60e060020a0319909116178155604082015160018201805467ffffffffffffffff19166001604060020a039290921691909117905560608201518160010160086101000a8154816001604060020a0302191690836001604060020a0316021790555060808201518160010160106101000a8154816001604060020a0302191690836001604060020a031602179055505050505050620002ad565b60a0604051908101604090815260008083526020830181905290820181905260608201819052608082015290565b815481835581811511620002505760020281600202836000526020600020918201910162000250919062000255565b505050565b620002aa91905b80821115620002a65780547fffffffff00000000000000000000000000000000000000000000000000000000168155600181018054600160c060020a03191690556002016200025c565b5090565b90565b6128ad80620002bd6000396000f3006060604052600436106101ea5763ffffffff60e060020a60003504166302bb5d6e81146101f75780630ac313e0146102165780630cbf54c8146102355780630cf7f3b5146102645780630f3de489146102865780631155d042146102a857806320ec75c2146102cd5780632a410068146102e057806330efb8d3146102f3578063336c6d3914610306578063454a2ab3146103255780634b852c03146103305780634f0c563f1461034f57806355a373d614610357578063609e44271461038657806367d0661d1461039c578063704b6c02146103af57806373f9d5a0146103ce57806382cb9df9146103e157806388d52ef7146103f457806396b5a755146104075780639b8d30641461041d578063a5c464b31461043c578063a71b4c2614610469578063a9615f591461047c578063ab01f6681461048f578063b187bd26146104ae578063ba112d50146104c1578063bc12e3d7146104e0578063bf8bdac114610547578063bfae2f0e14610566578063c11b225214610579578063c6e994d71461058c578063cdd977e01461059f578063d9ac9a88146105b2578063e3f61948146105c5578063eeef9d55146105e4578063f0f2805f1461065c578063f149607014610672578063f16332db146107ff578063f3b42c4014610815578063f656ba5114610831575b34156101f557600080fd5b005b341561020257600080fd5b6101f5600160a060020a0360043516610850565b341561022157600080fd5b6101f5600160a060020a03600435166108a7565b341561024057600080fd5b6102486108fe565b6040516001604060020a03909116815260200160405180910390f35b341561026f57600080fd5b6101f56004356001604060020a0360243516610919565b341561029157600080fd5b6101f56004356001604060020a0360243516610aff565b34156102b357600080fd5b6102bb610fa7565b60405190815260200160405180910390f35b34156102d857600080fd5b610248610fad565b34156102eb57600080fd5b6101f5610fbc565b34156102fe57600080fd5b6101f5611170565b341561031157600080fd5b6101f5600160a060020a03600435166111ad565b6101f5600435611204565b341561033b57600080fd5b6101f56001604060020a0360043516611516565b6101f561159f565b341561036257600080fd5b61036a6115c2565b604051600160a060020a03909116815260200160405180910390f35b341561039157600080fd5b6102bb6004356115d1565b34156103a757600080fd5b6101f56115e3565b34156103ba57600080fd5b6101f5600160a060020a0360043516611622565b34156103d957600080fd5b61036a6116cd565b34156103ec57600080fd5b61036a6116dc565b34156103ff57600080fd5b61036a6116eb565b341561041257600080fd5b6101f56004356116fa565b341561042857600080fd5b6101f5600160a060020a0360043516611867565b341561044757600080fd5b6104556004356024356118d9565b604051901515815260200160405180910390f35b341561047457600080fd5b610248611a34565b341561048757600080fd5b61036a611a4a565b341561049a57600080fd5b6102bb600160a060020a0360043516611a59565b34156104b957600080fd5b610455611a6b565b34156104cc57600080fd5b6101f5600160a060020a0360043516611a74565b34156104eb57600080fd5b6104ff6001604060020a0360043516611acb565b604051600160a060020a0390951685526001604060020a03938416602086015291831660408086019190915290831660608501529116608083015260a0909101905180910390f35b341561055257600080fd5b6101f5600160a060020a0360043516611bb8565b341561057157600080fd5b61036a611c2a565b341561058457600080fd5b61036a611c3e565b341561059757600080fd5b6101f5611c4d565b34156105aa57600080fd5b61036a611cdf565b34156105bd57600080fd5b6102bb611cee565b34156105d057600080fd5b6102bb6001604060020a0360043516611cf9565b34156105ef57600080fd5b6106096001604060020a0360043581169060243516611d2b565b60405160208082528190810183818151815260200191508051906020019060200280838360005b83811015610648578082015183820152602001610630565b505050509050019250505060405180910390f35b341561066757600080fd5b610455600435611d44565b341561067d57600080fd5b6106976001604060020a0360043581169060243516611dfa565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b838110156106e75780820151838201526020016106cf565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b8381101561072657808201518382015260200161070e565b50505050905001868103845289818151815260200191508051906020019060200280838360005b8381101561076557808201518382015260200161074d565b50505050905001868103835288818151815260200191508051906020019060200280838360005b838110156107a457808201518382015260200161078c565b50505050905001868103825287818151815260200191508051906020019060200280838360005b838110156107e35780820151838201526020016107cb565b505050509050019a505050505050505050505060405180910390f35b341561080a57600080fd5b6104ff600435611fef565b341561082057600080fd5b610455600435602435604435612064565b341561083c57600080fd5b6102bb600160a060020a0360043516612267565b60005433600160a060020a03908116610100909204161461087057600080fd5b600160a060020a038116151561088557600080fd5b60078054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a0390811661010090920416146108c757600080fd5b600160a060020a03811615156108dc57600080fd5b60088054600160a060020a031916600160a060020a0392909216919091179055565b600d546801000000000000000090046001604060020a031681565b600080548190819060ff161561092e57600080fd5b600554600160a060020a033381169116636352211e8760405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561097a57600080fd5b5af1151561098757600080fd5b50505060405180519050600160a060020a03161415156109a657600080fd5b600085815260046020526040812054935083116109c257600080fd5b60038054849081106109d057fe5b60009182526020909120600290910201805490925033600160a060020a039081169116146109fd57600080fd5b6001820154608060020a90046001604060020a031615610a1c57600080fd5b50600d54600182015442916001604060020a0380841668010000000000000000928390048216929093048116919091011611610a5757600080fd5b620f4240846001604060020a031610158015610a81575064e8990a4600846001604060020a031611155b1515610a8c57600080fd5b60018201805467ffffffffffffffff19166001604060020a03861617905533600160a060020a0316837f9f297c706489b220981530945df5bcaca282e88f0ba6b299a6130ce96892a73f87876040519182526001604060020a031660208201526040908101905180910390a35050505050565b610b07612741565b600080548190819081908190819060ff1615610b2257600080fd5b600554600160a060020a033381169116636352211e8b60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610b6e57600080fd5b5af11515610b7b57600080fd5b50505060405180519050600160a060020a0316141515610b9a57600080fd5b600654600160a060020a031663f761720a338b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610bf057600080fd5b5af11515610bfd57600080fd5b5050506040518051159050610c1157600080fd5b620f4240886001604060020a031610158015610c3b575064e8990a4600886001604060020a031611155b1515610c4657600080fd5b600554600160a060020a031663425189e08a60405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b1515610c8f57600080fd5b5af11515610c9c57600080fd5b505050604051610180810160405296506001602088015161ffff1611610cc157600080fd5b6000898152600460205260408120544297509550851115610d69576003805486908110610cea57fe5b90600052602060002090600202019350856001604060020a0316600d60089054906101000a90046001604060020a03168560010160089054906101000a90046001604060020a0316016001604060020a0316111580610d5e575060018401546000608060020a9091046001604060020a0316115b1515610d6957600080fd5b600854600160a060020a031615610de357600854600160a060020a031663f0f2805f8a60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610dc257600080fd5b5af11515610dcf57600080fd5b5050506040518051159050610de357600080fd5b6003805493506001840190610df8908261276a565b506003805484908110610e0757fe5b600091825260209091206002909102018054600160a060020a03191633600160a060020a0316177fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006001604060020a038c81169190910291909117825560018201805467ffffffffffffffff1916918b1691909117905560038054919350906000198501908110610eab57fe5b60009182526020909120600160029092020101546001604060020a0368010000000000000000909104811691508616819010610f17576001820180546fffffffffffffffff00000000000000001916680100000000000000006001604060020a03891602179055610f49565b6001820180546fffffffffffffffff00000000000000001916680100000000000000006001604060020a038416021790555b60008981526004602052604090819020849055600160a060020a0333169084907fe793ffbd8d1d9749a0cdd9b308cea8716ce980a0fd4c6d3ff797fee30b6b8d36908c905190815260200160405180910390a3505050505050505050565b600c5481565b600d546001604060020a031681565b6000610fc661279b565b610fce6127b6565b600c54600754909350600090819081908190819081908190600160a060020a03166341ca641e6040518163ffffffff1660e060020a02815260040161192060405180830381600087803b151561102357600080fd5b5af1151561103057600080fd5b50505060405180610c800180610c800180519060200160405298509850985060008711151561105e57600080fd5b61106e8a8863ffffffff61227916565b955060009350600091505b6064826001604060020a0316101561115457886001604060020a038316606481106110a057fe5b6020020151925083600160a060020a031683600160a060020a031614156110c657611154565b6110f0886001604060020a038416606481106110de57fe5b6020020151879063ffffffff61229516565b600160a060020a0384166000908152600a6020526040902054909550905061111e818663ffffffff6122c016565b600160a060020a0384166000908152600a60205260409020556111478a8663ffffffff6122cf16565b9950816001019150611079565b60648a111561115f57fe5b505050600c96909655505050505050565b60005433600160a060020a03908116610100909204161461119057600080fd5b60005460ff1615156111a157600080fd5b6000805460ff19169055565b60005433600160a060020a0390811661010090920416146111cd57600080fd5b600160a060020a03811615156111e257600080fd5b60098054600160a060020a031916600160a060020a0392909216919091179055565b6000805481908190819081908190819060ff161561122157600080fd5b6000888152600460205260408120549750871161123d57600080fd5b600380548890811061124b57fe5b90600052602060002090600202019550429450846001604060020a0316600d60089054906101000a90046001604060020a03168760010160089054906101000a90046001604060020a0316016001604060020a03161115156112ac57600080fd5b6001860154608060020a90046001604060020a0316156112cb57600080fd5b600554600160a060020a0316636352211e8960405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561131357600080fd5b5af1151561132057600080fd5b50505060405180518754909550600160a060020a03808716911614905061134657600080fd5b33600160a060020a031684600160a060020a03161415151561136757600080fd5b6001860154633b9aca006001604060020a039182160216925034831461138c57600080fd5b6001860180546001604060020a03808816608060020a90810277ffffffffffffffff00000000000000000000000000000000199384161793849055600d80548281048416958416959095019092160292909116919091179055611407600a6113fb85600963ffffffff61229516565b9063ffffffff61227916565b9150611419838363ffffffff6122cf16565b600554909150600160a060020a03166318ad052b893360405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b151561147357600080fd5b5af1151561148057600080fd5b50505061148c816122e1565b600160a060020a03841682156108fc0283604051600060405180830381858888f1935050505015156114bd57600080fd5b33600160a060020a031684600160a060020a0316887f0d259704f0a3fdb5a78e979b1b2d94ad960184f4a9b79fdd4781596c9816949a8b8760405191825260208201526040908101905180910390a45050505050505050565b60005433600160a060020a03908116610100909204161461153657600080fd5b61012c816001604060020a03161015801561155d57506283d600816001604060020a031611155b151561156857600080fd5b600d80546001604060020a0390921668010000000000000000026fffffffffffffffff000000000000000019909216919091179055565b600034116115ac57600080fd5b600c546115bf903463ffffffff6122c016565b50565b600554600160a060020a031681565b60046020526000908152604090205481565b60005433600160a060020a03908116610100909204161461160357600080fd5b60005460ff161561161357600080fd5b6000805460ff19166001179055565b60005433600160a060020a03908116610100909204161461164257600080fd5b600160a060020a038116151561165757600080fd5b600054600160a060020a03808316916101009004167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360008054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b600754600160a060020a031681565b600254600160a060020a031681565b600954600160a060020a031681565b60008054819060ff161561170d57600080fd5b600554600160a060020a033381169116636352211e8560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561175957600080fd5b5af1151561176657600080fd5b50505060405180519050600160a060020a031614151561178557600080fd5b600083815260046020526040812054925082116117a157600080fd5b60038054839081106117af57fe5b60009182526020909120600290910201805490915033600160a060020a039081169116146117dc57600080fd5b6001810154608060020a90046001604060020a0316156117fb57600080fd5b60018101805477ffffffffffffffff000000000000000000000000000000001916608060020a179055600160a060020a033316827fcfe2451676906fa3f3adb56a50efd88ebe9b61a1b7e55aef1995f2f7f08edd848560405190815260200160405180910390a3505050565b60025433600160a060020a0390811691161480611897575060005433600160a060020a0390811661010090920416145b15156118a257600080fd5b600160a060020a03811615156118b757600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b6000828152600460205260408120544282808084111561198057600380548590811061190157fe5b90600052602060002090600202019150826001604060020a0316600d60089054906101000a90046001604060020a03168360010160089054906101000a90046001604060020a0316016001604060020a031611801561197257506001820154608060020a90046001604060020a0316155b156119805760019450611a2a565b6000868152600460205260408120549450841115611a255760038054859081106119a657fe5b90600052602060002090600202019050826001604060020a0316600d60089054906101000a90046001604060020a03168260010160089054906101000a90046001604060020a0316016001604060020a0316118015611a1757506001810154608060020a90046001604060020a0316155b15611a255760019450611a2a565b600094505b5050505092915050565b600d54608060020a90046001604060020a031681565b600854600160a060020a031681565b600b6020526000908152604090205481565b60005460ff1681565b60005433600160a060020a039081166101009092041614611a9457600080fd5b600160a060020a0381161515611aa957600080fd5b60068054600160a060020a031916600160a060020a0392909216919091179055565b6000806000806000611adb6127de565b6003546001604060020a03881610611af257600080fd5b600380546001604060020a038916908110611b0957fe5b906000526020600020906002020160a060405190810160409081528254600160a060020a03811683526001604060020a0374010000000000000000000000000000000000000000909104811660208401526001909301548084169183019190915268010000000000000000810483166060830152608060020a90049091166080820152905080519550806020015194508060400151935080606001519250806080015191505091939590929450565b60015433600160a060020a0390811691161480611be8575060005433600160a060020a0390811661010090920416145b1515611bf357600080fd5b600160a060020a0381161515611c0857600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b6000546101009004600160a060020a031681565b600654600160a060020a031681565b33600160a060020a0381166000908152600a6020526040812054908111611c7357600080fd5b600160a060020a03301631811115611c8757fe5b600160a060020a0382166000818152600a60209081526040808320839055600b9091529081902080548401905582156108fc0290839051600060405180830381858888f193505050501515611cdb57600080fd5b5050565b600154600160a060020a031681565b600354600019015b90565b6003546000906001604060020a03831610611d1357600080fd5b611d1c826123f2565b6001604060020a031692915050565b611d3361280c565b611d3d83836124bc565b9392505050565b600081815260046020526040812054818080831115611ded576003805484908110611d6b57fe5b90600052602060002090600202019150429050806001604060020a0316600d60089054906101000a90046001604060020a03168360010160089054906101000a90046001604060020a0316016001604060020a0316118015611ddf57506001820154608060020a90046001604060020a0316155b15611ded5760019350611df2565b600093505b505050919050565b611e0261280c565b611e0a61280c565b611e1261280c565b611e1a61280c565b611e2261280c565b6000806000611e318a8a6124bc565b97508751925082604051805910611e455750595b9080825280602002602001820160405250965082604051805910611e665750595b9080825280602002602001820160405250955082604051805910611e875750595b9080825280602002602001820160405250945082604051805910611ea85750595b90808252806020026020018201604052509350600091505b82821015611fe2576003888381518110611ed657fe5b906020019060200201516001604060020a0316815481101515611ef557fe5b600091825260209091206002909102018054909150600160a060020a0316878381518110611f1f57fe5b600160a060020a0390921660209283029091019091015280546001604060020a037401000000000000000000000000000000000000000090910416868381518110611f6657fe5b6001604060020a0392831660209182029092010152600182015416858381518110611f8d57fe5b6001604060020a0392831660209182029092010152600182015468010000000000000000900416848381518110611fc057fe5b6001604060020a03909216602092830290910190910152600190910190611ec0565b5050509295509295909350565b6003805482908110611ffd57fe5b600091825260209091206002909102018054600190910154600160a060020a03821692506001604060020a037401000000000000000000000000000000000000000090920482169181811691680100000000000000008104821691608060020a9091041685565b600083815260046020526040812054428280808085111561210c57600380548690811061208d57fe5b90600052602060002090600202019250836001604060020a0316600d60089054906101000a90046001604060020a03168460010160089054906101000a90046001604060020a0316016001604060020a03161180156120fe57506001830154608060020a90046001604060020a0316155b1561210c576001955061225b565b60008881526004602052604081205495508511156121b157600380548690811061213257fe5b90600052602060002090600202019150836001604060020a0316600d60089054906101000a90046001604060020a03168360010160089054906101000a90046001604060020a0316016001604060020a03161180156121a357506001820154608060020a90046001604060020a0316155b156121b1576001955061225b565b60008781526004602052604081205495508511156122565760038054869081106121d757fe5b90600052602060002090600202019050836001604060020a0316600d60089054906101000a90046001604060020a03168260010160089054906101000a90046001604060020a0316016001604060020a031611801561224857506001810154608060020a90046001604060020a0316155b15612256576001955061225b565b600095505b50505050509392505050565b600a6020526000908152604090205481565b600080828481151561228757fe5b0490508091505b5092915050565b6000808315156122a8576000915061228e565b508282028284828115156122b857fe5b0414611d3d57fe5b600082820183811015611d3d57fe5b6000828211156122db57fe5b50900390565b600080806122fb600a6113fb86600663ffffffff61229516565b925061230d848463ffffffff6122cf16565b915061232082600263ffffffff61227916565b600c54909150612336908463ffffffff6122c016565b600c55600254600160a060020a031681156108fc0282604051600060405180830381858888f19350505050151561236c57600080fd5b600954600160a060020a0316156123c657600954600160a060020a03166108fc61239c848463ffffffff6122cf16565b9081150290604051600060405180830381858888f1935050505015156123c157600080fd5b6123ec565b6123e86123d9838363ffffffff6122cf16565b600c549063ffffffff6122c016565b600c555b50505050565b600d546003546000916001604060020a03680100000000000000009091048116420391849184918291841690035b6000816001604060020a031611156124b15760026001604060020a0382160491508184019250846001604060020a03166003846001604060020a031681548110151561246857fe5b60009182526020909120600290910201600101546801000000000000000090046001604060020a031610156124a957600183019350819003600019016124ac565b50805b612420565b509195945050505050565b6124c461280c565b6000806000806124d261280c565b6000806124dd61280c565b600d546001604060020a03680100000000000000009091048116420398506000908c168190116125165761251160006123f2565b612518565b8b5b600354909850965060006001604060020a038c161161254257876001604060020a0316870361254d565b8a6001604060020a03165b955085151561255b57600195505b856040518059106125695750595b90808252806020026020018201604052509450600093508792505b86836001604060020a0316101561269357886001604060020a03166003846001604060020a03168154811015156125b757fe5b60009182526020909120600290910201600101546801000000000000000090046001604060020a03161180156126255750600380546001604060020a0385169081106125ff57fe5b6000918252602090912060029091020160010154608060020a90046001604060020a0316155b15612688578285858060010196506001604060020a03168151811061264657fe5b6001604060020a03928316602091820290920101526000908c1611801561267e57508a6001604060020a0316846001604060020a0316145b1561268857612693565b826001019250612584565b8451846001604060020a031614156126ad57849950612732565b836001604060020a03166040518059106126c45750595b90808252806020026020018201604052509150600090505b836001604060020a031681101561272e578481815181106126f957fe5b9060200190602002015182828151811061270f57fe5b6001604060020a039092166020928302909101909101526001016126dc565b8199505b50505050505050505092915050565b610180604051908101604052600c815b6000815260001990910190602001816127515790505090565b81548183558181151161279657600202816002028360005260206000209182019101612796919061281e565b505050565b610c8060405190810160405260008152606360208201612751565b610c806040519081016040526064815b60008152602001906001900390816127c65790505090565b60a0604051908101604090815260008083526020830181905290820181905260608201819052608082015290565b60206040519081016040526000815290565b611cf691905b8082111561287d5780547fffffffff0000000000000000000000000000000000000000000000000000000016815560018101805477ffffffffffffffffffffffffffffffffffffffffffffffff19169055600201612824565b50905600a165627a7a7230582023070814de4324bbf78b394cdded32525007211ea8ab90a35d2ed6a784a557a50029000000000000000000000000da9c03dfd4d137f926c3cf6953cb951832eb08b2

Deployed Bytecode

0x6060604052600436106101ea5763ffffffff60e060020a60003504166302bb5d6e81146101f75780630ac313e0146102165780630cbf54c8146102355780630cf7f3b5146102645780630f3de489146102865780631155d042146102a857806320ec75c2146102cd5780632a410068146102e057806330efb8d3146102f3578063336c6d3914610306578063454a2ab3146103255780634b852c03146103305780634f0c563f1461034f57806355a373d614610357578063609e44271461038657806367d0661d1461039c578063704b6c02146103af57806373f9d5a0146103ce57806382cb9df9146103e157806388d52ef7146103f457806396b5a755146104075780639b8d30641461041d578063a5c464b31461043c578063a71b4c2614610469578063a9615f591461047c578063ab01f6681461048f578063b187bd26146104ae578063ba112d50146104c1578063bc12e3d7146104e0578063bf8bdac114610547578063bfae2f0e14610566578063c11b225214610579578063c6e994d71461058c578063cdd977e01461059f578063d9ac9a88146105b2578063e3f61948146105c5578063eeef9d55146105e4578063f0f2805f1461065c578063f149607014610672578063f16332db146107ff578063f3b42c4014610815578063f656ba5114610831575b34156101f557600080fd5b005b341561020257600080fd5b6101f5600160a060020a0360043516610850565b341561022157600080fd5b6101f5600160a060020a03600435166108a7565b341561024057600080fd5b6102486108fe565b6040516001604060020a03909116815260200160405180910390f35b341561026f57600080fd5b6101f56004356001604060020a0360243516610919565b341561029157600080fd5b6101f56004356001604060020a0360243516610aff565b34156102b357600080fd5b6102bb610fa7565b60405190815260200160405180910390f35b34156102d857600080fd5b610248610fad565b34156102eb57600080fd5b6101f5610fbc565b34156102fe57600080fd5b6101f5611170565b341561031157600080fd5b6101f5600160a060020a03600435166111ad565b6101f5600435611204565b341561033b57600080fd5b6101f56001604060020a0360043516611516565b6101f561159f565b341561036257600080fd5b61036a6115c2565b604051600160a060020a03909116815260200160405180910390f35b341561039157600080fd5b6102bb6004356115d1565b34156103a757600080fd5b6101f56115e3565b34156103ba57600080fd5b6101f5600160a060020a0360043516611622565b34156103d957600080fd5b61036a6116cd565b34156103ec57600080fd5b61036a6116dc565b34156103ff57600080fd5b61036a6116eb565b341561041257600080fd5b6101f56004356116fa565b341561042857600080fd5b6101f5600160a060020a0360043516611867565b341561044757600080fd5b6104556004356024356118d9565b604051901515815260200160405180910390f35b341561047457600080fd5b610248611a34565b341561048757600080fd5b61036a611a4a565b341561049a57600080fd5b6102bb600160a060020a0360043516611a59565b34156104b957600080fd5b610455611a6b565b34156104cc57600080fd5b6101f5600160a060020a0360043516611a74565b34156104eb57600080fd5b6104ff6001604060020a0360043516611acb565b604051600160a060020a0390951685526001604060020a03938416602086015291831660408086019190915290831660608501529116608083015260a0909101905180910390f35b341561055257600080fd5b6101f5600160a060020a0360043516611bb8565b341561057157600080fd5b61036a611c2a565b341561058457600080fd5b61036a611c3e565b341561059757600080fd5b6101f5611c4d565b34156105aa57600080fd5b61036a611cdf565b34156105bd57600080fd5b6102bb611cee565b34156105d057600080fd5b6102bb6001604060020a0360043516611cf9565b34156105ef57600080fd5b6106096001604060020a0360043581169060243516611d2b565b60405160208082528190810183818151815260200191508051906020019060200280838360005b83811015610648578082015183820152602001610630565b505050509050019250505060405180910390f35b341561066757600080fd5b610455600435611d44565b341561067d57600080fd5b6106976001604060020a0360043581169060243516611dfa565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b838110156106e75780820151838201526020016106cf565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b8381101561072657808201518382015260200161070e565b50505050905001868103845289818151815260200191508051906020019060200280838360005b8381101561076557808201518382015260200161074d565b50505050905001868103835288818151815260200191508051906020019060200280838360005b838110156107a457808201518382015260200161078c565b50505050905001868103825287818151815260200191508051906020019060200280838360005b838110156107e35780820151838201526020016107cb565b505050509050019a505050505050505050505060405180910390f35b341561080a57600080fd5b6104ff600435611fef565b341561082057600080fd5b610455600435602435604435612064565b341561083c57600080fd5b6102bb600160a060020a0360043516612267565b60005433600160a060020a03908116610100909204161461087057600080fd5b600160a060020a038116151561088557600080fd5b60078054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a0390811661010090920416146108c757600080fd5b600160a060020a03811615156108dc57600080fd5b60088054600160a060020a031916600160a060020a0392909216919091179055565b600d546801000000000000000090046001604060020a031681565b600080548190819060ff161561092e57600080fd5b600554600160a060020a033381169116636352211e8760405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561097a57600080fd5b5af1151561098757600080fd5b50505060405180519050600160a060020a03161415156109a657600080fd5b600085815260046020526040812054935083116109c257600080fd5b60038054849081106109d057fe5b60009182526020909120600290910201805490925033600160a060020a039081169116146109fd57600080fd5b6001820154608060020a90046001604060020a031615610a1c57600080fd5b50600d54600182015442916001604060020a0380841668010000000000000000928390048216929093048116919091011611610a5757600080fd5b620f4240846001604060020a031610158015610a81575064e8990a4600846001604060020a031611155b1515610a8c57600080fd5b60018201805467ffffffffffffffff19166001604060020a03861617905533600160a060020a0316837f9f297c706489b220981530945df5bcaca282e88f0ba6b299a6130ce96892a73f87876040519182526001604060020a031660208201526040908101905180910390a35050505050565b610b07612741565b600080548190819081908190819060ff1615610b2257600080fd5b600554600160a060020a033381169116636352211e8b60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610b6e57600080fd5b5af11515610b7b57600080fd5b50505060405180519050600160a060020a0316141515610b9a57600080fd5b600654600160a060020a031663f761720a338b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610bf057600080fd5b5af11515610bfd57600080fd5b5050506040518051159050610c1157600080fd5b620f4240886001604060020a031610158015610c3b575064e8990a4600886001604060020a031611155b1515610c4657600080fd5b600554600160a060020a031663425189e08a60405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b1515610c8f57600080fd5b5af11515610c9c57600080fd5b505050604051610180810160405296506001602088015161ffff1611610cc157600080fd5b6000898152600460205260408120544297509550851115610d69576003805486908110610cea57fe5b90600052602060002090600202019350856001604060020a0316600d60089054906101000a90046001604060020a03168560010160089054906101000a90046001604060020a0316016001604060020a0316111580610d5e575060018401546000608060020a9091046001604060020a0316115b1515610d6957600080fd5b600854600160a060020a031615610de357600854600160a060020a031663f0f2805f8a60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610dc257600080fd5b5af11515610dcf57600080fd5b5050506040518051159050610de357600080fd5b6003805493506001840190610df8908261276a565b506003805484908110610e0757fe5b600091825260209091206002909102018054600160a060020a03191633600160a060020a0316177fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006001604060020a038c81169190910291909117825560018201805467ffffffffffffffff1916918b1691909117905560038054919350906000198501908110610eab57fe5b60009182526020909120600160029092020101546001604060020a0368010000000000000000909104811691508616819010610f17576001820180546fffffffffffffffff00000000000000001916680100000000000000006001604060020a03891602179055610f49565b6001820180546fffffffffffffffff00000000000000001916680100000000000000006001604060020a038416021790555b60008981526004602052604090819020849055600160a060020a0333169084907fe793ffbd8d1d9749a0cdd9b308cea8716ce980a0fd4c6d3ff797fee30b6b8d36908c905190815260200160405180910390a3505050505050505050565b600c5481565b600d546001604060020a031681565b6000610fc661279b565b610fce6127b6565b600c54600754909350600090819081908190819081908190600160a060020a03166341ca641e6040518163ffffffff1660e060020a02815260040161192060405180830381600087803b151561102357600080fd5b5af1151561103057600080fd5b50505060405180610c800180610c800180519060200160405298509850985060008711151561105e57600080fd5b61106e8a8863ffffffff61227916565b955060009350600091505b6064826001604060020a0316101561115457886001604060020a038316606481106110a057fe5b6020020151925083600160a060020a031683600160a060020a031614156110c657611154565b6110f0886001604060020a038416606481106110de57fe5b6020020151879063ffffffff61229516565b600160a060020a0384166000908152600a6020526040902054909550905061111e818663ffffffff6122c016565b600160a060020a0384166000908152600a60205260409020556111478a8663ffffffff6122cf16565b9950816001019150611079565b60648a111561115f57fe5b505050600c96909655505050505050565b60005433600160a060020a03908116610100909204161461119057600080fd5b60005460ff1615156111a157600080fd5b6000805460ff19169055565b60005433600160a060020a0390811661010090920416146111cd57600080fd5b600160a060020a03811615156111e257600080fd5b60098054600160a060020a031916600160a060020a0392909216919091179055565b6000805481908190819081908190819060ff161561122157600080fd5b6000888152600460205260408120549750871161123d57600080fd5b600380548890811061124b57fe5b90600052602060002090600202019550429450846001604060020a0316600d60089054906101000a90046001604060020a03168760010160089054906101000a90046001604060020a0316016001604060020a03161115156112ac57600080fd5b6001860154608060020a90046001604060020a0316156112cb57600080fd5b600554600160a060020a0316636352211e8960405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561131357600080fd5b5af1151561132057600080fd5b50505060405180518754909550600160a060020a03808716911614905061134657600080fd5b33600160a060020a031684600160a060020a03161415151561136757600080fd5b6001860154633b9aca006001604060020a039182160216925034831461138c57600080fd5b6001860180546001604060020a03808816608060020a90810277ffffffffffffffff00000000000000000000000000000000199384161793849055600d80548281048416958416959095019092160292909116919091179055611407600a6113fb85600963ffffffff61229516565b9063ffffffff61227916565b9150611419838363ffffffff6122cf16565b600554909150600160a060020a03166318ad052b893360405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b151561147357600080fd5b5af1151561148057600080fd5b50505061148c816122e1565b600160a060020a03841682156108fc0283604051600060405180830381858888f1935050505015156114bd57600080fd5b33600160a060020a031684600160a060020a0316887f0d259704f0a3fdb5a78e979b1b2d94ad960184f4a9b79fdd4781596c9816949a8b8760405191825260208201526040908101905180910390a45050505050505050565b60005433600160a060020a03908116610100909204161461153657600080fd5b61012c816001604060020a03161015801561155d57506283d600816001604060020a031611155b151561156857600080fd5b600d80546001604060020a0390921668010000000000000000026fffffffffffffffff000000000000000019909216919091179055565b600034116115ac57600080fd5b600c546115bf903463ffffffff6122c016565b50565b600554600160a060020a031681565b60046020526000908152604090205481565b60005433600160a060020a03908116610100909204161461160357600080fd5b60005460ff161561161357600080fd5b6000805460ff19166001179055565b60005433600160a060020a03908116610100909204161461164257600080fd5b600160a060020a038116151561165757600080fd5b600054600160a060020a03808316916101009004167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360008054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b600754600160a060020a031681565b600254600160a060020a031681565b600954600160a060020a031681565b60008054819060ff161561170d57600080fd5b600554600160a060020a033381169116636352211e8560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561175957600080fd5b5af1151561176657600080fd5b50505060405180519050600160a060020a031614151561178557600080fd5b600083815260046020526040812054925082116117a157600080fd5b60038054839081106117af57fe5b60009182526020909120600290910201805490915033600160a060020a039081169116146117dc57600080fd5b6001810154608060020a90046001604060020a0316156117fb57600080fd5b60018101805477ffffffffffffffff000000000000000000000000000000001916608060020a179055600160a060020a033316827fcfe2451676906fa3f3adb56a50efd88ebe9b61a1b7e55aef1995f2f7f08edd848560405190815260200160405180910390a3505050565b60025433600160a060020a0390811691161480611897575060005433600160a060020a0390811661010090920416145b15156118a257600080fd5b600160a060020a03811615156118b757600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b6000828152600460205260408120544282808084111561198057600380548590811061190157fe5b90600052602060002090600202019150826001604060020a0316600d60089054906101000a90046001604060020a03168360010160089054906101000a90046001604060020a0316016001604060020a031611801561197257506001820154608060020a90046001604060020a0316155b156119805760019450611a2a565b6000868152600460205260408120549450841115611a255760038054859081106119a657fe5b90600052602060002090600202019050826001604060020a0316600d60089054906101000a90046001604060020a03168260010160089054906101000a90046001604060020a0316016001604060020a0316118015611a1757506001810154608060020a90046001604060020a0316155b15611a255760019450611a2a565b600094505b5050505092915050565b600d54608060020a90046001604060020a031681565b600854600160a060020a031681565b600b6020526000908152604090205481565b60005460ff1681565b60005433600160a060020a039081166101009092041614611a9457600080fd5b600160a060020a0381161515611aa957600080fd5b60068054600160a060020a031916600160a060020a0392909216919091179055565b6000806000806000611adb6127de565b6003546001604060020a03881610611af257600080fd5b600380546001604060020a038916908110611b0957fe5b906000526020600020906002020160a060405190810160409081528254600160a060020a03811683526001604060020a0374010000000000000000000000000000000000000000909104811660208401526001909301548084169183019190915268010000000000000000810483166060830152608060020a90049091166080820152905080519550806020015194508060400151935080606001519250806080015191505091939590929450565b60015433600160a060020a0390811691161480611be8575060005433600160a060020a0390811661010090920416145b1515611bf357600080fd5b600160a060020a0381161515611c0857600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b6000546101009004600160a060020a031681565b600654600160a060020a031681565b33600160a060020a0381166000908152600a6020526040812054908111611c7357600080fd5b600160a060020a03301631811115611c8757fe5b600160a060020a0382166000818152600a60209081526040808320839055600b9091529081902080548401905582156108fc0290839051600060405180830381858888f193505050501515611cdb57600080fd5b5050565b600154600160a060020a031681565b600354600019015b90565b6003546000906001604060020a03831610611d1357600080fd5b611d1c826123f2565b6001604060020a031692915050565b611d3361280c565b611d3d83836124bc565b9392505050565b600081815260046020526040812054818080831115611ded576003805484908110611d6b57fe5b90600052602060002090600202019150429050806001604060020a0316600d60089054906101000a90046001604060020a03168360010160089054906101000a90046001604060020a0316016001604060020a0316118015611ddf57506001820154608060020a90046001604060020a0316155b15611ded5760019350611df2565b600093505b505050919050565b611e0261280c565b611e0a61280c565b611e1261280c565b611e1a61280c565b611e2261280c565b6000806000611e318a8a6124bc565b97508751925082604051805910611e455750595b9080825280602002602001820160405250965082604051805910611e665750595b9080825280602002602001820160405250955082604051805910611e875750595b9080825280602002602001820160405250945082604051805910611ea85750595b90808252806020026020018201604052509350600091505b82821015611fe2576003888381518110611ed657fe5b906020019060200201516001604060020a0316815481101515611ef557fe5b600091825260209091206002909102018054909150600160a060020a0316878381518110611f1f57fe5b600160a060020a0390921660209283029091019091015280546001604060020a037401000000000000000000000000000000000000000090910416868381518110611f6657fe5b6001604060020a0392831660209182029092010152600182015416858381518110611f8d57fe5b6001604060020a0392831660209182029092010152600182015468010000000000000000900416848381518110611fc057fe5b6001604060020a03909216602092830290910190910152600190910190611ec0565b5050509295509295909350565b6003805482908110611ffd57fe5b600091825260209091206002909102018054600190910154600160a060020a03821692506001604060020a037401000000000000000000000000000000000000000090920482169181811691680100000000000000008104821691608060020a9091041685565b600083815260046020526040812054428280808085111561210c57600380548690811061208d57fe5b90600052602060002090600202019250836001604060020a0316600d60089054906101000a90046001604060020a03168460010160089054906101000a90046001604060020a0316016001604060020a03161180156120fe57506001830154608060020a90046001604060020a0316155b1561210c576001955061225b565b60008881526004602052604081205495508511156121b157600380548690811061213257fe5b90600052602060002090600202019150836001604060020a0316600d60089054906101000a90046001604060020a03168360010160089054906101000a90046001604060020a0316016001604060020a03161180156121a357506001820154608060020a90046001604060020a0316155b156121b1576001955061225b565b60008781526004602052604081205495508511156122565760038054869081106121d757fe5b90600052602060002090600202019050836001604060020a0316600d60089054906101000a90046001604060020a03168260010160089054906101000a90046001604060020a0316016001604060020a031611801561224857506001810154608060020a90046001604060020a0316155b15612256576001955061225b565b600095505b50505050509392505050565b600a6020526000908152604090205481565b600080828481151561228757fe5b0490508091505b5092915050565b6000808315156122a8576000915061228e565b508282028284828115156122b857fe5b0414611d3d57fe5b600082820183811015611d3d57fe5b6000828211156122db57fe5b50900390565b600080806122fb600a6113fb86600663ffffffff61229516565b925061230d848463ffffffff6122cf16565b915061232082600263ffffffff61227916565b600c54909150612336908463ffffffff6122c016565b600c55600254600160a060020a031681156108fc0282604051600060405180830381858888f19350505050151561236c57600080fd5b600954600160a060020a0316156123c657600954600160a060020a03166108fc61239c848463ffffffff6122cf16565b9081150290604051600060405180830381858888f1935050505015156123c157600080fd5b6123ec565b6123e86123d9838363ffffffff6122cf16565b600c549063ffffffff6122c016565b600c555b50505050565b600d546003546000916001604060020a03680100000000000000009091048116420391849184918291841690035b6000816001604060020a031611156124b15760026001604060020a0382160491508184019250846001604060020a03166003846001604060020a031681548110151561246857fe5b60009182526020909120600290910201600101546801000000000000000090046001604060020a031610156124a957600183019350819003600019016124ac565b50805b612420565b509195945050505050565b6124c461280c565b6000806000806124d261280c565b6000806124dd61280c565b600d546001604060020a03680100000000000000009091048116420398506000908c168190116125165761251160006123f2565b612518565b8b5b600354909850965060006001604060020a038c161161254257876001604060020a0316870361254d565b8a6001604060020a03165b955085151561255b57600195505b856040518059106125695750595b90808252806020026020018201604052509450600093508792505b86836001604060020a0316101561269357886001604060020a03166003846001604060020a03168154811015156125b757fe5b60009182526020909120600290910201600101546801000000000000000090046001604060020a03161180156126255750600380546001604060020a0385169081106125ff57fe5b6000918252602090912060029091020160010154608060020a90046001604060020a0316155b15612688578285858060010196506001604060020a03168151811061264657fe5b6001604060020a03928316602091820290920101526000908c1611801561267e57508a6001604060020a0316846001604060020a0316145b1561268857612693565b826001019250612584565b8451846001604060020a031614156126ad57849950612732565b836001604060020a03166040518059106126c45750595b90808252806020026020018201604052509150600090505b836001604060020a031681101561272e578481815181106126f957fe5b9060200190602002015182828151811061270f57fe5b6001604060020a039092166020928302909101909101526001016126dc565b8199505b50505050505050505092915050565b610180604051908101604052600c815b6000815260001990910190602001816127515790505090565b81548183558181151161279657600202816002028360005260206000209182019101612796919061281e565b505050565b610c8060405190810160405260008152606360208201612751565b610c806040519081016040526064815b60008152602001906001900390816127c65790505090565b60a0604051908101604090815260008083526020830181905290820181905260608201819052608082015290565b60206040519081016040526000815290565b611cf691905b8082111561287d5780547fffffffff0000000000000000000000000000000000000000000000000000000016815560018101805477ffffffffffffffffffffffffffffffffffffffffffffffff19169055600201612824565b50905600a165627a7a7230582023070814de4324bbf78b394cdded32525007211ea8ab90a35d2ed6a784a557a50029

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://23070814de4324bbf78b394cdded32525007211ea8ab90a35d2ed6a784a557a5

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.