Sponsored Link:   PAVOCOIN - IoT blockchain for the AgTech ecosystem. Bringing together IoT, blockchain, and agriculture. Join now!
Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 291 txns
 Latest 25 txns from a total Of 291 transactions
View All

TxHash Age From To Value [TxFee]
0xc92ec4828489a68e4e2e78c94c86c5760f7d5f3d9ee07b276632083c5273d5051 hr 29 mins ago0x57ecadb3f1fd238ec5b99a2545856b965c38e44e  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.00103404
0xfde43237e6b5288754d6eade85e7e3e13e13724a9718bc543ae474e6fbfa60f518 hrs 23 mins ago0x57ecadb3f1fd238ec5b99a2545856b965c38e44e  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.00068936
0x42e41fde0411c30c2af533c8887d274ea8145c0585fee1160adfa19cd945b02018 hrs 28 mins ago0x57ecadb3f1fd238ec5b99a2545856b965c38e44e  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.00068936
0x548cbae95551dcd7a394533940bce469ca2bbc8cb0cf912a2a0cfef94015326218 hrs 28 mins ago0x57ecadb3f1fd238ec5b99a2545856b965c38e44e  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000684488
0x3c56a26271fa3cd0681df71184af391385e6d6b5ff863dfddf70fa69a03f622921 hrs 48 mins ago0x813074b9a3c964c51ac66b841c2577a3ce1062f6  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.00098608
0x6ca66862e01831e9178a31574022c70c098beeb65d6a5bdf97fc85cbbf4d5ba91 day 3 hrs ago0x0ec123283e2399cd52cb7a1d2f4d26d8b3f0d625  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000715536
0xd45223b0b21ab1bdc6373e372b7f26cce240cce2b56e12dbd9e0c49665cf93ea1 day 5 hrs ago0xe7f63f6a03d78650fd7244ef965b6b35a08c0ef3  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000826112
0x497a51d802d0453e567d4d5f8497302eed2edb99a10d4c5662a597e5dee085da1 day 7 hrs ago0x9b7bed561f48ad8d08b56b40a7addfb6be6b377b  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.00051702
0xf2509accc2a79d55d689f2d7662d0e4fcffbc712d7ec140808d695e4b279aa231 day 8 hrs ago0xe7f63f6a03d78650fd7244ef965b6b35a08c0ef3  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000744406626
0x1e5f41e13c1891f41bc27c3f391cf63bd788725a4484cf9ff6323d4ac4407f021 day 12 hrs ago0x813074b9a3c964c51ac66b841c2577a3ce1062f6  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.00057079
0x39d5401107d7571771b1406f0ae6d2260566c3142a01951385d701d63da1d3db1 day 12 hrs ago0x9b7bed561f48ad8d08b56b40a7addfb6be6b377b  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000574745
0x1ba749666781267ae0c309a4b249b51dfcad4e69257f216417bb8f242e2b99811 day 13 hrs ago0x9b7bed561f48ad8d08b56b40a7addfb6be6b377b  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.00056988
0x58286f9169ac6fde68634cd900ee5dbe0a5393e4a7d6b022115b37a23d928aa71 day 13 hrs ago0xe7f63f6a03d78650fd7244ef965b6b35a08c0ef3  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000339804
0x52d2f2543565b8e32c9e0698f95238158c19cefc28b9ae9d219dad28a2e373051 day 13 hrs ago0xf6025ec5ba1aec102ae9ebad90139416f574ab8d  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000793569
0x68894ace3923337fae5662674c64d87aac1181ec1a27fd9818967766cecb35851 day 13 hrs ago0xf6025ec5ba1aec102ae9ebad90139416f574ab8d  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.00042871
0xbac622266b737dee309e471cc252f43aa7e52c6f4fcae8e40d7fd4a6cdfd1e591 day 13 hrs ago0xf6025ec5ba1aec102ae9ebad90139416f574ab8d  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000424755
0xb0a87fcf33db9059bdfbc1d03fe1d3d4f4ff6ecb98c1dfdad953dcfc7b61d40b1 day 13 hrs ago0x9b7bed561f48ad8d08b56b40a7addfb6be6b377b  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.0005787
0xd265a7f14ab4360c554f1d98b9427a9ce9dfb6e7aa2e644f47d4a34ed02f149d1 day 14 hrs ago0xe7f63f6a03d78650fd7244ef965b6b35a08c0ef3  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000906936
0x49e61b483433b9333449864392eab7315fc3a0613c5a2e8f69ee965b4dcf7b3e1 day 14 hrs ago0x9b7bed561f48ad8d08b56b40a7addfb6be6b377b  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.000566835
0x83fe076c0b78d165e59c5a79648281dd76cad4af16554c4ba54da0bb5539feec1 day 15 hrs ago0x9b7bed561f48ad8d08b56b40a7addfb6be6b377b  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.00039752
0xd8314a9161f30ce9dab0e3384c17196f3a26188aa3712f066464e8ae64004d691 day 15 hrs ago0x9b7bed561f48ad8d08b56b40a7addfb6be6b377b  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.00043176
0x1accad191cb6154431c18c1f43c66305b0b405abb2b7b8f941839bf6c9916aaa1 day 16 hrs ago0x9b7bed561f48ad8d08b56b40a7addfb6be6b377b  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.00042871
0x17e2c80f08da789f9c8201121d1f4ad4755e6c9ec21ea607e0c3bfbfe29151291 day 22 hrs ago0xe7f63f6a03d78650fd7244ef965b6b35a08c0ef3  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.001360404
0x4476f109f60eff926ba40c2f1e0c6974d9a54148cd980b02004aaec9d95dfdea1 day 23 hrs ago0x00000a94230f3a5cd61bb0a3b39767e0684f7234  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.001255738
0x3ed1df6d56fe8ef210ed78bc38763b9508689ab03459b5dc68fb95d95b6d28ec1 day 23 hrs ago0x00000a94230f3a5cd61bb0a3b39767e0684f7234  IN   0x85f4cfcea297e9c06327d0cd01fcd2eede7012030 Ether0.00103277337
[ 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 [email protected]   
/*         [email protected]            
/* ==================================================================== */

pragma solidity ^0.4.20;

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

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

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

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

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

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

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

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

    modifier whenPaused {
        require(isPaused);
        _;
    }

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

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

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

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

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

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

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

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

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

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

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

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.