ETH Price: $3,327.33 (-3.75%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Instant Trade132978082021-09-25 22:54:581200 days ago1632610498IN
0xE17dBB84...84ce63664
0 ETH0.0011903130.3521073
Instant Trade132977722021-09-25 22:48:191200 days ago1632610099IN
0xE17dBB84...84ce63664
0 ETH0.0012706739.22939112
Instant Trade116353282021-01-11 18:48:561457 days ago1610390936IN
0xE17dBB84...84ce63664
0.00004746 ETH0.0066016100
Instant Trade114341692020-12-11 21:44:501488 days ago1607723090IN
0xE17dBB84...84ce63664
0 ETH0.0050858438
Instant Trade111530452020-10-29 17:28:541531 days ago1603992534IN
0xE17dBB84...84ce63664
0.0160138 ETH0.0014378221.78
Instant Trade104429422020-07-12 6:00:161641 days ago1594533616IN
0xE17dBB84...84ce63664
0 ETH0.005246828
Instant Trade104282612020-07-09 23:30:501643 days ago1594337450IN
0xE17dBB84...84ce63664
0.003012 ETH0.0031521
Instant Trade104146232020-07-07 20:56:301645 days ago1594155390IN
0xE17dBB84...84ce63664
0.22088 ETH0.0021781333
Instant Trade103878212020-07-03 17:33:261649 days ago1593797606IN
0xE17dBB84...84ce63664
0 ETH0.0033002627
Instant Trade103876102020-07-03 16:45:361650 days ago1593794736IN
0xE17dBB84...84ce63664
0 ETH0.0032692927
Instant Trade103834052020-07-03 1:00:461650 days ago1593738046IN
0xE17dBB84...84ce63664
0.00000028 ETH0.0037449225
Instant Trade103833742020-07-03 0:53:191650 days ago1593737599IN
0xE17dBB84...84ce63664
0.00241462 ETH0.0114017933
Instant Trade103727272020-07-01 9:30:081652 days ago1593595808IN
0xE17dBB84...84ce63664
0 ETH0.0069236933
Instant Trade103445162020-06-27 0:00:441656 days ago1593216044IN
0xE17dBB84...84ce63664
0 ETH0.0059937233
Instant Trade103388452020-06-26 3:00:311657 days ago1593140431IN
0xE17dBB84...84ce63664
0.02008 ETH0.0013767827
Instant Trade102956832020-06-19 10:36:471664 days ago1592563007IN
0xE17dBB84...84ce63664
0.02058158 ETH0.0040948727
Instant Trade102870912020-06-18 2:47:111665 days ago1592448431IN
0xE17dBB84...84ce63664
0 ETH0.0036735327
Instant Trade102870132020-06-18 2:29:151665 days ago1592447355IN
0xE17dBB84...84ce63664
0 ETH0.009358327
Instant Trade102636382020-06-14 11:35:571669 days ago1592134557IN
0xE17dBB84...84ce63664
0 ETH0.0034628233
Instant Trade102636222020-06-14 11:31:451669 days ago1592134305IN
0xE17dBB84...84ce63664
0 ETH0.0034632133
Instant Trade102631092020-06-14 9:38:181669 days ago1592127498IN
0xE17dBB84...84ce63664
0.0119476 ETH0.0037102827
Instant Trade102630992020-06-14 9:36:111669 days ago1592127371IN
0xE17dBB84...84ce63664
0.00023895 ETH0.0037099627
Instant Trade102619852020-06-14 5:31:131669 days ago1592112673IN
0xE17dBB84...84ce63664
0.00210739 ETH0.0037660127
Instant Trade102619712020-06-14 5:28:541669 days ago1592112534IN
0xE17dBB84...84ce63664
0.0068272 ETH0.00407127
Instant Trade102619472020-06-14 5:25:141669 days ago1592112314IN
0xE17dBB84...84ce63664
0.00426378 ETH0.0059146227
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
132978082021-09-25 22:54:581200 days ago1632610498
0xE17dBB84...84ce63664
0.0149712 ETH
132978082021-09-25 22:54:581200 days ago1632610498
0xE17dBB84...84ce63664
0 ETH
132978082021-09-25 22:54:581200 days ago1632610498
0xE17dBB84...84ce63664
0 ETH
132978082021-09-25 22:54:581200 days ago1632610498
0xE17dBB84...84ce63664
0 ETH
132978082021-09-25 22:54:581200 days ago1632610498
0xE17dBB84...84ce63664
0 ETH
132978082021-09-25 22:54:581200 days ago1632610498
0xE17dBB84...84ce63664
0 ETH
132978082021-09-25 22:54:581200 days ago1632610498
0xE17dBB84...84ce63664
0 ETH
132977722021-09-25 22:48:191200 days ago1632610099
0xE17dBB84...84ce63664
0 ETH
132977722021-09-25 22:48:191200 days ago1632610099
0xE17dBB84...84ce63664
0 ETH
132977722021-09-25 22:48:191200 days ago1632610099
0xE17dBB84...84ce63664
0 ETH
132977722021-09-25 22:48:191200 days ago1632610099
0xE17dBB84...84ce63664
0 ETH
132977722021-09-25 22:48:191200 days ago1632610099
0xE17dBB84...84ce63664
0 ETH
132977722021-09-25 22:48:191200 days ago1632610099
0xE17dBB84...84ce63664
0 ETH
132977722021-09-25 22:48:191200 days ago1632610099
0xE17dBB84...84ce63664
0 ETH
116353282021-01-11 18:48:561457 days ago1610390936
0xE17dBB84...84ce63664
0 ETH
116353282021-01-11 18:48:561457 days ago1610390936
0xE17dBB84...84ce63664
0.00004746 ETH
114341692020-12-11 21:44:501488 days ago1607723090
0xE17dBB84...84ce63664
0 ETH
114341692020-12-11 21:44:501488 days ago1607723090
0xE17dBB84...84ce63664
0 ETH
114341692020-12-11 21:44:501488 days ago1607723090
0xE17dBB84...84ce63664
0 ETH
114341692020-12-11 21:44:501488 days ago1607723090
0xE17dBB84...84ce63664
0 ETH
111530452020-10-29 17:28:541531 days ago1603992534
0xE17dBB84...84ce63664
0 ETH
111530452020-10-29 17:28:541531 days ago1603992534
0xE17dBB84...84ce63664
0.0160138 ETH
104429422020-07-12 6:00:161641 days ago1594533616
0xE17dBB84...84ce63664
0.024375 ETH
104429422020-07-12 6:00:161641 days ago1594533616
0xE17dBB84...84ce63664
0.024375 ETH
104429422020-07-12 6:00:161641 days ago1594533616
0xE17dBB84...84ce63664
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
InstantTrade

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-05-18
*/

pragma solidity ^0.4.19;

// ERC20 token protocol, see more details at
// https://theethereum.wiki/w/index.php/ERC20_Token_Standard
// And also https://github.com/ethereum/eips/issues/20

contract Token {

  string public name;
  string public symbol;
  uint8 public decimals;

  function totalSupply() constant returns (uint256 supply);
  function balanceOf(address _owner) constant returns (uint256 balance);
  function transfer(address _to, uint256 _value) returns (bool success);
  function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
  function approve(address _spender, uint256 _value) returns (bool success);
  function allowance(address _owner, address _spender) constant returns (uint256 remaining);

  event Transfer(address indexed _from, address indexed _to, uint256 _value);
  event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

// Safe mathematics to make the code more readable

contract SafeMath {
  function safeMul(uint a, uint b) internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || 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;
  }
}

// Ownable interface to simplify owner checks

contract Ownable {
  address public owner;

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

  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  function transferOwnership(address _newOwner) onlyOwner {
    require(_newOwner != address(0));
    owner = _newOwner;
  }
}

// Interface for trading discounts and rebates for specific accounts

contract AccountModifiersInterface {
  function accountModifiers(address _user) constant returns(uint takeFeeDiscount, uint rebatePercentage);
  function tradeModifiers(address _maker, address _taker) constant returns(uint takeFeeDiscount, uint rebatePercentage);
}

// Interface for trade tacker

contract TradeTrackerInterface {
  function tradeComplete(address _tokenGet, uint _amountGet, address _tokenGive, uint _amountGive, address _get, address _give, uint _takerFee, uint _makerRebate);
}

// Exchange contract

contract TokenStore is SafeMath, Ownable {

  // The account that will receive fees
  address feeAccount;

  // The account that stores fee discounts/rebates
  address accountModifiers;

  // Trade tracker account
  address tradeTracker;

  // We charge only the takers and this is the fee, percentage times 1 ether
  uint public fee;

  // Mapping of token addresses to mapping of account balances (token 0 means Ether)
  mapping (address => mapping (address => uint)) public tokens;

  // Mapping of user accounts to mapping of order hashes to uints (amount of order that has been filled)
  mapping (address => mapping (bytes32 => uint)) public orderFills;

  // Address of a next and previous versions of the contract, also status of the contract
  // can be used for user-triggered fund migrations
  address public successor;
  address public predecessor;
  bool public deprecated;
  uint16 public version;

  // Logging events
  // Note: Order creation is handled off-chain, see explanation further below
  event Cancel(address tokenGet, uint amountGet, address tokenGive, uint amountGive, uint expires, uint nonce, address user, uint8 v, bytes32 r, bytes32 s);
  event Trade(address tokenGet, uint amountGet, address tokenGive, uint amountGive, address get, address give, uint nonce);
  event Deposit(address token, address user, uint amount, uint balance);
  event Withdraw(address token, address user, uint amount, uint balance);
  event FundsMigrated(address user);

  function TokenStore(uint _fee, address _predecessor) {
    feeAccount = owner;
    fee = _fee;
    predecessor = _predecessor;
    deprecated = false;
    if (predecessor != address(0)) {
      version = TokenStore(predecessor).version() + 1;
    } else {
      version = 1;
    }
  }

  // Throw on default handler to prevent direct transactions of Ether
  function() {
    revert();
  }

  modifier deprecable() {
    require(!deprecated);
    _;
  }

  function deprecate(bool _deprecated, address _successor) onlyOwner {
    deprecated = _deprecated;
    successor = _successor;
  }

  function changeFeeAccount(address _feeAccount) onlyOwner {
    require(_feeAccount != address(0));
    feeAccount = _feeAccount;
  }

  function changeAccountModifiers(address _accountModifiers) onlyOwner {
    accountModifiers = _accountModifiers;
  }

  function changeTradeTracker(address _tradeTracker) onlyOwner {
    tradeTracker = _tradeTracker;
  }

  // Fee can only be decreased!
  function changeFee(uint _fee) onlyOwner {
    require(_fee <= fee);
    fee = _fee;
  }

  // Allows a user to get her current discount/rebate
  function getAccountModifiers() constant returns(uint takeFeeDiscount, uint rebatePercentage) {
    if (accountModifiers != address(0)) {
      return AccountModifiersInterface(accountModifiers).accountModifiers(msg.sender);
    } else {
      return (0, 0);
    }
  }

  ////////////////////////////////////////////////////////////////////////////////
  // Deposits, withdrawals, balances
  ////////////////////////////////////////////////////////////////////////////////

  function deposit() payable deprecable {
    tokens[0][msg.sender] = safeAdd(tokens[0][msg.sender], msg.value);
    Deposit(0, msg.sender, msg.value, tokens[0][msg.sender]);
  }

  function withdraw(uint _amount) {
    require(tokens[0][msg.sender] >= _amount);
    tokens[0][msg.sender] = safeSub(tokens[0][msg.sender], _amount);
    if (!msg.sender.call.value(_amount)()) {
      revert();
    }
    Withdraw(0, msg.sender, _amount, tokens[0][msg.sender]);
  }

  function depositToken(address _token, uint _amount) deprecable {
    // Note that Token(_token).approve(this, _amount) needs to be called
    // first or this contract will not be able to do the transfer.
    require(_token != 0);
    if (!Token(_token).transferFrom(msg.sender, this, _amount)) {
      revert();
    }
    tokens[_token][msg.sender] = safeAdd(tokens[_token][msg.sender], _amount);
    Deposit(_token, msg.sender, _amount, tokens[_token][msg.sender]);
  }

  function withdrawToken(address _token, uint _amount) {
    require(_token != 0);
    require(tokens[_token][msg.sender] >= _amount);
    tokens[_token][msg.sender] = safeSub(tokens[_token][msg.sender], _amount);
    if (!Token(_token).transfer(msg.sender, _amount)) {
      revert();
    }
    Withdraw(_token, msg.sender, _amount, tokens[_token][msg.sender]);
  }

  function balanceOf(address _token, address _user) constant returns (uint) {
    return tokens[_token][_user];
  }

  ////////////////////////////////////////////////////////////////////////////////
  // Trading
  ////////////////////////////////////////////////////////////////////////////////

  // Note: Order creation happens off-chain but the orders are signed by creators,
  // we validate the contents and the creator address in the logic below

  function trade(address _tokenGet, uint _amountGet, address _tokenGive, uint _amountGive,
      uint _expires, uint _nonce, address _user, uint8 _v, bytes32 _r, bytes32 _s, uint _amount) {
    bytes32 hash = sha256(this, _tokenGet, _amountGet, _tokenGive, _amountGive, _expires, _nonce);
    // Check order signatures and expiration, also check if not fulfilled yet
		if (ecrecover(sha3("\x19Ethereum Signed Message:\n32", hash), _v, _r, _s) != _user ||
      block.number > _expires ||
      safeAdd(orderFills[_user][hash], _amount) > _amountGet) {
      revert();
    }
    tradeBalances(_tokenGet, _amountGet, _tokenGive, _amountGive, _user, msg.sender, _amount);
    orderFills[_user][hash] = safeAdd(orderFills[_user][hash], _amount);
    Trade(_tokenGet, _amount, _tokenGive, _amountGive * _amount / _amountGet, _user, msg.sender, _nonce);
  }

  function tradeBalances(address _tokenGet, uint _amountGet, address _tokenGive, uint _amountGive,
      address _user, address _caller, uint _amount) private {

    uint feeTakeValue = safeMul(_amount, fee) / (1 ether);
    uint rebateValue = 0;
    uint tokenGiveValue = safeMul(_amountGive, _amount) / _amountGet; // Proportionate to request ratio

    // Apply modifiers
    if (accountModifiers != address(0)) {
      var (feeTakeDiscount, rebatePercentage) = AccountModifiersInterface(accountModifiers).tradeModifiers(_user, _caller);
      // Check that the discounts/rebates are never higher then 100%
      if (feeTakeDiscount > 100) {
        feeTakeDiscount = 0;
      }
      if (rebatePercentage > 100) {
        rebatePercentage = 0;
      }
      feeTakeValue = safeMul(feeTakeValue, 100 - feeTakeDiscount) / 100;  // discounted fee
      rebateValue = safeMul(rebatePercentage, feeTakeValue) / 100;        // % of actual taker fee
    }

    tokens[_tokenGet][_user] = safeAdd(tokens[_tokenGet][_user], safeAdd(_amount, rebateValue));
    tokens[_tokenGet][_caller] = safeSub(tokens[_tokenGet][_caller], safeAdd(_amount, feeTakeValue));
    tokens[_tokenGive][_user] = safeSub(tokens[_tokenGive][_user], tokenGiveValue);
    tokens[_tokenGive][_caller] = safeAdd(tokens[_tokenGive][_caller], tokenGiveValue);
    tokens[_tokenGet][feeAccount] = safeAdd(tokens[_tokenGet][feeAccount], safeSub(feeTakeValue, rebateValue));

    if (tradeTracker != address(0)) {
      TradeTrackerInterface(tradeTracker).tradeComplete(_tokenGet, _amount, _tokenGive, tokenGiveValue, _user, _caller, feeTakeValue, rebateValue);
    }
  }

  function testTrade(address _tokenGet, uint _amountGet, address _tokenGive, uint _amountGive, uint _expires,
      uint _nonce, address _user, uint8 _v, bytes32 _r, bytes32 _s, uint _amount, address _sender) constant returns(bool) {
    if (tokens[_tokenGet][_sender] < _amount ||
      availableVolume(_tokenGet, _amountGet, _tokenGive, _amountGive, _expires, _nonce, _user, _v, _r, _s) < _amount) {
      return false;
    }
    return true;
  }

  function availableVolume(address _tokenGet, uint _amountGet, address _tokenGive, uint _amountGive, uint _expires,
      uint _nonce, address _user, uint8 _v, bytes32 _r, bytes32 _s) constant returns(uint) {
    bytes32 hash = sha256(this, _tokenGet, _amountGet, _tokenGive, _amountGive, _expires, _nonce);
    if (ecrecover(sha3("\x19Ethereum Signed Message:\n32", hash), _v, _r, _s) != _user ||
      block.number > _expires) {
      return 0;
    }
    uint available1 = safeSub(_amountGet, orderFills[_user][hash]);
    uint available2 = safeMul(tokens[_tokenGive][_user], _amountGet) / _amountGive;
    if (available1 < available2) return available1;
    return available2;
  }

  function amountFilled(address _tokenGet, uint _amountGet, address _tokenGive, uint _amountGive, uint _expires,
      uint _nonce, address _user) constant returns(uint) {
    bytes32 hash = sha256(this, _tokenGet, _amountGet, _tokenGive, _amountGive, _expires, _nonce);
    return orderFills[_user][hash];
  }

  function cancelOrder(address _tokenGet, uint _amountGet, address _tokenGive, uint _amountGive, uint _expires,
      uint _nonce, uint8 _v, bytes32 _r, bytes32 _s) {
    bytes32 hash = sha256(this, _tokenGet, _amountGet, _tokenGive, _amountGive, _expires, _nonce);
    if (!(ecrecover(sha3("\x19Ethereum Signed Message:\n32", hash), _v, _r, _s) == msg.sender)) {
      revert();
    }
    orderFills[msg.sender][hash] = _amountGet;
    Cancel(_tokenGet, _amountGet, _tokenGive, _amountGive, _expires, _nonce, msg.sender, _v, _r, _s);
  }

  ////////////////////////////////////////////////////////////////////////////////
  // Migrations
  ////////////////////////////////////////////////////////////////////////////////

  // User-triggered (!) fund migrations in case contract got updated
  // Similar to withdraw but we use a successor account instead
  // As we don't store user tokens list on chain, it has to be passed from the outside
  function migrateFunds(address[] _tokens) {

    // Get the latest successor in the chain
    require(successor != address(0));
    TokenStore newExchange = TokenStore(successor);
    for (uint16 n = 0; n < 20; n++) {  // We will look past 20 contracts in the future
      address nextSuccessor = newExchange.successor();
      if (nextSuccessor == address(this)) {  // Circular succession
        revert();
      }
      if (nextSuccessor == address(0)) { // We reached the newest, stop
        break;
      }
      newExchange = TokenStore(nextSuccessor);
    }

    // Ether
    uint etherAmount = tokens[0][msg.sender];
    if (etherAmount > 0) {
      tokens[0][msg.sender] = 0;
      newExchange.depositForUser.value(etherAmount)(msg.sender);
    }

    // Tokens
    for (n = 0; n < _tokens.length; n++) {
      address token = _tokens[n];
      require(token != address(0)); // 0 = Ether, we handle it above
      uint tokenAmount = tokens[token][msg.sender];
      if (tokenAmount == 0) {
        continue;
      }
      if (!Token(token).approve(newExchange, tokenAmount)) {
        revert();
      }
      tokens[token][msg.sender] = 0;
      newExchange.depositTokenForUser(token, tokenAmount, msg.sender);
    }

    FundsMigrated(msg.sender);
  }

  // This is used for migrations only. To be called by previous exchange only,
  // user-triggered, on behalf of the user called the migrateFunds method.
  // Note that it does exactly the same as depositToken, but as this is called
  // by a previous generation of exchange itself, we credit internally not the
  // previous exchange, but the user it was called for.
  function depositForUser(address _user) payable deprecable {
    require(_user != address(0));
    require(msg.value > 0);
    TokenStore caller = TokenStore(msg.sender);
    require(caller.version() > 0); // Make sure it's an exchange account
    tokens[0][_user] = safeAdd(tokens[0][_user], msg.value);
  }

  function depositTokenForUser(address _token, uint _amount, address _user) deprecable {
    require(_token != address(0));
    require(_user != address(0));
    require(_amount > 0);
    TokenStore caller = TokenStore(msg.sender);
    require(caller.version() > 0); // Make sure it's an exchange account
    if (!Token(_token).transferFrom(msg.sender, this, _amount)) {
      revert();
    }
    tokens[_token][_user] = safeAdd(tokens[_token][_user], _amount);
  }
}

contract InstantTrade is SafeMath, Ownable {

  // This is needed so we can withdraw funds from other smart contracts
  function() payable {
  }
  
  // End to end trading in a single call
  function instantTrade(address _tokenGet, uint _amountGet, address _tokenGive, uint _amountGive,
      uint _expires, uint _nonce, address _user, uint8 _v, bytes32 _r, bytes32 _s, uint _amount, address _store) payable {
    
    // Fix max fee (0.4%) and always reserve it
    uint totalValue = safeMul(_amount, 1004) / 1000;
    
    // Paying with Ethereum or token? Deposit to the actual store
    if (_tokenGet == address(0)) {
      // Check amount of ether sent to make sure it's correct
      if (msg.value != totalValue) {
        revert();
      }
      TokenStore(_store).deposit.value(totalValue)();
    } else {
      // Assuming user already approved transfer, transfer first to this contract
      if (!Token(_tokenGet).transferFrom(msg.sender, this, totalValue)) {
        revert();
      }
      // Allow now actual store to deposit
      if (!Token(_tokenGet).approve(_store, totalValue)) {
        revert();
      }
      TokenStore(_store).depositToken(_tokenGet, totalValue);
    }
    
    // Trade
    TokenStore(_store).trade(_tokenGet, _amountGet, _tokenGive, _amountGive,
      _expires, _nonce, _user, _v, _r, _s, _amount);
    
    // Check how much did we get and how much should we send back
    totalValue = TokenStore(_store).balanceOf(_tokenGive, this);
    uint customerValue = safeMul(_amountGive, _amount) / _amountGet;
    
    // Now withdraw all the funds into this contract and then pass to the user
    if (_tokenGive == address(0)) {
      TokenStore(_store).withdraw(totalValue);
      msg.sender.transfer(customerValue);
    } else {
      TokenStore(_store).withdrawToken(_tokenGive, totalValue);
      if (!Token(_tokenGive).transfer(msg.sender, customerValue)) {
        revert();
      }
    }
  }
  
  function withdrawFees(address _token) onlyOwner {
    if (_token == address(0)) {
      msg.sender.transfer(this.balance);
    } else {
      uint amount = Token(_token).balanceOf(this);
      if (!Token(_token).transfer(msg.sender, amount)) {
        revert();
      }
    }
  }  
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_tokenGet","type":"address"},{"name":"_amountGet","type":"uint256"},{"name":"_tokenGive","type":"address"},{"name":"_amountGive","type":"uint256"},{"name":"_expires","type":"uint256"},{"name":"_nonce","type":"uint256"},{"name":"_user","type":"address"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"},{"name":"_amount","type":"uint256"},{"name":"_store","type":"address"}],"name":"instantTrade","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"withdrawFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"}]

6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f41806100536000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806308e05b8514610064578063164e68de146101555780638da5cb5b14610198578063f2fde38b146101ef575b005b610153600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035600019169060200190929190803560001916906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610232565b005b34801561016157600080fd5b50610196600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b3480156101a457600080fd5b506101ad610de3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101fb57600080fd5b50610230600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e08565b005b6000806103e8610244856103ec610ee2565b81151561024d57fe5b049150600073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff16141561031557813414151561029357600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b1580156102f757600080fd5b505af115801561030b573d6000803e3d6000fd5b50505050506105d7565b8d73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156103ec57600080fd5b505af1158015610400573d6000803e3d6000fd5b505050506040513d602081101561041657600080fd5b8101908080519060200190929190505050151561043257600080fd5b8d73ffffffffffffffffffffffffffffffffffffffff1663095ea7b384846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156104d557600080fd5b505af11580156104e9573d6000803e3d6000fd5b505050506040513d60208110156104ff57600080fd5b8101908080519060200190929190505050151561051b57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663338b5dea8f846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156105be57600080fd5b505af11580156105d2573d6000803e3d6000fd5b505050505b8273ffffffffffffffffffffffffffffffffffffffff16630a19b14a8f8f8f8f8f8f8f8f8f8f8f6040518c63ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018560ff1660ff168152602001846000191660001916815260200183600019166000191681526020018281526020019b505050505050505050505050600060405180830381600087803b15801561073057600080fd5b505af1158015610744573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663f7888aec8d306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561081757600080fd5b505af115801561082b573d6000803e3d6000fd5b505050506040513d602081101561084157600080fd5b810190808051906020019092919050505091508c61085f8c86610ee2565b81151561086857fe5b049050600073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff161415610973578273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561090f57600080fd5b505af1158015610923573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561096d573d6000803e3d6000fd5b50610b18565b8273ffffffffffffffffffffffffffffffffffffffff16639e281a988d846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610a1657600080fd5b505af1158015610a2a573d6000803e3d6000fd5b505050508b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ad157600080fd5b505af1158015610ae5573d6000803e3d6000fd5b505050506040513d6020811015610afb57600080fd5b81019080805190602001909291905050501515610b1757600080fd5b5b5050505050505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b8557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c1d573373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610c17573d6000803e3d6000fd5b50610ddf565b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610cb857600080fd5b505af1158015610ccc573d6000803e3d6000fd5b505050506040513d6020811015610ce257600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610d9857600080fd5b505af1158015610dac573d6000803e3d6000fd5b505050506040513d6020811015610dc257600080fd5b81019080805190602001909291905050501515610dde57600080fd5b5b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e6357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610e9f57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082840290506000841480610f035750828482811515610f0057fe5b04145b1515610f0b57fe5b80915050929150505600a165627a7a7230582081a354272428a9b8d3f961d3793825f26e08c07debe709d8815e1c110f5698c20029

Deployed Bytecode

0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806308e05b8514610064578063164e68de146101555780638da5cb5b14610198578063f2fde38b146101ef575b005b610153600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035600019169060200190929190803560001916906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610232565b005b34801561016157600080fd5b50610196600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b3480156101a457600080fd5b506101ad610de3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101fb57600080fd5b50610230600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e08565b005b6000806103e8610244856103ec610ee2565b81151561024d57fe5b049150600073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff16141561031557813414151561029357600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b1580156102f757600080fd5b505af115801561030b573d6000803e3d6000fd5b50505050506105d7565b8d73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156103ec57600080fd5b505af1158015610400573d6000803e3d6000fd5b505050506040513d602081101561041657600080fd5b8101908080519060200190929190505050151561043257600080fd5b8d73ffffffffffffffffffffffffffffffffffffffff1663095ea7b384846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156104d557600080fd5b505af11580156104e9573d6000803e3d6000fd5b505050506040513d60208110156104ff57600080fd5b8101908080519060200190929190505050151561051b57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663338b5dea8f846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156105be57600080fd5b505af11580156105d2573d6000803e3d6000fd5b505050505b8273ffffffffffffffffffffffffffffffffffffffff16630a19b14a8f8f8f8f8f8f8f8f8f8f8f6040518c63ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018560ff1660ff168152602001846000191660001916815260200183600019166000191681526020018281526020019b505050505050505050505050600060405180830381600087803b15801561073057600080fd5b505af1158015610744573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663f7888aec8d306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561081757600080fd5b505af115801561082b573d6000803e3d6000fd5b505050506040513d602081101561084157600080fd5b810190808051906020019092919050505091508c61085f8c86610ee2565b81151561086857fe5b049050600073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff161415610973578273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561090f57600080fd5b505af1158015610923573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561096d573d6000803e3d6000fd5b50610b18565b8273ffffffffffffffffffffffffffffffffffffffff16639e281a988d846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610a1657600080fd5b505af1158015610a2a573d6000803e3d6000fd5b505050508b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ad157600080fd5b505af1158015610ae5573d6000803e3d6000fd5b505050506040513d6020811015610afb57600080fd5b81019080805190602001909291905050501515610b1757600080fd5b5b5050505050505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b8557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c1d573373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610c17573d6000803e3d6000fd5b50610ddf565b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610cb857600080fd5b505af1158015610ccc573d6000803e3d6000fd5b505050506040513d6020811015610ce257600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610d9857600080fd5b505af1158015610dac573d6000803e3d6000fd5b505050506040513d6020811015610dc257600080fd5b81019080805190602001909291905050501515610dde57600080fd5b5b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e6357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610e9f57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082840290506000841480610f035750828482811515610f0057fe5b04145b1515610f0b57fe5b80915050929150505600a165627a7a7230582081a354272428a9b8d3f961d3793825f26e08c07debe709d8815e1c110f5698c20029

Swarm Source

bzzr://81a354272428a9b8d3f961d3793825f26e08c07debe709d8815e1c110f5698c2

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  ]

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.