ETH Price: $3,331.72 (-0.35%)

Contract

0x9bbb9387C9E2477A6b5D81AfeCe00255875c48Ce
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer55684702018-05-06 21:36:242427 days ago1525642584IN
0x9bbb9387...5875c48Ce
0 ETH0.00073535
Transfer55005372018-04-25 1:23:522438 days ago1524619432IN
0x9bbb9387...5875c48Ce
0 ETH0.000227710
Transfer53382992018-03-28 17:31:412466 days ago1522258301IN
0x9bbb9387...5875c48Ce
0 ETH0.000159397
Transfer53096722018-03-23 22:36:422471 days ago1521844602IN
0x9bbb9387...5875c48Ce
0 ETH0.000227710
Transfer53095772018-03-23 22:10:182471 days ago1521843018IN
0x9bbb9387...5875c48Ce
0 ETH0.0000211
Transfer52960832018-03-21 16:23:472473 days ago1521649427IN
0x9bbb9387...5875c48Ce
0 ETH0.000091084
Transfer52511882018-03-14 1:59:572480 days ago1520992797IN
0x9bbb9387...5875c48Ce
0 ETH0.0003870917
Transfer52511782018-03-14 1:57:382480 days ago1520992658IN
0x9bbb9387...5875c48Ce
0 ETH0.00035717
Transfer52442422018-03-12 21:31:552482 days ago1520890315IN
0x9bbb9387...5875c48Ce
0 ETH0.00004412
Transfer52410012018-03-12 8:14:162482 days ago1520842456IN
0x9bbb9387...5875c48Ce
0 ETH0.0009335741
Transfer52406062018-03-12 6:29:142482 days ago1520836154IN
0x9bbb9387...5875c48Ce
0 ETH0.000683130
Transfer52405932018-03-12 6:26:102482 days ago1520835970IN
0x9bbb9387...5875c48Ce
0 ETH0.0006330
Transfer52370552018-03-11 16:11:292483 days ago1520784689IN
0x9bbb9387...5875c48Ce
0 ETH0.0007969535
Transfer52370252018-03-11 16:04:362483 days ago1520784276IN
0x9bbb9387...5875c48Ce
0 ETH0.000045542
Transfer52370022018-03-11 15:59:072483 days ago1520783947IN
0x9bbb9387...5875c48Ce
0 ETH0.00073535
Transfer52369672018-03-11 15:53:012483 days ago1520783581IN
0x9bbb9387...5875c48Ce
0 ETH0.00073535
Transfer52352162018-03-11 8:50:432483 days ago1520758243IN
0x9bbb9387...5875c48Ce
0 ETH0.0007741834
Transfer52333792018-03-11 1:13:552483 days ago1520730835IN
0x9bbb9387...5875c48Ce
0 ETH0.0004220
Transfer52281622018-03-10 3:53:192484 days ago1520653999IN
0x9bbb9387...5875c48Ce
0 ETH0.0011840452
Transfer52252522018-03-09 16:10:442485 days ago1520611844IN
0x9bbb9387...5875c48Ce
0 ETH0.0009335741
Transfer52143132018-03-07 19:31:052487 days ago1520451065IN
0x9bbb9387...5875c48Ce
0 ETH0.0000844
Transfer52130252018-03-07 14:21:142487 days ago1520432474IN
0x9bbb9387...5875c48Ce
0 ETH0.000227710
Transfer52130062018-03-07 14:17:362487 days ago1520432256IN
0x9bbb9387...5875c48Ce
0 ETH0.0002205210
Transfer52121442018-03-07 10:47:402487 days ago1520419660IN
0x9bbb9387...5875c48Ce
0 ETH0.000113855
Transfer52113642018-03-07 7:28:062487 days ago1520407686IN
0x9bbb9387...5875c48Ce
0 ETH0.001138550
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
52089602018-03-06 21:40:022488 days ago1520372402
0x9bbb9387...5875c48Ce
3,890.39514765 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
InkPublicPresale

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-01-19
*/

pragma solidity ^0.4.18;

// File: zeppelin-solidity/contracts/math/SafeMath.sol

/**
 * @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;
  }
}

// File: zeppelin-solidity/contracts/ownership/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


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


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }


  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }


  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

// File: zeppelin-solidity/contracts/token/ERC20Basic.sol

/**
 * @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);
}

// File: zeppelin-solidity/contracts/token/BasicToken.sol

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return balances[_owner];
  }

}

// File: contracts/InkPublicPresale.sol

contract InkPublicPresale is Ownable {
  using SafeMath for uint256;

  // Flag to indicate whether or not the presale is currently active or is paused.
  // This flag is used both before the presale is finalized as well as after.
  // Pausing the presale before finalize means that no further contributions can
  // be made. Pausing the presale after finalize means that no one can claim
  // XNK tokens.
  bool public active;

  // Flag to indicate whether or not contributions can be refunded.
  bool private refundable;

  // The global minimum contribution (in Wei) imposed on all contributors.
  uint256 public globalMin;
  // The global maximum contribution (in Wei) imposed on all contributors.
  // Contributor also have a personal max. When evaluating whether or not they
  // can make a contribution, the lower of the global max and personal max is
  // used.
  uint256 public globalMax;
  // The max amount of Ether (in Wei) that is available for contribution.
  uint256 public etherCap;
  // The running count of Ether (in Wei) that is already contributed.
  uint256 private etherContributed;
  // The running count of XNK that is purchased by contributors.
  uint256 private xnkPurchased;
  // The address of the XNK token contract. When this address is set, the
  // presale is considered finalized and no further contributions can be made.
  address public tokenAddress;
  // Max gas price for contributing transactions.
  uint256 public maxGasPrice;

  // Contributors storage mapping.
  mapping(address => Contributor) private contributors;

  struct Contributor {
    bool whitelisted;
    // The individual rate (in XNK).
    uint256 rate;
    // The individual max contribution (in Wei).
    uint256 max;
    // The amount (in Wei) the contributor has contributed.
    uint256 balance;
  }

  // The presale is considered finalized when the token address is set.
  modifier finalized {
    require(tokenAddress != address(0));
    _;
  }

  // The presale is considered not finalized when the token address is not set.
  modifier notFinalized {
    require(tokenAddress == address(0));
    _;
  }

  function InkPublicPresale() public {
    globalMax = 1000000000000000000; // 1.0 Ether
    globalMin = 100000000000000000;  // 0.1 Ether
    maxGasPrice = 40000000000;       // 40 Gwei
  }

  function updateMaxGasPrice(uint256 _maxGasPrice) public onlyOwner {
    require(_maxGasPrice > 0);

    maxGasPrice = _maxGasPrice;
  }

  // Returns the amount of Ether contributed by all contributors.
  function getEtherContributed() public view onlyOwner returns (uint256) {
    return etherContributed;
  }

  // Returns the amount of XNK purchased by all contributes.
  function getXNKPurchased() public view onlyOwner returns (uint256) {
    return xnkPurchased;
  }

  // Update the global ether cap. If the new cap is set to something less than
  // or equal to the current contributed ether (etherContributed), then no
  // new contributions can be made.
  function updateEtherCap(uint256 _newEtherCap) public notFinalized onlyOwner {
    etherCap = _newEtherCap;
  }

  // Update the global max contribution.
  function updateGlobalMax(uint256 _globalMax) public notFinalized onlyOwner {
    require(_globalMax > globalMin);

    globalMax = _globalMax;
  }

  // Update the global minimum contribution.
  function updateGlobalMin(uint256 _globalMin) public notFinalized onlyOwner {
    require(_globalMin > 0);
    require(_globalMin < globalMax);

    globalMin = _globalMin;
  }

  function updateTokenAddress(address _tokenAddress) public finalized onlyOwner {
    require(_tokenAddress != address(0));

    tokenAddress = _tokenAddress;
  }

  // Pause the presale (disables contributions and token claiming).
  function pause() public onlyOwner {
    require(active);
    active = false;
  }

  // Resume the presale (enables contributions and token claiming).
  function resume() public onlyOwner {
    require(!active);
    active = true;
  }

  // Allow contributors to call the refund function to get their contributions
  // returned to their whitelisted address.
  function enableRefund() public onlyOwner {
    require(!refundable);
    refundable = true;
  }

  // Disallow refunds (this is the case by default).
  function disableRefund() public onlyOwner {
    require(refundable);
    refundable = false;
  }

  // Add a contributor to the whitelist.
  function addContributor(address _account, uint256 _rate, uint256 _max) public onlyOwner notFinalized {
    require(_account != address(0));
    require(_rate > 0);
    require(_max >= globalMin);
    require(!contributors[_account].whitelisted);

    contributors[_account].whitelisted = true;
    contributors[_account].max = _max;
    contributors[_account].rate = _rate;
  }

  // Updates a contributor's rate and/or max.
  function updateContributor(address _account, uint256 _newRate, uint256 _newMax) public onlyOwner notFinalized {
    require(_account != address(0));
    require(_newRate > 0);
    require(_newMax >= globalMin);
    require(contributors[_account].whitelisted);

    // Account for any changes in rate since we are keeping track of total XNK
    // purchased.
    if (contributors[_account].balance > 0 && contributors[_account].rate != _newRate) {
      // Put back the purchased XNK for the old rate.
      xnkPurchased = xnkPurchased.sub(contributors[_account].balance.mul(contributors[_account].rate));

      // Purchase XNK at the new rate.
      xnkPurchased = xnkPurchased.add(contributors[_account].balance.mul(_newRate));
    }

    contributors[_account].rate = _newRate;
    contributors[_account].max = _newMax;
  }

  // Remove the contributor from the whitelist. This also refunds their
  // contribution if they have made any.
  function removeContributor(address _account) public onlyOwner {
    require(_account != address(0));
    require(contributors[_account].whitelisted);

    // Remove from whitelist.
    contributors[_account].whitelisted = false;

    // If contributions were made, refund it.
    if (contributors[_account].balance > 0) {
      uint256 balance = contributors[_account].balance;

      contributors[_account].balance = 0;
      xnkPurchased = xnkPurchased.sub(balance.mul(contributors[_account].rate));
      etherContributed = etherContributed.sub(balance);

      // XXX: The exclamation point does nothing. We just want to get rid of the
      // compiler warning that we're not using the returned value of the Ether
      // transfer. The transfer *can* fail but we don't want it to stop the
      // removal of the contributor. We will deal if the transfer failure
      // manually outside this contract.
      !_account.call.value(balance)();
    }

    delete contributors[_account];
  }

  function withdrawXNK(address _to) public onlyOwner {
    require(_to != address(0));

    BasicToken token = BasicToken(tokenAddress);
    assert(token.transfer(_to, token.balanceOf(this)));
  }

  function withdrawEther(address _to) public finalized onlyOwner {
    require(_to != address(0));

    assert(_to.call.value(this.balance)());
  }

  // Returns a contributor's balance.
  function balanceOf(address _account) public view returns (uint256) {
    require(_account != address(0));

    return contributors[_account].balance;
  }

  // When refunds are enabled, contributors can call this function get their
  // contributed Ether back. The contributor must still be whitelisted.
  function refund() public {
    require(active);
    require(refundable);
    require(contributors[msg.sender].whitelisted);

    uint256 balance = contributors[msg.sender].balance;

    require(balance > 0);

    contributors[msg.sender].balance = 0;
    etherContributed = etherContributed.sub(balance);
    xnkPurchased = xnkPurchased.sub(balance.mul(contributors[msg.sender].rate));

    assert(msg.sender.call.value(balance)());
  }

  function airdrop(address _account) public finalized onlyOwner {
    _processPayout(_account);
  }

  // Finalize the presale by specifying the XNK token's contract address.
  // No further contributions can be made. The presale will be in the
  // "token claiming" phase.
  function finalize(address _tokenAddress) public notFinalized onlyOwner {
    require(_tokenAddress != address(0));

    tokenAddress = _tokenAddress;
  }

  // Fallback/payable method for contributions and token claiming.
  function () public payable {
    // Allow the owner to send Ether to the contract arbitrarily.
    if (msg.sender == owner && msg.value > 0) {
      return;
    }

    require(active);
    require(contributors[msg.sender].whitelisted);

    if (tokenAddress == address(0)) {
      // Presale is still accepting contributions.
      _processContribution();
    } else {
      // Presale has been finalized and the user is attempting to claim
      // XNK tokens.
      _processPayout(msg.sender);
    }
  }

  // Process the contribution.
  function _processContribution() private {
    // Must be contributing a positive amount.
    require(msg.value > 0);
    // Limit the transaction's gas price.
    require(tx.gasprice <= maxGasPrice);
    // The sum of the contributor's total contributions must be higher than the
    // global minimum.
    require(contributors[msg.sender].balance.add(msg.value) >= globalMin);
    // The global contribution cap must be higher than what has been contributed
    // by everyone. Otherwise, there's zero room for any contribution.
    require(etherCap > etherContributed);
    // Make sure that this specific contribution does not take the total
    // contribution by everyone over the global contribution cap.
    require(msg.value <= etherCap.sub(etherContributed));

    uint256 newBalance = contributors[msg.sender].balance.add(msg.value);

    // We limit the individual's contribution based on whichever is lower
    // between their individual max or the global max.
    if (globalMax <= contributors[msg.sender].max) {
      require(newBalance <= globalMax);
    } else {
      require(newBalance <= contributors[msg.sender].max);
    }

    // Increment the contributor's balance.
    contributors[msg.sender].balance = newBalance;
    // Increment the total amount of Ether contributed by everyone.
    etherContributed = etherContributed.add(msg.value);
    // Increment the total amount of XNK purchased by everyone.
    xnkPurchased = xnkPurchased.add(msg.value.mul(contributors[msg.sender].rate));
  }

  // Process the token claim.
  function _processPayout(address _recipient) private {
    // The transaction must be 0 Ether.
    require(msg.value == 0);

    uint256 balance = contributors[_recipient].balance;

    // The contributor must have contributed something.
    require(balance > 0);

    // Figure out the amount of XNK the contributor will receive.
    uint256 amount = balance.mul(contributors[_recipient].rate);

    // Zero out the contributor's balance to denote that they have received
    // their tokens.
    contributors[_recipient].balance = 0;

    // Transfer XNK to the contributor.
    assert(BasicToken(tokenAddress).transfer(_recipient, amount));
  }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"disableRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"active","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resume","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_account","type":"address"}],"name":"airdrop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_account","type":"address"},{"name":"_newRate","type":"uint256"},{"name":"_newMax","type":"uint256"}],"name":"updateContributor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxGasPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_maxGasPrice","type":"uint256"}],"name":"updateMaxGasPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"}],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"}],"name":"updateTokenAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"etherCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getEtherContributed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"enableRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"globalMax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_globalMin","type":"uint256"}],"name":"updateGlobalMin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_account","type":"address"},{"name":"_rate","type":"uint256"},{"name":"_max","type":"uint256"}],"name":"addContributor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newEtherCap","type":"uint256"}],"name":"updateEtherCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_account","type":"address"}],"name":"removeContributor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_globalMax","type":"uint256"}],"name":"updateGlobalMax","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getXNKPurchased","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"withdrawXNK","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"globalMin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6060604052341561000f57600080fd5b60008054600160a060020a033316600160a060020a0319909116179055670de0b6b3a764000060025567016345785d8a00006001556409502f900060075561126e8061005c6000396000f3006060604052600436106101505763ffffffff60e060020a6000350416630150134781146101e157806302fb0c5e146101f4578063046f7da21461021b57806321860a051461022e5780632e0fc7a61461024d5780633de39c111461027257806348146341146102975780634ef39b75146102ad578063590e1ae3146102cc5780636691461a146102df57806370a08231146102fe5780637228b9db1461031d57806383ccc8b8146103305780638456cb591461034357806389e42346146103565780638da5cb5b1461036957806393627f421461039857806399c27d40146103ab5780639d76ea58146103c1578063a311d157146103d4578063a34560be146103f9578063af933b571461040f578063b3f3ab5c1461042e578063c1b8b7041461044d578063d979e90614610463578063f2fde38b14610476578063f604e6a614610495578063f9c638ea146104b4575b60005433600160a060020a03908116911614801561016e5750600034115b15610178576101df565b60005460a060020a900460ff16151561019057600080fd5b600160a060020a03331660009081526008602052604090205460ff1615156101b757600080fd5b600654600160a060020a031615156101d6576101d16104c7565b6101df565b6101df3361065b565b005b34156101ec57600080fd5b6101df610765565b34156101ff57600080fd5b6102076107b9565b604051901515815260200160405180910390f35b341561022657600080fd5b6101df6107c9565b341561023957600080fd5b6101df600160a060020a0360043516610821565b341561025857600080fd5b6101df600160a060020a036004351660243560443561085f565b341561027d57600080fd5b6102856109d5565b60405190815260200160405180910390f35b34156102a257600080fd5b6101df6004356109db565b34156102b857600080fd5b6101df600160a060020a0360043516610a08565b34156102d757600080fd5b6101df610a7d565b34156102ea57600080fd5b6101df600160a060020a0360043516610b8f565b341561030957600080fd5b610285600160a060020a0360043516610ba6565b341561032857600080fd5b610285610bdc565b341561033b57600080fd5b610285610be2565b341561034e57600080fd5b6101df610c05565b341561036157600080fd5b6101df610c58565b341561037457600080fd5b61037c610cb1565b604051600160a060020a03909116815260200160405180910390f35b34156103a357600080fd5b610285610cc0565b34156103b657600080fd5b6101df600435610cc6565b34156103cc57600080fd5b61037c610d17565b34156103df57600080fd5b6101df600160a060020a0360043516602435604435610d26565b341561040457600080fd5b6101df600435610de2565b341561041a57600080fd5b6101df600160a060020a0360043516610e18565b341561043957600080fd5b6101df600160a060020a0360043516610e94565b341561045857600080fd5b6101df600435610fc2565b341561046e57600080fd5b610285611006565b341561048157600080fd5b6101df600160a060020a0360043516611029565b34156104a057600080fd5b6101df600160a060020a03600435166110c4565b34156104bf57600080fd5b6102856111e5565b6000348190116104d657600080fd5b6007543a11156104e557600080fd5b600154600160a060020a033316600090815260086020526040902060030154610514903463ffffffff6111eb16565b101561051f57600080fd5b6004546003541161052f57600080fd5b6004546003546105449163ffffffff61120516565b34111561055057600080fd5b600160a060020a03331660009081526008602052604090206003015461057c903463ffffffff6111eb16565b600160a060020a0333166000908152600860205260409020600290810154905491925090116105b9576002548111156105b457600080fd5b6105e1565b600160a060020a0333166000908152600860205260409020600201548111156105e157600080fd5b600160a060020a0333166000908152600860205260409020600301819055600454610612903463ffffffff6111eb16565b600455600160a060020a0333166000908152600860205260409020600101546106559061064690349063ffffffff61121716565b6005549063ffffffff6111eb16565b60055550565b600080341561066957600080fd5b600160a060020a0383166000908152600860205260408120600301549250821161069257600080fd5b600160a060020a0383166000908152600860205260409020600101546106bf90839063ffffffff61121716565b600160a060020a03808516600090815260086020526040808220600301829055600654939450929091169163a9059cbb918691859190516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561073d57600080fd5b6102c65a03f1151561074e57600080fd5b50505060405180519050151561076057fe5b505050565b60005433600160a060020a0390811691161461078057600080fd5b60005460a860020a900460ff16151561079857600080fd5b6000805475ff00000000000000000000000000000000000000000019169055565b60005460a060020a900460ff1681565b60005433600160a060020a039081169116146107e457600080fd5b60005460a060020a900460ff16156107fb57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a179055565b600654600160a060020a0316151561083857600080fd5b60005433600160a060020a0390811691161461085357600080fd5b61085c8161065b565b50565b60005433600160a060020a0390811691161461087a57600080fd5b600654600160a060020a03161561089057600080fd5b600160a060020a03831615156108a557600080fd5b600082116108b257600080fd5b6001548110156108c157600080fd5b600160a060020a03831660009081526008602052604090205460ff1615156108e857600080fd5b600160a060020a03831660009081526008602052604081206003015411801561092c5750600160a060020a0383166000908152600860205260409020600101548214155b156109ae57600160a060020a0383166000908152600860205260409020600181015460039091015461097791610968919063ffffffff61121716565b6005549063ffffffff61120516565b600555600160a060020a0383166000908152600860205260409020600301546109aa90610646908463ffffffff61121716565b6005555b600160a060020a039092166000908152600860205260409020600181019190915560020155565b60075481565b60005433600160a060020a039081169116146109f657600080fd5b60008111610a0357600080fd5b600755565b600654600160a060020a031615610a1e57600080fd5b60005433600160a060020a03908116911614610a3957600080fd5b600160a060020a0381161515610a4e57600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000805460a060020a900460ff161515610a9657600080fd5b60005460a860020a900460ff161515610aae57600080fd5b600160a060020a03331660009081526008602052604090205460ff161515610ad557600080fd5b50600160a060020a033316600090815260086020526040812060030154908111610afe57600080fd5b600160a060020a033316600090815260086020526040812060030155600454610b2d908263ffffffff61120516565b600455600160a060020a033316600090815260086020526040902060010154610b619061096890839063ffffffff61121716565b600555600160a060020a0333168160405160006040518083038185876187965a03f192505050151561085c57fe5b600654600160a060020a03161515610a1e57600080fd5b6000600160a060020a0382161515610bbd57600080fd5b50600160a060020a031660009081526008602052604090206003015490565b60035481565b6000805433600160a060020a03908116911614610bfe57600080fd5b5060045490565b60005433600160a060020a03908116911614610c2057600080fd5b60005460a060020a900460ff161515610c3857600080fd5b6000805474ff000000000000000000000000000000000000000019169055565b60005433600160a060020a03908116911614610c7357600080fd5b60005460a860020a900460ff1615610c8a57600080fd5b6000805475ff000000000000000000000000000000000000000000191660a860020a179055565b600054600160a060020a031681565b60025481565b600654600160a060020a031615610cdc57600080fd5b60005433600160a060020a03908116911614610cf757600080fd5b60008111610d0457600080fd5b6002548110610d1257600080fd5b600155565b600654600160a060020a031681565b60005433600160a060020a03908116911614610d4157600080fd5b600654600160a060020a031615610d5757600080fd5b600160a060020a0383161515610d6c57600080fd5b60008211610d7957600080fd5b600154811015610d8857600080fd5b600160a060020a03831660009081526008602052604090205460ff1615610dae57600080fd5b600160a060020a039092166000908152600860205260409020805460ff191660019081178255600282019390935590910155565b600654600160a060020a031615610df857600080fd5b60005433600160a060020a03908116911614610e1357600080fd5b600355565b600654600160a060020a03161515610e2f57600080fd5b60005433600160a060020a03908116911614610e4a57600080fd5b600160a060020a0381161515610e5f57600080fd5b80600160a060020a031630600160a060020a03163160405160006040518083038185876187965a03f192505050151561085c57fe5b6000805433600160a060020a03908116911614610eb057600080fd5b600160a060020a0382161515610ec557600080fd5b600160a060020a03821660009081526008602052604090205460ff161515610eec57600080fd5b600160a060020a0382166000908152600860205260408120805460ff19168155600301541115610f8e5750600160a060020a038116600090815260086020526040812060038101805492905560010154610f519061096890839063ffffffff61121716565b600555600454610f67908263ffffffff61120516565b600455600160a060020a0382168160405160006040518083038185876187965a03f1505050505b50600160a060020a03166000908152600860205260408120805460ff19168155600181018290556002810182905560030155565b600654600160a060020a031615610fd857600080fd5b60005433600160a060020a03908116911614610ff357600080fd5b600154811161100157600080fd5b600255565b6000805433600160a060020a0390811691161461102257600080fd5b5060055490565b60005433600160a060020a0390811691161461104457600080fd5b600160a060020a038116151561105957600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000805433600160a060020a039081169116146110e057600080fd5b600160a060020a03821615156110f557600080fd5b50600654600160a060020a03168063a9059cbb83826370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561115757600080fd5b6102c65a03f1151561116857600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156111be57600080fd5b6102c65a03f115156111cf57600080fd5b5050506040518051905015156111e157fe5b5050565b60015481565b6000828201838110156111fa57fe5b8091505b5092915050565b60008282111561121157fe5b50900390565b60008083151561122a57600091506111fe565b5082820282848281151561123a57fe5b04146111fa57fe00a165627a7a7230582091c860d9c2adf2ab37def462e38121e8990948ae62e9875e7ca9d4ade41da4cc0029

Deployed Bytecode

0x6060604052600436106101505763ffffffff60e060020a6000350416630150134781146101e157806302fb0c5e146101f4578063046f7da21461021b57806321860a051461022e5780632e0fc7a61461024d5780633de39c111461027257806348146341146102975780634ef39b75146102ad578063590e1ae3146102cc5780636691461a146102df57806370a08231146102fe5780637228b9db1461031d57806383ccc8b8146103305780638456cb591461034357806389e42346146103565780638da5cb5b1461036957806393627f421461039857806399c27d40146103ab5780639d76ea58146103c1578063a311d157146103d4578063a34560be146103f9578063af933b571461040f578063b3f3ab5c1461042e578063c1b8b7041461044d578063d979e90614610463578063f2fde38b14610476578063f604e6a614610495578063f9c638ea146104b4575b60005433600160a060020a03908116911614801561016e5750600034115b15610178576101df565b60005460a060020a900460ff16151561019057600080fd5b600160a060020a03331660009081526008602052604090205460ff1615156101b757600080fd5b600654600160a060020a031615156101d6576101d16104c7565b6101df565b6101df3361065b565b005b34156101ec57600080fd5b6101df610765565b34156101ff57600080fd5b6102076107b9565b604051901515815260200160405180910390f35b341561022657600080fd5b6101df6107c9565b341561023957600080fd5b6101df600160a060020a0360043516610821565b341561025857600080fd5b6101df600160a060020a036004351660243560443561085f565b341561027d57600080fd5b6102856109d5565b60405190815260200160405180910390f35b34156102a257600080fd5b6101df6004356109db565b34156102b857600080fd5b6101df600160a060020a0360043516610a08565b34156102d757600080fd5b6101df610a7d565b34156102ea57600080fd5b6101df600160a060020a0360043516610b8f565b341561030957600080fd5b610285600160a060020a0360043516610ba6565b341561032857600080fd5b610285610bdc565b341561033b57600080fd5b610285610be2565b341561034e57600080fd5b6101df610c05565b341561036157600080fd5b6101df610c58565b341561037457600080fd5b61037c610cb1565b604051600160a060020a03909116815260200160405180910390f35b34156103a357600080fd5b610285610cc0565b34156103b657600080fd5b6101df600435610cc6565b34156103cc57600080fd5b61037c610d17565b34156103df57600080fd5b6101df600160a060020a0360043516602435604435610d26565b341561040457600080fd5b6101df600435610de2565b341561041a57600080fd5b6101df600160a060020a0360043516610e18565b341561043957600080fd5b6101df600160a060020a0360043516610e94565b341561045857600080fd5b6101df600435610fc2565b341561046e57600080fd5b610285611006565b341561048157600080fd5b6101df600160a060020a0360043516611029565b34156104a057600080fd5b6101df600160a060020a03600435166110c4565b34156104bf57600080fd5b6102856111e5565b6000348190116104d657600080fd5b6007543a11156104e557600080fd5b600154600160a060020a033316600090815260086020526040902060030154610514903463ffffffff6111eb16565b101561051f57600080fd5b6004546003541161052f57600080fd5b6004546003546105449163ffffffff61120516565b34111561055057600080fd5b600160a060020a03331660009081526008602052604090206003015461057c903463ffffffff6111eb16565b600160a060020a0333166000908152600860205260409020600290810154905491925090116105b9576002548111156105b457600080fd5b6105e1565b600160a060020a0333166000908152600860205260409020600201548111156105e157600080fd5b600160a060020a0333166000908152600860205260409020600301819055600454610612903463ffffffff6111eb16565b600455600160a060020a0333166000908152600860205260409020600101546106559061064690349063ffffffff61121716565b6005549063ffffffff6111eb16565b60055550565b600080341561066957600080fd5b600160a060020a0383166000908152600860205260408120600301549250821161069257600080fd5b600160a060020a0383166000908152600860205260409020600101546106bf90839063ffffffff61121716565b600160a060020a03808516600090815260086020526040808220600301829055600654939450929091169163a9059cbb918691859190516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561073d57600080fd5b6102c65a03f1151561074e57600080fd5b50505060405180519050151561076057fe5b505050565b60005433600160a060020a0390811691161461078057600080fd5b60005460a860020a900460ff16151561079857600080fd5b6000805475ff00000000000000000000000000000000000000000019169055565b60005460a060020a900460ff1681565b60005433600160a060020a039081169116146107e457600080fd5b60005460a060020a900460ff16156107fb57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a179055565b600654600160a060020a0316151561083857600080fd5b60005433600160a060020a0390811691161461085357600080fd5b61085c8161065b565b50565b60005433600160a060020a0390811691161461087a57600080fd5b600654600160a060020a03161561089057600080fd5b600160a060020a03831615156108a557600080fd5b600082116108b257600080fd5b6001548110156108c157600080fd5b600160a060020a03831660009081526008602052604090205460ff1615156108e857600080fd5b600160a060020a03831660009081526008602052604081206003015411801561092c5750600160a060020a0383166000908152600860205260409020600101548214155b156109ae57600160a060020a0383166000908152600860205260409020600181015460039091015461097791610968919063ffffffff61121716565b6005549063ffffffff61120516565b600555600160a060020a0383166000908152600860205260409020600301546109aa90610646908463ffffffff61121716565b6005555b600160a060020a039092166000908152600860205260409020600181019190915560020155565b60075481565b60005433600160a060020a039081169116146109f657600080fd5b60008111610a0357600080fd5b600755565b600654600160a060020a031615610a1e57600080fd5b60005433600160a060020a03908116911614610a3957600080fd5b600160a060020a0381161515610a4e57600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000805460a060020a900460ff161515610a9657600080fd5b60005460a860020a900460ff161515610aae57600080fd5b600160a060020a03331660009081526008602052604090205460ff161515610ad557600080fd5b50600160a060020a033316600090815260086020526040812060030154908111610afe57600080fd5b600160a060020a033316600090815260086020526040812060030155600454610b2d908263ffffffff61120516565b600455600160a060020a033316600090815260086020526040902060010154610b619061096890839063ffffffff61121716565b600555600160a060020a0333168160405160006040518083038185876187965a03f192505050151561085c57fe5b600654600160a060020a03161515610a1e57600080fd5b6000600160a060020a0382161515610bbd57600080fd5b50600160a060020a031660009081526008602052604090206003015490565b60035481565b6000805433600160a060020a03908116911614610bfe57600080fd5b5060045490565b60005433600160a060020a03908116911614610c2057600080fd5b60005460a060020a900460ff161515610c3857600080fd5b6000805474ff000000000000000000000000000000000000000019169055565b60005433600160a060020a03908116911614610c7357600080fd5b60005460a860020a900460ff1615610c8a57600080fd5b6000805475ff000000000000000000000000000000000000000000191660a860020a179055565b600054600160a060020a031681565b60025481565b600654600160a060020a031615610cdc57600080fd5b60005433600160a060020a03908116911614610cf757600080fd5b60008111610d0457600080fd5b6002548110610d1257600080fd5b600155565b600654600160a060020a031681565b60005433600160a060020a03908116911614610d4157600080fd5b600654600160a060020a031615610d5757600080fd5b600160a060020a0383161515610d6c57600080fd5b60008211610d7957600080fd5b600154811015610d8857600080fd5b600160a060020a03831660009081526008602052604090205460ff1615610dae57600080fd5b600160a060020a039092166000908152600860205260409020805460ff191660019081178255600282019390935590910155565b600654600160a060020a031615610df857600080fd5b60005433600160a060020a03908116911614610e1357600080fd5b600355565b600654600160a060020a03161515610e2f57600080fd5b60005433600160a060020a03908116911614610e4a57600080fd5b600160a060020a0381161515610e5f57600080fd5b80600160a060020a031630600160a060020a03163160405160006040518083038185876187965a03f192505050151561085c57fe5b6000805433600160a060020a03908116911614610eb057600080fd5b600160a060020a0382161515610ec557600080fd5b600160a060020a03821660009081526008602052604090205460ff161515610eec57600080fd5b600160a060020a0382166000908152600860205260408120805460ff19168155600301541115610f8e5750600160a060020a038116600090815260086020526040812060038101805492905560010154610f519061096890839063ffffffff61121716565b600555600454610f67908263ffffffff61120516565b600455600160a060020a0382168160405160006040518083038185876187965a03f1505050505b50600160a060020a03166000908152600860205260408120805460ff19168155600181018290556002810182905560030155565b600654600160a060020a031615610fd857600080fd5b60005433600160a060020a03908116911614610ff357600080fd5b600154811161100157600080fd5b600255565b6000805433600160a060020a0390811691161461102257600080fd5b5060055490565b60005433600160a060020a0390811691161461104457600080fd5b600160a060020a038116151561105957600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000805433600160a060020a039081169116146110e057600080fd5b600160a060020a03821615156110f557600080fd5b50600654600160a060020a03168063a9059cbb83826370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561115757600080fd5b6102c65a03f1151561116857600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156111be57600080fd5b6102c65a03f115156111cf57600080fd5b5050506040518051905015156111e157fe5b5050565b60015481565b6000828201838110156111fa57fe5b8091505b5092915050565b60008282111561121157fe5b50900390565b60008083151561122a57600091506111fe565b5082820282848281151561123a57fe5b04146111fa57fe00a165627a7a7230582091c860d9c2adf2ab37def462e38121e8990948ae62e9875e7ca9d4ade41da4cc0029

Swarm Source

bzzr://91c860d9c2adf2ab37def462e38121e8990948ae62e9875e7ca9d4ade41da4cc

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.