Sponsored Link:   Learn and build dApps today without code using Crowd Machine's Crowd App Studio.
Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 470 txns
 Latest 25 txns from a total Of 470 transactions

TxHash Age From To Value [TxFee]
0xd381055febf4275f3347c03fad1ee880f0e3d9d199832b4fd13db0acd204192f27 days 11 hrs ago0x963203794368e9860e5a9afd613a8e3c4c6e1908  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000342332
0xaffbec3818230548ed662ba120ff9379a66dfb4e1b9540dd112181590a01fb7f27 days 17 hrs ago0x2207358972e37f663a5480dbaa09715e8b0fc4ff  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000168368
0x5b6a755b785ce0742cf7cfa21ff54bd54bb6542d2c8a57f1ccacb52b845bc7b029 days 7 hrs ago0x82e76991995b4fc0b1d8e7a1e1901f87b93f4851  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000085583
0x1ce88774953392fbdc0f4aa266da8b95421f529c412fc307aa24e4958501d3db29 days 16 hrs ago0xe6185d7b19c95b48e1f549219ddee4012f0c226b  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000256749
0xe4cb3b52e2ea324512c3b1497f24f9b9418c036b0c0d1f4d0c158d2c970cb4e529 days 18 hrs ago0x6100a406ecdfeecd5af2bef98dc6905a9b385c77  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000086192
0xe9723c31170c1f681e1ce0a551e3476256f927927cbba964214d94ce5cc8c6d130 days 15 hrs ago0x0ec123283e2399cd52cb7a1d2f4d26d8b3f0d625  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000084973
0xa8e257909419f286a9379185742b2602b733676733c0c0652240e6db134c79f130 days 15 hrs ago0x0ec123283e2399cd52cb7a1d2f4d26d8b3f0d625  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000229216
0xb4c7bf190e8adaf9c7a92c20ba73c9aa644e829e1b52c9507475c08412c7eb7b32 days 9 hrs ago0x0ec123283e2399cd52cb7a1d2f4d26d8b3f0d625  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000362153
0x866d0d2ca4ac5070dc87a5eb0407184f9ee90b1f870525757c830d70feea174632 days 22 hrs ago0x0ec123283e2399cd52cb7a1d2f4d26d8b3f0d625  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000226778
0x6046d31e35d75b93013879de6972d97a08d274b1c73418bee367fb7768c6598b32 days 23 hrs ago0x0ec123283e2399cd52cb7a1d2f4d26d8b3f0d625  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000256749
0x0e892abaac745b23b09ed9b5ed044247a01ab2a17757a5ace01443d8c7abac2a33 days 12 hrs ago0x0ec123283e2399cd52cb7a1d2f4d26d8b3f0d625  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000566945
0x86871abff870278050eafd0898ab283753710aa075c02914e7416955a0a0009d33 days 12 hrs ago0x0ec123283e2399cd52cb7a1d2f4d26d8b3f0d625  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000477156
0xe055352f2fa66fc94d40884f797aa3a9c7c72ecfa27272c3c57ff899de4becfe33 days 21 hrs ago0x82e76991995b4fc0b1d8e7a1e1901f87b93f4851  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000171166
0xb589b8675e11a04846e309690c761428682259140b1d0b8b2016a3cbbf9933d135 days 3 hrs ago0x963203794368e9860e5a9afd613a8e3c4c6e1908  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000343056
0x00c381abc912fb08f8dd291dcbe6bcdf93409f1ab58da3c70eac17a8d9dfa71a35 days 17 hrs ago0x963203794368e9860e5a9afd613a8e3c4c6e1908  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000427915
0x7e59fcac59d5a89b2a52f3b07f66515fabeb257339ed2c58661612c9c734203235 days 17 hrs ago0x963203794368e9860e5a9afd613a8e3c4c6e1908  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000343056
0xbfd8bc82c183eee0cd03f8fa8a8faf607b0de58853f22ef80c8bd717de57fb8e36 days 2 hrs ago0x963203794368e9860e5a9afd613a8e3c4c6e1908  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000344768
0xc9b13aaf694d1efb4e6a512f3dd09906992f5c5656b2c274500ff9c74080542c36 days 4 hrs ago0xd998133cc2b4780a0693be73cd2c6f233615f5b5  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.0002392126
0xc68a2bcec0aecdde6c72b80e51cd5bd0b55443760bf159323952eac94709e79936 days 4 hrs ago0xd998133cc2b4780a0693be73cd2c6f233615f5b5  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000190421
0xebd36b0a0903aa5da7a48adc5e2dc0b7e3aec9b9bc46d80df7a9daaba5d94d3336 days 4 hrs ago0x28eb0ce7f78dfae3f98a1d6b59872b78f642966f  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.0001869406
0xebdd424d9bfeafd024fcfe5f647cb48ea6c043f050de4344b4c74573d57b717e36 days 4 hrs ago0x28eb0ce7f78dfae3f98a1d6b59872b78f642966f  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.0000585706
0xafe8653d8851db210ac832d6c2e4e6ae0f2e156f10e0ccca8ab699c2a461e0ab36 days 4 hrs ago0x28eb0ce7f78dfae3f98a1d6b59872b78f642966f  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.0001869406
0x547c3549392cc5416e21d0fb072270b3b1ad64fcba4245b6940d73f341f4157e36 days 6 hrs ago0xd998133cc2b4780a0693be73cd2c6f233615f5b5  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.0002266782
0xa0955ee5b76d6a7aa4c829a17b05a55c9820109d6a66743a4a363b73c4f206fd36 days 6 hrs ago0xd998133cc2b4780a0693be73cd2c6f233615f5b5  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.0002266782
0x550e0cf05ff80a8c9e53cf6a07e9431bb7e1fb0cf870361bc47bc9f7ac87e15a36 days 6 hrs ago0xd998133cc2b4780a0693be73cd2c6f233615f5b5  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.0002744448
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Contract Source Code Verified (Exact match)
Contract Name: ActionStarUp
Compiler Version: v0.4.21+commit.dfe3193c
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

/* ==================================================================== */
/* Copyright (c) 2018 The ether.online Project.  All rights reserved.
/* 
/* https://ether.online  The first RPG game of blockchain 
/*  
/* authors rickhunter.shen@gmail.com   
/*         ssesunding@gmail.com            
/* ==================================================================== */

pragma solidity ^0.4.20;

/// @title ERC-165 Standard Interface Detection
/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md
interface ERC165 {
    function supportsInterface(bytes4 interfaceID) external view returns (bool);
}

/// @title ERC-721 Non-Fungible Token Standard
/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
contract ERC721 is ERC165 {
    event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);
    event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
    function balanceOf(address _owner) external view returns (uint256);
    function ownerOf(uint256 _tokenId) external view returns (address);
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external;
    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external;
    function transferFrom(address _from, address _to, uint256 _tokenId) external;
    function approve(address _approved, uint256 _tokenId) external;
    function setApprovalForAll(address _operator, bool _approved) external;
    function getApproved(uint256 _tokenId) external view returns (address);
    function isApprovedForAll(address _owner, address _operator) external view returns (bool);
}

/// @title ERC-721 Non-Fungible Token Standard
interface ERC721TokenReceiver {
	function onERC721Received(address _from, uint256 _tokenId, bytes data) external returns(bytes4);
}

contract AccessAdmin {
    bool public isPaused = false;
    address public addrAdmin;  

    event AdminTransferred(address indexed preAdmin, address indexed newAdmin);

    function AccessAdmin() public {
        addrAdmin = msg.sender;
    }  

    modifier onlyAdmin() {
        require(msg.sender == addrAdmin);
        _;
    }

    modifier whenNotPaused() {
        require(!isPaused);
        _;
    }

    modifier whenPaused {
        require(isPaused);
        _;
    }

    function setAdmin(address _newAdmin) external onlyAdmin {
        require(_newAdmin != address(0));
        AdminTransferred(addrAdmin, _newAdmin);
        addrAdmin = _newAdmin;
    }

    function doPause() external onlyAdmin whenNotPaused {
        isPaused = true;
    }

    function doUnpause() external onlyAdmin whenPaused {
        isPaused = false;
    }
}

contract AccessService is AccessAdmin {
    address public addrService;
    address public addrFinance;

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

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

    function setService(address _newService) external {
        require(msg.sender == addrService || msg.sender == addrAdmin);
        require(_newService != address(0));
        addrService = _newService;
    }

    function setFinance(address _newFinance) external {
        require(msg.sender == addrFinance || msg.sender == addrAdmin);
        require(_newFinance != address(0));
        addrFinance = _newFinance;
    }

    function withdraw(address _target, uint256 _amount) 
        external 
    {
        require(msg.sender == addrFinance || msg.sender == addrAdmin);
        require(_amount > 0);
        address receiver = _target == address(0) ? addrFinance : _target;
        uint256 balance = this.balance;
        if (_amount < balance) {
            receiver.transfer(_amount);
        } else {
            receiver.transfer(this.balance);
        }      
    }
}

interface IDataMining {
    function getRecommender(address _target) external view returns(address);
    function subFreeMineral(address _target) external returns(bool);
}

interface IDataEquip {
    function isEquiped(address _target, uint256 _tokenId) external view returns(bool);
    function isEquipedAny2(address _target, uint256 _tokenId1, uint256 _tokenId2) external view returns(bool);
    function isEquipedAny3(address _target, uint256 _tokenId1, uint256 _tokenId2, uint256 _tokenId3) external view returns(bool);
}

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

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 ActionStarUp is AccessService {
    event StarUpSuccess(address indexed owner, uint256 tokenId, uint16 star);

    /// @dev Auction contract address
    IDataAuction public auctionContract;
    /// @dev DataEquip contract address
    IDataEquip public equipContract;
    /// @dev WarToken(NFT) contract address
    WarToken public tokenContract;

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

        tokenContract = WarToken(_nftAddr);
    }

    function setDataAuction(address _addr) external onlyAdmin {
        require(_addr != address(0));
        auctionContract = IDataAuction(_addr);
    }

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

    function starUpZero(uint256 _tokenDest, uint256 _token1, uint256 _token2) 
        external
        whenNotPaused
    {
        require(tokenContract.ownerOf(_tokenDest) == msg.sender);
        require(tokenContract.ownerOf(_token1) == msg.sender);
        require(tokenContract.ownerOf(_token2) == msg.sender);
        require(!equipContract.isEquipedAny2(msg.sender, _token1, _token2));

        if (address(auctionContract) != address(0)) {
            require(!auctionContract.isOnSaleAny2(_token1, _token2));
        }

        uint16 quality;
        uint16 pos; 
        uint16 star;
        uint16[12] memory fashionData = tokenContract.getFashion(_tokenDest);
        quality = fashionData[1];
        pos = fashionData[2];
        star = fashionData[9];

        require(quality == 5 && pos <= 5 && star == 0); 

        fashionData = tokenContract.getFashion(_token1);
        require(fashionData[1] == 5 && fashionData[2] == pos && fashionData[9] == 0); 

        fashionData = tokenContract.getFashion(_token2);
        require(fashionData[1] == 5 && fashionData[2] == pos && fashionData[9] == 0);

        tokenContract.destroyFashion(_token1, 2);
        tokenContract.destroyFashion(_token2, 2);
        uint16[4] memory idxArray = [uint16(9), 0, 0, 0];
        uint16[4] memory params = [uint16(1), 0, 0, 0];
        tokenContract.changeFashionAttr(_tokenDest, idxArray, params, 2);

        StarUpSuccess(msg.sender, _tokenDest, 1);
    }

    function starUp(uint256 _tokenDest, uint256 _token1, uint256 _token2, uint256 _token3) 
        external
        whenNotPaused
    {
        require(tokenContract.ownerOf(_tokenDest) == msg.sender);
        require(tokenContract.ownerOf(_token1) == msg.sender);
        require(tokenContract.ownerOf(_token2) == msg.sender);
        require(tokenContract.ownerOf(_token3) == msg.sender);
        require(!equipContract.isEquipedAny3(msg.sender, _token1, _token2, _token3));

        if (address(auctionContract) != address(0)) {
            require(!auctionContract.isOnSaleAny3(_token1, _token2, _token3));
        }

        uint16 quality;
        uint16 pos; 
        uint16 star;
        uint16[12] memory fashionData = tokenContract.getFashion(_tokenDest);
        quality = fashionData[1];
        pos = fashionData[2];
        star = fashionData[9];

        require(quality == 5 && pos <= 5 && star > 0 && star < 5); 

        fashionData = tokenContract.getFashion(_token1);
        require(fashionData[1] == 5 && fashionData[2] == pos && fashionData[9] == (star - 1)); 

        fashionData = tokenContract.getFashion(_token2);
        require(fashionData[1] == 5 && fashionData[2] == pos && fashionData[9] == (star - 1));

        fashionData = tokenContract.getFashion(_token3);
        require(fashionData[1] == 5 && fashionData[2] == pos && fashionData[9] == (star - 1));

        tokenContract.destroyFashion(_token1, 2);
        tokenContract.destroyFashion(_token2, 2);
        tokenContract.destroyFashion(_token3, 2);
        uint16[4] memory idxArray = [uint16(9), 0, 0, 0];
        uint16[4] memory params = [star + 1, 0, 0, 0];
        tokenContract.changeFashionAttr(_tokenDest, idxArray, params, 2);

        StarUpSuccess(msg.sender, _tokenDest, 1);
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"auctionContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenDest","type":"uint256"},{"name":"_token1","type":"uint256"},{"name":"_token2","type":"uint256"}],"name":"starUpZero","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"setDataAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"doUnpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"doPause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenDest","type":"uint256"},{"name":"_token1","type":"uint256"},{"name":"_token2","type":"uint256"},{"name":"_token3","type":"uint256"}],"name":"starUp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"addrFinance","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newFinance","type":"address"}],"name":"setFinance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"setDataEquip","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newService","type":"address"}],"name":"setService","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"addrAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"equipContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"addrService","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_nftAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"star","type":"uint16"}],"name":"StarUpSuccess","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"preAdmin","type":"address"},{"indexed":true,"name":"newAdmin","type":"address"}],"name":"AdminTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60606040526000805460ff19169055341561001957600080fd5b6040516020806117508339810160405280805160008054600160a060020a03338116610100810261010060a860020a0319938416811790931690921790925560018054600160a060020a031990811683179091556002805482169092179091556005805492909316911617905550506116b9806100976000396000f3006060604052600436106100d75763ffffffff60e060020a6000350416630ab8afac81146100dc578063220772a91461010b578063245a30ec1461012957806330efb8d31461014857806355a373d61461015b57806367d0661d1461016e578063704b6c02146101815780637c0176df146101a057806382cb9df9146101bf5780639b8d3064146101d2578063b187bd26146101f1578063ba112d5014610218578063bf8bdac114610237578063bfae2f0e14610256578063c11b225214610269578063cdd977e01461027c578063f3fef3a31461028f575b600080fd5b34156100e757600080fd5b6100ef6102b1565b604051600160a060020a03909116815260200160405180910390f35b341561011657600080fd5b6101276004356024356044356102c0565b005b341561013457600080fd5b610127600160a060020a0360043516610980565b341561015357600080fd5b6101276109e4565b341561016657600080fd5b6100ef610a21565b341561017957600080fd5b610127610a30565b341561018c57600080fd5b610127600160a060020a0360043516610a6f565b34156101ab57600080fd5b610127600435602435604435606435610b1a565b34156101ca57600080fd5b6100ef6113a0565b34156101dd57600080fd5b610127600160a060020a03600435166113af565b34156101fc57600080fd5b61020461142e565b604051901515815260200160405180910390f35b341561022357600080fd5b610127600160a060020a0360043516611437565b341561024257600080fd5b610127600160a060020a036004351661149b565b341561026157600080fd5b6100ef61151a565b341561027457600080fd5b6100ef61152e565b341561028757600080fd5b6100ef61153d565b341561029a57600080fd5b610127600160a060020a036004351660243561154c565b600354600160a060020a031681565b60008060006102cd61164a565b6102d5611673565b6102dd611673565b60005460ff16156102ed57600080fd5b600554600160a060020a033381169116636352211e8b60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561033957600080fd5b5af1151561034657600080fd5b50505060405180519050600160a060020a031614151561036557600080fd5b600554600160a060020a033381169116636352211e8a60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156103b157600080fd5b5af115156103be57600080fd5b50505060405180519050600160a060020a03161415156103dd57600080fd5b600554600160a060020a033381169116636352211e8960405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561042957600080fd5b5af1151561043657600080fd5b50505060405180519050600160a060020a031614151561045557600080fd5b600454600160a060020a03166348e06300338a8a60405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401602060405180830381600087803b15156104b457600080fd5b5af115156104c157600080fd5b50505060405180511590506104d557600080fd5b600354600160a060020a03161561055557600354600160a060020a031663a5c464b3898960405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b151561053457600080fd5b5af1151561054157600080fd5b505050604051805115905061055557600080fd5b600554600160a060020a031663425189e08a60405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b151561059e57600080fd5b5af115156105ab57600080fd5b50505060405161018081016040529250602083015195506040830151945061012083015193508561ffff1660051480156105ea575060058561ffff1611155b80156105f8575061ffff8416155b151561060357600080fd5b600554600160a060020a031663425189e08960405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b151561064c57600080fd5b5af1151561065957600080fd5b50505060405161018081016040529250602083015161ffff16600514801561068c575061ffff8516604084015161ffff16145b801561069f575061012083015161ffff16155b15156106aa57600080fd5b600554600160a060020a031663425189e08860405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b15156106f357600080fd5b5af1151561070057600080fd5b50505060405161018081016040529250602083015161ffff166005148015610733575061ffff8516604084015161ffff16145b8015610746575061012083015161ffff16155b151561075157600080fd5b600554600160a060020a0316630378f83f89600260405160e060020a63ffffffff8516028152600481019290925261ffff166024820152604401600060405180830381600087803b15156107a457600080fd5b5af115156107b157600080fd5b5050600554600160a060020a03169050630378f83f88600260405160e060020a63ffffffff8516028152600481019290925261ffff166024820152604401600060405180830381600087803b151561080857600080fd5b5af1151561081557600080fd5b50505060806040519081016040908152600982526000602083018190528183018190526060830152909250608090519081016040908152600182526000602083018190528183018190526060830152600554919250600160a060020a03909116906375b599c0908b90859085906002905160e060020a63ffffffff8716028152600481018581529060240184608080838360005b838110156108c15780820151838201526020016108a9565b5050505090500183600460200280838360005b838110156108ec5780820151838201526020016108d4565b505050509050018261ffff168152602001945050505050600060405180830381600087803b151561091c57600080fd5b5af1151561092957600080fd5b50505033600160a060020a03167f042150f0301e411ca12acaf72aedcfc58dc8d2e303d2b56ebe331b3c29d221218a600160405191825261ffff1660208201526040908101905180910390a2505050505050505050565b60005433600160a060020a0390811661010090920416146109a057600080fd5b600160a060020a03811615156109b557600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a039081166101009092041614610a0457600080fd5b60005460ff161515610a1557600080fd5b6000805460ff19169055565b600554600160a060020a031681565b60005433600160a060020a039081166101009092041614610a5057600080fd5b60005460ff1615610a6057600080fd5b6000805460ff19166001179055565b60005433600160a060020a039081166101009092041614610a8f57600080fd5b600160a060020a0381161515610aa457600080fd5b600054600160a060020a03808316916101009004167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360008054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b6000806000610b2761164a565b610b2f611673565b610b37611673565b60005460ff1615610b4757600080fd5b600554600160a060020a033381169116636352211e8c60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610b9357600080fd5b5af11515610ba057600080fd5b50505060405180519050600160a060020a0316141515610bbf57600080fd5b600554600160a060020a033381169116636352211e8b60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610c0b57600080fd5b5af11515610c1857600080fd5b50505060405180519050600160a060020a0316141515610c3757600080fd5b600554600160a060020a033381169116636352211e8a60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610c8357600080fd5b5af11515610c9057600080fd5b50505060405180519050600160a060020a0316141515610caf57600080fd5b600554600160a060020a033381169116636352211e8960405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610cfb57600080fd5b5af11515610d0857600080fd5b50505060405180519050600160a060020a0316141515610d2757600080fd5b600454600160a060020a031663f9c71f79338b8b8b60405160e060020a63ffffffff8716028152600160a060020a039094166004850152602484019290925260448301526064820152608401602060405180830381600087803b1515610d8c57600080fd5b5af11515610d9957600080fd5b5050506040518051159050610dad57600080fd5b600354600160a060020a031615610e3657600354600160a060020a031663f3b42c408a8a8a60405160e060020a63ffffffff8616028152600481019390935260248301919091526044820152606401602060405180830381600087803b1515610e1557600080fd5b5af11515610e2257600080fd5b5050506040518051159050610e3657600080fd5b600554600160a060020a031663425189e08b60405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b1515610e7f57600080fd5b5af11515610e8c57600080fd5b50505060405161018081016040529250602083015195506040830151945061012083015193508561ffff166005148015610ecb575060058561ffff1611155b8015610edb575060008461ffff16115b8015610eeb575060058461ffff16105b1515610ef657600080fd5b600554600160a060020a031663425189e08a60405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b1515610f3f57600080fd5b5af11515610f4c57600080fd5b50505060405161018081016040529250602083015161ffff166005148015610f7f575061ffff8516604084015161ffff16145b8015610f9b5750600019840161ffff1661012084015161ffff16145b1515610fa657600080fd5b600554600160a060020a031663425189e08960405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b1515610fef57600080fd5b5af11515610ffc57600080fd5b50505060405161018081016040529250602083015161ffff16600514801561102f575061ffff8516604084015161ffff16145b801561104b5750600019840161ffff1661012084015161ffff16145b151561105657600080fd5b600554600160a060020a031663425189e08860405160e060020a63ffffffff8416028152600481019190915260240161018060405180830381600087803b151561109f57600080fd5b5af115156110ac57600080fd5b50505060405161018081016040529250602083015161ffff1660051480156110df575061ffff8516604084015161ffff16145b80156110fb5750600019840161ffff1661012084015161ffff16145b151561110657600080fd5b600554600160a060020a0316630378f83f8a600260405160e060020a63ffffffff8516028152600481019290925261ffff166024820152604401600060405180830381600087803b151561115957600080fd5b5af1151561116657600080fd5b5050600554600160a060020a03169050630378f83f89600260405160e060020a63ffffffff8516028152600481019290925261ffff166024820152604401600060405180830381600087803b15156111bd57600080fd5b5af115156111ca57600080fd5b5050600554600160a060020a03169050630378f83f88600260405160e060020a63ffffffff8516028152600481019290925261ffff166024820152604401600060405180830381600087803b151561122157600080fd5b5af1151561122e57600080fd5b5050506080604051908101604090815260098252600060208301819052818301819052606083015290925060809051908101604090815261ffff600187011682526000602083018190528183018190526060830152600554919250600160a060020a03909116906375b599c0908c90859085906002905160e060020a63ffffffff8716028152600481018581529060240184608080838360005b838110156112e05780820151838201526020016112c8565b5050505090500183600460200280838360005b8381101561130b5780820151838201526020016112f3565b505050509050018261ffff168152602001945050505050600060405180830381600087803b151561133b57600080fd5b5af1151561134857600080fd5b50505033600160a060020a03167f042150f0301e411ca12acaf72aedcfc58dc8d2e303d2b56ebe331b3c29d221218b600160405191825261ffff1660208201526040908101905180910390a250505050505050505050565b600254600160a060020a031681565b60025433600160a060020a03908116911614806113df575060005433600160a060020a0390811661010090920416145b15156113ea57600080fd5b600160a060020a03811615156113ff57600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005460ff1681565b60005433600160a060020a03908116610100909204161461145757600080fd5b600160a060020a038116151561146c57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60015433600160a060020a03908116911614806114cb575060005433600160a060020a0390811661010090920416145b15156114d657600080fd5b600160a060020a03811615156114eb57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000546101009004600160a060020a031681565b600454600160a060020a031681565b600154600160a060020a031681565b600254600090819033600160a060020a0390811691161480611581575060005433600160a060020a0390811661010090920416145b151561158c57600080fd5b6000831161159957600080fd5b600160a060020a038416156115ae57836115bb565b600254600160a060020a03165b915050600160a060020a033016318083101561160757600160a060020a03821683156108fc0284604051600060405180830381858888f19350505050151561160257600080fd5b611644565b81600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561164457600080fd5b50505050565b610180604051908101604052600c815b60008152600019909101906020018161165a5790505090565b60806040519081016040526000815260036020820161165a5600a165627a7a7230582000fef45e912a7aff5f3827a74ec55380302d4dcea96553ce592035d1a651350d0029000000000000000000000000da9c03dfd4d137f926c3cf6953cb951832eb08b2

    Constructor Arguments (ABI-encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000da9c03dfd4d137f926c3cf6953cb951832eb08b2

-----Decoded View---------------
Found 1 constructor arguments :
Arg [0] : 000000000000000000000000da9c03dfd4d137f926c3cf6953cb951832eb08b2


   Swarm Source:
bzzr://00fef45e912a7aff5f3827a74ec55380302d4dcea96553ce592035d1a651350d

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.