ETH Price: $3,258.03 (+0.32%)
Gas: 2 Gwei

Contract

0x52903256dd18D85c2Dc4a6C999907c9793eA61E3
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0xc1c155f48315f0ca05ee63653e629abcc29741b4334415767aee63e3eaf42775 Transfer(pending)2024-07-21 6:08:326 days ago1721542112IN
INSPromoToken
0 ETH(Pending)(Pending)
0xe327983069266db72dfa70cb097560fcbb41dcb4d79f560e1ffb0b24e10ca97b Transfer(pending)2024-07-21 1:33:066 days ago1721525586IN
INSPromoToken
0 ETH(Pending)(Pending)
Transfer180184962023-08-29 6:28:47333 days ago1693290527IN
INSPromoToken
0 ETH0.0003105214.38686774
Transfer180184902023-08-29 6:27:23333 days ago1693290443IN
INSPromoToken
0 ETH0.0003104214.3823533
Transfer156535272022-10-01 13:11:35665 days ago1664629895IN
INSPromoToken
0 ETH0.0003532316.37449968
Transfer146412002022-04-23 12:57:55826 days ago1650718675IN
INSPromoToken
0 ETH0.0005086323.56523516
Transfer142111762022-02-15 14:19:06893 days ago1644934746IN
INSPromoToken
0 ETH0.0013435762.28307533
Transfer141521202022-02-06 11:03:00902 days ago1644145380IN
INSPromoToken
0 ETH0.0009332943.26421895
Transfer141520382022-02-06 10:44:37902 days ago1644144277IN
INSPromoToken
0 ETH0.0008139637.75333052
Transfer141519462022-02-06 10:24:05902 days ago1644143045IN
INSPromoToken
0 ETH0.0007851736.39783867
Mass Notify137923722021-12-12 19:59:39957 days ago1639339179IN
INSPromoToken
0 ETH0.001906287.79478368
Transfer135145202021-10-29 21:35:251001 days ago1635543325IN
INSPromoToken
0 ETH0.00408126189.08737958
Transfer135144762021-10-29 21:26:181001 days ago1635542778IN
INSPromoToken
0 ETH0.0040502187.7526798
Transfer132312302021-09-15 15:50:291046 days ago1631721029IN
INSPromoToken
0 ETH0.0016804477.85586318
Transfer129530802021-08-03 15:25:281089 days ago1628004328IN
INSPromoToken
0 ETH0.0010576149
Transfer127451282021-07-02 0:58:351121 days ago1625187515IN
INSPromoToken
0 ETH0.0002157210
Transfer127157482021-06-27 11:09:541126 days ago1624792194IN
INSPromoToken
0 ETH0.000151087.00000145
Transfer126835892021-06-22 10:54:041131 days ago1624359244IN
INSPromoToken
0 ETH0.001208756
Transfer126634542021-06-19 7:20:121134 days ago1624087212IN
INSPromoToken
0 ETH0.0002158410
Transfer126495732021-06-17 3:41:411136 days ago1623901301IN
INSPromoToken
0 ETH0.0003237615
Transfer126495572021-06-17 3:39:201136 days ago1623901160IN
INSPromoToken
0 ETH0.0003885118
Transfer126061892021-06-10 10:23:221143 days ago1623320602IN
INSPromoToken
0 ETH0.0004316820
Transfer125863702021-06-07 8:34:181146 days ago1623054858IN
INSPromoToken
0 ETH0.0002374211
Transfer125844832021-06-07 1:20:591146 days ago1623028859IN
INSPromoToken
0 ETH0.0002372911
Transfer125680772021-06-04 12:52:021149 days ago1622811122IN
INSPromoToken
0 ETH0.00025912
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
47946892017-12-25 13:20:092406 days ago1514208009
INSPromoToken
0 ETH
Loading...
Loading
Contract Self Destruct called at Txn Hash 0x54ad1a3d34954fb92919534abb18dda3d926f583b3c703be16b83c6d054f7987


Contract Source Code Verified (Exact Match)

Contract Name:
INSPromoToken

Compiler Version
v0.4.16+commit.d7661dd9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-11-06
*/

/*
 * Safe Math Smart Contract.  Copyright © 2016–2017 by ABDK Consulting.
 * Author: Mikhail Vladimirov <[email protected]>
 */
pragma solidity ^0.4.16;

/**
 * Provides methods to safely add, subtract and multiply uint256 numbers.
 */
contract SafeMath {
  uint256 constant private MAX_UINT256 =
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;

  /**
   * Add two uint256 values, throw in case of overflow.
   *
   * @param x first value to add
   * @param y second value to add
   * @return x + y
   */
  function safeAdd (uint256 x, uint256 y)
  constant internal
  returns (uint256 z) {
    assert (x <= MAX_UINT256 - y);
    return x + y;
  }

  /**
   * Subtract one uint256 value from another, throw in case of underflow.
   *
   * @param x value to subtract from
   * @param y value to subtract
   * @return x - y
   */
  function safeSub (uint256 x, uint256 y)
  constant internal
  returns (uint256 z) {
    assert (x >= y);
    return x - y;
  }

  /**
   * Multiply two uint256 values, throw in case of overflow.
   *
   * @param x first value to multiply
   * @param y second value to multiply
   * @return x * y
   */
  function safeMul (uint256 x, uint256 y)
  constant internal
  returns (uint256 z) {
    if (y == 0) return 0; // Prevent division by zero at the next line
    assert (x <= MAX_UINT256 / y);
    return x * y;
  }
}

/*
 * ERC-20 Standard Token Smart Contract Interface.
 * Copyright © 2016–2017 by ABDK Consulting.
 * Author: Mikhail Vladimirov <[email protected]>
 */

/**
 * ERC-20 standard token interface, as defined
 * <a href="http://github.com/ethereum/EIPs/issues/20">here</a>.
 */
contract Token {
  /**
   * Get total number of tokens in circulation.
   *
   * @return total number of tokens in circulation
   */
  function totalSupply () constant returns (uint256 supply);

  /**
   * Get number of tokens currently belonging to given owner.
   *
   * @param _owner address to get number of tokens currently belonging to the
   *        owner of
   * @return number of tokens currently belonging to the owner of given address
   */
  function balanceOf (address _owner) constant returns (uint256 balance);

  /**
   * Transfer given number of tokens from message sender to given recipient.
   *
   * @param _to address to transfer tokens to the owner of
   * @param _value number of tokens to transfer to the owner of given address
   * @return true if tokens were transferred successfully, false otherwise
   */
  function transfer (address _to, uint256 _value) returns (bool success);

  /**
   * Transfer given number of tokens from given owner to given recipient.
   *
   * @param _from address to transfer tokens from the owner of
   * @param _to address to transfer tokens to the owner of
   * @param _value number of tokens to transfer from given owner to given
   *        recipient
   * @return true if tokens were transferred successfully, false otherwise
   */
  function transferFrom (address _from, address _to, uint256 _value)
  returns (bool success);

  /**
   * Allow given spender to transfer given number of tokens from message sender.
   *
   * @param _spender address to allow the owner of to transfer tokens from
   *        message sender
   * @param _value number of tokens to allow to transfer
   * @return true if token transfer was successfully approved, false otherwise
   */
  function approve (address _spender, uint256 _value) returns (bool success);

  /**
   * Tell how many tokens given spender is currently allowed to transfer from
   * given owner.
   *
   * @param _owner address to get number of tokens allowed to be transferred
   *        from the owner of
   * @param _spender address to get number of tokens allowed to be transferred
   *        by the owner of
   * @return number of tokens given spender is currently allowed to transfer
   *         from given owner
   */
  function allowance (address _owner, address _spender) constant
  returns (uint256 remaining);

  /**
   * Logged when tokens were transferred from one owner to another.
   *
   * @param _from address of the owner, tokens were transferred from
   * @param _to address of the owner, tokens were transferred to
   * @param _value number of tokens transferred
   */
  event Transfer (address indexed _from, address indexed _to, uint256 _value);

  /**
   * Logged when owner approved his tokens to be transferred by some spender.
   *
   * @param _owner owner who approved his tokens to be transferred
   * @param _spender spender who were allowed to transfer the tokens belonging
   *        to the owner
   * @param _value number of tokens belonging to the owner, approved to be
   *        transferred by the spender
   */
  event Approval (
    address indexed _owner, address indexed _spender, uint256 _value);
}

/*
 * Abstract Token Smart Contract.  Copyright © 2017 by ABDK Consulting.
 * Author: Mikhail Vladimirov <[email protected]>
 */
/**
 * Abstract Token Smart Contract that could be used as a base contract for
 * ERC-20 token contracts.
 */
contract AbstractToken is Token, SafeMath {
  /**
   * Create new Abstract Token contract.
   */
  function AbstractToken () {
    // Do nothing
  }

  /**
   * Get number of tokens currently belonging to given owner.
   *
   * @param _owner address to get number of tokens currently belonging to the
   *        owner of
   * @return number of tokens currently belonging to the owner of given address
   */
  function balanceOf (address _owner) constant returns (uint256 balance) {
    return accounts [_owner];
  }

  /**
   * Transfer given number of tokens from message sender to given recipient.
   *
   * @param _to address to transfer tokens to the owner of
   * @param _value number of tokens to transfer to the owner of given address
   * @return true if tokens were transferred successfully, false otherwise
   */
  function transfer (address _to, uint256 _value) returns (bool success) {
    uint256 fromBalance = accounts [msg.sender];
    if (fromBalance < _value) return false;
    if (_value > 0 && msg.sender != _to) {
      accounts [msg.sender] = safeSub (fromBalance, _value);
      accounts [_to] = safeAdd (accounts [_to], _value);
      Transfer (msg.sender, _to, _value);
    }
    return true;
  }

  /**
   * Transfer given number of tokens from given owner to given recipient.
   *
   * @param _from address to transfer tokens from the owner of
   * @param _to address to transfer tokens to the owner of
   * @param _value number of tokens to transfer from given owner to given
   *        recipient
   * @return true if tokens were transferred successfully, false otherwise
   */
  function transferFrom (address _from, address _to, uint256 _value)
  returns (bool success) {
    uint256 spenderAllowance = allowances [_from][msg.sender];
    if (spenderAllowance < _value) return false;
    uint256 fromBalance = accounts [_from];
    if (fromBalance < _value) return false;

    allowances [_from][msg.sender] =
      safeSub (spenderAllowance, _value);

    if (_value > 0 && _from != _to) {
      accounts [_from] = safeSub (fromBalance, _value);
      accounts [_to] = safeAdd (accounts [_to], _value);
      Transfer (_from, _to, _value);
    }
    return true;
  }

  /**
   * Allow given spender to transfer given number of tokens from message sender.
   *
   * @param _spender address to allow the owner of to transfer tokens from
   *        message sender
   * @param _value number of tokens to allow to transfer
   * @return true if token transfer was successfully approved, false otherwise
   */
  function approve (address _spender, uint256 _value) returns (bool success) {
    allowances [msg.sender][_spender] = _value;
    Approval (msg.sender, _spender, _value);

    return true;
  }

  /**
   * Tell how many tokens given spender is currently allowed to transfer from
   * given owner.
   *
   * @param _owner address to get number of tokens allowed to be transferred
   *        from the owner of
   * @param _spender address to get number of tokens allowed to be transferred
   *        by the owner of
   * @return number of tokens given spender is currently allowed to transfer
   *         from given owner
   */
  function allowance (address _owner, address _spender) constant
  returns (uint256 remaining) {
    return allowances [_owner][_spender];
  }

  /**
   * Mapping from addresses of token holders to the numbers of tokens belonging
   * to these token holders.
   */
  mapping (address => uint256) accounts;

  /**
   * Mapping from addresses of token holders to the mapping of addresses of
   * spenders to the allowances set by these token holders to these spenders.
   */
  mapping (address => mapping (address => uint256)) private allowances;
}


/*
 * Abstract Virtual Token Smart Contract.  Copyright © 2017 by ABDK Consulting.
 * Author: Mikhail Vladimirov <[email protected]>
 */

/**
 * Abstract Token Smart Contract that could be used as a base contract for
 * ERC-20 token contracts supporting virtual balance.
 */
contract AbstractVirtualToken is AbstractToken {
  /**
   * Maximum number of real (i.e. non-virtual) tokens in circulation (2^255-1).
   */
  uint256 constant MAXIMUM_TOKENS_COUNT =
    0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;

  /**
   * Mask used to extract real balance of an account (2^255-1).
   */
  uint256 constant BALANCE_MASK =
    0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;

  /**
   * Mask used to extract "materialized" flag of an account (2^255).
   */
  uint256 constant MATERIALIZED_FLAG_MASK =
    0x8000000000000000000000000000000000000000000000000000000000000000;

  /**
   * Create new Abstract Virtual Token contract.
   */
  function AbstractVirtualToken () AbstractToken () {
    // Do nothing
  }

  /**
   * Get total number of tokens in circulation.
   *
   * @return total number of tokens in circulation
   */
  function totalSupply () constant returns (uint256 supply) {
    return tokensCount;
  }

  /**
   * Get number of tokens currently belonging to given owner.
   *
   * @param _owner address to get number of tokens currently belonging to the
   *        owner of
   * @return number of tokens currently belonging to the owner of given address
   */
  function balanceOf (address _owner) constant returns (uint256 balance) {
    return safeAdd (
      accounts [_owner] & BALANCE_MASK, getVirtualBalance (_owner));
  }

  /**
   * Transfer given number of tokens from message sender to given recipient.
   *
   * @param _to address to transfer tokens to the owner of
   * @param _value number of tokens to transfer to the owner of given address
   * @return true if tokens were transferred successfully, false otherwise
   */
  function transfer (address _to, uint256 _value) returns (bool success) {
    if (_value > balanceOf (msg.sender)) return false;
    else {
      materializeBalanceIfNeeded (msg.sender, _value);
      return AbstractToken.transfer (_to, _value);
    }
  }

  /**
   * Transfer given number of tokens from given owner to given recipient.
   *
   * @param _from address to transfer tokens from the owner of
   * @param _to address to transfer tokens to the owner of
   * @param _value number of tokens to transfer from given owner to given
   *        recipient
   * @return true if tokens were transferred successfully, false otherwise
   */
  function transferFrom (address _from, address _to, uint256 _value)
  returns (bool success) {
    if (_value > allowance (_from, msg.sender)) return false;
    if (_value > balanceOf (_from)) return false;
    else {
      materializeBalanceIfNeeded (_from, _value);
      return AbstractToken.transferFrom (_from, _to, _value);
    }
  }

  /**
   * Get virtual balance of the owner of given address.
   *
   * @param _owner address to get virtual balance for the owner of
   * @return virtual balance of the owner of given address
   */
  function virtualBalanceOf (address _owner)
  internal constant returns (uint256 _virtualBalance);

  /**
   * Calculate virtual balance of the owner of given address taking into account
   * materialized flag and total number of real tokens already in circulation.
   */
  function getVirtualBalance (address _owner)
  private constant returns (uint256 _virtualBalance) {
    if (accounts [_owner] & MATERIALIZED_FLAG_MASK != 0) return 0;
    else {
      _virtualBalance = virtualBalanceOf (_owner);
      uint256 maxVirtualBalance = safeSub (MAXIMUM_TOKENS_COUNT, tokensCount);
      if (_virtualBalance > maxVirtualBalance)
        _virtualBalance = maxVirtualBalance;
    }
  }

  /**
   * Materialize virtual balance of the owner of given address if this will help
   * to transfer given number of tokens from it.
   *
   * @param _owner address to materialize virtual balance of
   * @param _value number of tokens to be transferred
   */
  function materializeBalanceIfNeeded (address _owner, uint256 _value) private {
    uint256 storedBalance = accounts [_owner];
    if (storedBalance & MATERIALIZED_FLAG_MASK == 0) {
      // Virtual balance is not materialized yet
      if (_value > storedBalance) {
        // Real balance is not enough
        uint256 virtualBalance = getVirtualBalance (_owner);
        require (safeSub (_value, storedBalance) <= virtualBalance);
        accounts [_owner] = MATERIALIZED_FLAG_MASK |
          safeAdd (storedBalance, virtualBalance);
        tokensCount = safeAdd (tokensCount, virtualBalance);
      }
    }
  }

  /**
   * Number of real (i.e. non-virtual) tokens in circulation.
   */
  uint256 tokensCount;
}

/*
 * INS Promo Token Smart Contract.  Copyright © 2016-2017 by ABDK Consulting.
 * Author: Mikhail Vladimirov <[email protected]>
 */

/**
 * EIP-20 token smart contract that manages INS promo tokens.
 */
contract INSPromoToken is AbstractVirtualToken {
  /**
   * Balance threshold to assign virtual tokens to the owner of higher balances
   * then this threshold.
   */
  uint256 private constant VIRTUAL_THRESHOLD = 0.1 ether;
  
  /**
   * Number of virtual tokens to assign to the owners of balances higher than
   * virtual threshold.
   */
  uint256 private constant VIRTUAL_COUNT = 777;
  
  /**
   * Create new INS Promo Token smart contract and make message sender to be
   * the owner of smart contract.
   */
  function INSPromoToken () AbstractVirtualToken () {
    owner = msg.sender;
  }

  /**
   * Get name of this token.
   *
   * @return name of this token
   */
  function name () constant returns (string result) {
    return "INS Promo";
  }

  /**
   * Get symbol of this token.
   *
   * @return symbol of this token
   */
  function symbol () constant returns (string result) {
    return "INSP";
  }

  /**
   * Get number of decimals for this token.
   *
   * @return number of decimals for this token
   */
  function decimals () constant returns (uint8 result) {
    return 0;
  }

  /**
   * Notify owners about their virtual balances.
   *
   * @param _owners addresses of the owners to be notified
   */
  function massNotify (address [] _owners) {
    require (msg.sender == owner);
    uint256 count = _owners.length;
    for (uint256 i = 0; i < count; i++)
      Transfer (address (0), _owners [i], VIRTUAL_COUNT);
  }

  /**
   * Kill this smart contract.
   */
  function kill () {
    require (msg.sender == owner);
    selfdestruct (owner);
  }

  /**
   * Get virtual balance of the owner of given address.
   *
   * @param _owner address to get virtual balance for the owner of
   * @return virtual balance of the owner of given address
   */
  function virtualBalanceOf (address _owner)
  internal constant returns (uint256 _virtualBalance) {
    return _owner.balance >= VIRTUAL_THRESHOLD ? VIRTUAL_COUNT : 0;
  }

  /**
   * Address of the owner of this smart contract.
   */
  address private owner;
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"result","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owners","type":"address[]"}],"name":"massNotify","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"supply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"result","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"result","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]

6060604052341561000f57600080fd5b5b5b5b5b5b60038054600160a060020a03191633600160a060020a03161790555b5b610a73806100406000396000f300606060405236156100ac5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100b1578063095ea7b31461013c5780630e6848cc1461017257806318160ddd146101c357806323b872dd146101e8578063313ce5671461022457806341c0e1b51461024d57806370a082311461026257806395d89b4114610293578063a9059cbb1461031e578063dd62ed3e14610354575b600080fd5b34156100bc57600080fd5b6100c461038b565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101015780820151818401525b6020016100e8565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014757600080fd5b61015e600160a060020a03600435166024356103cd565b604051901515815260200160405180910390f35b341561017d57600080fd5b6101c1600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061043a95505050505050565b005b34156101ce57600080fd5b6101d66104d0565b60405190815260200160405180910390f35b34156101f357600080fd5b61015e600160a060020a03600435811690602435166044356104d7565b604051901515815260200160405180910390f35b341561022f57600080fd5b61023761052a565b60405160ff909116815260200160405180910390f35b341561025857600080fd5b6101c1610530565b005b341561026d57600080fd5b6101d6600160a060020a036004351661055b565b60405190815260200160405180910390f35b341561029e57600080fd5b6100c46105b0565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101015780820151818401525b6020016100e8565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561032957600080fd5b61015e600160a060020a03600435166024356105f2565b604051901515815260200160405180910390f35b341561035f57600080fd5b6101d6600160a060020a036004358116906024351661062e565b60405190815260200160405180910390f35b610393610a35565b60408051908101604052600981527f494e532050726f6d6f0000000000000000000000000000000000000000000000602082015290505b90565b600160a060020a03338116600081815260016020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600354600090819033600160a060020a0390811691161461045a57600080fd5b82519150600090505b818110156104ca5782818151811061047757fe5b90602001906020020151600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61030960405190815260200160405180910390a35b600101610463565b5b505050565b6002545b90565b60006104e3843361062e565b8211156104f257506000610522565b6104fb8461055b565b82111561050a57506000610522565b610514848361065b565b61051f8484846106f1565b90505b5b9392505050565b60005b90565b60035433600160a060020a0390811691161461054b57600080fd5b600354600160a060020a0316ff5b565b600160a060020a0381166000908152602081905260408120546105a8907f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166105a384610851565b6108cd565b90505b919050565b6105b8610a35565b60408051908101604052600481527f494e535000000000000000000000000000000000000000000000000000000000602082015290505b90565b60006105fd3361055b565b82111561060c57506000610434565b610616338361065b565b61062083836108e9565b9050610434565b5b92915050565b600160a060020a038083166000908152600160209081526040808320938516835292905220545b92915050565b600160a060020a0382166000908152602081905260408120549060ff60020a821615156106e957818311156106e95761069384610851565b9050806106a084846109ef565b11156106ab57600080fd5b6106b582826108cd565b600160a060020a038516600090815260208190526040902060ff60020a9190911790556002546106e590826108cd565b6002555b5b5b50505050565b600160a060020a03808416600090815260016020908152604080832033909416835292905290812054818382101561072c5760009250610848565b50600160a060020a038516600090815260208190526040902054838110156107575760009250610848565b61076182856109ef565b600160a060020a03808816600090815260016020908152604080832033909416835292905290812091909155841180156107ad575084600160a060020a031686600160a060020a031614155b15610843576107bc81856109ef565b600160a060020a0380881660009081526020819052604080822093909355908716815220546107eb90856108cd565b600160a060020a03808716600081815260208190526040908190209390935591908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9087905190815260200160405180910390a35b600192505b50509392505050565b600160a060020a038116600090815260208190526040812054819060ff60020a161561088057600091506108c5565b61088983610a06565b91506108b77f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002546109ef565b9050808211156108c5578091505b5b5b50919050565b60006000198290038311156108de57fe5b508181015b92915050565b600160a060020a0333166000908152602081905260408120548281101561091357600091506109e8565b600083118015610935575083600160a060020a031633600160a060020a031614155b156109e35761094481846109ef565b600160a060020a03338116600090815260208190526040808220939093559086168152205461097390846108cd565b60008086600160a060020a0316600160a060020a031681526020019081526020016000208190555083600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405190815260200160405180910390a35b600191505b5092915050565b6000818310156109fb57fe5b508082035b92915050565b600067016345785d8a000082600160a060020a0316311015610a295760006105a8565b6103095b90505b919050565b602060405190810160405260008152905600a165627a7a72305820ce703ad1b9c1f8c632a5ab06ffef9181d97fc1163d3d7f517b0ba4d7c032fee00029

Deployed Bytecode

0x606060405236156100ac5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100b1578063095ea7b31461013c5780630e6848cc1461017257806318160ddd146101c357806323b872dd146101e8578063313ce5671461022457806341c0e1b51461024d57806370a082311461026257806395d89b4114610293578063a9059cbb1461031e578063dd62ed3e14610354575b600080fd5b34156100bc57600080fd5b6100c461038b565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101015780820151818401525b6020016100e8565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014757600080fd5b61015e600160a060020a03600435166024356103cd565b604051901515815260200160405180910390f35b341561017d57600080fd5b6101c1600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061043a95505050505050565b005b34156101ce57600080fd5b6101d66104d0565b60405190815260200160405180910390f35b34156101f357600080fd5b61015e600160a060020a03600435811690602435166044356104d7565b604051901515815260200160405180910390f35b341561022f57600080fd5b61023761052a565b60405160ff909116815260200160405180910390f35b341561025857600080fd5b6101c1610530565b005b341561026d57600080fd5b6101d6600160a060020a036004351661055b565b60405190815260200160405180910390f35b341561029e57600080fd5b6100c46105b0565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101015780820151818401525b6020016100e8565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561032957600080fd5b61015e600160a060020a03600435166024356105f2565b604051901515815260200160405180910390f35b341561035f57600080fd5b6101d6600160a060020a036004358116906024351661062e565b60405190815260200160405180910390f35b610393610a35565b60408051908101604052600981527f494e532050726f6d6f0000000000000000000000000000000000000000000000602082015290505b90565b600160a060020a03338116600081815260016020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600354600090819033600160a060020a0390811691161461045a57600080fd5b82519150600090505b818110156104ca5782818151811061047757fe5b90602001906020020151600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61030960405190815260200160405180910390a35b600101610463565b5b505050565b6002545b90565b60006104e3843361062e565b8211156104f257506000610522565b6104fb8461055b565b82111561050a57506000610522565b610514848361065b565b61051f8484846106f1565b90505b5b9392505050565b60005b90565b60035433600160a060020a0390811691161461054b57600080fd5b600354600160a060020a0316ff5b565b600160a060020a0381166000908152602081905260408120546105a8907f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166105a384610851565b6108cd565b90505b919050565b6105b8610a35565b60408051908101604052600481527f494e535000000000000000000000000000000000000000000000000000000000602082015290505b90565b60006105fd3361055b565b82111561060c57506000610434565b610616338361065b565b61062083836108e9565b9050610434565b5b92915050565b600160a060020a038083166000908152600160209081526040808320938516835292905220545b92915050565b600160a060020a0382166000908152602081905260408120549060ff60020a821615156106e957818311156106e95761069384610851565b9050806106a084846109ef565b11156106ab57600080fd5b6106b582826108cd565b600160a060020a038516600090815260208190526040902060ff60020a9190911790556002546106e590826108cd565b6002555b5b5b50505050565b600160a060020a03808416600090815260016020908152604080832033909416835292905290812054818382101561072c5760009250610848565b50600160a060020a038516600090815260208190526040902054838110156107575760009250610848565b61076182856109ef565b600160a060020a03808816600090815260016020908152604080832033909416835292905290812091909155841180156107ad575084600160a060020a031686600160a060020a031614155b15610843576107bc81856109ef565b600160a060020a0380881660009081526020819052604080822093909355908716815220546107eb90856108cd565b600160a060020a03808716600081815260208190526040908190209390935591908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9087905190815260200160405180910390a35b600192505b50509392505050565b600160a060020a038116600090815260208190526040812054819060ff60020a161561088057600091506108c5565b61088983610a06565b91506108b77f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002546109ef565b9050808211156108c5578091505b5b5b50919050565b60006000198290038311156108de57fe5b508181015b92915050565b600160a060020a0333166000908152602081905260408120548281101561091357600091506109e8565b600083118015610935575083600160a060020a031633600160a060020a031614155b156109e35761094481846109ef565b600160a060020a03338116600090815260208190526040808220939093559086168152205461097390846108cd565b60008086600160a060020a0316600160a060020a031681526020019081526020016000208190555083600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405190815260200160405180910390a35b600191505b5092915050565b6000818310156109fb57fe5b508082035b92915050565b600067016345785d8a000082600160a060020a0316311015610a295760006105a8565b6103095b90505b919050565b602060405190810160405260008152905600a165627a7a72305820ce703ad1b9c1f8c632a5ab06ffef9181d97fc1163d3d7f517b0ba4d7c032fee00029

Swarm Source

bzzr://ce703ad1b9c1f8c632a5ab06ffef9181d97fc1163d3d7f517b0ba4d7c032fee0

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.