Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 43227 txns
 Latest 25 txns From a total of 43227 Transactions
(+1 PendingTxn)

TxHash Age From To Value [TxFee]
0x59d5b87a9dbaf1e9ccb0fc6e4f2ca66b46a1703e8bb743c45e4030062597a7fb(pending)0x61b5568f5175a41283367ec49c4b2ec90b2a26aa  IN  0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether(Pending)
0xbe1124cd7123e9a1c275863beec2a4ed437b4d99b368e1f0804c45dcc03050c69 days 12 hrs ago0x5b97f7286fb4ea45299692a130fa868125620547  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.000214887
0x7aed186c9a0a68672ead5c1e8fc4c850c120fa9c3790461083d7cf7737e1ac2010 days 22 hrs ago0x14d16982a7c8764bcf921b6419148fd60f24194a  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.000071821
0xd4f31b37284e28923ad9503cffa28eee838def3db51612ff6a086e421399e93c15 days 14 hrs ago0x13370775eaa7e37df49ed4936e0503d0884b734f  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.00139184
0x91f0ac2a2e99c818f4685c4398faeefc1d106896805f7a73ea07c194486f3e6d15 days 18 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0001578654
0x04e756533bb89b2a7dd1dbe2eb94aa941f6d7e54c8234256cf922383538b3e5716 days 7 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0001481502
0xfbf1ffc336f14947dabf19304627fd79050855b19fc688e97b2652a5f96963e116 days 17 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003326708
0x30a9da4ea252972d9f1719f5e69e4785ab15d1273d541f55a42d9e12122ad0f116 days 21 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003322044
0xa4d2b45f8cf5d0b4f3989fc550f925ec7a177a0a2d830f1579ed8186097e367017 days 15 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003323364
0x9d64fcc447ecf89f6285231378f785890a2c9dfb9fe29350a684ce2c8e1a8a3218 days 2 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003216444
0xaa4217b2c7074ca724f02cf18264e9c2425bb5e3b1d18e184547a1eed65d7d2218 days 7 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003323232
0x68293b7ed6338d185cef876f99ac7492b398bc21c3b82aa799a7284d9beeaa8418 days 9 hrs ago0x6c2b5eaec16669a0b5eb23ed6800683e3bd9850b  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0013743912
0xed01470bc5e94d3d12542414ea6f2bd022d3f226926efc6cc71db6515299d31b18 days 9 hrs ago0x6c2b5eaec16669a0b5eb23ed6800683e3bd9850b  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0015105272
0xcbffb02b2039d66f3fe985b01ba7bbab608b0ed67f0a554f723db7d5639c728b18 days 23 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003316632
0x7e293075d95c22160403f0ff4571291e94416ddc54db848aebd55625c91c545519 days 2 hrs ago0xce1c28560f17c2aa0b0a539019bbb4492f117e40  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.000741455
0x63b6eede492fc729b81e704b1d3ad8c211a2bdc07778323f5626ece12f3862b919 days 3 hrs ago0xce1c28560f17c2aa0b0a539019bbb4492f117e40  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.000741455
0x39a29c70ca26ca639faa3e715ae5564f138782b690952e01fe2d0066032b006a19 days 8 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003326048
0xe75dd89a302637c7c4ef88914c5b4494d74de0d4658b958f316630404c77f22e19 days 16 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003323452
0xb3df23f5730618c843976ee67845e95d7ea0a7f6ac6cd252880dc92edc430a6519 days 19 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003318788
0xd2e11ae4f06bfabd7f23e31dbf0d53a52301c47f340fc652b33cf10bc43206ef20 days 4 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003319228
0xc6542f14970ee953bbae96210976f868d9aba6c26b649710c3ad3c485e02177020 days 8 hrs ago0xedb7cf2aa0159569286d5874c6dd7fa8bea6b713  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.001156878
0x5aaef2086aa9f4ee71e9e9fd05f3b4d86aea821ad044778506be96229fa3816220 days 8 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.000332464
0x7bdfbc8e3274d60638f4b2258477f6b9838d14a65f50a1555ab0eeba36aee0a020 days 11 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003323452
0x81e1a885bd3bd2048b584d24896468ab0b688232ba759d0af94b5fd46d56e45b20 days 18 hrs ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003320856
0x6632db63e40721aecd03792be9b941e865bceae73c468ce42f671c837e4ad02c22 days 14 mins ago0x7ebf523075979e6ab20c9c4b4f91c9f86e78d3fb  IN   0x8e306b005773bee6ba6a6e8972bc79d766cc15c80 Ether0.0003319228
[ 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.