Sponsored:   [Largest VC Funded] TEMCO, millions sold out in seconds. Join TEMCO's last presale at CoinBene!
Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 43237 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0xb5af4138f0f33be0d6414eb25271b9c2dc245fb5at txn 0x0be05cf941dca194286bcb0a31bc89ee55755d5947dd980546d9b3bf0317eadd
Token Balance:
 Latest 25 transactions from a total of 43237 transactions
(+3 PendingTxns)

TxHash Age From To Value [TxFee]
0x59d5b87a9dbaf1e9ccb0fc6e4f2ca66b46a1703e8bb743c45e4030062597a7fb(pending)0x61b5568f5175a41283367ec49c4b2ec90b2a26aa  IN  0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether(Pending)
0x0175e1ccb8b84bb688b999747e5be9c16020080b2a3f78e8f191e36ce504db9d(pending)0x75d4f5db318baceb1cb5821f8afc63474ad68319  IN  0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether(Pending)
0xc1e7ddec4d7d13fc650fb8974d166986f2fcfeb5c08641441a7a041649ab0f2a(pending)0x75d4f5db318baceb1cb5821f8afc63474ad68319  IN  0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether(Pending)
0x21b68ab26103a4e2ccf07646f370fd692f1da42204187e32cbdd3e5dc49e1dc97 days 3 mins ago0xad62d29f6e34e60e91158fa23b16da1df4ddd78c  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.000287028
0x9691713aa349dd0c3788724a5a27fef58e9a7f0e03e19d77e5b27c9b06252bc87 days 7 mins ago0xad62d29f6e34e60e91158fa23b16da1df4ddd78c  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.000287028
0xaf6b2c4ff14af38b1e7a2cfd3e0178908e47bde7e8978f62874d4e31694ac25a17 days 13 hrs ago0x2fbd3ec5bd9230954c157bc8b0a5ae2cbebf01a1  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.000357505
0x06537a6d9b12a8bccd4ff533d54c89237204854e8366fed7cc7ff6fb2efba3bd20 days 23 hrs ago0xde1d3f6b9fe90a9b64064ce5fd7343bff0bb939b  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.00132912
0x1e2b9d59c67f561377d31b8410cdac44dfaf21fa20c958148285fcf99a972d6f20 days 23 hrs ago0xde1d3f6b9fe90a9b64064ce5fd7343bff0bb939b  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.00132912
0xe66328af48361fd2280101ca27d36fa7756e616c329557e485b8fb7c64413eb325 days 3 hrs ago0xa00e47c8fbe274ab3c24b08081d661c8536bc80c  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0002424506
0xf6539973fe935eb11117ee5454b03a273e54858be2ad88443385e8b5e7166da029 days 22 hrs ago0xd92a3f51e24b042feb1ee4f2423615820edf8830  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.00059468
0x972b1f584c0d9197f033c1e07a547ba9605a4dd29cceb3aa6d7d16fd6411945536 days 1 hr ago0xcaba2231bc28f0fce76fea1f97e4c9225899b4ee  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.000357825
0x4f257ddee33df0d39f8220c93c768ec84457535548ce65fcff69017475d5336157 days 12 hrs ago0x257ea6e6f84a570ef128c65a73940877e24d9e8a  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.00080726625
0x661ccf74f812bc69ff8099b09fc86a52d58727aaf1b05c942c5a460720a47bec58 days 2 hrs ago0x257ea6e6f84a570ef128c65a73940877e24d9e8a  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.000502299
0xbe1124cd7123e9a1c275863beec2a4ed437b4d99b368e1f0804c45dcc03050c668 days 2 hrs ago0x5b97f7286fb4ea45299692a130fa868125620547  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.000214887
0x7aed186c9a0a68672ead5c1e8fc4c850c120fa9c3790461083d7cf7737e1ac2069 days 12 hrs ago0x14d16982a7c8764bcf921b6419148fd60f24194a  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.000071821
0xd4f31b37284e28923ad9503cffa28eee838def3db51612ff6a086e421399e93c74 days 4 hrs ago0x13370775eaa7e37df49ed4936e0503d0884b734f  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.00139184
0x91f0ac2a2e99c818f4685c4398faeefc1d106896805f7a73ea07c194486f3e6d74 days 8 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0001578654
0x04e756533bb89b2a7dd1dbe2eb94aa941f6d7e54c8234256cf922383538b3e5774 days 21 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0001481502
0xfbf1ffc336f14947dabf19304627fd79050855b19fc688e97b2652a5f96963e175 days 6 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003326708
0x30a9da4ea252972d9f1719f5e69e4785ab15d1273d541f55a42d9e12122ad0f175 days 10 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003322044
0xa4d2b45f8cf5d0b4f3989fc550f925ec7a177a0a2d830f1579ed8186097e367076 days 5 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003323364
0x9d64fcc447ecf89f6285231378f785890a2c9dfb9fe29350a684ce2c8e1a8a3276 days 15 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003216444
0xaa4217b2c7074ca724f02cf18264e9c2425bb5e3b1d18e184547a1eed65d7d2276 days 21 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003323232
0x68293b7ed6338d185cef876f99ac7492b398bc21c3b82aa799a7284d9beeaa8476 days 23 hrs ago0x6c2b5eaec16669a0b5eb23ed6800683e3bd9850b  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0013743912
0xed01470bc5e94d3d12542414ea6f2bd022d3f226926efc6cc71db6515299d31b76 days 23 hrs ago0x6c2b5eaec16669a0b5eb23ed6800683e3bd9850b  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0015105272
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
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 (Similar Match)
Note: Displaying Similar Match Verified Source Code At Contract 0xe999ac1e8065d112ff3af3d8440bde70f1cb42f1(Excluding Constructor Arguments if any)
Contract Name: MerkleMine
Compiler Text: v0.4.18+commit.9cf6e910
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.18;

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
    uint256 public totalSupply;
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) public view returns (uint256);
    function transferFrom(address from, address to, uint256 value) public returns (bool);
    function approve(address spender, uint256 value) public returns (bool);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
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) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

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

/*
 * @title MerkleProof
 * @dev Merkle proof verification
 * @note Based on https://github.com/ameensol/merkle-tree-solidity/blob/master/src/MerkleProof.sol
 */
library MerkleProof {
  /*
   * @dev Verifies a Merkle proof proving the existence of a leaf in a Merkle tree. Assumes that each pair of leaves
   * and each pair of pre-images is sorted.
   * @param _proof Merkle proof containing sibling hashes on the branch from the leaf to the root of the Merkle tree
   * @param _root Merkle root
   * @param _leaf Leaf of Merkle tree
   */
  function verifyProof(bytes _proof, bytes32 _root, bytes32 _leaf) public pure returns (bool) {
    // Check if proof length is a multiple of 32
    if (_proof.length % 32 != 0) return false;

    bytes32 proofElement;
    bytes32 computedHash = _leaf;

    for (uint256 i = 32; i <= _proof.length; i += 32) {
      assembly {
        // Load the current element of the proof
        proofElement := mload(add(_proof, i))
      }

      if (computedHash < proofElement) {
        // Hash(current computed hash + current element of the proof)
        computedHash = keccak256(computedHash, proofElement);
      } else {
        // Hash(current element of the proof + current computed hash)
        computedHash = keccak256(proofElement, computedHash);
      }
    }

    // Check if the computed hash (root) is equal to the provided root
    return computedHash == _root;
  }
}

/**
 * @title MerkleMine
 * @dev Token distribution based on providing Merkle proofs of inclusion in genesis state to generate allocation
 */
contract MerkleMine {
    using SafeMath for uint256;

    // ERC20 token being distributed
    ERC20 public token;
    // Merkle root representing genesis state which encodes token recipients
    bytes32 public genesisRoot;
    // Total amount of tokens that can be generated
    uint256 public totalGenesisTokens;
    // Total number of recipients included in genesis state
    uint256 public totalGenesisRecipients;
    // Amount of tokens per recipient allocation. Equal to `totalGenesisTokens` / `totalGenesisRecipients`
    uint256 public tokensPerAllocation;
    // Minimum ETH balance threshold for recipients included in genesis state
    uint256 public balanceThreshold;
    // Block number of genesis - used to determine which ETH accounts are included in the genesis state
    uint256 public genesisBlock;
    // Start block where a third party caller (not the recipient) can generate and split the allocation with the recipient
    // As the current block gets closer to `callerAllocationEndBlock`, the caller receives a larger precentage of the allocation
    uint256 public callerAllocationStartBlock;
    // From this block onwards, a third party caller (not the recipient) can generate and claim the recipient's full allocation
    uint256 public callerAllocationEndBlock;
    // Number of blocks in the caller allocation period as defined by `callerAllocationEndBlock` - `callerAllocationStartBlock`
    uint256 public callerAllocationPeriod;

    // Track if the generation process is started
    bool public started;

    // Track the already generated allocations for recipients
    mapping (address => bool) public generated;

    // Check that a recipient's allocation has not been generated
    modifier notGenerated(address _recipient) {
        require(!generated[_recipient]);
        _;
    }

    // Check that the generation period is started
    modifier isStarted() {
        require(started);
        _;
    }

    // Check that the generation period is not started
    modifier isNotStarted() {
        require(!started);
        _;
    }

    event Generate(address indexed _recipient, address indexed _caller, uint256 _recipientTokenAmount, uint256 _callerTokenAmount, uint256 _block);

    /**
     * @dev MerkleMine constructor
     * @param _token ERC20 token being distributed
     * @param _genesisRoot Merkle root representing genesis state which encodes token recipients
     * @param _totalGenesisTokens Total amount of tokens that can be generated
     * @param _totalGenesisRecipients Total number of recipients included in genesis state
     * @param _balanceThreshold Minimum ETH balance threshold for recipients included in genesis state
     * @param _genesisBlock Block number of genesis - used to determine which ETH accounts are included in the genesis state
     * @param _callerAllocationStartBlock Start block where a third party caller (not the recipient) can generate and split the allocation with the recipient
     * @param _callerAllocationEndBlock From this block onwards, a third party caller (not the recipient) can generate and claim the recipient's full allocation
     */
    function MerkleMine(
        address _token,
        bytes32 _genesisRoot,
        uint256 _totalGenesisTokens,
        uint256 _totalGenesisRecipients,
        uint256 _balanceThreshold,
        uint256 _genesisBlock,
        uint256 _callerAllocationStartBlock,
        uint256 _callerAllocationEndBlock
    )
        public
    {
        // Address of token contract must not be null
        require(_token != address(0));
        // Number of recipients must be non-zero
        require(_totalGenesisRecipients > 0);
        // Genesis block must be at or before the current block
        require(_genesisBlock <= block.number);
        // Start block for caller allocation must be after current block
        require(_callerAllocationStartBlock > block.number);
        // End block for caller allocation must be after caller allocation start block
        require(_callerAllocationEndBlock > _callerAllocationStartBlock);

        token = ERC20(_token);
        genesisRoot = _genesisRoot;
        totalGenesisTokens = _totalGenesisTokens;
        totalGenesisRecipients = _totalGenesisRecipients;
        tokensPerAllocation = _totalGenesisTokens.div(_totalGenesisRecipients);
        balanceThreshold = _balanceThreshold;
        genesisBlock = _genesisBlock;
        callerAllocationStartBlock = _callerAllocationStartBlock;
        callerAllocationEndBlock = _callerAllocationEndBlock;
        callerAllocationPeriod = _callerAllocationEndBlock.sub(_callerAllocationStartBlock);
    }

    /**
     * @dev Start the generation period - first checks that this contract's balance is equal to `totalGenesisTokens`
     * The generation period must not already be started
     */
    function start() external isNotStarted {
        // Check that this contract has a sufficient balance for the generation period
        require(token.balanceOf(this) >= totalGenesisTokens);

        started = true;
    }

    /**
     * @dev Generate a recipient's token allocation. Generation period must be started. Starting from `callerAllocationStartBlock`
     * a third party caller (not the recipient) can invoke this function to generate the recipient's token
     * allocation and claim a percentage of it. The percentage of the allocation claimed by the
     * third party caller is determined by how many blocks have elapsed since `callerAllocationStartBlock`.
     * After `callerAllocationEndBlock`, a third party caller can claim the full allocation
     * @param _recipient Recipient of token allocation
     * @param _merkleProof Proof of recipient's inclusion in genesis state Merkle root
     */
    function generate(address _recipient, bytes _merkleProof) external isStarted notGenerated(_recipient) {
        // Check the Merkle proof
        bytes32 leaf = keccak256(_recipient);
        // _merkleProof must prove inclusion of _recipient in the genesis state root
        require(MerkleProof.verifyProof(_merkleProof, genesisRoot, leaf));

        generated[_recipient] = true;

        address caller = msg.sender;

        if (caller == _recipient) {
            // If the caller is the recipient, transfer the full allocation to the caller/recipient
            require(token.transfer(_recipient, tokensPerAllocation));

            Generate(_recipient, _recipient, tokensPerAllocation, 0, block.number);
        } else {
            // If the caller is not the recipient, the token allocation generation
            // can only take place if we are in the caller allocation period
            require(block.number >= callerAllocationStartBlock);

            uint256 callerTokenAmount = callerTokenAmountAtBlock(block.number);
            uint256 recipientTokenAmount = tokensPerAllocation.sub(callerTokenAmount);

            if (callerTokenAmount > 0) {
                require(token.transfer(caller, callerTokenAmount));
            }

            if (recipientTokenAmount > 0) {
                require(token.transfer(_recipient, recipientTokenAmount));
            }

            Generate(_recipient, caller, recipientTokenAmount, callerTokenAmount, block.number);
        }
    }

    /**
     * @dev Return the amount of tokens claimable by a third party caller when generating a recipient's token allocation at a given block
     * @param _blockNumber Block at which to compute the amount of tokens claimable by a third party caller
     */
    function callerTokenAmountAtBlock(uint256 _blockNumber) public view returns (uint256) {
        if (_blockNumber < callerAllocationStartBlock) {
            // If the block is before the start of the caller allocation period, the third party caller can claim nothing
            return 0;
        } else if (_blockNumber >= callerAllocationEndBlock) {
            // If the block is at or after the end block of the caller allocation period, the third party caller can claim everything
            return tokensPerAllocation;
        } else {
            // During the caller allocation period, the third party caller can claim an increasing percentage
            // of the recipient's allocation based on a linear curve - as more blocks pass in the caller allocation
            // period, the amount claimable by the third party caller increases linearly
            uint256 blocksSinceCallerAllocationStartBlock = _blockNumber.sub(callerAllocationStartBlock);
            return tokensPerAllocation.mul(blocksSinceCallerAllocationStartBlock).div(callerAllocationPeriod);
        }
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"started","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"},{"name":"_merkleProof","type":"bytes"}],"name":"generate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"genesisBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"generated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalGenesisTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensPerAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"balanceThreshold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"genesisRoot","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"callerAllocationStartBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"callerAllocationEndBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"callerAllocationPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_blockNumber","type":"uint256"}],"name":"callerTokenAmountAtBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalGenesisRecipients","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_genesisRoot","type":"bytes32"},{"name":"_totalGenesisTokens","type":"uint256"},{"name":"_totalGenesisRecipients","type":"uint256"},{"name":"_balanceThreshold","type":"uint256"},{"name":"_genesisBlock","type":"uint256"},{"name":"_callerAllocationStartBlock","type":"uint256"},{"name":"_callerAllocationEndBlock","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_recipient","type":"address"},{"indexed":true,"name":"_caller","type":"address"},{"indexed":false,"name":"_recipientTokenAmount","type":"uint256"},{"indexed":false,"name":"_callerTokenAmount","type":"uint256"},{"indexed":false,"name":"_block","type":"uint256"}],"name":"Generate","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052341561000f57600080fd5b6040516101008061099a8339810160405280805191906020018051919060200180519190602001805191906020018051919060200180519190602001805191906020018051915050600160a060020a038816151561006c57600080fd5b6000851161007957600080fd5b4383111561008657600080fd5b43821161009257600080fd5b81811161009e57600080fd5b60008054600160a060020a031916600160a060020a038a161790556001879055600286905560038590556100df868664010000000061011e81026108011704565b600455600584905560068390556007829055600881905561010d81836401000000006107b961013582021704565b600955506101479650505050505050565b600080828481151561012c57fe5b04949350505050565b60008282111561014157fe5b50900390565b610844806101566000396000f3006060604052600436106100c15763ffffffff60e060020a6000350416631f2698ab81146100c65780632c84bfa6146100ed5780634cdc9c631461011a57806362bea2951461013f57806378d8e17b1461015e578063ba88544614610171578063be9a655514610184578063c317377414610197578063c7033721146101aa578063de0cf58b146101bd578063dfc10ea8146101d0578063e4cfe9eb146101e3578063f61cd7de146101f6578063fc0c546a1461020c578063fda962d31461023b575b600080fd5b34156100d157600080fd5b6100d961024e565b604051901515815260200160405180910390f35b34156100f857600080fd5b61011860048035600160a060020a03169060248035908101910135610257565b005b341561012557600080fd5b61012d61064b565b60405190815260200160405180910390f35b341561014a57600080fd5b6100d9600160a060020a0360043516610651565b341561016957600080fd5b61012d610666565b341561017c57600080fd5b61012d61066c565b341561018f57600080fd5b610118610672565b34156101a257600080fd5b61012d610717565b34156101b557600080fd5b61012d61071d565b34156101c857600080fd5b61012d610723565b34156101db57600080fd5b61012d610729565b34156101ee57600080fd5b61012d61072f565b341561020157600080fd5b61012d600435610735565b341561021757600080fd5b61021f6107a4565b604051600160a060020a03909116815260200160405180910390f35b341561024657600080fd5b61012d6107b3565b600a5460ff1681565b600a5460009081908190819060ff16151561027157600080fd5b600160a060020a0387166000908152600b6020526040902054879060ff161561029957600080fd5b87604051600160a060020a03919091166c010000000000000000000000000281526014016040518091039020945073289ba1701c2f088cf0faf8b3705246331cb8a83963101f13e288886001548960006040516020015260405160e060020a63ffffffff871602815260248101839052604481018290526060600482019081526064820185905290819060840186868082843782019150509550505050505060206040518083038186803b151561034f57600080fd5b6102c65a03f4151561036057600080fd5b50505060405180519050151561037557600080fd5b600160a060020a038089166000818152600b60205260409020805460ff1916600117905533955090851614156104935760008054600454600160a060020a039091169163a9059cbb918b916040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561040a57600080fd5b6102c65a03f1151561041b57600080fd5b50505060405180519050151561043057600080fd5b87600160a060020a031688600160a060020a03167f5a85ed1ee645c51ffdeeb66ec8978efd1c03d5069a212315c8b430756d848d6960045460004360405180848152602001838152602001828152602001935050505060405180910390a3610641565b6007544310156104a257600080fd5b6104ab43610735565b6004549093506104c1908463ffffffff6107b916565b915060008311156105545760008054600160a060020a03169063a9059cbb90869086906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561052e57600080fd5b6102c65a03f1151561053f57600080fd5b50505060405180519050151561055457600080fd5b60008211156105e55760008054600160a060020a03169063a9059cbb908a9085906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156105bf57600080fd5b6102c65a03f115156105d057600080fd5b5050506040518051905015156105e557600080fd5b83600160a060020a031688600160a060020a03167f5a85ed1ee645c51ffdeeb66ec8978efd1c03d5069a212315c8b430756d848d6984864360405180848152602001838152602001828152602001935050505060405180910390a35b5050505050505050565b60065481565b600b6020526000908152604090205460ff1681565b60025481565b60045481565b600a5460ff161561068257600080fd5b60025460008054600160a060020a0316906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156106e057600080fd5b6102c65a03f115156106f157600080fd5b505050604051805190501015151561070857600080fd5b600a805460ff19166001179055565b60055481565b60015481565b60075481565b60085481565b60095481565b60008060075483101561074b576000915061079e565b600854831061075e57600454915061079e565b60075461077290849063ffffffff6107b916565b905061079b60095461078f836004546107cb90919063ffffffff16565b9063ffffffff61080116565b91505b50919050565b600054600160a060020a031681565b60035481565b6000828211156107c557fe5b50900390565b6000808315156107de57600091506107fa565b508282028284828115156107ee57fe5b04146107f657fe5b8091505b5092915050565b600080828481151561080f57fe5b049493505050505600a165627a7a723058205d35076b8b058765077c4b44ba0e998f34f5dd270b87b2ee61142443fb50b8620029000000000000000000000000ecb81b96e169882b8d6276b87a19cb47efbd1c4a53f35a304a1e1e20d6648e09bb3073ccd44a5bf1638a01355897a71e801879f8000000000000000000000000000000000000000000053f54aa8434ecc3d00000000000000000000000000000000000000000000000000000000000000027a4b7000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000000000000000050538900000000000000000000000000000000000000000000000000000000005c0f1700000000000000000000000000000000000000000000000000000000008234b7

   Library Used
MerkleProof : 0x289ba1701c2f088cf0faf8b3705246331cb8a839

   Swarm Source:
bzzr://5d35076b8b058765077c4b44ba0e998f34f5dd270b87b2ee61142443fb50b862

 

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.