ETH Price: $3,333.48 (-4.14%)

Contract

0x2268003d92FF03Be6ca6dA029F8D8127FD2F617e
 

Overview

ETH Balance

0.01326 ETH

Eth Value

$44.20 (@ $3,333.48/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Place Long48090282017-12-27 22:49:152555 days ago1514414955IN
0x2268003d...7FD2F617e
0.0039 ETH0.00016942
Deposit Coupon48090202017-12-27 22:47:212555 days ago1514414841IN
0x2268003d...7FD2F617e
0.00039 ETH0.000126182
Place Long48034052017-12-27 0:08:122556 days ago1514333292IN
0x2268003d...7FD2F617e
0.0039 ETH0.000338564
Deposit Coupon48033982017-12-27 0:07:192556 days ago1514333239IN
0x2268003d...7FD2F617e
0.00039 ETH0.000252124
Non Activation S...48033162017-12-26 23:49:132556 days ago1514332153IN
0x2268003d...7FD2F617e
0 ETH0.00012233
Non Activation W...48033112017-12-26 23:47:182556 days ago1514332038IN
0x2268003d...7FD2F617e
0 ETH0.000127864
Place Long48032082017-12-26 23:23:322556 days ago1514330612IN
0x2268003d...7FD2F617e
0.0039 ETH0.000338814
Deposit Coupon48032032017-12-26 23:22:152556 days ago1514330535IN
0x2268003d...7FD2F617e
0.00039 ETH0.000315475
Non Activation W...48031912017-12-26 23:19:252556 days ago1514330365IN
0x2268003d...7FD2F617e
0 ETH0.000127614
Place Long48030992017-12-26 22:56:272556 days ago1514328987IN
0x2268003d...7FD2F617e
0.0039 ETH0.0003760810
Place Long48030992017-12-26 22:56:272556 days ago1514328987IN
0x2268003d...7FD2F617e
0.0039 ETH0.000150684
Place Long48030022017-12-26 22:31:152556 days ago1514327475IN
0x2268003d...7FD2F617e
0.0039 ETH0.00042325
Deposit Coupon48029892017-12-26 22:28:382556 days ago1514327318IN
0x2268003d...7FD2F617e
0.00039 ETH0.000630310
Non Activation S...48029862017-12-26 22:27:432556 days ago1514327263IN
0x2268003d...7FD2F617e
0 ETH0.000245335
Place Long48029342017-12-26 22:12:062556 days ago1514326326IN
0x2268003d...7FD2F617e
0.0039 ETH0.000188365
Claim Donations48029342017-12-26 22:12:062556 days ago1514326326IN
0x2268003d...7FD2F617e
0 ETH0.0007630310
Place Long48029342017-12-26 22:12:062556 days ago1514326326IN
0x2268003d...7FD2F617e
0.0039 ETH0.0003760810
Claim Donations48029342017-12-26 22:12:062556 days ago1514326326IN
0x2268003d...7FD2F617e
0 ETH0.0007630310
Deposit Coupon48029332017-12-26 22:11:462556 days ago1514326306IN
0x2268003d...7FD2F617e
0.00039 ETH0.0003772410
Claim Donations48029322017-12-26 22:11:392556 days ago1514326299IN
0x2268003d...7FD2F617e
0 ETH0.0005830311
Non Activation S...48028602017-12-26 21:54:152556 days ago1514325255IN
0x2268003d...7FD2F617e
0 ETH0.000203835
Deposit Coupon48027692017-12-26 21:33:102556 days ago1514323990IN
0x2268003d...7FD2F617e
0.00039 ETH0.000252374
Place Long48027612017-12-26 21:30:502556 days ago1514323850IN
0x2268003d...7FD2F617e
0.0039 ETH0.000253923
Deposit Coupon48026892017-12-26 21:12:082556 days ago1514322728IN
0x2268003d...7FD2F617e
0.00039 ETH0.000252124
Non Activation W...48026682017-12-26 21:06:502556 days ago1514322410IN
0x2268003d...7FD2F617e
0 ETH0.000075342
View all transactions

Latest 6 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
48033162017-12-26 23:49:132556 days ago1514332153
0x2268003d...7FD2F617e
0.00039 ETH
48033112017-12-26 23:47:182556 days ago1514332038
0x2268003d...7FD2F617e
0.0039 ETH
48031912017-12-26 23:19:252556 days ago1514330365
0x2268003d...7FD2F617e
0.0039 ETH
48029322017-12-26 22:11:392556 days ago1514326299
0x2268003d...7FD2F617e
0.00429 ETH
48028602017-12-26 21:54:152556 days ago1514325255
0x2268003d...7FD2F617e
0.00039 ETH
48025282017-12-26 20:32:142556 days ago1514320334
0x2268003d...7FD2F617e
0.0039 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ShortOrder

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 2017-12-26
*/

pragma solidity ^0.4.18;

contract Token {
  /// @return total amount of tokens
  function totalSupply() constant returns (uint256 supply) {}

  /// @param _owner The address from which the balance will be retrieved
  /// @return The balance
  function balanceOf(address _owner) constant returns (uint256 balance) {}

  /// @notice send `_value` token to `_to` from `msg.sender`
  /// @param _to The address of the recipient
  /// @param _value The amount of token to be transferred
  /// @return Whether the transfer was successful or not
  function transfer(address _to,uint256 _value) returns (bool success) {}

  /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
  /// @param _from The address of the sender
  /// @param _to The address of the recipient
  /// @param _value The amount of token to be transferred
  /// @return Whether the transfer was successful or not
  function transferFrom(address _from,address _to,uint256 _value) returns (bool success) {}

  /// @notice `msg.sender` approves `_addr` to spend `_value` tokens
  /// @param _spender The address of the account able to transfer the tokens
  /// @param _value The amount of wei to be approved for transfer
  /// @return Whether the approval was successful or not
  function approve(address _spender,uint256 _value) returns (bool success) {}

  /// @param _owner The address of the account owning tokens
  /// @param _spender The address of the account able to transfer the tokens
  /// @return Amount of remaining tokens allowed to spent
  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);

  uint decimals;
  string name;
}

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


  function safeDiv(uint a,uint b) internal returns (uint) {
    uint 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;
  }

}

contract ShortOrder is SafeMath {

  address admin;

  struct Order {
    uint coupon;
    uint balance;
    bool tokenDeposit;
    mapping (address => uint) shortBalance;
    mapping (address => uint) longBalance;
  }

  mapping (address => mapping (bytes32 => Order)) orderRecord;

  event TokenFulfillment(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs,uint amount);
  event CouponDeposit(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs,uint value);
  event LongPlace(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs,uint value);
  event LongBought(address[2] sellerShort,uint[5] amountNonceExpiryDM,uint8 v,bytes32[3] hashRS,uint value);
  event TokenLongExercised(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs,uint couponAmount,uint amount);
  event EthLongExercised(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs,uint couponAmount,uint amount);
  event DonationClaimed(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs,uint coupon,uint balance);
  event NonActivationWithdrawal(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs,uint coupon);
  event ActivationWithdrawal(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs,uint balance);

  modifier onlyAdmin() {
    require(msg.sender == admin);
    _;
  }

  function ShortOrder() {
    admin = msg.sender;
  }

  function changeAdmin(address _admin) external onlyAdmin {
    admin = _admin;
  }

  function tokenFulfillmentDeposit(address[2] tokenUser,uint amount,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs) external {
    bytes32 orderHash = keccak256 (
        tokenUser[0],
        tokenUser[1],
        minMaxDMWCPNonce[0],
        minMaxDMWCPNonce[1],
        minMaxDMWCPNonce[2], 
        minMaxDMWCPNonce[3],
        minMaxDMWCPNonce[4],
        minMaxDMWCPNonce[5],
        minMaxDMWCPNonce[6], 
        minMaxDMWCPNonce[7]
      );
    require(
      ecrecover(keccak256("\x19Ethereum Signed Message:\n32",orderHash),v,rs[0],rs[1]) == msg.sender &&
      block.number > minMaxDMWCPNonce[2] &&
      block.number <= minMaxDMWCPNonce[3] && 
      orderRecord[tokenUser[1]][orderHash].balance >= minMaxDMWCPNonce[0] &&
      amount == safeMul(orderRecord[msg.sender][orderHash].balance,minMaxDMWCPNonce[6]) &&
      !orderRecord[msg.sender][orderHash].tokenDeposit
    );
    Token(tokenUser[0]).transferFrom(msg.sender,this,amount);
    orderRecord[msg.sender][orderHash].shortBalance[tokenUser[0]] = safeAdd(orderRecord[msg.sender][orderHash].shortBalance[tokenUser[0]],amount);
    orderRecord[msg.sender][orderHash].tokenDeposit = true;
    TokenFulfillment(tokenUser,minMaxDMWCPNonce,v,rs,amount);
  }
 
  function depositCoupon(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs) external payable {
    bytes32 orderHash = keccak256 (
        tokenUser[0],
        tokenUser[1],
        minMaxDMWCPNonce[0],
        minMaxDMWCPNonce[1],
        minMaxDMWCPNonce[2], 
        minMaxDMWCPNonce[3],
        minMaxDMWCPNonce[4],
        minMaxDMWCPNonce[5],
        minMaxDMWCPNonce[6], 
        minMaxDMWCPNonce[7]
      );
    require(
      ecrecover(keccak256("\x19Ethereum Signed Message:\n32",orderHash),v,rs[0],rs[1]) == msg.sender &&
      msg.value == minMaxDMWCPNonce[5] &&
      block.number <= minMaxDMWCPNonce[2]
    );
    orderRecord[msg.sender][orderHash].coupon = safeAdd(orderRecord[msg.sender][orderHash].coupon,msg.value);
    CouponDeposit(tokenUser,minMaxDMWCPNonce,v,rs,msg.value);
  }

  function placeLong(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs) external payable {
    bytes32 orderHash = keccak256 (
        tokenUser[0],
        tokenUser[1],
        minMaxDMWCPNonce[0],
        minMaxDMWCPNonce[1],
        minMaxDMWCPNonce[2], 
        minMaxDMWCPNonce[3],
        minMaxDMWCPNonce[4],
        minMaxDMWCPNonce[5],
        minMaxDMWCPNonce[6], 
        minMaxDMWCPNonce[7]
      );
    require(
      ecrecover(keccak256("\x19Ethereum Signed Message:\n32",orderHash),v,rs[0],rs[1]) == tokenUser[1] &&
      block.number <= minMaxDMWCPNonce[2] &&
      orderRecord[tokenUser[1]][orderHash].coupon == minMaxDMWCPNonce[5] &&
      orderRecord[tokenUser[1]][orderHash].balance <= minMaxDMWCPNonce[1]
    );
    orderRecord[tokenUser[1]][orderHash].longBalance[msg.sender] = safeAdd(orderRecord[tokenUser[1]][orderHash].longBalance[msg.sender],msg.value);
    orderRecord[tokenUser[1]][orderHash].balance = safeAdd(orderRecord[tokenUser[1]][orderHash].balance,msg.value);
    LongPlace(tokenUser,minMaxDMWCPNonce,v,rs,msg.value);
  }
  
  function buyLong(address[2] sellerShort,uint[5] amountNonceExpiryDM,uint8 v,bytes32[3] hashRS) external payable {
    bytes32 longTransferHash = keccak256 (
        sellerShort[0],
        amountNonceExpiryDM[0],
        amountNonceExpiryDM[1],
        amountNonceExpiryDM[2]
    );
    require(
      ecrecover(keccak256("\x19Ethereum Signed Message:\n32",longTransferHash),v,hashRS[1],hashRS[2]) == sellerShort[1] &&
      block.number > amountNonceExpiryDM[3] &&
      block.number <= safeSub(amountNonceExpiryDM[4],amountNonceExpiryDM[2]) &&
      msg.value == amountNonceExpiryDM[0]
    );
    sellerShort[0].transfer(amountNonceExpiryDM[0]);
    orderRecord[sellerShort[1]][hashRS[0]].longBalance[msg.sender] = orderRecord[sellerShort[1]][hashRS[0]].longBalance[sellerShort[0]];
    orderRecord[sellerShort[1]][hashRS[0]].longBalance[sellerShort[0]] = uint(0);
    LongBought(sellerShort,amountNonceExpiryDM,v,hashRS,amountNonceExpiryDM[0]);
  }

  function exerciseLong(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs) external {
    bytes32 orderHash = keccak256 (
        tokenUser[0],
        tokenUser[1],
        minMaxDMWCPNonce[0],
        minMaxDMWCPNonce[1],
        minMaxDMWCPNonce[2], 
        minMaxDMWCPNonce[3],
        minMaxDMWCPNonce[4],
        minMaxDMWCPNonce[5],
        minMaxDMWCPNonce[6], 
        minMaxDMWCPNonce[7]
      );
    require(
      ecrecover(keccak256("\x19Ethereum Signed Message:\n32",orderHash),v,rs[0],rs[1]) == tokenUser[1] &&
      block.number > minMaxDMWCPNonce[3] &&
      block.number <= minMaxDMWCPNonce[4] &&
      orderRecord[tokenUser[1]][orderHash].balance >= minMaxDMWCPNonce[0]
    );
    uint couponProportion = safeDiv(orderRecord[tokenUser[1]][orderHash].longBalance[msg.sender],orderRecord[tokenUser[1]][orderHash].balance);
    uint couponAmount;
    if(orderRecord[msg.sender][orderHash].tokenDeposit) {
      couponAmount = safeMul(orderRecord[tokenUser[1]][orderHash].coupon,couponProportion);
      uint amount = safeMul(orderRecord[tokenUser[1]][orderHash].longBalance[msg.sender],minMaxDMWCPNonce[6]);
      msg.sender.transfer(couponAmount);
      Token(tokenUser[0]).transfer(msg.sender,amount);
      orderRecord[tokenUser[1]][orderHash].coupon = safeSub(orderRecord[tokenUser[1]][orderHash].coupon,couponAmount);
      orderRecord[tokenUser[1]][orderHash].balance = safeSub(orderRecord[tokenUser[1]][orderHash].balance,orderRecord[tokenUser[1]][orderHash].longBalance[msg.sender]);
      orderRecord[tokenUser[1]][orderHash].shortBalance[tokenUser[0]] = safeSub(orderRecord[tokenUser[1]][orderHash].shortBalance[tokenUser[0]],amount);
      orderRecord[tokenUser[1]][orderHash].longBalance[msg.sender] = uint(0);
      TokenLongExercised(tokenUser,minMaxDMWCPNonce,v,rs,couponAmount,amount);
    }
    else if(!orderRecord[msg.sender][orderHash].tokenDeposit){
      couponAmount = safeMul(orderRecord[tokenUser[1]][orderHash].coupon,couponProportion);
      msg.sender.transfer(safeAdd(couponAmount,orderRecord[tokenUser[1]][orderHash].longBalance[msg.sender]));
      orderRecord[tokenUser[1]][orderHash].coupon = safeSub(orderRecord[tokenUser[1]][orderHash].coupon,couponAmount);
      orderRecord[tokenUser[1]][orderHash].balance = safeSub(orderRecord[tokenUser[1]][orderHash].balance,orderRecord[tokenUser[1]][orderHash].longBalance[msg.sender]);
      orderRecord[tokenUser[1]][orderHash].longBalance[msg.sender] = uint(0); 
      EthLongExercised(tokenUser,minMaxDMWCPNonce,v,rs,couponAmount,orderRecord[tokenUser[1]][orderHash].longBalance[msg.sender]);
    }
  }

  function claimDonations(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs) external onlyAdmin {
    bytes32 orderHash = keccak256 (
        tokenUser[0],
        tokenUser[1],
        minMaxDMWCPNonce[0],
        minMaxDMWCPNonce[1],
        minMaxDMWCPNonce[2], 
        minMaxDMWCPNonce[3],
        minMaxDMWCPNonce[4],
        minMaxDMWCPNonce[5],
        minMaxDMWCPNonce[6], 
        minMaxDMWCPNonce[7]
      );
    require(
      ecrecover(keccak256("\x19Ethereum Signed Message:\n32",orderHash),v,rs[0],rs[1]) == tokenUser[1] &&
      block.number > minMaxDMWCPNonce[4]
    );
    admin.transfer(safeAdd(orderRecord[tokenUser[1]][orderHash].coupon,orderRecord[tokenUser[1]][orderHash].balance));
    Token(tokenUser[0]).transfer(admin,orderRecord[tokenUser[1]][orderHash].shortBalance[tokenUser[0]]);
    orderRecord[tokenUser[1]][orderHash].balance = uint(0);
    orderRecord[tokenUser[1]][orderHash].coupon = uint(0);
    orderRecord[tokenUser[1]][orderHash].shortBalance[tokenUser[0]] = uint(0);
    DonationClaimed(tokenUser,minMaxDMWCPNonce,v,rs,orderRecord[tokenUser[1]][orderHash].coupon,orderRecord[tokenUser[1]][orderHash].balance);
  }

  function nonActivationShortWithdrawal(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs) external {
    bytes32 orderHash = keccak256 (
        tokenUser[0],
        tokenUser[1],
        minMaxDMWCPNonce[0],
        minMaxDMWCPNonce[1],
        minMaxDMWCPNonce[2], 
        minMaxDMWCPNonce[3],
        minMaxDMWCPNonce[4],
        minMaxDMWCPNonce[5],
        minMaxDMWCPNonce[6], 
        minMaxDMWCPNonce[7]
      );
    require(
      ecrecover(keccak256("\x19Ethereum Signed Message:\n32",orderHash),v,rs[0],rs[1]) == msg.sender &&
      block.number > minMaxDMWCPNonce[2] &&
      orderRecord[tokenUser[1]][orderHash].balance < minMaxDMWCPNonce[0]
    );
    msg.sender.transfer(orderRecord[msg.sender][orderHash].coupon);
    orderRecord[msg.sender][orderHash].coupon = uint(0);
    NonActivationWithdrawal(tokenUser,minMaxDMWCPNonce,v,rs,orderRecord[msg.sender][orderHash].coupon);
  }

  function nonActivationWithdrawal(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs) external {
    bytes32 orderHash = keccak256 (
        tokenUser[0],
        tokenUser[1],
        minMaxDMWCPNonce[0],
        minMaxDMWCPNonce[1],
        minMaxDMWCPNonce[2], 
        minMaxDMWCPNonce[3],
        minMaxDMWCPNonce[4],
        minMaxDMWCPNonce[5],
        minMaxDMWCPNonce[6], 
        minMaxDMWCPNonce[7]
      );
    require(
      ecrecover(keccak256("\x19Ethereum Signed Message:\n32",orderHash),v,rs[0],rs[1]) == tokenUser[1] &&
      block.number > minMaxDMWCPNonce[2] &&
      block.number <= minMaxDMWCPNonce[4] &&
      orderRecord[tokenUser[1]][orderHash].balance < minMaxDMWCPNonce[0]
    );
    msg.sender.transfer(orderRecord[tokenUser[1]][orderHash].longBalance[msg.sender]);
    orderRecord[tokenUser[1]][orderHash].balance = safeSub(orderRecord[tokenUser[1]][orderHash].balance,orderRecord[tokenUser[1]][orderHash].longBalance[msg.sender]);
    orderRecord[tokenUser[1]][orderHash].longBalance[msg.sender] = uint(0);
    ActivationWithdrawal(tokenUser,minMaxDMWCPNonce,v,rs,orderRecord[tokenUser[1]][orderHash].longBalance[msg.sender]);
  }

  function returnBalance(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs) external constant returns (uint) {
    bytes32 orderHash = keccak256 (
        tokenUser[0],
        tokenUser[1],
        minMaxDMWCPNonce[0],
        minMaxDMWCPNonce[1],
        minMaxDMWCPNonce[2], 
        minMaxDMWCPNonce[3],
        minMaxDMWCPNonce[4],
        minMaxDMWCPNonce[5],
        minMaxDMWCPNonce[6], 
        minMaxDMWCPNonce[7]
      );
    require(ecrecover(keccak256("\x19Ethereum Signed Message:\n32",orderHash),v,rs[0],rs[1]) == tokenUser[1]);
    return orderRecord[tokenUser[1]][orderHash].balance;
  }

  function returnTokenBalance(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs) external constant returns (uint) {
    bytes32 orderHash = keccak256 (
        tokenUser[0],
        tokenUser[1],
        minMaxDMWCPNonce[0],
        minMaxDMWCPNonce[1],
        minMaxDMWCPNonce[2], 
        minMaxDMWCPNonce[3],
        minMaxDMWCPNonce[4],
        minMaxDMWCPNonce[5],
        minMaxDMWCPNonce[6], 
        minMaxDMWCPNonce[7]
      );
    require(ecrecover(keccak256("\x19Ethereum Signed Message:\n32",orderHash),v,rs[0],rs[1]) == tokenUser[1]);
    return orderRecord[tokenUser[1]][orderHash].shortBalance[tokenUser[1]];
  }

  function returnUserBalance(address _user,address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs) external constant returns (uint) {
    bytes32 orderHash = keccak256 (
        tokenUser[0],
        tokenUser[1],
        minMaxDMWCPNonce[0],
        minMaxDMWCPNonce[1],
        minMaxDMWCPNonce[2], 
        minMaxDMWCPNonce[3],
        minMaxDMWCPNonce[4],
        minMaxDMWCPNonce[5],
        minMaxDMWCPNonce[6], 
        minMaxDMWCPNonce[7]
      );
    require(ecrecover(keccak256("\x19Ethereum Signed Message:\n32",orderHash),v,rs[0],rs[1]) == tokenUser[1]);
    return orderRecord[tokenUser[1]][orderHash].longBalance[_user];
  }

  function returnCoupon(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs) external constant returns (uint) {
    bytes32 orderHash = keccak256 (
        tokenUser[0],
        tokenUser[1],
        minMaxDMWCPNonce[0],
        minMaxDMWCPNonce[1],
        minMaxDMWCPNonce[2], 
        minMaxDMWCPNonce[3],
        minMaxDMWCPNonce[4],
        minMaxDMWCPNonce[5],
        minMaxDMWCPNonce[6], 
        minMaxDMWCPNonce[7]
      );
    require(ecrecover(keccak256("\x19Ethereum Signed Message:\n32",orderHash),v,rs[0],rs[1]) == tokenUser[1]);
    return orderRecord[tokenUser[1]][orderHash].coupon;
  }

  function returnTokenDepositState(address[2] tokenUser,uint[8] minMaxDMWCPNonce,uint8 v,bytes32[2] rs) external constant returns (bool) {
    bytes32 orderHash = keccak256 (
        tokenUser[0],
        tokenUser[1],
        minMaxDMWCPNonce[0],
        minMaxDMWCPNonce[1],
        minMaxDMWCPNonce[2], 
        minMaxDMWCPNonce[3],
        minMaxDMWCPNonce[4],
        minMaxDMWCPNonce[5],
        minMaxDMWCPNonce[6], 
        minMaxDMWCPNonce[7]
      );
    require(ecrecover(keccak256("\x19Ethereum Signed Message:\n32",orderHash),v,rs[0],rs[1]) == tokenUser[1]);
    return orderRecord[tokenUser[1]][orderHash].tokenDeposit;
  }
 
  function returnHash(address[2] tokenUser,uint[8] minMaxDMWCPNonce)  external pure returns (bytes32) {
    return  
      keccak256 (
        tokenUser[0],
        tokenUser[1],
        minMaxDMWCPNonce[0],
        minMaxDMWCPNonce[1],
        minMaxDMWCPNonce[2], 
        minMaxDMWCPNonce[3],
        minMaxDMWCPNonce[4],
        minMaxDMWCPNonce[5],
        minMaxDMWCPNonce[6], 
        minMaxDMWCPNonce[7]
      );
  }


  function returnAddress(bytes32 orderHash,uint8 v,bytes32[2] rs) external pure returns (address) {
    return ecrecover(orderHash,v,rs[0],rs[1]);
  }

  function returnHashLong(address seller,uint[3] amountNonceExpiry)  external pure returns (bytes32) {
    return keccak256(seller,amountNonceExpiry[0],amountNonceExpiry[1],amountNonceExpiry[2]);
  }

  function returnLongAddress(bytes32 orderHash,uint8 v,bytes32[2] rs) external pure returns (address) {
    return ecrecover(orderHash,v,rs[0],rs[1]);
  }

}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"tokenUser","type":"address[2]"},{"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"name":"v","type":"uint8"},{"name":"rs","type":"bytes32[2]"}],"name":"claimDonations","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenUser","type":"address[2]"},{"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"name":"v","type":"uint8"},{"name":"rs","type":"bytes32[2]"}],"name":"returnTokenDepositState","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"sellerShort","type":"address[2]"},{"name":"amountNonceExpiryDM","type":"uint256[5]"},{"name":"v","type":"uint8"},{"name":"hashRS","type":"bytes32[3]"}],"name":"buyLong","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"tokenUser","type":"address[2]"},{"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"name":"v","type":"uint8"},{"name":"rs","type":"bytes32[2]"}],"name":"returnBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenUser","type":"address[2]"},{"name":"minMaxDMWCPNonce","type":"uint256[8]"}],"name":"returnHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"tokenUser","type":"address[2]"},{"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"name":"v","type":"uint8"},{"name":"rs","type":"bytes32[2]"}],"name":"returnCoupon","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenUser","type":"address[2]"},{"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"name":"v","type":"uint8"},{"name":"rs","type":"bytes32[2]"}],"name":"returnTokenBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenUser","type":"address[2]"},{"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"name":"v","type":"uint8"},{"name":"rs","type":"bytes32[2]"}],"name":"exerciseLong","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenUser","type":"address[2]"},{"name":"amount","type":"uint256"},{"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"name":"v","type":"uint8"},{"name":"rs","type":"bytes32[2]"}],"name":"tokenFulfillmentDeposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenUser","type":"address[2]"},{"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"name":"v","type":"uint8"},{"name":"rs","type":"bytes32[2]"}],"name":"nonActivationShortWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"},{"name":"tokenUser","type":"address[2]"},{"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"name":"v","type":"uint8"},{"name":"rs","type":"bytes32[2]"}],"name":"returnUserBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_admin","type":"address"}],"name":"changeAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenUser","type":"address[2]"},{"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"name":"v","type":"uint8"},{"name":"rs","type":"bytes32[2]"}],"name":"placeLong","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"orderHash","type":"bytes32"},{"name":"v","type":"uint8"},{"name":"rs","type":"bytes32[2]"}],"name":"returnLongAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"seller","type":"address"},{"name":"amountNonceExpiry","type":"uint256[3]"}],"name":"returnHashLong","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"tokenUser","type":"address[2]"},{"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"name":"v","type":"uint8"},{"name":"rs","type":"bytes32[2]"}],"name":"depositCoupon","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"tokenUser","type":"address[2]"},{"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"name":"v","type":"uint8"},{"name":"rs","type":"bytes32[2]"}],"name":"nonActivationWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"orderHash","type":"bytes32"},{"name":"v","type":"uint8"},{"name":"rs","type":"bytes32[2]"}],"name":"returnAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenUser","type":"address[2]"},{"indexed":false,"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"indexed":false,"name":"v","type":"uint8"},{"indexed":false,"name":"rs","type":"bytes32[2]"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenFulfillment","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenUser","type":"address[2]"},{"indexed":false,"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"indexed":false,"name":"v","type":"uint8"},{"indexed":false,"name":"rs","type":"bytes32[2]"},{"indexed":false,"name":"value","type":"uint256"}],"name":"CouponDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenUser","type":"address[2]"},{"indexed":false,"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"indexed":false,"name":"v","type":"uint8"},{"indexed":false,"name":"rs","type":"bytes32[2]"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LongPlace","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sellerShort","type":"address[2]"},{"indexed":false,"name":"amountNonceExpiryDM","type":"uint256[5]"},{"indexed":false,"name":"v","type":"uint8"},{"indexed":false,"name":"hashRS","type":"bytes32[3]"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LongBought","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenUser","type":"address[2]"},{"indexed":false,"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"indexed":false,"name":"v","type":"uint8"},{"indexed":false,"name":"rs","type":"bytes32[2]"},{"indexed":false,"name":"couponAmount","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenLongExercised","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenUser","type":"address[2]"},{"indexed":false,"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"indexed":false,"name":"v","type":"uint8"},{"indexed":false,"name":"rs","type":"bytes32[2]"},{"indexed":false,"name":"couponAmount","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EthLongExercised","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenUser","type":"address[2]"},{"indexed":false,"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"indexed":false,"name":"v","type":"uint8"},{"indexed":false,"name":"rs","type":"bytes32[2]"},{"indexed":false,"name":"coupon","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"DonationClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenUser","type":"address[2]"},{"indexed":false,"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"indexed":false,"name":"v","type":"uint8"},{"indexed":false,"name":"rs","type":"bytes32[2]"},{"indexed":false,"name":"coupon","type":"uint256"}],"name":"NonActivationWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenUser","type":"address[2]"},{"indexed":false,"name":"minMaxDMWCPNonce","type":"uint256[8]"},{"indexed":false,"name":"v","type":"uint8"},{"indexed":false,"name":"rs","type":"bytes32[2]"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"ActivationWithdrawal","type":"event"}]

6060604052341561000f57600080fd5b60008054600160a060020a033316600160a060020a03199091161790556129138061003b6000396000f3006060604052600436106100e25763ffffffff60e060020a600035041663029a258a81146100e7578063083d13c41461010a5780631761eab41461013f5780631db4d7a21461015457806321b8d973146101875780632cc633321461019e5780635003d58f146101bf578063677ffb0d146101e057806375426ec814610201578063759f8712146102255780637c07329f146102465780638f283970146102735780639b0f251014610292578063c855d689146102a8578063cb238ffa146102e2578063cbb9dbb914610303578063e7ebc34814610319578063f80b3564146102a8575b600080fd5b34156100f257600080fd5b6101086004604460ff610144351661016461033a565b005b341561011557600080fd5b61012b6004604460ff610144351661016461069c565b604051901515815260200160405180910390f35b6101086004604460ff60e43516610104610835565b341561015f57600080fd5b6101756004604460ff6101443516610164610a76565b60405190815260200160405180910390f35b341561019257600080fd5b61017560046044610c0b565b34156101a957600080fd5b6101756004604460ff6101443516610164610cb6565b34156101ca57600080fd5b6101756004604460ff6101443516610164610e49565b34156101eb57600080fd5b6101086004604460ff6101443516610164610fe9565b341561020c57600080fd5b6101086004604435606460ff6101643516610184611700565b341561023057600080fd5b6101086004604460ff6101443516610164611ab0565b341561025157600080fd5b610175600160a060020a03600435166024606460ff6101643516610184611d3a565b341561027e57600080fd5b610108600160a060020a0360043516611edd565b6101086004604460ff6101443516610164611f27565b34156102b357600080fd5b6102c660043560ff602435166044612236565b604051600160a060020a03909116815260200160405180910390f35b34156102ed57600080fd5b610175600160a060020a036004351660246122b3565b6101086004604460ff61014435166101646122fe565b341561032457600080fd5b6101086004604460ff6101443516610164612549565b6000805433600160a060020a0390811691161461035657600080fd5b600160a060020a038535811690602080880135909116908635908701356040808901359060608a01359060808b01359060a08c01359060c08d01359060e08e01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020860135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902085853560208701356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561049a57600080fd5b505060206040510351600160a060020a03161480156104bc5750608084013543115b15156104c757600080fd5b60008054600160a060020a036020888101358216845260018082526040808620878752909252932080549301549116916108fc916105059190612859565b9081150290604051600060405180830381858888f19350505050151561052a57600080fd5b60008054600160a060020a036020888101358216845260018152604080852086865282528085208a358416808752600390910190925280852054919463a9059cbb94939093169290516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156105ba57600080fd5b6102c65a03f115156105cb57600080fd5b50505060405180515050600160a060020a0360208681013582166000908152600180835260408083208684528085528184209283018490558383558a35909516835260039091018352808220829055848252929091527fccc39b5d77815363b05ea2291cc2f2278552a25a43ffe16fc4748f7731b071bd91879187918791879181905180876040808284379091019050866101008082843760ff8816920191825250602001846040808284379091019384525050602082015260409081019450925050505180910390a15050505050565b600080600160a060020a038635811690602080890135909116908735908801356040808a01359060608b01359060808c01359060a08d01359060c08e01359060e08f01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020870135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902086863560208801356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f115156107e357600080fd5b505060206040510351600160a060020a0316146107ff57600080fd5b600160a060020a03602096870135166000908152600187526040808220928252919096529094206002015460ff16949350505050565b60008435600160a060020a0316843560208601356040808801359051600160a060020a0394909416606060020a0284526014840192909252603483015260548201526074016040519081900390209050600160a060020a036020860135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902085602086013560408088013590516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561092857600080fd5b505060206040510351600160a060020a031614801561094a5750606084013543115b801561096757506109636080850135604086013561287d565b4311155b80156109735750348435145b151561097e57600080fd5b600160a060020a03853516843580156108fc0290604051600060405180830381858888f1935050505015156109b257600080fd5b600160a060020a03602086810135821660009081526001825260408082208635835283528082208935851680845260049091019093528082208054339095168352818320949094559181529091557ff605ef93412e5b5a6a9312a0f19290b32a103236ab4022d3adcdc6bd4845e0d090869086908690869083359051808660408082843790910190508560a08082843760ff871692019182525060200183606080828437909101928352505060200193506040925050505180910390a15050505050565b600080600160a060020a038635811690602080890135909116908735908801356040808a01359060608b01359060808c01359060a08d01359060c08e01359060e08f01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020870135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902086863560208801356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515610bbd57600080fd5b505060206040510351600160a060020a031614610bd957600080fd5b600160a060020a0360209687013516600090815260018088526040808320938352929097522090940154949350505050565b6000600160a060020a038335811690602080860135909116908435908501356040808701359060608801359060808901359060a08a01359060c08b01359060e08c01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040518091039020905092915050565b600080600160a060020a038635811690602080890135909116908735908801356040808a01359060608b01359060808c01359060a08d01359060c08e01359060e08f01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020870135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902086863560208801356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515610dfd57600080fd5b505060206040510351600160a060020a031614610e1957600080fd5b600160a060020a036020968701351660009081526001875260408082209282529190965290942054949350505050565b600080600160a060020a038635811690602080890135909116908735908801356040808a01359060608b01359060808c01359060a08d01359060c08e01359060e08f01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020870135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902086863560208801356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515610f9057600080fd5b505060206040510351600160a060020a031614610fac57600080fd5b600160a060020a03602096870135166000818152600188526040808220938252928852828120918152600390910190965290942054949350505050565b6000808080600160a060020a03883581169060208a0135168883602002013589600160200201358a600260200201358b600360200201358c600460200201358d600560200201358e600660200201358f60076020020135604051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209350600160a060020a036020890135166001856040516000805160206128c88339815191528152601c810191909152603c0160405190819003902088883560208a01356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561114457600080fd5b505060206040510351600160a060020a03161480156111665750606087013543115b8015611176575060808701354311155b80156111ac5750602088810135600160a060020a0316600090815260018083526040808320888452909352919020015487359010155b15156111b757600080fd5b600160a060020a0360208981013582166000908152600180835260408083208984528085528184203390961684526004860185529083205492899052909252910154611203919061288f565b600160a060020a033316600090815260016020908152604080832088845290915290206002015490935060ff161561154e57611274600160008a825b60209081029190910135600160a060020a031682528181019290925260409081016000908120888252909252902054846128a6565b600160a060020a0360208a810135821660009081526001825260408082208983528352808220339094168252600490930190915220549092506112bf908860065b60200201356128a6565b9050600160a060020a03331682156108fc0283604051600060405180830381858888f1935050505015156112f257600080fd5b600160a060020a0388351663a9059cbb338360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561135057600080fd5b6102c65a03f1151561136157600080fd5b5050506040518051506113ab9050600160008a825b60209081029190910135600160a060020a0316825281810192909252604090810160009081208882529092529020548361287d565b602089810135600160a060020a03166000908152600180835260408083208984529093529181209290925561143e918a825b600160a060020a036020918202929092013582168352828101939093526040918201600090812089825284528281206001908101548e860135841683529085528382208a83528552838220339093168252600490920190935291205461287d565b600160a060020a036020808b013582166000908152600180835260408083208a84528452808320918201959095558c359093168152600390920190522054611486908261287d565b600160a060020a0360208a8101358216600090815260018252604080822089835283528082208d35851683526003810184528183209590955533909316815260049093019052808220919091557fde589fa907f601b87c039507bff3281d5938e26a86495def9ae6f13569b3c43e908990899089908990879087905180876040808284379091019050866101008082843760ff8816920191825250602001846040808284379091019384525050602082015260409081019450925050505180910390a16116f6565b600160a060020a033316600090815260016020908152604080832087845290915290206002015460ff1615156116f65761158c600160008a8261123f565b600160a060020a0360208a8101358216600090815260018252604080822089835283528082203390941680835260049094019092522054919350906108fc906115d6908590612859565b9081150290604051600060405180830381858888f1935050505015156115fb57600080fd5b611609600160008a82611376565b602089810135600160a060020a03166000908152600180835260408083208984529093529181209290925561163f918a826113dd565b600160a060020a0360208a81013582166000908152600180835260408083208a8452845280832091820195909555339093168152600490920190528181208190557f1ebe182708a0deead60af831ebd47c1ea1649eef95ecf2d6218486603b138d65918a918a918a918a918891905180876040808284379091019050866101008082843760ff8816920191825250602001846040808284379091019384525050602082015260409081019450925050505180910390a15b5050505050505050565b6000600160a060020a038635811690602080890135909116908635908701356040808901359060608a01359060808b01359060a08c01359060c08d01359060e08e01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040518091039020905033600160a060020a03166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902085853560208701356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561184157600080fd5b505060206040510351600160a060020a03161480156118635750604084013543115b8015611873575060608401354311155b80156118a95750602086810135600160a060020a0316600090815260018083526040808320858452909352919020015484359010155b80156118e55750600160a060020a033316600090815260016020818152604080842085855290915290912001546118e2908560066112b5565b85145b80156119185750600160a060020a033316600090815260016020908152604080832084845290915290206002015460ff16155b151561192357600080fd5b600160a060020a038635166323b872dd33308860006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561198e57600080fd5b6102c65a03f1151561199f57600080fd5b50505060405180515050600160a060020a03338116600090815260016020908152604080832085845282528083208a3590941683526003909301905220546119e79086612859565b600160a060020a0333811660009081526001602081815260408084208785528083528185208d3590961685526003860183528185209690965592869052939093526002909101805460ff19169092179091557fee15b84b8991a780bb67b11208c7b64d0b49609145d47cef3e3c69d61dd16b769087908690869086908a905180866040808284379091019050856101008082843760ff871692019182525060200183604080828437909101928352505060200193506040925050505180910390a1505050505050565b6000600160a060020a038535811690602080880135909116908635908701356040808901359060608a01359060808b01359060a08c01359060c08d01359060e08e01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040518091039020905033600160a060020a03166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902085853560208701356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515611bf157600080fd5b505060206040510351600160a060020a0316148015611c135750604084013543115b8015611c485750602085810135600160a060020a03166000908152600180835260408083208584529093529190200154843590105b1515611c5357600080fd5b600160a060020a0333166000818152600160209081526040808320858452909152908190205480156108fc029151600060405180830381858888f193505050501515611c9e57600080fd5b33600160a060020a031660009081526001602090815260408083208484529091528082208290557fc9b676275d22815f16cbb6518594a5a9e9eabdeb28ce293fafcf6844bb758ec1918791879187918791905180866040808284379091019050856101008082843760ff871692019182525060200183604080828437909101928352505060200193506040925050505180910390a15050505050565b600080600160a060020a038635811690602080890135909116908735908801356040808a01359060608b01359060808c01359060a08d01359060c08e01359060e08f01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020870135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902086863560208801356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515611e8157600080fd5b505060206040510351600160a060020a031614611e9d57600080fd5b600160a060020a03602096870135811660009081526001885260408082209382529288528281209890911681526004909701909552505050912054919050565b60005433600160a060020a03908116911614611ef857600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000600160a060020a038535811690602080880135909116908635908701356040808901359060608a01359060808b01359060a08c01359060c08d01359060e08e01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020860135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902085853560208701356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561206d57600080fd5b505060206040510351600160a060020a0316148015612090575060408401354311155b80156120c35750602085810135600160a060020a03166000908152600182526040808220848352909252205460a0850135145b80156120fa5750602085810135600160a060020a031660009081526001808352604080832085845284529091200154908501359011155b151561210557600080fd5b600160a060020a03602086810135821660009081526001825260408082208583528352808220339094168252600490930190915220546121459034612859565b600160a060020a036020878101358216600090815260018083526040808320878452808552818420339096168452600486018552908320959095559085905292905201546121939034612859565b602086810135600160a060020a03166000908152600180835260408083208684529093529082902001919091557fc7c6939c4d1211acc2da99724ad3f4469337ed2361278e02ecb656eb6f29e64190869086908690869034905180866040808284379091019050856101008082843760ff871692019182525060200183604080828437909101928352505060200193506040925050505180910390a15050505050565b600060018484843560208601356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f115156122a257600080fd5b505060206040510351949350505050565b600082823560208401356040808601359051600160a060020a0394909416606060020a0284526014840192909252603483015260548201526074016040518091039020905092915050565b6000600160a060020a038535811690602080880135909116908635908701356040808901359060608a01359060808b01359060a08c01359060c08d01359060e08e01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040518091039020905033600160a060020a03166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902085853560208701356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561243f57600080fd5b505060206040510351600160a060020a031614801561246157503460a0850135145b8015612471575060408401354311155b151561247c57600080fd5b600160a060020a03331660009081526001602090815260408083208484529091529020546124aa9034612859565b600160a060020a033316600090815260016020908152604080832085845290915290819020919091557f2703506fe210c461c5a70d7bfad516e9d00eebfaabc514af1282c00e2341659590869086908690869034905180866040808284379091019050856101008082843760ff871692019182525060200183604080828437909101928352505060200193506040925050505180910390a15050505050565b6000600160a060020a038535811690602080880135909116908635908701356040808901359060608a01359060808b01359060a08c01359060c08d01359060e08e01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020860135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902085853560208701356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561268f57600080fd5b505060206040510351600160a060020a03161480156126b15750604084013543115b80156126c1575060808401354311155b80156126f65750602085810135600160a060020a03166000908152600180835260408083208584529093529190200154843590105b151561270157600080fd5b600160a060020a03602086810135821660009081526001825260408082208583528352808220339094168083526004909401909252819020546108fc8115029151600060405180830381858888f19350505050151561275f57600080fd5b600160a060020a036020808701358216600090815260018083526040808320868452845280832091820154339095168352600490910190925220546127a4919061287d565b600160a060020a036020878101358216600090815260018083526040808320878452845280832091820195909555339093168152600490920190528181208190557f0b40fb509a6269b60350756d2bfdf96ce157dbb850fc7aa52564cff21fb3bf1b9187918791879187915180866040808284379091019050856101008082843760ff871692019182525060200183604080828437909101928352505060200193506040925050505180910390a15050505050565b600082820183811080159061286e5750828110155b151561287657fe5b9392505050565b60008282111561288957fe5b50900390565b600080828481151561289d57fe5b04949350505050565b600082820283158061286e57508284828115156128bf57fe5b041461287657fe0019457468657265756d205369676e6564204d6573736167653a0a333200000000a165627a7a72305820b6bb43103e2ced13ca5079388013a8450d309ce17d16922df3a0046c6e0db7580029

Deployed Bytecode

0x6060604052600436106100e25763ffffffff60e060020a600035041663029a258a81146100e7578063083d13c41461010a5780631761eab41461013f5780631db4d7a21461015457806321b8d973146101875780632cc633321461019e5780635003d58f146101bf578063677ffb0d146101e057806375426ec814610201578063759f8712146102255780637c07329f146102465780638f283970146102735780639b0f251014610292578063c855d689146102a8578063cb238ffa146102e2578063cbb9dbb914610303578063e7ebc34814610319578063f80b3564146102a8575b600080fd5b34156100f257600080fd5b6101086004604460ff610144351661016461033a565b005b341561011557600080fd5b61012b6004604460ff610144351661016461069c565b604051901515815260200160405180910390f35b6101086004604460ff60e43516610104610835565b341561015f57600080fd5b6101756004604460ff6101443516610164610a76565b60405190815260200160405180910390f35b341561019257600080fd5b61017560046044610c0b565b34156101a957600080fd5b6101756004604460ff6101443516610164610cb6565b34156101ca57600080fd5b6101756004604460ff6101443516610164610e49565b34156101eb57600080fd5b6101086004604460ff6101443516610164610fe9565b341561020c57600080fd5b6101086004604435606460ff6101643516610184611700565b341561023057600080fd5b6101086004604460ff6101443516610164611ab0565b341561025157600080fd5b610175600160a060020a03600435166024606460ff6101643516610184611d3a565b341561027e57600080fd5b610108600160a060020a0360043516611edd565b6101086004604460ff6101443516610164611f27565b34156102b357600080fd5b6102c660043560ff602435166044612236565b604051600160a060020a03909116815260200160405180910390f35b34156102ed57600080fd5b610175600160a060020a036004351660246122b3565b6101086004604460ff61014435166101646122fe565b341561032457600080fd5b6101086004604460ff6101443516610164612549565b6000805433600160a060020a0390811691161461035657600080fd5b600160a060020a038535811690602080880135909116908635908701356040808901359060608a01359060808b01359060a08c01359060c08d01359060e08e01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020860135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902085853560208701356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561049a57600080fd5b505060206040510351600160a060020a03161480156104bc5750608084013543115b15156104c757600080fd5b60008054600160a060020a036020888101358216845260018082526040808620878752909252932080549301549116916108fc916105059190612859565b9081150290604051600060405180830381858888f19350505050151561052a57600080fd5b60008054600160a060020a036020888101358216845260018152604080852086865282528085208a358416808752600390910190925280852054919463a9059cbb94939093169290516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156105ba57600080fd5b6102c65a03f115156105cb57600080fd5b50505060405180515050600160a060020a0360208681013582166000908152600180835260408083208684528085528184209283018490558383558a35909516835260039091018352808220829055848252929091527fccc39b5d77815363b05ea2291cc2f2278552a25a43ffe16fc4748f7731b071bd91879187918791879181905180876040808284379091019050866101008082843760ff8816920191825250602001846040808284379091019384525050602082015260409081019450925050505180910390a15050505050565b600080600160a060020a038635811690602080890135909116908735908801356040808a01359060608b01359060808c01359060a08d01359060c08e01359060e08f01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020870135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902086863560208801356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f115156107e357600080fd5b505060206040510351600160a060020a0316146107ff57600080fd5b600160a060020a03602096870135166000908152600187526040808220928252919096529094206002015460ff16949350505050565b60008435600160a060020a0316843560208601356040808801359051600160a060020a0394909416606060020a0284526014840192909252603483015260548201526074016040519081900390209050600160a060020a036020860135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902085602086013560408088013590516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561092857600080fd5b505060206040510351600160a060020a031614801561094a5750606084013543115b801561096757506109636080850135604086013561287d565b4311155b80156109735750348435145b151561097e57600080fd5b600160a060020a03853516843580156108fc0290604051600060405180830381858888f1935050505015156109b257600080fd5b600160a060020a03602086810135821660009081526001825260408082208635835283528082208935851680845260049091019093528082208054339095168352818320949094559181529091557ff605ef93412e5b5a6a9312a0f19290b32a103236ab4022d3adcdc6bd4845e0d090869086908690869083359051808660408082843790910190508560a08082843760ff871692019182525060200183606080828437909101928352505060200193506040925050505180910390a15050505050565b600080600160a060020a038635811690602080890135909116908735908801356040808a01359060608b01359060808c01359060a08d01359060c08e01359060e08f01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020870135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902086863560208801356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515610bbd57600080fd5b505060206040510351600160a060020a031614610bd957600080fd5b600160a060020a0360209687013516600090815260018088526040808320938352929097522090940154949350505050565b6000600160a060020a038335811690602080860135909116908435908501356040808701359060608801359060808901359060a08a01359060c08b01359060e08c01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040518091039020905092915050565b600080600160a060020a038635811690602080890135909116908735908801356040808a01359060608b01359060808c01359060a08d01359060c08e01359060e08f01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020870135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902086863560208801356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515610dfd57600080fd5b505060206040510351600160a060020a031614610e1957600080fd5b600160a060020a036020968701351660009081526001875260408082209282529190965290942054949350505050565b600080600160a060020a038635811690602080890135909116908735908801356040808a01359060608b01359060808c01359060a08d01359060c08e01359060e08f01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020870135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902086863560208801356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515610f9057600080fd5b505060206040510351600160a060020a031614610fac57600080fd5b600160a060020a03602096870135166000818152600188526040808220938252928852828120918152600390910190965290942054949350505050565b6000808080600160a060020a03883581169060208a0135168883602002013589600160200201358a600260200201358b600360200201358c600460200201358d600560200201358e600660200201358f60076020020135604051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209350600160a060020a036020890135166001856040516000805160206128c88339815191528152601c810191909152603c0160405190819003902088883560208a01356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561114457600080fd5b505060206040510351600160a060020a03161480156111665750606087013543115b8015611176575060808701354311155b80156111ac5750602088810135600160a060020a0316600090815260018083526040808320888452909352919020015487359010155b15156111b757600080fd5b600160a060020a0360208981013582166000908152600180835260408083208984528085528184203390961684526004860185529083205492899052909252910154611203919061288f565b600160a060020a033316600090815260016020908152604080832088845290915290206002015490935060ff161561154e57611274600160008a825b60209081029190910135600160a060020a031682528181019290925260409081016000908120888252909252902054846128a6565b600160a060020a0360208a810135821660009081526001825260408082208983528352808220339094168252600490930190915220549092506112bf908860065b60200201356128a6565b9050600160a060020a03331682156108fc0283604051600060405180830381858888f1935050505015156112f257600080fd5b600160a060020a0388351663a9059cbb338360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561135057600080fd5b6102c65a03f1151561136157600080fd5b5050506040518051506113ab9050600160008a825b60209081029190910135600160a060020a0316825281810192909252604090810160009081208882529092529020548361287d565b602089810135600160a060020a03166000908152600180835260408083208984529093529181209290925561143e918a825b600160a060020a036020918202929092013582168352828101939093526040918201600090812089825284528281206001908101548e860135841683529085528382208a83528552838220339093168252600490920190935291205461287d565b600160a060020a036020808b013582166000908152600180835260408083208a84528452808320918201959095558c359093168152600390920190522054611486908261287d565b600160a060020a0360208a8101358216600090815260018252604080822089835283528082208d35851683526003810184528183209590955533909316815260049093019052808220919091557fde589fa907f601b87c039507bff3281d5938e26a86495def9ae6f13569b3c43e908990899089908990879087905180876040808284379091019050866101008082843760ff8816920191825250602001846040808284379091019384525050602082015260409081019450925050505180910390a16116f6565b600160a060020a033316600090815260016020908152604080832087845290915290206002015460ff1615156116f65761158c600160008a8261123f565b600160a060020a0360208a8101358216600090815260018252604080822089835283528082203390941680835260049094019092522054919350906108fc906115d6908590612859565b9081150290604051600060405180830381858888f1935050505015156115fb57600080fd5b611609600160008a82611376565b602089810135600160a060020a03166000908152600180835260408083208984529093529181209290925561163f918a826113dd565b600160a060020a0360208a81013582166000908152600180835260408083208a8452845280832091820195909555339093168152600490920190528181208190557f1ebe182708a0deead60af831ebd47c1ea1649eef95ecf2d6218486603b138d65918a918a918a918a918891905180876040808284379091019050866101008082843760ff8816920191825250602001846040808284379091019384525050602082015260409081019450925050505180910390a15b5050505050505050565b6000600160a060020a038635811690602080890135909116908635908701356040808901359060608a01359060808b01359060a08c01359060c08d01359060e08e01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040518091039020905033600160a060020a03166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902085853560208701356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561184157600080fd5b505060206040510351600160a060020a03161480156118635750604084013543115b8015611873575060608401354311155b80156118a95750602086810135600160a060020a0316600090815260018083526040808320858452909352919020015484359010155b80156118e55750600160a060020a033316600090815260016020818152604080842085855290915290912001546118e2908560066112b5565b85145b80156119185750600160a060020a033316600090815260016020908152604080832084845290915290206002015460ff16155b151561192357600080fd5b600160a060020a038635166323b872dd33308860006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561198e57600080fd5b6102c65a03f1151561199f57600080fd5b50505060405180515050600160a060020a03338116600090815260016020908152604080832085845282528083208a3590941683526003909301905220546119e79086612859565b600160a060020a0333811660009081526001602081815260408084208785528083528185208d3590961685526003860183528185209690965592869052939093526002909101805460ff19169092179091557fee15b84b8991a780bb67b11208c7b64d0b49609145d47cef3e3c69d61dd16b769087908690869086908a905180866040808284379091019050856101008082843760ff871692019182525060200183604080828437909101928352505060200193506040925050505180910390a1505050505050565b6000600160a060020a038535811690602080880135909116908635908701356040808901359060608a01359060808b01359060a08c01359060c08d01359060e08e01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040518091039020905033600160a060020a03166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902085853560208701356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515611bf157600080fd5b505060206040510351600160a060020a0316148015611c135750604084013543115b8015611c485750602085810135600160a060020a03166000908152600180835260408083208584529093529190200154843590105b1515611c5357600080fd5b600160a060020a0333166000818152600160209081526040808320858452909152908190205480156108fc029151600060405180830381858888f193505050501515611c9e57600080fd5b33600160a060020a031660009081526001602090815260408083208484529091528082208290557fc9b676275d22815f16cbb6518594a5a9e9eabdeb28ce293fafcf6844bb758ec1918791879187918791905180866040808284379091019050856101008082843760ff871692019182525060200183604080828437909101928352505060200193506040925050505180910390a15050505050565b600080600160a060020a038635811690602080890135909116908735908801356040808a01359060608b01359060808c01359060a08d01359060c08e01359060e08f01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020870135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902086863560208801356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515611e8157600080fd5b505060206040510351600160a060020a031614611e9d57600080fd5b600160a060020a03602096870135811660009081526001885260408082209382529288528281209890911681526004909701909552505050912054919050565b60005433600160a060020a03908116911614611ef857600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000600160a060020a038535811690602080880135909116908635908701356040808901359060608a01359060808b01359060a08c01359060c08d01359060e08e01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020860135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902085853560208701356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561206d57600080fd5b505060206040510351600160a060020a0316148015612090575060408401354311155b80156120c35750602085810135600160a060020a03166000908152600182526040808220848352909252205460a0850135145b80156120fa5750602085810135600160a060020a031660009081526001808352604080832085845284529091200154908501359011155b151561210557600080fd5b600160a060020a03602086810135821660009081526001825260408082208583528352808220339094168252600490930190915220546121459034612859565b600160a060020a036020878101358216600090815260018083526040808320878452808552818420339096168452600486018552908320959095559085905292905201546121939034612859565b602086810135600160a060020a03166000908152600180835260408083208684529093529082902001919091557fc7c6939c4d1211acc2da99724ad3f4469337ed2361278e02ecb656eb6f29e64190869086908690869034905180866040808284379091019050856101008082843760ff871692019182525060200183604080828437909101928352505060200193506040925050505180910390a15050505050565b600060018484843560208601356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f115156122a257600080fd5b505060206040510351949350505050565b600082823560208401356040808601359051600160a060020a0394909416606060020a0284526014840192909252603483015260548201526074016040518091039020905092915050565b6000600160a060020a038535811690602080880135909116908635908701356040808901359060608a01359060808b01359060a08c01359060c08d01359060e08e01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040518091039020905033600160a060020a03166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902085853560208701356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561243f57600080fd5b505060206040510351600160a060020a031614801561246157503460a0850135145b8015612471575060408401354311155b151561247c57600080fd5b600160a060020a03331660009081526001602090815260408083208484529091529020546124aa9034612859565b600160a060020a033316600090815260016020908152604080832085845290915290819020919091557f2703506fe210c461c5a70d7bfad516e9d00eebfaabc514af1282c00e2341659590869086908690869034905180866040808284379091019050856101008082843760ff871692019182525060200183604080828437909101928352505060200193506040925050505180910390a15050505050565b6000600160a060020a038535811690602080880135909116908635908701356040808901359060608a01359060808b01359060a08c01359060c08d01359060e08e01359051606060020a600160a060020a039b8c168102825299909a1690980260148a0152602889019690965260488801949094526068870192909252608886015260a885015260c884015260e8830152610108820152610128016040519081900390209050600160a060020a036020860135166001826040516000805160206128c88339815191528152601c810191909152603c0160405190819003902085853560208701356040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561268f57600080fd5b505060206040510351600160a060020a03161480156126b15750604084013543115b80156126c1575060808401354311155b80156126f65750602085810135600160a060020a03166000908152600180835260408083208584529093529190200154843590105b151561270157600080fd5b600160a060020a03602086810135821660009081526001825260408082208583528352808220339094168083526004909401909252819020546108fc8115029151600060405180830381858888f19350505050151561275f57600080fd5b600160a060020a036020808701358216600090815260018083526040808320868452845280832091820154339095168352600490910190925220546127a4919061287d565b600160a060020a036020878101358216600090815260018083526040808320878452845280832091820195909555339093168152600490920190528181208190557f0b40fb509a6269b60350756d2bfdf96ce157dbb850fc7aa52564cff21fb3bf1b9187918791879187915180866040808284379091019050856101008082843760ff871692019182525060200183604080828437909101928352505060200193506040925050505180910390a15050505050565b600082820183811080159061286e5750828110155b151561287657fe5b9392505050565b60008282111561288957fe5b50900390565b600080828481151561289d57fe5b04949350505050565b600082820283158061286e57508284828115156128bf57fe5b041461287657fe0019457468657265756d205369676e6564204d6573736167653a0a333200000000a165627a7a72305820b6bb43103e2ced13ca5079388013a8450d309ce17d16922df3a0046c6e0db7580029

Swarm Source

bzzr://b6bb43103e2ced13ca5079388013a8450d309ce17d16922df3a0046c6e0db758

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.