Sponsored Link:   Buy your 1st Ethereum in 5 minutes. Trusted by more than 100k buyers.
Contract Overview
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 34 txns
  Latest 25 txns from a total Of 34 transactions View All

TxHash Age From To Value [TxFee]
0x5f6d2b081a8e1a66ffb0008d582bafc761aa6b935a0521bf7b5646caabde56b51 day 12 mins ago0x00f72c18e942ee4ce56c1edfe49857be9b7e6f15  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.00025
0xa5f06ebaa94da8cfa84a039c34e948d5fd5050cffa2515e65dc5942dbc211af277 days 23 hrs ago0x980c3d4b2fc39cecbd5db58341f560b52d455e0f  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.0111
0x23770949787333672a20e26f38948405cb7156550fb69afd59dfbd6ee06c3d0b77 days 23 hrs ago0x980c3d4b2fc39cecbd5db58341f560b52d455e0f  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.00111
0x25407e941e670192f303f361a9b8971148d96495250310319b060eb7a2434879151 days 22 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.00327299
0x73feda89981f256ca33689f364224ba71ff5e8f717b609934801fad875aa33f6152 days 15 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.003434108479
0x25cf72d3ce328c845b212ff648c8d9b408a358ab9da7ea6d137f445d3758f5ac152 days 15 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.003434108479
0xe2ab0ca6c7a35564a2334213289cb31add79d1e9aacff556c41f98986bb850be152 days 15 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.003716580077
0xd95b9fdbd527acc3b084337958e5e096162afc89423b03aaf6dce0d1299bcc81152 days 15 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.00354598076
0x744dfca53d3c9b1a5dda46a9fa8af9b982bdf104213d9b0d4b658d49e2ae320f152 days 15 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.003123940954
0x861abba2804c799aa47ca5ef10553b4c01cd67cd884dbc8f4f8f1fbf15afc525152 days 15 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.00358103106
0x618aeacdbd94adcd37822a22f340118aeb67bb056fd2c100dc06886c1b5bfddc152 days 15 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.00358103106
0x3cadd4fc2f086586fe2adf153886040075f2bc1e07ecda2e982f330455ba27fb152 days 15 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.003585094137
0xf241e5df6b160839abfaf1de04afb04b2f2b5fbb21aaa5f74dafcc44b4b3d38c152 days 15 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.003620348039
0x8be36c91611112481dd91cbe6e23eb42976b24b423c1d752ef4a07c059d2ade1152 days 15 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.003156516202
0xc0b581f81f287d9f76ed97315a4cbbe8a535624184f398dbe539389e0d97f5dd152 days 15 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.003152934784
0x02800c5e730ddf4863d84e40ffba0a1fe8e8a6bbd063f65eb0166169a0ca3faf152 days 15 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.00316009762
0xc345c3e8cad74a010713b04e3936e4d85dedb0c2010cfde0f78be78cbba53ca6152 days 16 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.00316009762
0xd48ba252443a392b6ebeabf1e541b69b037f6573b61a3a92cf78532ea0fea08d152 days 16 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.003156516202
0x1e7d74198291d45f41b20c77f170eab5d1361b13810462f09e7d72c23a82c2fd152 days 16 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.003156516202
0x8c5f4daf8bd531dd837b0c3b3629845a955bda4675051c2214dc280a3a996fba152 days 16 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.00316009762
0xce638e960d2fcf06d02ecee49801e5b26a415b54334970dcb06d02635949c272152 days 16 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.003181697328
0xaec7720aecfa91348220461322ad9d8b2eef5f1c153da2938ca693bea3222e2c152 days 16 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.003185311417
0x55636c385b2374f618091f25cdd3982bec1443b122fc214803b667a7947c855a152 days 16 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.003188925506
0x197ca3a6891aa82566a2bc168b0b506620aa3153c7f7c0a3e726587206a61c89152 days 16 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.003185311417
0xeb42496e5dc4693e2dd5393a9b4e234fb15ec8561c5b80f3104756a4a74e265a152 days 16 hrs ago0x6efd5665ab4b345a7ebe63c679b651f375dddb7e  IN   0xc5357bb3eef6a7f7a70060de288de9f4a8d34eac0 Ether0.003188925506
[ 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 ZeroFunctionSelector (very low-severity), DelegateCallReturnValue (low-severity), ECRecoverMalformedInput (medium-severity), SkipEmptyStringLiteral (low-severity), ConstantOptimizerSubtraction (low-severity) Solidity compiler bugs.

Contract Source Code Verified
Note: Displaying matching verified source code at contract 0x999b190dbbc297980e6b01c5e486a54cb8dbffd6
Contract Name: TokenVault
Compiler Version: v0.4.8+commit.60cc1668
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
/*
 * ERC20 interface
 * see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 {
  uint public totalSupply;
  function balanceOf(address who) constant returns (uint);
  function allowance(address owner, address spender) constant returns (uint);

  function transfer(address to, uint value) returns (bool ok);
  function transferFrom(address from, address to, uint value) returns (bool ok);
  function approve(address spender, uint value) returns (bool ok);
  event Transfer(address indexed from, address indexed to, uint value);
  event Approval(address indexed owner, address indexed spender, uint value);
}



/**
 * Math operations with safety checks
 */
contract SafeMath {
  function safeMul(uint a, uint b) internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function safeDiv(uint a, uint b) internal returns (uint) {
    assert(b > 0);
    uint c = a / b;
    assert(a == b * c + a % b);
    return c;
  }

  function safeSub(uint a, uint b) internal returns (uint) {
    assert(b <= a);
    return a - b;
  }

  function safeAdd(uint a, uint b) internal returns (uint) {
    uint c = a + b;
    assert(c>=a && c>=b);
    return c;
  }

  function max64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a >= b ? a : b;
  }

  function min64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a < b ? a : b;
  }

  function max256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a >= b ? a : b;
  }

  function min256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a < b ? a : b;
  }

  function assert(bool assertion) internal {
    if (!assertion) {
      throw;
    }
  }
}



/**
 * Standard ERC20 token with Short Hand Attack and approve() race condition mitigation.
 *
 * Based on code by FirstBlood:
 * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, SafeMath {

  /* Token supply got increased and a new owner received these tokens */
  event Minted(address receiver, uint amount);

  /* Actual balances of token holders */
  mapping(address => uint) balances;

  /* approve() allowances */
  mapping (address => mapping (address => uint)) allowed;

  /* Interface declaration */
  function isToken() public constant returns (bool weAre) {
    return true;
  }

  /**
   *
   * Fix for the ERC20 short address attack
   *
   * http://vessenes.com/the-erc20-short-address-attack-explained/
   */
  modifier onlyPayloadSize(uint size) {
     if(msg.data.length < size + 4) {
       throw;
     }
     _;
  }

  function transfer(address _to, uint _value) onlyPayloadSize(2 * 32) returns (bool success) {
    balances[msg.sender] = safeSub(balances[msg.sender], _value);
    balances[_to] = safeAdd(balances[_to], _value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  function transferFrom(address _from, address _to, uint _value) returns (bool success) {
    uint _allowance = allowed[_from][msg.sender];

    // Check is not needed because safeSub(_allowance, _value) will already throw if this condition is not met
    // if (_value > _allowance) throw;

    balances[_to] = safeAdd(balances[_to], _value);
    balances[_from] = safeSub(balances[_from], _value);
    allowed[_from][msg.sender] = safeSub(_allowance, _value);
    Transfer(_from, _to, _value);
    return true;
  }

  function balanceOf(address _owner) constant returns (uint balance) {
    return balances[_owner];
  }

  function approve(address _spender, uint _value) returns (bool success) {

    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(_spender, 0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) throw;

    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  function allowance(address _owner, address _spender) constant returns (uint remaining) {
    return allowed[_owner][_spender];
  }

  /**
   * Atomic increment of approved spending
   *
   * Works around https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   */
  function addApproval(address _spender, uint _addedValue)
  returns (bool success) {
      uint oldValue = allowed[msg.sender][_spender];
      allowed[msg.sender][_spender] = safeAdd(oldValue, _addedValue);
      Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
      return true;
  }

  /**
   * Atomic decrement of approved spending.
   *
   * Works around https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   */
  function subApproval(address _spender, uint _subtractedValue)
  returns (bool success) {

      uint oldVal = allowed[msg.sender][_spender];

      if (_subtractedValue > oldVal) {
          allowed[msg.sender][_spender] = 0;
      } else {
          allowed[msg.sender][_spender] = safeSub(oldVal, _subtractedValue);
      }
      Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
      return true;
  }

}



/*
 * Ownable
 *
 * Base contract with an owner.
 * Provides onlyOwner modifier, which prevents function from running if it is called by anyone other than the owner.
 */
contract Ownable {
  address public owner;

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

  modifier onlyOwner() {
    if (msg.sender != owner) {
      throw;
    }
    _;
  }

  function transferOwnership(address newOwner) onlyOwner {
    if (newOwner != address(0)) {
      owner = newOwner;
    }
  }

}


/**
 * Hold tokens for a group investor of investors until the unlock date.
 *
 * After the unlock date the investor can claim their tokens.
 *
 * Steps
 *
 * - Prepare a spreadsheet for token allocation
 * - Deploy this contract, with the sum to tokens to be distributed, from the owner account
 * - Call setInvestor for all investors from the owner account using a local script and CSV input
 * - Move tokensToBeAllocated in this contract using StandardToken.transfer()
 * - Call lock from the owner account
 * - Wait until the freeze period is over
 * - After the freeze time is over investors can call claim() from their address to get their tokens
 *
 */
contract TokenVault is Ownable {

  /** How many investors we have now */
  uint public investorCount;

  /** Sum from the spreadsheet how much tokens we should get on the contract. If the sum does not match at the time of the lock the vault is faulty and must be recreated.*/
  uint public tokensToBeAllocated;

  /** How many tokens investors have claimed so far */
  uint public totalClaimed;

  /** How many tokens our internal book keeping tells us to have at the time of lock() when all investor data has been loaded */
  uint public tokensAllocatedTotal;

  /** How much we have allocated to the investors invested */
  mapping(address => uint) public balances;

  /** How many tokens investors have claimed */
  mapping(address => uint) public claimed;

  /** When our claim freeze is over (UNIX timestamp) */
  uint public freezeEndsAt;

  /** When this vault was locked (UNIX timestamp) */
  uint public lockedAt;

  /** We can also define our own token, which will override the ICO one ***/
  StandardToken public token;

  /** What is our current state.
   *
   * Loading: Investor data is being loaded and contract not yet locked
   * Holding: Holding tokens for investors
   * Distributing: Freeze time is over, investors can claim their tokens
   */
  enum State{Unknown, Loading, Holding, Distributing}

  /** We allocated tokens for investor */
  event Allocated(address investor, uint value);

  /** We distributed tokens to an investor */
  event Distributed(address investors, uint count);

  event Locked();

  /**
   * Create presale contract where lock up period is given days
   *
   * @param _owner Who can load investor data and lock
   * @param _freezeEndsAt UNIX timestamp when the vault unlocks
   * @param _token Token contract address we are distributing
   * @param _tokensToBeAllocated Total number of tokens this vault will hold - including decimal multiplcation
   *
   */
  function TokenVault(address _owner, uint _freezeEndsAt, StandardToken _token, uint _tokensToBeAllocated) {

    owner = _owner;

    // Invalid owenr
    if(owner == 0) {
      throw;
    }

    token = _token;

    // Check the address looks like a token contract
    if(!token.isToken()) {
      throw;
    }

    // Give argument
    if(_freezeEndsAt == 0) {
      throw;
    }

    // Sanity check on _tokensToBeAllocated
    if(_tokensToBeAllocated == 0) {
      throw;
    }

    freezeEndsAt = _freezeEndsAt;
    tokensToBeAllocated = _tokensToBeAllocated;
  }

  /// @dev Add a presale participating allocation
  function setInvestor(address investor, uint amount) public onlyOwner {

    if(lockedAt > 0) {
      // Cannot add new investors after the vault is locked
      throw;
    }

    if(amount == 0) throw; // No empty buys

    // Don't allow reset
    if(balances[investor] > 0) {
      throw;
    }

    balances[investor] = amount;

    investorCount++;

    tokensAllocatedTotal += amount;

    Allocated(investor, amount);
  }

  /// @dev Lock the vault
  ///      - All balances have been loaded in correctly
  ///      - Tokens are transferred on this vault correctly
  ///      - Checks are in place to prevent creating a vault that is locked with incorrect token balances.
  function lock() onlyOwner {

    if(lockedAt > 0) {
      throw; // Already locked
    }

    // Spreadsheet sum does not match to what we have loaded to the investor data
    if(tokensAllocatedTotal != tokensToBeAllocated) {
      throw;
    }

    // Do not lock the vault if the given tokens are not on this contract
    if(token.balanceOf(address(this)) != tokensAllocatedTotal) {
      throw;
    }

    lockedAt = now;

    Locked();
  }

  /// @dev In the case locking failed, then allow the owner to reclaim the tokens on the contract.
  function recoverFailedLock() onlyOwner {
    if(lockedAt > 0) {
      throw;
    }

    // Transfer all tokens on this contract back to the owner
    token.transfer(owner, token.balanceOf(address(this)));
  }

  /// @dev Get the current balance of tokens in the vault
  /// @return uint How many tokens there are currently in vault
  function getBalance() public constant returns (uint howManyTokensCurrentlyInVault) {
    return token.balanceOf(address(this));
  }

  /// @dev Claim N bought tokens to the investor as the msg sender
  function claim() {

    address investor = msg.sender;

    if(lockedAt == 0) {
      throw; // We were never locked
    }

    if(now < freezeEndsAt) {
      throw; // Trying to claim early
    }

    if(balances[investor] == 0) {
      // Not our investor
      throw;
    }

    if(claimed[investor] > 0) {
      throw; // Already claimed
    }

    uint amount = balances[investor];

    claimed[investor] = amount;

    totalClaimed += amount;

    token.transfer(investor, amount);

    Distributed(investor, amount);
  }

  /// @dev Resolve the contract umambigious state
  function getState() public constant returns(State) {
    if(lockedAt == 0) {
      return State.Loading;
    } else if(now > freezeEndsAt) {
      return State.Distributing;
    } else {
      return State.Holding;
    }
  }

}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"tokensAllocatedTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getBalance","outputs":[{"name":"howManyTokensCurrentlyInVault","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getState","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"freezeEndsAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"investor","type":"address"},{"name":"amount","type":"uint256"}],"name":"setInvestor","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensToBeAllocated","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"lockedAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"claimed","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalClaimed","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"investorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"lock","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"recoverFailedLock","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_owner","type":"address"},{"name":"_freezeEndsAt","type":"uint256"},{"name":"_token","type":"address"},{"name":"_tokensToBeAllocated","type":"uint256"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"investor","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Allocated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"investors","type":"address"},{"indexed":false,"name":"count","type":"uint256"}],"name":"Distributed","type":"event"},{"anonymous":false,"inputs":[],"name":"Locked","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405234610000576040516080806109df83398101604090815281516020830151918301516060909301519092905b5b60008054600160a060020a03191633600160a060020a03161790555b60008054600160a060020a031916600160a060020a03868116919091179182905516151561007a57610000565b60098054600160a060020a031916600160a060020a038481169190911791829055604080516000602091820181905282517feefa597b0000000000000000000000000000000000000000000000000000000081529251949093169363eefa597b936004808501948390030190829087803b156100005760325a03f115610000575050604051511515905061010d57610000565b82151561011957610000565b80151561012557610000565b600783905560028190555b505050505b61089b806101446000396000f300606060405236156100d55763ffffffff60e060020a60003504166311e48cdf81146100da57806312065fe0146100f95780631865c57d1461011857806327e235e3146101465780634e71d92d146101715780636962b010146101805780638da5cb5b1461019f5780638e327dd3146101c8578063990ca3ff146101e6578063b216348214610205578063c884ef8314610224578063d54ad2a11461024f578063d7e64c001461026e578063f2fde38b1461028d578063f83d08ba146102a8578063f85b2160146102b7578063fc0c546a146102c6575b610000565b34610000576100e76102ef565b60408051918252519081900360200190f35b34610000576100e76102f5565b60408051918252519081900360200190f35b3461000057610125610361565b6040518082600381116100005760ff16815260200191505060405180910390f35b34610000576100e7600160a060020a0360043516610395565b60408051918252519081900360200190f35b346100005761017e6103a7565b005b34610000576100e76104fb565b60408051918252519081900360200190f35b34610000576101ac610501565b60408051600160a060020a039092168252519081900360200190f35b346100005761017e600160a060020a0360043516602435610510565b005b34610000576100e76105d6565b60408051918252519081900360200190f35b34610000576100e76105dc565b60408051918252519081900360200190f35b34610000576100e7600160a060020a03600435166105e2565b60408051918252519081900360200190f35b34610000576100e76105f4565b60408051918252519081900360200190f35b34610000576100e76105fa565b60408051918252519081900360200190f35b346100005761017e600160a060020a0360043516610600565b005b346100005761017e610658565b005b346100005761017e610758565b005b34610000576101ac610860565b60408051600160a060020a039092168252519081900360200190f35b60045481565b6009546040805160006020918201819052825160e060020a6370a08231028152600160a060020a0330811660048301529351919493909316926370a0823192602480830193919282900301818787803b156100005760325a03f115610000575050604051519150505b90565b6000600854600014156103765750600161035e565b6007544211156103885750600361035e565b50600261035e565b5b5b90565b60056020526000908152604090205481565b600854339060009015156103ba57610000565b6007544210156103c957610000565b600160a060020a03821660009081526005602052604090205415156103ed57610000565b600160a060020a038216600090815260066020526040812054111561041157610000565b50600160a060020a038082166000818152600560209081526040808320546006835281842081905560038054820190556009548251840185905282517fa9059cbb00000000000000000000000000000000000000000000000000000000815260048101969096526024860182905291519095919091169363a9059cbb9360448083019493928390030190829087803b156100005760325a03f11561000057505060408051600160a060020a03851681526020810184905281517fb649c98f58055c520df0dcb5709eff2e931217ff2fb1e21376130d31bbb1c0af93509081900390910190a15b5050565b60075481565b600054600160a060020a031681565b60005433600160a060020a0390811691161461052b57610000565b6000600854111561053b57610000565b80151561054757610000565b600160a060020a038216600090815260056020526040812054111561056b57610000565b600160a060020a038216600081815260056020908152604091829020849055600180548101905560048054850190558151928352820183905280517f472f36e28bb47edb7c69c9e2ac00a77c66b505df54e9c818ac57110b0629e8c39281900390910190a15b5b5050565b60025481565b60085481565b60066020526000908152604090205481565b60035481565b60015481565b60005433600160a060020a0390811691161461061b57610000565b600160a060020a03811615610653576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b60005433600160a060020a0390811691161461067357610000565b6000600854111561068357610000565b6002546004541461069357610000565b600454600960009054906101000a9004600160a060020a0316600160a060020a03166370a08231306000604051602001526040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b156100005760325a03f1156100005750506040515191909114905061072757610000565b426008556040517f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b90600090a15b5b565b60005433600160a060020a0390811691161461077357610000565b6000600854111561078357610000565b60095460008054604080516020908101849052815160e060020a6370a0823102815230600160a060020a03908116600483015292519583169563a9059cbb95949093169386936370a08231936024808501949193918390030190829087803b156100005760325a03f11561000057505050604051805190506000604051602001526040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b156100005760325a03f115610000575050505b5b565b600954600160a060020a0316815600a165627a7a723058203f53af6c745bf361214861f5585b9468ed51d68e03158e1beda3593db721c0a200290000000000000000000000006efd5665ab4b345a7ebe63c679b651f375dddb7e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b64ef51c888972c908cfacf59b47c1afbc0ab8ac0000000000000000000000000000000000000000000000000000000000000005

   Swarm Source:
bzzr://3f53af6c745bf361214861f5585b9468ed51d68e03158e1beda3593db721c0a2
View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.