Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 256 txns
 Latest 25 txns From a total of 256 Transactions

TxHash Age From To Value [TxFee]
0xd4ee7d710966ef7c1b33243a86b81c8e1bad4c0fe74cb33edec5b70b2bad05ef146 days 18 hrs ago0x9ba76d9ccdedbace3a3896abe66edfee0d7ea9b4  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.838401937141687 Ether0.0010587294
0xd718dbac97ed706addd37bc70e4328673d9bf8e6c1da62cd51478b444e388f70147 days 7 hrs ago0x9ba76d9ccdedbace3a3896abe66edfee0d7ea9b4  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f1.94614674884416 Ether0.00096139
0x685e108a89db359bf5342e0fdc1152ec820eb757df46324f5c7ebcbe8949c020166 days 15 hrs ago0xdf465693cdcada878ba95473b79a557d29a4eafd  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.1 Ether0.0000333817
0xba5c4a255f06effb0b53fad154da36e2175514014f50cff945e2485f994be2b7171 days 3 hrs ago0x02cba5c47a1cf111d103f6941e7d4489d08d5647  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.162833299409729 Ether0.00151994
0xddbe082abf33335b3c62cc56f3ecc4150d36cca75cc3c08254ea2d4e90535958173 days 22 hrs ago0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f680  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.152815687890892 Ether0.0008246544
0xee8284ccea229d9c3f977c066b9d5050e98110b5b974482362e8d77d5eddbacc173 days 23 hrs ago0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f680  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.1 Ether0.0009970125
0x7f77160c0740b977bad42f8b19b5eb429aa62443b186f52d902895cc4bdcb52f173 days 23 hrs ago0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f680  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.1 Ether0.00116016
0xfcd27a3bc53805ea4493125ee44093d540df017ed2803ec21534adc68e4fcfb7173 days 23 hrs ago0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f680  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.1 Ether0.00116016
0x75394807ea8caa7adc238069411f0cb310c507999a8fe921ba8d81044e651a96173 days 23 hrs ago0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f680  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.1 Ether0.0009163632
0x48e6c8c3c3676566f2d7a3b798edabd483b472c20da8971f5253e23398fd66fb173 days 23 hrs ago0xc4adf872667f5d477dfd79a889331ddef23ca0fe  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.31 Ether0.0008484192
0x0787d70b196eb6e2a1bcc9318f356d529477e9648b1b3137be1a4b56e9f7ec0b173 days 23 hrs ago0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f680  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.1 Ether0.0009883632
0x1d259d912494986c691bcd10b0f466cea86828ad412de02eb5593c9855905f1e173 days 23 hrs ago0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f680  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.115183246073298 Ether0.001020324
0x989c37ef3b7b37659c29119867750c0e18fff469577bac1b3caaf73127d3e597173 days 23 hrs ago0xc4adf872667f5d477dfd79a889331ddef23ca0fe  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.31 Ether0.0007764192
0xaac0d6bbc48a65d84f28006bc37e7c9d05fd8c5619f6f2e010b81f1242b1e501176 days 20 hrs ago0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f680  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.628146691236237 Ether0.000343606
0xfed9c4849d8fd20c05f03919162ad07fea639d9d1014d5356cc741d06bd19d9d176 days 21 hrs ago0xe8455f343177a9beb99865e6dc906bbca037785c  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.135494527028918 Ether0.00039632
0x3ac1d643619c05cbcfadeb00d869724c709c6bacf89372474267585f95c796ea176 days 21 hrs ago0xe8455f343177a9beb99865e6dc906bbca037785c  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.135494527028918 Ether0.00059448
0x67e660f06b4e469c589fab2c97663de3877baa6fc82d4ac629d45d68dfac831f176 days 21 hrs ago0xe8455f343177a9beb99865e6dc906bbca037785c  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.135494527028918 Ether0.00054948
0x3622677b9ff6c0f453a6ab014f5d3811a60497bc1f4db3a14ca6bb5e3172762a176 days 21 hrs ago0xc4adf872667f5d477dfd79a889331ddef23ca0fe  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.14 Ether0.000643074
0x8c8e67e9bf086059dd6058e97d2eb49c8b6501dd1cf4080b3e383fb6d5eb10b4176 days 21 hrs ago0xc4adf872667f5d477dfd79a889331ddef23ca0fe  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.14 Ether0.000643074
0xa4ac9fc8b60d8b44e1d38fd7214a55ce8320e86a88d1e553ba357dadd9134eb2176 days 21 hrs ago0xc4adf872667f5d477dfd79a889331ddef23ca0fe  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.14 Ether0.000688074
0x840a608e5a74c2b619d88a3c76cf64a14f2baf9ae5b74d840d5dce94946e2137176 days 21 hrs ago0xc4adf872667f5d477dfd79a889331ddef23ca0fe  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.54534553648237 Ether0.000515409
0xe1e92b90cbc8ebedb05413b11c187f3a94f81cd2a5acff85c4c42197a9560805176 days 22 hrs ago0x05f2c11996d73288abe8a31d8b593a693ff2e5d8  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.116402116402116 Ether0.000095073
0xd590c0b6fdc21b9236284d16053ba88bd608fce8af5d2ae19e219e2d2cee8340176 days 22 hrs ago0x2b68726826fc073ed774544438d3048e9ab9a2a8  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.14 Ether0.0010993
0xa8b77724ab62cbef558111d6cbd2e052955879cad2cd0850bd21bf53d3b6c6ba176 days 22 hrs ago0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f680  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.1 Ether0.000126652
0xb5a4da913167670b9a31558e3202a86b2c3d51b957a2884372c73e8ffa70c9fd176 days 22 hrs ago0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f680  IN   0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0.1 Ether0.000126652
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click Here To View More View All
ParentTxHash Block Age From To Value
0xd4ee7d710966ef7c1b33243a86b81c8e1bad4c0fe74cb33edec5b70b2bad05ef5681372146 days 18 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0x5656001cad7e8425d5362dc37cfb6233a0e31e3c0.026409661019963163 Ether
0xd4ee7d710966ef7c1b33243a86b81c8e1bad4c0fe74cb33edec5b70b2bad05ef5681372146 days 18 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0x46272887ad2ba05840601d8ffc469380a5dad8230.002934406779995906 Ether
0xd4ee7d710966ef7c1b33243a86b81c8e1bad4c0fe74cb33edec5b70b2bad05ef5681372146 days 18 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f6800.008384019371416876 Ether
0xd4ee7d710966ef7c1b33243a86b81c8e1bad4c0fe74cb33edec5b70b2bad05ef5681372146 days 18 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0x9ba76d9ccdedbace3a3896abe66edfee0d7ea9b40.008384019371416876 Ether
0xd4ee7d710966ef7c1b33243a86b81c8e1bad4c0fe74cb33edec5b70b2bad05ef5681372146 days 18 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0x18c4e56aca8878a039878741f3e86236d240add30.79228983059889482 Ether
0xd718dbac97ed706addd37bc70e4328673d9bf8e6c1da62cd51478b444e388f705678330147 days 7 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0x5656001cad7e8425d5362dc37cfb6233a0e31e3c0.061303622588591062 Ether
0xd718dbac97ed706addd37bc70e4328673d9bf8e6c1da62cd51478b444e388f705678330147 days 7 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0x46272887ad2ba05840601d8ffc469380a5dad8230.006811513620954562 Ether
0xd718dbac97ed706addd37bc70e4328673d9bf8e6c1da62cd51478b444e388f705678330147 days 7 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f6800.019461467488441606 Ether
0xd718dbac97ed706addd37bc70e4328673d9bf8e6c1da62cd51478b444e388f705678330147 days 7 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0x2b68726826fc073ed774544438d3048e9ab9a2a81.858570145146173426 Ether
0xba5c4a255f06effb0b53fad154da36e2175514014f50cff945e2485f994be2b75542705171 days 3 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0x5656001cad7e8425d5362dc37cfb6233a0e31e3c0.005129248931406476 Ether
0xba5c4a255f06effb0b53fad154da36e2175514014f50cff945e2485f994be2b75542705171 days 3 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0x9cccc92df609ac0d2016b422cde70b4b371516820.000569916547934052 Ether
0xba5c4a255f06effb0b53fad154da36e2175514014f50cff945e2485f994be2b75542705171 days 3 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f6800.001628332994097292 Ether
0xba5c4a255f06effb0b53fad154da36e2175514014f50cff945e2485f994be2b75542705171 days 3 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f6800.001628332994097292 Ether
0xba5c4a255f06effb0b53fad154da36e2175514014f50cff945e2485f994be2b75542705171 days 3 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f6800.001628332994097292 Ether
0xba5c4a255f06effb0b53fad154da36e2175514014f50cff945e2485f994be2b75542705171 days 3 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0xdf465693cdcada878ba95473b79a557d29a4eafd0.152249134948096884 Ether
0xddbe082abf33335b3c62cc56f3ecc4150d36cca75cc3c08254ea2d4e905359585526705173 days 22 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0x5656001cad7e8425d5362dc37cfb6233a0e31e3c0.00481369416856311 Ether
0xddbe082abf33335b3c62cc56f3ecc4150d36cca75cc3c08254ea2d4e905359585526705173 days 22 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0x46272887ad2ba05840601d8ffc469380a5dad8230.000534854907618123 Ether
0xddbe082abf33335b3c62cc56f3ecc4150d36cca75cc3c08254ea2d4e905359585526705173 days 22 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f6800.001528156878908923 Ether
0xddbe082abf33335b3c62cc56f3ecc4150d36cca75cc3c08254ea2d4e905359585526705173 days 22 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0xc4adf872667f5d477dfd79a889331ddef23ca0fe0.145938981935802197 Ether
0xee8284ccea229d9c3f977c066b9d5050e98110b5b974482362e8d77d5eddbacc5526536173 days 23 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0x5656001cad7e8425d5362dc37cfb6233a0e31e3c0.00315 Ether
0xee8284ccea229d9c3f977c066b9d5050e98110b5b974482362e8d77d5eddbacc5526536173 days 23 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0x46272887ad2ba05840601d8ffc469380a5dad8230.00035 Ether
0xee8284ccea229d9c3f977c066b9d5050e98110b5b974482362e8d77d5eddbacc5526536173 days 23 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f6800.001 Ether
0xee8284ccea229d9c3f977c066b9d5050e98110b5b974482362e8d77d5eddbacc5526536173 days 23 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0xc4adf872667f5d477dfd79a889331ddef23ca0fe0.001 Ether
0xee8284ccea229d9c3f977c066b9d5050e98110b5b974482362e8d77d5eddbacc5526536173 days 23 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0xb6d73dd953ef84155bba1d6ec5d6c8a5be21f6800.001 Ether
0xee8284ccea229d9c3f977c066b9d5050e98110b5b974482362e8d77d5eddbacc5526536173 days 23 hrs ago0x5562acc7749ed48ca4692a8d9d3cc25c3d8f9b2f0x5656001cad7e8425d5362dc37cfb6233a0e31e3c0.0935 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: CoreContract
Compiler Text: v0.4.20+commit.3155dd80
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.18; // solhint-disable-line

library SafeMath {

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a / b;
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

contract ERC721 {
    function approve(address _to, uint256 _tokenID) public;
    function balanceOf(address _owner) public view returns (uint256 balance);
    function implementsERC721() public pure returns (bool);
    function ownerOf(uint256 _tokenID) public view returns (address addr);
    function takeOwnership(uint256 _tokenID) public;
    function totalSupply() public view returns (uint256 total);
    function transferFrom(address _from, address _to, uint256 _tokenID) public;
    function transfer(address _to, uint256 _tokenID) public;

    event Transfer(address indexed from, address indexed to, uint256 tokenID); // solhint-disable-line
    event Approval(address indexed owner, address indexed approved, uint256 tokenID);

    function name() public pure returns (string);
    function symbol() public pure returns (string);
}

contract Ownable {
    address public owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    function Ownable() public {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

contract Manageable is Ownable {

    address public manager;
    bool public contractLock;

    event ManagerTransferred(address indexed previousManager, address indexed newManager);
    event ContractLockChanged(address admin, bool state);

    function Manageable() public {
        manager = msg.sender;
        contractLock = false;
    }

    modifier onlyManager() {
        require(msg.sender == manager);
        _;
    }

    modifier onlyAdmin() {
        require((msg.sender == manager) || (msg.sender == owner));
        _;
    }

    modifier isUnlocked() {
        require(!contractLock);
        _;
    }

    function transferManager(address newManager) public onlyAdmin {
        require(newManager != address(0));
        ManagerTransferred(manager, newManager);
        manager = newManager;
    }

    function setContractLock(bool setting) public onlyAdmin {
        contractLock = setting;
        ContractLockChanged(msg.sender, setting);
    }

    function payout(address _to) public onlyOwner {
        if (_to == address(0)) {
            owner.transfer(this.balance);
        } else {
            _to.transfer(this.balance);
        }
    }

    function withdrawFunds(address _to, uint256 amount) public onlyOwner {
        require(this.balance >= amount);
        if (_to == address(0)) {
            owner.transfer(amount);
        } else {
            _to.transfer(amount);
        }
    }
}

contract TokenLayer is ERC721, Manageable {

    using SafeMath for uint256;

    /********************************************** EVENTS **********************************************/
    event TokenCreated(uint256 tokenId, bytes32 name, uint256 parentId, address owner);
    event TokenDeleted(uint256 tokenId);

    event TokenSold(
        uint256 tokenId, uint256 oldPrice,
        uint256 newPrice, address prevOwner,
        address winner, bytes32 name,
        uint256 parentId
    );

    event PriceChanged(uint256 tokenId, uint256 oldPrice, uint256 newPrice);
    event ParentChanged(uint256 tokenId, uint256 oldParentId, uint256 newParentId);
    event NameChanged(uint256 tokenId, bytes32 oldName, bytes32 newName);
    event MetaDataChanged(uint256 tokenId, bytes32 oldMeta, bytes32 newMeta);

    /******************************************** STORAGE ***********************************************/
    uint256 private constant DEFAULTPARENT = 123456789;

    mapping (uint256 => Token)   private tokenIndexToToken;
    mapping (address => uint256) private ownershipTokenCount;

    address public gameAddress;
    address public parentAddr;

    uint256 private totalTokens;
    uint256 public devFee = 50;
    uint256 public ownerFee = 200;
    uint256[10] private chainFees = [10];

    struct Token {
        bool exists;
        address approved;
        address owner;
        bytes32 metadata;
        bytes32 name;
        uint256 lastBlock;
        uint256 parentId;
        uint256 price;
    }

    /******************************************* MODIFIERS **********************************************/
    modifier onlySystem() {
        require((msg.sender == gameAddress) || (msg.sender == manager));
        _;
    }

    /****************************************** CONSTRUCTOR *********************************************/
    function TokenLayer(address _gameAddress, address _parentAddr) public {
        gameAddress = _gameAddress;
        parentAddr = _parentAddr;
    }

    /********************************************** PUBLIC **********************************************/
    function implementsERC721() public pure returns (bool) {
        return true;
    }

    function name() public pure returns (string) {
        return "LayerName";
    }

    function symbol() public pure returns (string) {
        return "LayerSymbol";
    }

    function approve(address _to, uint256 _tokenId, address _from) public onlySystem {
        _approve(_to, _tokenId, _from);
    }

    function approve(address _to, uint256 _tokenId) public isUnlocked {
        _approve(_to, _tokenId, msg.sender);
    }

    function balanceOf(address _owner) public view returns (uint256 balance) {
        return ownershipTokenCount[_owner];
    }

    function bundleToken(uint256 _tokenId) public view returns(uint256[8] _tokenData) {
        Token storage token = tokenIndexToToken[_tokenId];

        uint256[8] memory tokenData;

        tokenData[0] = uint256(token.name);
        tokenData[1] = token.parentId;
        tokenData[2] = token.price;
        tokenData[3] = uint256(token.owner);
        tokenData[4] = _getNextPrice(_tokenId);
        tokenData[5] = devFee+getChainFees(_tokenId);
        tokenData[6] = uint256(token.approved);
        tokenData[7] = uint256(token.metadata);
        return tokenData;
    }

    function takeOwnership(uint256 _tokenId, address _to) public onlySystem {
        _takeOwnership(_tokenId, _to);
    }

    function takeOwnership(uint256 _tokenId) public isUnlocked {
        _takeOwnership(_tokenId, msg.sender);
    }

    function tokensOfOwner(address _owner) public view returns (uint256[] ownerTokens) {
        uint256 tokenCount = balanceOf(_owner);
        if (tokenCount == 0) {
            return new uint256[](0);
        } else {
            uint256[] memory result = new uint256[](tokenCount);
            uint256 _totalTokens = totalSupply();
            uint256 resultIndex = 0;

            uint256 tokenId = 0;
            uint256 tokenIndex = 0;
            while (tokenIndex <= _totalTokens) {
                if (exists(tokenId)) {
                    tokenIndex++;
                    if (tokenIndexToToken[tokenId].owner == _owner) {
                        result[resultIndex] = tokenId;
                        resultIndex++;
                    }
                }
                tokenId++;
            }
            return result;
        }
    }

    function totalSupply() public view returns (uint256 total) {
        return totalTokens;
    }

    function transfer(address _to, address _from, uint256 _tokenId) public onlySystem {
        _checkThenTransfer(_from, _to, _tokenId);
    }

    function transfer(address _to, uint256 _tokenId) public isUnlocked {
        _checkThenTransfer(msg.sender, _to, _tokenId);
    }

    function transferFrom(address _from, address _to, uint256 _tokenId) public onlySystem {
        _transferFrom(_from, _to, _tokenId);
    }

    function transferFrom(address _from, uint256 _tokenId) public isUnlocked {
        _transferFrom(_from, msg.sender, _tokenId);
    }

    function createToken(
        uint256 _tokenId, address _owner,
        bytes32 _name, uint256 _parentId,
        uint256 _price, bytes32 _metadata
    ) public onlyAdmin {
        require(_price > 0);
        require(_addressNotNull(_owner));
        require(_tokenId == uint256(uint32(_tokenId)));
        require(!exists(_tokenId));

        totalTokens++;

        Token memory _token = Token({
            name: _name,
            parentId: _parentId,
            exists: true,
            price: _price,
            owner: _owner,
            approved : 0,
            lastBlock : block.number,
            metadata : _metadata
        });

        tokenIndexToToken[_tokenId] = _token;

        TokenCreated(_tokenId, _name, _parentId, _owner);

        _transfer(address(0), _owner, _tokenId);
    }

    function createTokens(
        uint256[] _tokenIds, address[] _owners,
        bytes32[] _names, uint256[] _parentIds,
        uint256[] _prices, bytes32[] _metadatas
    ) public onlyAdmin {
        for (uint256 id = 0; id < _tokenIds.length; id++) {
            createToken(
                _tokenIds[id], _owners[id], _names[id],
                _parentIds[id], _prices[id], _metadatas[id]
                );
        }
    }

    function deleteToken(uint256 _tokenId) public onlyAdmin {
        require(_tokenId == uint256(uint32(_tokenId)));
        require(exists(_tokenId));
        totalTokens--;

        address oldOwner = tokenIndexToToken[_tokenId].owner;

        ownershipTokenCount[oldOwner] = ownershipTokenCount[oldOwner]--;
        delete tokenIndexToToken[_tokenId];
        TokenDeleted(_tokenId);
    }

    function incrementPrice(uint256 _tokenId, address _to) public onlySystem {
        require(exists(_tokenId));
        uint256 _price = tokenIndexToToken[_tokenId].price;
        address _owner = tokenIndexToToken[_tokenId].owner;
        uint256 _totalFees = getChainFees(_tokenId);
        tokenIndexToToken[_tokenId].price = _price.mul(1000+ownerFee).div(1000-(devFee+_totalFees));

        TokenSold(
            _tokenId, _price, tokenIndexToToken[_tokenId].price,
            _owner, _to, tokenIndexToToken[_tokenId].name,
            tokenIndexToToken[_tokenId].parentId
        );
    }

    function ownerOf(uint256 _tokenId) public view returns (address _owner) {
        require(exists(_tokenId));
        _owner = tokenIndexToToken[_tokenId].owner;
    }

    function blocked(uint256 _tokenId) public view returns (bool _blocked) {
        return (tokenIndexToToken[_tokenId].lastBlock == block.number);
    }

    function exists(uint256 _tokenId) public view returns(bool) {
        return (tokenIndexToToken[_tokenId].exists);
    }

    /********************************************** SETTERS *********************************************/
    function setLayerParent(address _parent) public onlyAdmin {
        parentAddr = _parent;
    }

    function setGame(address _gameAddress) public onlyAdmin {
        gameAddress = _gameAddress;
    }

    function setPrice(uint256 _tokenId, uint256 _price, address _owner) public onlySystem {
        require(_owns(_owner, _tokenId));
        uint256 oldPrice = tokenIndexToToken[_tokenId].price;
        tokenIndexToToken[_tokenId].price = _price;
        PriceChanged(_tokenId, oldPrice, _price);
    }

    function setParent(uint256 _tokenId, uint256 _parentId) public onlyAdmin {
        require(exists(_tokenId));
        uint256 oldParentId = tokenIndexToToken[_tokenId].parentId;
        tokenIndexToToken[_tokenId].parentId = _parentId;
        ParentChanged(_tokenId, oldParentId, _parentId);
    }

    function setName(uint256 _tokenId, bytes32 _name) public onlyAdmin {
        require(exists(_tokenId));
        bytes32 oldName = tokenIndexToToken[_tokenId].name;
        tokenIndexToToken[_tokenId].name = _name;
        NameChanged(_tokenId, oldName, _name);
    }

    function setMetadata(uint256 _tokenId, bytes32 _metadata) public onlyAdmin {
        require(exists(_tokenId));
        bytes32 oldMeta = tokenIndexToToken[_tokenId].metadata;
        tokenIndexToToken[_tokenId].metadata = _metadata;
        MetaDataChanged(_tokenId, oldMeta, _metadata);
    }

    function setDevFee(uint256 _devFee) public onlyAdmin {
        devFee = _devFee;
    }

    function setOwnerFee(uint256 _ownerFee) public onlyAdmin {
        ownerFee = _ownerFee;
    }

    function setChainFees(uint256[10] _chainFees) public onlyAdmin {
        chainFees = _chainFees;
    }

    /********************************************** GETTERS *********************************************/
    function getToken(uint256 _tokenId) public view returns
    (
        bytes32 tokenName, uint256 parentId, uint256 price,
        address _owner, uint256 nextPrice, uint256 nextPriceFees,
        address approved, bytes32 metadata
    ) {
        Token storage token = tokenIndexToToken[_tokenId];

        tokenName = token.name;
        parentId = token.parentId;
        price = token.price;
        _owner = token.owner;
        nextPrice = _getNextPrice(_tokenId);
        nextPriceFees = devFee+getChainFees(_tokenId);
        metadata = token.metadata;
        approved = token.approved;
    }

    function getChainFees(uint256 _tokenId) public view returns (uint256 _total) {
        uint256 chainLength = _getChainLength(_tokenId);
        uint256 totalFee = 0;
        for (uint id = 0; id < chainLength; id++) {
            totalFee = totalFee + chainFees[id];
        }
        return(totalFee);
    }

    function getChainFeeArray() public view returns (uint256[10] memory _chainFees) {
        return(chainFees);
    }

    function getPriceOf(uint256 _tokenId) public view returns (uint256 price) {
        require(exists(_tokenId));
        return tokenIndexToToken[_tokenId].price;
    }

    function getParentOf(uint256 _tokenId) public view returns (uint256 parentId) {
        require(exists(_tokenId));
        return tokenIndexToToken[_tokenId].parentId;
    }

    function getMetadataOf(uint256 _tokenId) public view returns (bytes32 metadata) {
        require(exists(_tokenId));
        return (tokenIndexToToken[_tokenId].metadata);
    }

    function getChain(uint256 _tokenId) public view returns (address[10] memory _owners) {
        require(exists(_tokenId));

        uint256 _parentId = getParentOf(_tokenId);
        address _parentAddr = parentAddr;

        address[10] memory result;

        if (_parentId != DEFAULTPARENT && _addressNotNull(_parentAddr)) {
            uint256 resultIndex = 0;

            TokenLayer layer = TokenLayer(_parentAddr);
            bool parentExists = layer.exists(_parentId);

            while ((_parentId != DEFAULTPARENT) && _addressNotNull(_parentAddr) && parentExists) {
                parentExists = layer.exists(_parentId);
                if (!parentExists) {
                    return(result);
                }
                result[resultIndex] = layer.ownerOf(_parentId);
                resultIndex++;

                _parentId = layer.getParentOf(_parentId);
                _parentAddr = layer.parentAddr();

                layer = TokenLayer(_parentAddr);
            }

            return(result);
        }
    }

    /******************************************** PRIVATE ***********************************************/
    function _addressNotNull(address _to) private pure returns (bool) {
        return _to != address(0);
    }

    function _approved(address _to, uint256 _tokenId) private view returns (bool) {
        return (tokenIndexToToken[_tokenId].approved == _to);
    }

    function _owns(address claimant, uint256 _tokenId) private view returns (bool) {
        return claimant == tokenIndexToToken[_tokenId].owner;
    }

    function _checkThenTransfer(address _from, address _to, uint256 _tokenId) private {
        require(_owns(_from, _tokenId));
        require(_addressNotNull(_to));
        require(exists(_tokenId));
        _transfer(_from, _to, _tokenId);
    }

    function _transfer(address _from, address _to, uint256 _tokenId) private {
        ownershipTokenCount[_to]++;
        tokenIndexToToken[_tokenId].owner = _to;
        tokenIndexToToken[_tokenId].lastBlock = block.number;

        if (_from != address(0)) {
            ownershipTokenCount[_from]--;
            tokenIndexToToken[_tokenId].approved = 0;
        }

        Transfer(_from, _to, _tokenId);
    }

    function _approve(address _to, uint256 _tokenId, address _from) private {
        require(_owns(_from, _tokenId));

        tokenIndexToToken[_tokenId].approved = _to;

        Approval(_from, _to, _tokenId);
    }

    function _takeOwnership(uint256 _tokenId, address _to) private {
        address newOwner = _to;
        address oldOwner = tokenIndexToToken[_tokenId].owner;

        require(_addressNotNull(newOwner));
        require(_approved(newOwner, _tokenId));

        _transfer(oldOwner, newOwner, _tokenId);
    }

    function _transferFrom(address _from, address _to, uint256 _tokenId) private {
        require(_owns(_from, _tokenId));
        require(_approved(_to, _tokenId));
        require(_addressNotNull(_to));

        _transfer(_from, _to, _tokenId);
    }

    function _getChainLength(uint256 _tokenId) private view returns (uint256 _length) {
        uint256 length;

        uint256 _parentId = getParentOf(_tokenId);
        address _parentAddr = parentAddr;
        if (_parentId == DEFAULTPARENT || !_addressNotNull(_parentAddr)) {
            return 0;
        }

        TokenLayer layer = TokenLayer(_parentAddr);
        bool parentExists = layer.exists(_parentId);

        while ((_parentId != DEFAULTPARENT) && _addressNotNull(_parentAddr) && parentExists) {
            parentExists = layer.exists(_parentId);
            if(!parentExists) {
                    return(length);
            }
            _parentId = layer.getParentOf(_parentId);
            _parentAddr = layer.parentAddr();
            layer = TokenLayer(_parentAddr);
            length++;
        }

        return(length);
    }

    function _getNextPrice(uint256 _tokenId) private view returns (uint256 _nextPrice) {
        uint256 _price = tokenIndexToToken[_tokenId].price;
        uint256 _totalFees = getChainFees(_tokenId);
        _price = _price.mul(1000+ownerFee).div(1000-(devFee+_totalFees));
        return(_price);
    }
}

contract CoreContract is Manageable {

    using SafeMath for uint256;

    /******************************************** STORAGE ***********************************************/

    bool public priceLocked = true;
    uint256 private constant DEFAULTPARENT = 123456789;

    uint256 public layerCount;
    mapping(uint256 => address) public getLayerFromId;
    mapping(uint256 => bytes32) public getLayerNameFromId;
    mapping(address => bool) private blacklisted;

    bool public blackListActive;
    bool public blockLockActive;

    mapping(address => address) public referrers;

    /********************************************** PUBLIC **********************************************/
    function approve(address _to, uint256 _tokenId, uint256 layerId) public isUnlocked {
        address layerAddr = getLayerFromId[layerId];
        TokenLayer layer = TokenLayer(layerAddr);
        layer.approve(_to, _tokenId, msg.sender);
    }

    function takeOwnership(uint256 _tokenId, uint256 layerId) public isUnlocked {
        address layerAddr = getLayerFromId[layerId];
        TokenLayer layer = TokenLayer(layerAddr);
        layer.takeOwnership(_tokenId, msg.sender);
    }

    function transfer(address _to, uint256 _tokenId, uint256 layerId) public isUnlocked {
        address layerAddr = getLayerFromId[layerId];
        TokenLayer layer = TokenLayer(layerAddr);
        layer.transfer(_to, msg.sender, _tokenId);
    }

    function setPrice(uint256 _tokenId, uint256 _price, uint256 layerId) public isUnlocked {
        address layerAddr = getLayerFromId[layerId];
        require(!priceLocked);
        TokenLayer layer = TokenLayer(layerAddr);
        layer.setPrice(_tokenId, _price, msg.sender);
    }

    function transferFrom(address _from, uint256 _tokenId, uint256 layerId) public isUnlocked {
        address layerAddr = getLayerFromId[layerId];
        TokenLayer layer = TokenLayer(layerAddr);
        layer.transferFrom(_from, msg.sender, _tokenId);
    }

    function purchase(uint256 _tokenId, uint256 layerId, address ref) public payable isUnlocked {
        if (!_blackListed(msg.sender)) {
            address layerAddr = getLayerFromId[layerId];
            TokenLayer layer = TokenLayer(layerAddr);

            address _owner = layer.ownerOf(_tokenId);
            uint256 price = layer.getPriceOf(_tokenId);

            require(_owner != msg.sender);

            require(msg.value >= price);

            require(!blockLockActive || !layer.blocked(_tokenId));

            layer.incrementPrice(_tokenId, msg.sender);
            layer.transfer(msg.sender, _owner, _tokenId);

            uint256 payment = _updatePayment(_tokenId, layerAddr, price);

            if (_owner != address(this)) {
                _owner.transfer(payment);
            }

            _payChain(_tokenId, layerAddr, price);

            uint256 excess = msg.value.sub(price);
            msg.sender.transfer(excess);

            _setReferrer(msg.sender, ref);

            address referrer = referrers[msg.sender];

            uint256 devFee = this.balance;

            if (_addressNotNull(referrer)) {
                uint256 referrerFee = devFee.div(10);
                devFee = devFee.sub(referrerFee);
                referrer.transfer(referrerFee);
            }

            owner.transfer(devFee);
        }
    }

    function addLayer(address _layerAddr, uint256 layerId, bytes32 _name) public onlyAdmin {
        require(!_addressNotNull(getLayerFromId[layerId]));
        getLayerFromId[layerId] = _layerAddr;
        getLayerNameFromId[layerId] = _name;
        layerCount++;
    }

    function deleteLayer(uint256 layerId) public onlyAdmin {
        require(_addressNotNull(getLayerFromId[layerId]));
        getLayerFromId[layerId] = address(0);
        getLayerNameFromId[layerId] = "";
        layerCount--;
    }

    function getToken(uint256 _tokenId, uint256 layerId) public view returns(
            bytes32 tokenName, uint256 parentId, uint256 price,
            address _owner, uint256 nextPrice, uint256 nextPriceFees,
            address approved, bytes32 metadata
        ) {
        address layerAddr = getLayerFromId[layerId];
        TokenLayer layer = TokenLayer(layerAddr);

        uint256[8] memory tokenData = layer.bundleToken(_tokenId);

        tokenName = bytes32(tokenData[0]);
        parentId = tokenData[1];
        price = tokenData[2];
        _owner = address(tokenData[3]);

        nextPrice = tokenData[4];
        nextPriceFees = tokenData[5];
        approved = address(tokenData[6]);
        metadata = bytes32(tokenData[7]);
    }

    function setPriceLocked(bool setting) public onlyAdmin {
        priceLocked = setting;
    }

    function setBlacklist(bool setting) public onlyAdmin {
        blackListActive = setting;
    }

    function setBlockLock(bool setting) public onlyAdmin {
        blockLockActive = setting;
    }

    function addToBlacklist(address _to) public onlyAdmin {
        blacklisted[_to] = true;
    }

    function removeFromBlacklist(address _to) public onlyAdmin {
        blacklisted[_to] = false;
    }

    /******************************************** PRIVATE ***********************************************/
    function _setReferrer(address sender, address ref) private {
        // If we have a referrer, no referrer is set yet, and address is not referring itself
        if (_addressNotNull(ref) && !_addressNotNull(referrers[sender]) && sender != ref) {
            referrers[sender] = ref;
        }
    }

    function _payChain(uint256 _tokenId, address layerAddr, uint256 _price) private {
        TokenLayer mainLayer = TokenLayer(layerAddr);

        uint256[10] memory _chainFees = mainLayer.getChainFeeArray();
        address[10] memory _owners = mainLayer.getChain(_tokenId);

        for (uint256 i = 0; i < 10; i++) {
            if (_addressNotNull(_owners[i])) {
                _owners[i].transfer(_price.mul(_chainFees[i]).div(1000));
            }
        }
    }

    function _updatePayment(uint256 _tokenId, address layerAddr, uint _price) private view returns(uint256 _payment) {
        TokenLayer layer = TokenLayer(layerAddr);

        uint256 devFee = layer.devFee();
        uint256 totalFee = layer.getChainFees(_tokenId);

        uint256 payment = _price.mul(1000-(devFee+totalFee)).div(1000);

        return(payment);
    }

    function _addressNotNull(address _to) private pure returns (bool) {
        return _to != address(0);
    }

    function _blackListed(address _payer) private view returns (bool) {
        return (blacklisted[_payer]) && (blackListActive);
    }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"layerId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"setting","type":"bool"}],"name":"setPriceLocked","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"layerId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"payout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_layerAddr","type":"address"},{"name":"layerId","type":"uint256"},{"name":"_name","type":"bytes32"}],"name":"addLayer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"setting","type":"bool"}],"name":"setBlockLock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"layerId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"addToBlacklist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"setting","type":"bool"}],"name":"setBlacklist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"referrers","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"removeFromBlacklist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"setting","type":"bool"}],"name":"setContractLock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"layerCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"layerId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"getLayerFromId","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blackListActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"layerId","type":"uint256"}],"name":"getToken","outputs":[{"name":"tokenName","type":"bytes32"},{"name":"parentId","type":"uint256"},{"name":"price","type":"uint256"},{"name":"_owner","type":"address"},{"name":"nextPrice","type":"uint256"},{"name":"nextPriceFees","type":"uint256"},{"name":"approved","type":"address"},{"name":"metadata","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_price","type":"uint256"},{"name":"layerId","type":"uint256"}],"name":"setPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newManager","type":"address"}],"name":"transferManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"getLayerNameFromId","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blockLockActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"layerId","type":"uint256"}],"name":"deleteLayer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"priceLocked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"layerId","type":"uint256"},{"name":"ref","type":"address"}],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousManager","type":"address"},{"indexed":true,"name":"newManager","type":"address"}],"name":"ManagerTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"admin","type":"address"},{"indexed":false,"name":"state","type":"bool"}],"name":"ContractLockChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60606040526001805460008054600160a060020a033316600160a060020a0319918216811790925560a060020a60ff021960a860020a60ff021990931675010000000000000000000000000000000000000000001716171690556118dd806100686000396000f30060606040526004361061015b5763ffffffff60e060020a60003504166306c1860081146101605780630932c3c61461017b578063095bcdb6146101935780630b7e9c44146101b857806322c5b279146101d757806323a31463146101fc578063426a84931461021457806344337ea11461023957806344c4bf1014610258578063481c6a75146102705780634a3b68cc1461029f578063537df3b6146102be57806353ebf6bd146102dd57806356e7f6c7146102f557806377dbbd761461031a5780638301e7091461033f5780638da5cb5b14610355578063a0c567a214610368578063a4fd3cea1461038f578063aa585d56146103f8578063ba0e930a14610414578063bbfd32d214610433578063c107532914610449578063cf837fad1461046b578063d537c3e31461047e578063de67fd0514610491578063ea2470ab146104a7578063ea3bd5df146104ba578063f2fde38b146104d4575b600080fd5b341561016b57600080fd5b6101796004356024356104f3565b005b341561018657600080fd5b6101796004351515610596565b341561019e57600080fd5b610179600160a060020a036004351660243560443561060e565b34156101c357600080fd5b610179600160a060020a03600435166106bf565b34156101e257600080fd5b610179600160a060020a0360043516602435604435610768565b341561020757600080fd5b6101796004351515610819565b341561021f57600080fd5b610179600160a060020a0360043516602435604435610869565b341561024457600080fd5b610179600160a060020a03600435166108fe565b341561026357600080fd5b6101796004351515610958565b341561027b57600080fd5b6102836109a1565b604051600160a060020a03909116815260200160405180910390f35b34156102aa57600080fd5b610283600160a060020a03600435166109b0565b34156102c957600080fd5b610179600160a060020a03600435166109cb565b34156102e857600080fd5b6101796004351515610a22565b341561030057600080fd5b610308610ac9565b60405190815260200160405180910390f35b341561032557600080fd5b610179600160a060020a0360043516602435604435610acf565b341561034a57600080fd5b610283600435610b65565b341561036057600080fd5b610283610b80565b341561037357600080fd5b61037b610b8f565b604051901515815260200160405180910390f35b341561039a57600080fd5b6103a8600435602435610b98565b6040519788526020880196909652604080880195909552600160a060020a039384166060880152608087019290925260a08601521660c084015260e0830191909152610100909101905180910390f35b341561040357600080fd5b610179600435602435604435610c95565b341561041f57600080fd5b610179600160a060020a0360043516610d56565b341561043e57600080fd5b610308600435610e0c565b341561045457600080fd5b610179600160a060020a0360043516602435610e1e565b341561047657600080fd5b61037b610ece565b341561048957600080fd5b61037b610ede565b341561049c57600080fd5b610179600435610eec565b34156104b257600080fd5b61037b610f8e565b610179600435602435600160a060020a0360443516610fb0565b34156104df57600080fd5b610179600160a060020a03600435166113e4565b600154600090819060a060020a900460ff161561050f57600080fd5b50506000818152600360205260409081902054600160a060020a0316908190819063ff5f8b4b90869033905160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b151561057c57600080fd5b6102c65a03f1151561058d57600080fd5b50505050505050565b60015433600160a060020a03908116911614806105c1575060005433600160a060020a039081169116145b15156105cc57600080fd5b6001805491151575010000000000000000000000000000000000000000000275ff00000000000000000000000000000000000000000019909216919091179055565b600154600090819060a060020a900460ff161561062a57600080fd5b50506000818152600360205260409081902054600160a060020a0316908190819063beabacc8908790339088905160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b15156106a457600080fd5b6102c65a03f115156106b557600080fd5b5050505050505050565b60005433600160a060020a039081169116146106da57600080fd5b600160a060020a038116151561072857600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561072357600080fd5b610765565b80600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561076557600080fd5b50565b60015433600160a060020a0390811691161480610793575060005433600160a060020a039081169116145b151561079e57600080fd5b6000828152600360205260409020546107bf90600160a060020a031661147f565b156107c957600080fd5b6000918252600360209081526040808420805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0396909616959095179094556004905291902055600280546001019055565b60015433600160a060020a0390811691161480610844575060005433600160a060020a039081169116145b151561084f57600080fd5b600680549115156101000261ff0019909216919091179055565b600154600090819060a060020a900460ff161561088557600080fd5b50506000818152600360205260409081902054600160a060020a03169081908190631271f09a908790879033905160e060020a63ffffffff8616028152600160a060020a03938416600482015260248101929092529091166044820152606401600060405180830381600087803b15156106a457600080fd5b60015433600160a060020a0390811691161480610929575060005433600160a060020a039081169116145b151561093457600080fd5b600160a060020a03166000908152600560205260409020805460ff19166001179055565b60015433600160a060020a0390811691161480610983575060005433600160a060020a039081169116145b151561098e57600080fd5b6006805460ff1916911515919091179055565b600154600160a060020a031681565b600760205260009081526040902054600160a060020a031681565b60015433600160a060020a03908116911614806109f6575060005433600160a060020a039081169116145b1515610a0157600080fd5b600160a060020a03166000908152600560205260409020805460ff19169055565b60015433600160a060020a0390811691161480610a4d575060005433600160a060020a039081169116145b1515610a5857600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a831515021790557fd1b3ccafda2b2f8613e51c6ac4f6e844932f92b0058df6d7ee800b152f55a00d3382604051600160a060020a039092168252151560208201526040908101905180910390a150565b60025481565b600154600090819060a060020a900460ff1615610aeb57600080fd5b50506000818152600360205260409081902054600160a060020a031690819081906323b872dd908790339088905160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b15156106a457600080fd5b600360205260009081526040902054600160a060020a031681565b600054600160a060020a031681565b60065460ff1681565b600080600080600080600080600080610baf611845565b600360008d815260200190815260200160002060009054906101000a9004600160a060020a0316925082915081600160a060020a031663645cd0468e6000604051610100015260405160e060020a63ffffffff8416028152600481019190915260240161010060405180830381600087803b1515610c2c57600080fd5b6102c65a03f11515610c3d57600080fd5b5050506040516101008101604052905080519a506020810151995060408101519850606081015197506080810151965060a0810151955060c0810151945060e081015160010293505050509295985092959890939650565b600154600090819060a060020a900460ff1615610cb157600080fd5b600083815260036020526040902054600154600160a060020a0390911692507501000000000000000000000000000000000000000000900460ff1615610cf657600080fd5b5080600160a060020a03811663f83fcdea86863360405160e060020a63ffffffff861602815260048101939093526024830191909152600160a060020a03166044820152606401600060405180830381600087803b15156106a457600080fd5b60015433600160a060020a0390811691161480610d81575060005433600160a060020a039081169116145b1515610d8c57600080fd5b600160a060020a0381161515610da157600080fd5b600154600160a060020a0380831691167f9cb45c728de594dab506a1f1a8554e24c8eeaf983618d5ec5dd7bc6f3c49feee60405160405180910390a36001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60046020526000908152604090205481565b60005433600160a060020a03908116911614610e3957600080fd5b600160a060020a0330163181901015610e5157600080fd5b600160a060020a0382161515610e9957600054600160a060020a031681156108fc0282604051600060405180830381858888f193505050501515610e9457600080fd5b610eca565b600160a060020a03821681156108fc0282604051600060405180830381858888f193505050501515610eca57600080fd5b5050565b60015460a060020a900460ff1681565b600654610100900460ff1681565b60015433600160a060020a0390811691161480610f17575060005433600160a060020a039081169116145b1515610f2257600080fd5b600081815260036020526040902054610f4390600160a060020a031661147f565b1515610f4e57600080fd5b6000908152600360209081526040808320805473ffffffffffffffffffffffffffffffffffffffff19169055600490915281205560028054600019019055565b6001547501000000000000000000000000000000000000000000900460ff1681565b6000806000806000806000806000600160149054906101000a900460ff16151515610fda57600080fd5b610fe33361148d565b15156113d65760008b81526003602052604080822054600160a060020a03169a508a99508991636352211e918f9190516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561104d57600080fd5b6102c65a03f1151561105e57600080fd5b5050506040518051975050600160a060020a03881663b54b4fb98d60006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156110b857600080fd5b6102c65a03f115156110c957600080fd5b50505060405180519050955033600160a060020a031687600160a060020a0316141515156110f657600080fd5b348690101561110457600080fd5b600654610100900460ff161580611182575087600160a060020a031663d5182b708d60006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561116557600080fd5b6102c65a03f1151561117657600080fd5b50505060405180519050155b151561118d57600080fd5b87600160a060020a031663b7d9549c8d3360405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b15156111e257600080fd5b6102c65a03f115156111f357600080fd5b50505087600160a060020a031663beabacc833898f60405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b151561125757600080fd5b6102c65a03f1151561126857600080fd5b5050506112768c8a886114bd565b945030600160a060020a031687600160a060020a03161415156112c457600160a060020a03871685156108fc0286604051600060405180830381858888f1935050505015156112c457600080fd5b6112cf8c8a886115c2565b6112df348763ffffffff61175116565b9350600160a060020a03331684156108fc0285604051600060405180830381858888f19350505050151561131257600080fd5b61131c338b611763565b600160a060020a033381166000908152600760205260409020548116935030163191506113488361147f565b156113a35761135e82600a63ffffffff6117f716565b9050611370828263ffffffff61175116565b9150600160a060020a03831681156108fc0282604051600060405180830381858888f1935050505015156113a357600080fd5b600054600160a060020a031682156108fc0283604051600060405180830381858888f1935050505015156113d657600080fd5b505050505050505050505050565b60005433600160a060020a039081169116146113ff57600080fd5b600160a060020a038116151561141457600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a0316151590565b600160a060020a03811660009081526005602052604081205460ff1680156114b7575060065460ff165b92915050565b600082818080600160a060020a038416636827e76482604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561150857600080fd5b6102c65a03f1151561151957600080fd5b5050506040518051935050600160a060020a038416639d77e4f88960006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561157357600080fd5b6102c65a03f1151561158457600080fd5b505050604051805192506115b690506103e86115aa88868601830363ffffffff61181316565b9063ffffffff6117f716565b98975050505050505050565b60006115cc61186d565b6115d4611888565b600085935083600160a060020a031663ce2c6ad5600060405161014001526040518163ffffffff1660e060020a02815260040161014060405180830381600087803b151561162157600080fd5b6102c65a03f1151561163257600080fd5b5050506040518061014001604052925083600160a060020a031663b6791ad4886000604051610140015260405160e060020a63ffffffff8416028152600481019190915260240161014060405180830381600087803b151561169357600080fd5b6102c65a03f115156116a457600080fd5b50505060405180610140016040529150600090505b600a81101561058d576116db8282600a81106116d157fe5b602002015161147f565b15611749578181600a81106116ec57fe5b6020020151600160a060020a03166108fc6117246103e86115aa8786600a811061171257fe5b60200201518a9063ffffffff61181316565b9081150290604051600060405180830381858888f19350505050151561174957600080fd5b6001016116b9565b60008282111561175d57fe5b50900390565b61176c8161147f565b80156117995750600160a060020a03808316600090815260076020526040902054611797911661147f565b155b80156117b7575080600160a060020a031682600160a060020a031614155b15610eca57600160a060020a039182166000908152600760205260409020805473ffffffffffffffffffffffffffffffffffffffff191691909216179055565b600080828481151561180557fe5b0490508091505b5092915050565b600080831515611826576000915061180c565b5082820282848281151561183657fe5b041461183e57fe5b9392505050565b6101006040519081016040526008815b60008152602001906001900390816118555790505090565b61014060405190810160405260008152600960208201611855565b610140604051908101604052600a815b60008152600019909101906020018161189857905050905600a165627a7a723058205d6edb5f847ac7e02cb3ab5a4438a63c76ce6a47640d713af83f55df163feed60029

   Swarm Source:
bzzr://5d6edb5f847ac7e02cb3ab5a4438a63c76ce6a47640d713af83f55df163feed6

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.