Sponsored Link:   Alt.Estate - ERC20 for Real Estate. Live Prototype in Japan, USA, EU.Buy ALT tokens. Endorsed by partners of PWC, Knight Frank.
Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 2866 txns
Token Contract: WAR Token (WAR)
 Latest 25 txns from a total Of 2866 transactions (+1 PendingTxn)
View All

TxHash Age From To Value [TxFee]
0xd7402d3623bed0611e71715f9ad1595f6057afc3732688b64f9e1249eae2501f(pending)0x3983349534c0f770d16a8c02b4a5c57da85f27dd  IN  0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether(pending)
0xe7c1e8434620f8a13453dd4176c0b53aa652f548da81a354b4fbd6b8496341aa1 hr 4 mins ago0x677a0c002f691e079f2e8c106ee6e9e05d14e3a9  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000141324
0x298775292d81731a3017af7cc3c39d3add6f995c0b2f7807c7f537d9a0c533a06 hrs 46 mins ago0x3983349534c0f770d16a8c02b4a5c57da85f27dd  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000084184
0x177c086eefe0cb587f0d406815cad8a37d48571f91ba9dbabae819dfde7917c28 hrs 16 mins ago0xe7f63f6a03d78650fd7244ef965b6b35a08c0ef3  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000297256
0xc4283d39b7fa1d592debb19dec7dc316e65ae01fe9c3f4cbc6e97440330391ac8 hrs 21 mins ago0x49588184b8d96ea099d24d18eaa4ffbb5845dc51  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000594512
0x66927cda747b119b2397d83d0db197caf519ce21671318cc6d0712994b17f8168 hrs 22 mins ago0xe7f63f6a03d78650fd7244ef965b6b35a08c0ef3  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000107924
0x8883cb360d080b1d888a1757236d14b9474d79d8a6e3c3bd5b1d85fd185ddb868 hrs 25 mins ago0x9022681501c98eec8c0bd510824892bff534b8b8  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000668826
0xdb6d460ca5f646fa178c065cf0fb12f06754eb12652e636f3a366b92c5a7528f8 hrs 27 mins ago0x57ecadb3f1fd238ec5b99a2545856b965c38e44e  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.00050736
0x2d40b81b927932d9cf9cc9f42775d4a27ab0844e33e2512d17571ad8f80ee72c8 hrs 31 mins ago0xe7f63f6a03d78650fd7244ef965b6b35a08c0ef3  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000297256
0x09a56c2c24dc469452fee4691b680aa41f09e795f570112029f0130339d82f008 hrs 32 mins ago0x05a12f4f0aadfaf3f053e4d3cc9a0724797c0da2  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000594512
0x2ee653bc96458126179e06bfe76a54299c91a0816b06d6331b7d57e364470c488 hrs 34 mins ago0xe7f63f6a03d78650fd7244ef965b6b35a08c0ef3  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000297256
0xf256e1be07a6ad18d74d1412ae3065f1c6e1aea94b2a31830cff960fb206039f8 hrs 36 mins ago0xe7f63f6a03d78650fd7244ef965b6b35a08c0ef3  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000297256
0xf3cf0d8f2d4d40f676bd02acf9fed18502a885d11fe7472e6157bd13758eb8998 hrs 39 mins ago0xe7f63f6a03d78650fd7244ef965b6b35a08c0ef3  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000297256
0x14549f540ac06e04daa42c3b88a112cc76c1faefe24bee0a13dbab7570ed35488 hrs 41 mins ago0xe7f63f6a03d78650fd7244ef965b6b35a08c0ef3  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000297256
0xee5a614af4f8e17ccaaca9ac9ad58766d93a95622bccd2a8f3766c4deaca81ff15 hrs 37 mins ago0x9c33a0c4421ac21d899539004977f2ede55cf0ff  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.00063356
0x0b005851a5c5a870fadabbd000dcd89c981db7bd3ad6fe4981d26ce22a307e4815 hrs 48 mins ago0x9c33a0c4421ac21d899539004977f2ede55cf0ff  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.00063356
0xa3a996a8d5dba222c48c6f0855b4bdf1e3973431b3a76ffedd43ee3855f46d6d18 hrs 11 mins ago0x831e4ed01566f84b61b943a4d200b7e4a946e47a  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.0007425
0x27c5337966b67007fb23605efd4442e1f559177601f071eaf33f9c1af9e2d5da18 hrs 13 mins ago0x831e4ed01566f84b61b943a4d200b7e4a946e47a  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.0007425
0x973ef1b861208fe37e1e676d9fe02160e4ca1f1dd1e7776375db0358ed7cf57718 hrs 45 mins ago0x2c94e2d8f5a61a9d3c210bca9f6a2b7b96c7d48d  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.00114156
0x019270fc22351cde1e326691e39a006cf6c208290fac533081259d127f1fe92f18 hrs 48 mins ago0x2c94e2d8f5a61a9d3c210bca9f6a2b7b96c7d48d  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.00069762
0xb492a739cce6f176724abe8fa0892a886311389ae5650377c6984e9120a59d5718 hrs 53 mins ago0x2c94e2d8f5a61a9d3c210bca9f6a2b7b96c7d48d  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000817454
0xce796125ef254d6e12ff024066fc2c6444368fe2ec8ead016528a1d901abb01e18 hrs 54 mins ago0x2c94e2d8f5a61a9d3c210bca9f6a2b7b96c7d48d  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000817454
0xffd0bbf313133a0d33cc97fd00da8ceff381bbb9c7a2a1a6d1ad7761ba7689f018 hrs 57 mins ago0x2c94e2d8f5a61a9d3c210bca9f6a2b7b96c7d48d  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.00069762
0x56a7fe114a1c19713dfafe4ba26fbb7b88fca2cae036199799f26eef58e0c10618 hrs 59 mins ago0x2c94e2d8f5a61a9d3c210bca9f6a2b7b96c7d48d  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000891768
0x3709b764457547f6ea3ac8a742b68432791a32997e72da4e5c6e8663da95aaa719 hrs 4 mins ago0x2c94e2d8f5a61a9d3c210bca9f6a2b7b96c7d48d  IN   0xda9c03dfd4d137f926c3cf6953cb951832eb08b20 Ether0.000966082
[ 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: WarToken
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                 
/* ==================================================================== */
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 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 ABI  
[{"constant":true,"inputs":[{"name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_deleteType","type":"uint16"}],"name":"destroyFashion","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_approved","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokens","type":"uint256[]"}],"name":"getFashionsAttrs","outputs":[{"name":"attrs","type":"uint16[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getOwnFashions","outputs":[{"name":"tokens","type":"uint256[]"},{"name":"flags","type":"uint32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_to","type":"address"}],"name":"safeTransferByContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"doUnpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getFashion","outputs":[{"name":"datas","type":"uint16[12]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_actionAddr","type":"address"}],"name":"getActionContract","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"doPause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_actionAddr","type":"address"},{"name":"_useful","type":"bool"}],"name":"setActionContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_idxArray","type":"uint16[4]"},{"name":"_params","type":"uint16[4]"},{"name":"_changeType","type":"uint16"}],"name":"changeFashionAttr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_attrs","type":"uint16[9]"},{"name":"_createType","type":"uint16"}],"name":"createFashion","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_operator","type":"address"},{"name":"_approved","type":"bool"}],"name":"setApprovalForAll","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":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"data","type":"bytes"}],"name":"safeTransferFrom","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":"_owner","type":"address"},{"name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"fashionArray","outputs":[{"name":"protoId","type":"uint16"},{"name":"quality","type":"uint16"},{"name":"pos","type":"uint16"},{"name":"health","type":"uint16"},{"name":"atkMin","type":"uint16"},{"name":"atkMax","type":"uint16"},{"name":"defence","type":"uint16"},{"name":"crit","type":"uint16"},{"name":"isPercent","type":"uint16"},{"name":"attrExt1","type":"uint16"},{"name":"attrExt2","type":"uint16"},{"name":"attrExt3","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_operator","type":"address"},{"indexed":false,"name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"protoId","type":"uint16"},{"indexed":false,"name":"quality","type":"uint16"},{"indexed":false,"name":"pos","type":"uint16"},{"indexed":false,"name":"createType","type":"uint16"}],"name":"CreateFashion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"changeType","type":"uint16"}],"name":"ChangeFashion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"deleteType","type":"uint16"}],"name":"DeleteFashion","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
60606040526000805460ff1916905534156200001a57600080fd5b60008054600160a060020a0333166101000261010060a860020a03199182168117909116179055600180548101906200005490826200005b565b50620000b5565b81548183558181151162000082576000838152602090206200008291810190830162000087565b505050565b620000b291905b80821115620000ae578054600160c060020a03191681556001016200008e565b5090565b90565b6122be80620000c56000396000f3006060604052600436106101695763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a7811461016e5780630378f83f146101a257806306fdde03146101c1578063081812fc1461024b578063095ea7b31461027d5780630d047d491461029f57806315de46071461031057806318160ddd146103c857806318ad052b146103ed57806323b872dd1461040f57806330efb8d314610437578063425189e01461044a57806342842e0e146104995780634ea34cdb146104c15780636352211e146104e057806367d0661d146104f65780636fb642de14610509578063704b6c021461052d57806370a082311461054c57806375b599c01461056b57806395d89b411461058d5780639cc477b2146105a0578063a22cb465146105c9578063b187bd26146105ed578063b88d4fde14610600578063bfae2f0e14610637578063e985e9c51461064a578063febb986b1461066f575b600080fd5b341561017957600080fd5b61018e600160e060020a0319600435166106f7565b604051901515815260200160405180910390f35b34156101ad57600080fd5b6101bf60043561ffff602435166107aa565b005b34156101cc57600080fd5b6101d46109c4565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102105780820151838201526020016101f8565b50505050905090810190601f16801561023d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025657600080fd5b610261600435610a06565b604051600160a060020a03909116815260200160405180910390f35b341561028857600080fd5b6101bf600160a060020a0360043516602435610a67565b34156102aa57600080fd5b6102bd6004803560248101910135610b65565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156102fc5780820151838201526020016102e4565b505050509050019250505060405180910390f35b341561031b57600080fd5b61032f600160a060020a0360043516610de6565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561037357808201518382015260200161035b565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156103b257808201518382015260200161039a565b5050505090500194505050505060405180910390f35b34156103d357600080fd5b6103db610f3c565b60405190815260200160405180910390f35b34156103f857600080fd5b6101bf600435600160a060020a0360243516610f4a565b341561041a57600080fd5b6101bf600160a060020a0360043581169060243516604435611003565b341561044257600080fd5b6101bf61113f565b341561045557600080fd5b61046060043561117c565b604051808261018080838360005b8381101561048657808201518382015260200161046e565b5050505090500191505060405180910390f35b34156104a457600080fd5b6101bf600160a060020a03600435811690602435166044356112e2565b34156104cc57600080fd5b61018e600160a060020a036004351661130c565b34156104eb57600080fd5b61026160043561134c565b341561050157600080fd5b6101bf611367565b341561051457600080fd5b6101bf600160a060020a036004351660243515156113a6565b341561053857600080fd5b6101bf600160a060020a03600435166113f1565b341561055757600080fd5b6103db600160a060020a036004351661149c565b341561057657600080fd5b6101bf600435602460a461ffff61012435166114cf565b341561059857600080fd5b6101d461165f565b34156105ab57600080fd5b6103db600160a060020a0360043516602461ffff61014435166116a0565b34156105d457600080fd5b6101bf600160a060020a0360043516602435151561195f565b34156105f857600080fd5b61018e6119df565b341561060b57600080fd5b6101bf600160a060020a03600480358216916024803590911691604435916064359081019101356119e8565b341561064257600080fd5b610261611a3a565b341561065557600080fd5b61018e600160a060020a0360043581169060243516611a4e565b341561067a57600080fd5b610685600435611a7c565b60405161ffff9c8d1681529a8c1660208c0152988b166040808c0191909152978b1660608b0152958a1660808a015293891660a089015291881660c0880152871660e0870152861661010086015285166101208501528416610140840152921661016082015261018001905180910390f35b60007f01ffc9a700000000000000000000000000000000000000000000000000000000600160e060020a03198316148061075a57507f80ac58cd00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b8061078e57507f8153916a00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b80156107a45750600160e060020a031980831614155b92915050565b6000805481908190819060ff16156107c157600080fd5b85600181101580156107d557506001548111155b15156107e057600080fd5b600081815260036020526040902054600160a060020a0316151561080357600080fd5b600160a060020a03331660009081526008602052604090205460ff16151561082a57600080fd5b6000878152600360209081526040808320546005835281842054600160a060020a03909116808552600490935292208054919750919550909350879084908690811061087257fe5b6000918252602090912001541461088857600080fd5b82546000190184146108e4578254839060001981019081106108a657fe5b90600052602060002090015491508183858154811015156108c357fe5b60009182526020808320909101929092558381526005909152604090208490555b8254600019016108f484826121bc565b506000878152600360209081526040808320805473ffffffffffffffffffffffffffffffffffffffff191690556005909152808220829055600280546001019055600160a060020a038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908a905190815260200160405180910390a384600160a060020a03167f731c886bc6fd1e9c7249159422a4e267e6babaa0543d8aa9c085d1d0ce896611888860405191825261ffff1660208201526040908101905180910390a250505050505050565b6109cc6121e0565b60408051908101604052600981527f57415220546f6b656e0000000000000000000000000000000000000000000000602082015290505b90565b60008160018110158015610a1c57506001548111155b1515610a2757600080fd5b600081815260036020526040902054600160a060020a03161515610a4a57600080fd5b5050600090815260066020526040902054600160a060020a031690565b6000805460ff1615610a7857600080fd5b50600081815260036020526040902054600160a060020a0316801515610a9d57600080fd5b80600160a060020a031633600160a060020a03161480610ae35750600160a060020a038082166000908152600760209081526040808320339094168352929052205460ff165b1515610aee57600080fd5b60008281526006602052604090819020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386811691821790925591908316907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a3505050565b610b6d6121e0565b8160008080806040851115610b8157600080fd5b84600b02604051805910610b925750595b90808252806020026020018201604052509550600091505b84821015610ddb57878783818110610bbe57fe5b602090810292909201356000818152600390935260409092205491955050600160a060020a031615610dd05760018054600b8402945085908110610bfe57fe5b600091825260209091200180549091506601000000000000900461ffff16868481518110610c2857fe5b61ffff92831660209182029092010152815468010000000000000000900416866001850181518110610c5657fe5b61ffff9283166020918202909201015281546a0100000000000000000000900416866002850181518110610c8657fe5b61ffff9283166020918202909201015281546c01000000000000000000000000900416866003850181518110610cb857fe5b61ffff9283166020918202909201015281546e010000000000000000000000000000900416866004850181518110610cec57fe5b61ffff928316602091820290920101528154700100000000000000000000000000000000900416866005850181518110610d2257fe5b61ffff9283166020918202909201015281547201000000000000000000000000000000000000900416866006850181518110610d5a57fe5b61ffff92831660209182029092010152815474010000000000000000000000000000000000000000900416866007850181518110610d9457fe5b61ffff92831660209182029092010152815460b060020a900416866008850181518110610dbd57fe5b61ffff9092166020928302909101909101525b816001019150610baa565b505050505092915050565b610dee6121e0565b610df66121e0565b6000808080600160a060020a0387161515610e1057600080fd5b600160a060020a0387166000908152600460205260409081902080549095509350839051805910610e3e5750595b9080825280602002602001820160405250955082604051805910610e5f5750595b90808252806020026020018201604052509450600091505b82821015610f33578382815481101515610e8d57fe5b906000526020600020900154868381518110610ea557fe5b602090810290910101528354600190859084908110610ec057fe5b60009182526020909120015481548110610ed657fe5b60009182526020909120018054909150640100000000810461ffff9081166201000083048216600a02919092166064020101858381518110610f1457fe5b63ffffffff909216602092830290910190910152600190910190610e77565b50505050915091565b600254600154036000190190565b6000805460ff1615610f5b57600080fd5b600160a060020a03331660009081526008602052604090205460ff161515610f8257600080fd5b60018310158015610f9557506001548311155b1515610fa057600080fd5b50600082815260036020526040902054600160a060020a0316801515610fc557600080fd5b600160a060020a0382161515610fda57600080fd5b600160a060020a038181169083161415610ff357600080fd5b610ffe818385611b5e565b505050565b6000805460ff161561101457600080fd5b816001811015801561102857506001548111155b151561103357600080fd5b600081815260036020526040902054600160a060020a0316151561105657600080fd5b6000838152600360205260409020548390600160a060020a0390811690331681148061109c575060008281526006602052604090205433600160a060020a039081169116145b806110cd5750600160a060020a038082166000908152600760209081526040808320339094168352929052205460ff165b15156110d857600080fd5b600085815260036020526040902054600160a060020a031693508315156110fe57600080fd5b600160a060020a038616151561111357600080fd5b600160a060020a038481169088161461112b57600080fd5b611136878787611b5e565b50505050505050565b60005433600160a060020a03908116610100909204161461115f57600080fd5b60005460ff16151561117057600080fd5b6000805460ff19169055565b6111846121f2565b6000826001811015801561119a57506001548111155b15156111a557600080fd5b600081815260036020526040902054600160a060020a031615156111c857600080fd5b60018054859081106111d657fe5b6000918252602091829020015461ffff80821686526201000082048116928601929092526401000000008104821660408601526601000000000000810482166060860152680100000000000000008104821660808601526a01000000000000000000008104821660a08601526c010000000000000000000000008104821660c08601526e0100000000000000000000000000008104821660e086015270010000000000000000000000000000000081048216610100860152720100000000000000000000000000000000000081048216610120860152740100000000000000000000000000000000000000008104821661014086015260b060020a900416610160840152509092915050565b60005460ff16156112f257600080fd5b610ffe838383602060405190810160405260008152611d5b565b6000805433600160a060020a03908116610100909204161461132d57600080fd5b50600160a060020a031660009081526008602052604090205460ff1690565b600090815260036020526040902054600160a060020a031690565b60005433600160a060020a03908116610100909204161461138757600080fd5b60005460ff161561139757600080fd5b6000805460ff19166001179055565b60005433600160a060020a0390811661010090920416146113c657600080fd5b600160a060020a03919091166000908152600860205260409020805460ff1916911515919091179055565b60005433600160a060020a03908116610100909204161461141157600080fd5b600160a060020a038116151561142657600080fd5b600054600160a060020a03808316916101009004167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360008054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b6000600160a060020a03821615156114b357600080fd5b50600160a060020a031660009081526004602052604090205490565b6000805460ff16156114e057600080fd5b84600181101580156114f457506001548111155b15156114ff57600080fd5b600081815260036020526040902054600160a060020a0316151561152257600080fd5b600160a060020a03331660009081526008602052604090205460ff16151561154957600080fd5b600180548790811061155757fe5b60009182526020822001925061ffff863516111561158b5761158b8261ffff8735168660005b602002013561ffff16611fd1565b600061ffff60208701351611156115b1576115b18261ffff60208801351686600161157d565b600061ffff60408701351611156115d7576115d78261ffff60408801351686600261157d565b600061ffff60608701351611156115fd576115fd8261ffff60608801351686600361157d565b6000868152600360205260409081902054600160a060020a0316907f447449e0835c6129793b404e5f4373bee3e0c20463da359d3cf0922bd8d911cf90889086905191825261ffff1660208201526040908101905180910390a2505050505050565b6116676121e0565b60408051908101604052600381527f57415200000000000000000000000000000000000000000000000000000000006020820152905090565b600080548190819060ff16156116b557600080fd5b600160a060020a03331660009081526008602052604090205460ff1615156116dc57600080fd5b600160a060020a03861615156116f157600080fd5b6001549150640100000000821061170757600080fd5b60018054810190611718908261221b565b50600180548390811061172757fe5b600091825260209182902001805461ffff1916873561ffff9081169190911763ffff0000191692880135811662010000029290921765ffff00000000191660408801358316640100000000021781559150606086013516156117a657805467ffff0000000000001916606086013561ffff166601000000000000021781555b61ffff6080860135161561180657805469ffff00000000000000001916608086013561ffff9081166801000000000000000002919091176bffff00000000000000000000191660a0870135919091166a0100000000000000000000021781555b61ffff60c086013516156118435780546dffff000000000000000000000000191660c086013561ffff166c01000000000000000000000000021781555b61ffff60e086013516156118845780546fffff0000000000000000000000000000191660e086013561ffff166e010000000000000000000000000000021781555b61ffff61010086013516156118cb57805471ffff00000000000000000000000000000000191661010086013561ffff16700100000000000000000000000000000000021781555b6118d760008784611b5e565b600160a060020a0386167f8ded42b67fd3601c2cdbeb4fcb9a03da61bfd15fedc18f2908c4fe93305ed7428361ffff883581169060208a013516896002602002013561ffff168960405194855261ffff938416602086015291831660408086019190915290831660608501529116608083015260a0909101905180910390a250949350505050565b60005460ff161561196f57600080fd5b33600160a060020a0390811660008181526007602090815260408083209487168084529490915290819020805460ff19168515151790557f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190849051901515815260200160405180910390a35050565b60005460ff1681565b60005460ff16156119f857600080fd5b611a3385858585858080601f016020809104026020016040519081016040528181529291906020840183838082843750611d5b945050505050565b5050505050565b6000546101009004600160a060020a031681565b600160a060020a03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6001805482908110611a8a57fe5b60009182526020909120015461ffff80821692506201000082048116916401000000008104821691660100000000000082048116916801000000000000000081048216916a010000000000000000000082048116916c0100000000000000000000000081048216916e010000000000000000000000000000820481169170010000000000000000000000000000000081048216917201000000000000000000000000000000000000820481169174010000000000000000000000000000000000000000810482169160b060020a909104168c565b60008080600160a060020a03861615611c7657600084815260056020908152604080832054600160a060020a038a1684526004909252909120805491945092508490839085908110611bac57fe5b60009182526020909120015414611bc257600080fd5b8154600019018314611c1e57815482906000198101908110611be057fe5b9060005260206000209001549050808284815481101515611bfd57fe5b60009182526020808320909101929092558281526005909152604090208390555b815460001901611c2e83826121bc565b50600084815260066020526040902054600160a060020a031615611c76576000848152600660205260409020805473ffffffffffffffffffffffffffffffffffffffff191690555b6000848152600360209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038a16908117909155835260049091529020805460018101611cc983826121bc565b506000918252602080832091909101869055600160a060020a0380881680845260048352604080852054898652600590945290932060001990920190915587161515611d155730611d17565b865b600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405190815260200160405180910390a3505050505050565b60008060008460018110158015611d7457506001548111155b1515611d7f57600080fd5b600081815260036020526040902054600160a060020a03161515611da257600080fd5b6000868152600360205260409020548690600160a060020a03908116903316811480611de8575060008281526006602052604090205433600160a060020a039081169116145b80611e195750600160a060020a038082166000908152600760209081526040808320339094168352929052205460ff165b1515611e2457600080fd5b600088815260036020526040902054600160a060020a03169550851515611e4a57600080fd5b600160a060020a0389161515611e5f57600080fd5b600160a060020a03868116908b1614611e7757600080fd5b611e828a8a8a611b5e565b883b9450841515611e9257611fc5565b88600160a060020a031663f0b9e5ba8b8a8a6040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611f2a578082015183820152602001611f12565b50505050905090810190601f168015611f575780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b1515611f7757600080fd5b5af11515611f8457600080fd5b50505060405180519450507ff0b9e5ba00000000000000000000000000000000000000000000000000000000600160e060020a0319851614611fc557600080fd5b50505050505050505050565b8161ffff166003141561200157825467ffff0000000000001916660100000000000061ffff831602178355610ffe565b8161ffff166004141561203557825469ffff000000000000000019166801000000000000000061ffff831602178355610ffe565b8161ffff166005141561206d5782546bffff0000000000000000000019166a010000000000000000000061ffff831602178355610ffe565b8161ffff16600614156120a95782546dffff00000000000000000000000019166c0100000000000000000000000061ffff831602178355610ffe565b8161ffff16600714156120e95782546fffff000000000000000000000000000019166e01000000000000000000000000000061ffff831602178355610ffe565b8161ffff166009141561213157825473ffff0000000000000000000000000000000000001916720100000000000000000000000000000000000061ffff831602178355610ffe565b8161ffff16600a141561217d57825475ffff000000000000000000000000000000000000000019167401000000000000000000000000000000000000000061ffff831602178355610ffe565b8161ffff16600b1415610ffe57825461ffff821660b060020a0277ffff0000000000000000000000000000000000000000000019909116178355505050565b815481835581811511610ffe57600083815260209020610ffe91810190830161223f565b60206040519081016040526000815290565b610180604051908101604052600c815b6000815260001990910190602001816122025790505090565b815481835581811511610ffe57600083815260209020610ffe91810190830161225d565b610a0391905b808211156122595760008155600101612245565b5090565b610a0391905b8082111561225957805477ffffffffffffffffffffffffffffffffffffffffffffffff191681556001016122635600a165627a7a723058206f4784360e1bc9209cf875bc0505be8673bd53d559c5532272edf7f169e19e850029

   Swarm Source:
bzzr://6f4784360e1bc9209cf875bc0505be8673bd53d559c5532272edf7f169e19e85

 

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.