ETH Price: $3,600.12 (+5.17%)

Contract

0xa507C4B71efF1E0Fb1A3519991619dEf9D7bed9f
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim ETF123509742021-05-01 22:12:011306 days ago1619907121IN
0xa507C4B7...f9D7bed9f
0 ETH0.0016174531
Claim ETF123459292021-05-01 3:41:201307 days ago1619840480IN
0xa507C4B7...f9D7bed9f
0 ETH0.0021477731
Claim ETF123448572021-04-30 23:38:381307 days ago1619825918IN
0xa507C4B7...f9D7bed9f
0 ETH0.0022855433
Buy Loft123410322021-04-30 9:28:211307 days ago1619774901IN
0xa507C4B7...f9D7bed9f
0 ETH0.0032891240
Claim ETF123403072021-04-30 6:45:241308 days ago1619765124IN
0xa507C4B7...f9D7bed9f
0 ETH0.0029456634.1
Buy Loft123370882021-04-29 18:52:241308 days ago1619722344IN
0xa507C4B7...f9D7bed9f
0 ETH0.0043580853.00000145
Buy Loft123328332021-04-29 3:00:111309 days ago1619665211IN
0xa507C4B7...f9D7bed9f
0 ETH0.0037002645
Buy Loft123327342021-04-29 2:38:131309 days ago1619663893IN
0xa507C4B7...f9D7bed9f
0 ETH0.0040291749
Claim ETF123269282021-04-28 5:04:591310 days ago1619586299IN
0xa507C4B7...f9D7bed9f
0 ETH0.0026327538
Buy Loft123262182021-04-28 2:27:301310 days ago1619576850IN
0xa507C4B7...f9D7bed9f
0 ETH0.003361450
Buy Loft123222152021-04-27 11:44:441310 days ago1619523884IN
0xa507C4B7...f9D7bed9f
0 ETH0.0040291749
Buy Loft123192492021-04-27 0:46:321311 days ago1619484392IN
0xa507C4B7...f9D7bed9f
0 ETH0.0034535742
Claim ETF122954572021-04-23 8:45:301314 days ago1619167530IN
0xa507C4B7...f9D7bed9f
0 ETH0.00662787127
Buy Loft122947082021-04-23 5:56:351315 days ago1619157395IN
0xa507C4B7...f9D7bed9f
0 ETH0.0081405799
Claim ETF122929382021-04-22 23:16:501315 days ago1619133410IN
0xa507C4B7...f9D7bed9f
0 ETH0.0041750480
Buy Loft122903482021-04-22 13:43:111315 days ago1619098991IN
0xa507C4B7...f9D7bed9f
0 ETH0.01225197149
Claim ETF122903462021-04-22 13:43:001315 days ago1619098980IN
0xa507C4B7...f9D7bed9f
0 ETH0.01032391149
Buy Loft122843572021-04-21 15:25:571316 days ago1619018757IN
0xa507C4B7...f9D7bed9f
0 ETH0.01521218185
Buy Loft122843382021-04-21 15:22:291316 days ago1619018549IN
0xa507C4B7...f9D7bed9f
0 ETH0.01257163187
Buy Loft122794512021-04-20 21:17:551317 days ago1618953475IN
0xa507C4B7...f9D7bed9f
0 ETH0.01907689232
Claim ETF122779232021-04-20 15:47:351317 days ago1618933655IN
0xa507C4B7...f9D7bed9f
0 ETH0.02400829346.5
Buy Loft122713432021-04-19 15:33:001318 days ago1618846380IN
0xa507C4B7...f9D7bed9f
0 ETH0.020557250
Buy Loft122704222021-04-19 12:10:411318 days ago1618834241IN
0xa507C4B7...f9D7bed9f
0 ETH0.0091273111.00000145
Buy Loft122704172021-04-19 12:09:201318 days ago1618834160IN
0xa507C4B7...f9D7bed9f
0 ETH0.0074623111.00000145
Buy Loft122704052021-04-19 12:07:011318 days ago1618834021IN
0xa507C4B7...f9D7bed9f
0 ETH0.00986736120
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ETFloft

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv2 license
/**
 *Submitted for verification at Etherscan.io on 2021-03-25
*/

pragma solidity =0.6.12;


/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: ETH_TRANSFER_FAILED');
    }
}


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


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


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

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

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

}

interface ETFloftOld{
  function buyLoft(uint256[5] calldata numbers, uint256 times) external;
  function round() external returns (uint256);
}


contract ETFloft is Ownable{
  using SafeMath for uint256;

  function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
          // Check the signature length
          if (signature.length != 65) {
              revert("ECDSA: invalid signature length");
          }

          // Divide the signature in r, s and v variables
          bytes32 r;
          bytes32 s;
          uint8 v;

          // ecrecover takes the signature parameters, and the only way to get them
          // currently is to use assembly.
          // solhint-disable-next-line no-inline-assembly
          assembly {
              r := mload(add(signature, 0x20))
              s := mload(add(signature, 0x40))
              v := byte(0, mload(add(signature, 0x60)))
          }

          return recover(hash, v, r, s);
      }
   /**
       * @dev Overload of {ECDSA-recover-bytes32-bytes-} that receives the `v`,
       * `r` and `s` signature fields separately.
       */
      function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {
          // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
          // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
          // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most
          // signatures from current libraries generate a unique signature with an s-value in the lower half order.
          //
          // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
          // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
          // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
          // these malleable signatures as well.
          require(uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, "ECDSA: invalid signature 's' value");
          require(v == 27 || v == 28, "ECDSA: invalid signature 'v' value");

          // If the signature is valid (and not malleable), return the signer address
          address signer = ecrecover(hash, v, r, s);
          require(signer != address(0), "ECDSA: invalid signature");

          return signer;
      }

  address public ETFtoken  = address(0x9E101C3a19e38a02B3c2fCf0D2Be4CE62C846488); //TBC
  address public oldLoft   = address(0xa482246fFFBf92659A22525820C665D4aFfCF97B); //TBC

  mapping(address=> uint256) public claimedETF;

  function recycleETF(address to, uint256 amount) public onlyOwner{
      TransferHelper.safeTransfer(ETFtoken, to, amount);
  }

  constructor() public {
      TransferHelper.safeApprove(ETFtoken, oldLoft, uint(-1));
  }
  
  function claimETF(uint256 claim2amount, bytes32 hash, bytes memory signature) public{
      bytes memory prefix = hex"19457468657265756d205369676e6564204d6573736167653a0a3532";
      require(keccak256(abi.encodePacked(prefix, msg.sender, claim2amount))==hash);
      require(recover(hash, signature) == address(0x0009595Ee9616B3EFc1a31C3826c7dDC82E8dB2e));
      require(claim2amount>=claimedETF[msg.sender], "nothing to claim");
      uint256 amount = claim2amount.sub(claimedETF[msg.sender]);
      claimedETF[msg.sender] = claim2amount;
      TransferHelper.safeTransfer(ETFtoken, msg.sender, amount);
  }

  event newLoft(address indexed buyer, uint8[5] numbers, uint64 round, uint8 times);

  function buyLoft(uint256[5] calldata numbers, uint256 times) public{
      require (times <= 100);
      TransferHelper.safeTransferFrom(ETFtoken, msg.sender, address(this), 2 ether * times);
      uint8[5] memory num;
      for(uint i;i<5;i++){
        num[i] = uint8(numbers[i]);
      }
      emit newLoft(msg.sender, num, uint64(ETFloftOld(oldLoft).round()), uint8(times));
      ETFloftOld(oldLoft).buyLoft(numbers, times);
  }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"uint8[5]","name":"numbers","type":"uint8[5]"},{"indexed":false,"internalType":"uint64","name":"round","type":"uint64"},{"indexed":false,"internalType":"uint8","name":"times","type":"uint8"}],"name":"newLoft","type":"event"},{"inputs":[],"name":"ETFtoken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[5]","name":"numbers","type":"uint256[5]"},{"internalType":"uint256","name":"times","type":"uint256"}],"name":"buyLoft","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"claim2amount","type":"uint256"},{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"claimETF","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimedETF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oldLoft","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recycleETF","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052739e101c3a19e38a02b3c2fcf0d2be4ce62c846488600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a482246fffbf92659a22525820c665d4affcf97b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000bb57600080fd5b5073c47b3410c1203b8f6701642bb84ae8cd1c78d82d6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200018c600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200019260201b62000ab31760201c565b6200037d565b600060608473ffffffffffffffffffffffffffffffffffffffff1663095ea7b38585604051602401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831062000257578051825260208201915060208101905060208303925062000232565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114620002bb576040519150601f19603f3d011682016040523d82523d6000602084013e620002c0565b606091505b5091509150818015620003035750600081511480620003025750808060200190516020811015620002f057600080fd5b81019080805190602001909291905050505b5b62000376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f5472616e7366657248656c7065723a20415050524f56455f4641494c4544000081525060200191505060405180910390fd5b5050505050565b6113e1806200038d6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c30a614e1161005b578063c30a614e146101f8578063f2d1316514610250578063f2fde38b1461029e578063f7577d9e146102e257610088565b806356f116c31461008d5780638da5cb5b1461015c578063a4a2de9f14610190578063b3566f82146101c4575b600080fd5b61015a600480360360608110156100a357600080fd5b810190808035906020019092919080359060200190929190803590602001906401000000008111156100d457600080fd5b8201836020820111156100e657600080fd5b8035906020019184600183028401116401000000008311171561010857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061031a565b005b6101646105d1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101986105f5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101cc61061b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61023a6004803603602081101561020e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610641565b6040518082815260200191505060405180910390f35b61029c6004803603604081101561026657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610659565b005b6102e0600480360360208110156102b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106e2565b005b610318600480360360c08110156102f857600080fd5b810190808060a00190919291929080359060200190929190505050610831565b005b60606040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3532000000008152509050828133866040516020018084805190602001908083835b6020831061038e578051825260208201915060208101905060208303925061036b565b6001836020036101000a0380198251168184511680821785525050505050509050018373ffffffffffffffffffffffffffffffffffffffff1660601b8152601401828152602001935050505060405160208183030381529060405280519060200120146103fa57600080fd5b7209595ee9616b3efc1a31c3826c7ddc82e8db2e73ffffffffffffffffffffffffffffffffffffffff1661042e8484610c96565b73ffffffffffffffffffffffffffffffffffffffff161461044e57600080fd5b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054841015610503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f6e6f7468696e6720746f20636c61696d0000000000000000000000000000000081525060200191505060405180910390fd5b6000610557600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486610d4390919063ffffffff16565b905084600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506105ca600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163383610d5a565b5050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b157600080fd5b6106de600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383610d5a565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461073a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561077457600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606481111561083f57600080fd5b610877600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16333084671bc16d674ec8000002610f3d565b61087f611321565b60005b60058110156108c65783816005811061089757fe5b60200201358282600581106108a857fe5b602002019060ff16908160ff16815250508080600101915050610882565b503373ffffffffffffffffffffffffffffffffffffffff167fd2857a6681c3e8288192a8785bbbcddea1f14a7d984d63c0baee24f427e2f54182600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663146ca5316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561096a57600080fd5b505af115801561097e573d6000803e3d6000fd5b505050506040513d602081101561099457600080fd5b8101908080519060200190929190505050856040518084600560200280838360005b838110156109d15780820151818401526020810190506109b6565b505050509050018367ffffffffffffffff1681526020018260ff168152602001935050505060405180910390a2600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f7577d9e84846040518363ffffffff1660e01b81526004018083600560200280828437600081840152601f19601f82011690508083019250505082815260200192505050600060405180830381600087803b158015610a9657600080fd5b505af1158015610aaa573d6000803e3d6000fd5b50505050505050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663095ea7b38585604051602401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610b765780518252602082019150602081019050602083039250610b53565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610bd8576040519150601f19603f3d011682016040523d82523d6000602084013e610bdd565b606091505b5091509150818015610c1d5750600081511480610c1c5750808060200190516020811015610c0a57600080fd5b81019080805190602001909291905050505b5b610c8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f5472616e7366657248656c7065723a20415050524f56455f4641494c4544000081525060200191505060405180910390fd5b5050505050565b60006041825114610d0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45434453413a20696e76616c6964207369676e6174757265206c656e6774680081525060200191505060405180910390fd5b60008060006020850151925060408501519150606085015160001a9050610d3886828585611122565b935050505092915050565b600082821115610d4f57fe5b818303905092915050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610e1d5780518252602082019150602081019050602083039250610dfa565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e7f576040519150601f19603f3d011682016040523d82523d6000602084013e610e84565b606091505b5091509150818015610ec45750600081511480610ec35750808060200190516020811015610eb157600080fd5b81019080805190602001909291905050505b5b610f36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5472616e7366657248656c7065723a205452414e534645525f4641494c45440081525060200191505060405180910390fd5b5050505050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061101e5780518252602082019150602081019050602083039250610ffb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611080576040519150601f19603f3d011682016040523d82523d6000602084013e611085565b606091505b50915091508180156110c557506000815114806110c457508080602001905160208110156110b257600080fd5b81019080805190602001909291905050505b5b61111a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113886024913960400191505060405180910390fd5b505050505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c11156111a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806113446022913960400191505060405180910390fd5b601b8460ff1614806111b55750601c8460ff16145b61120a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806113666022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611266573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611315576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f45434453413a20696e76616c6964207369676e6174757265000000000000000081525060200191505060405180910390fd5b80915050949350505050565b6040518060a0016040528060059060208202803683378082019150509050509056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c75655472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a26469706673582212207a8eaf4a5d5d72a32cc906e92c2edc50009075c23ea7478d7cd6f8c46e1a9f3064736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063c30a614e1161005b578063c30a614e146101f8578063f2d1316514610250578063f2fde38b1461029e578063f7577d9e146102e257610088565b806356f116c31461008d5780638da5cb5b1461015c578063a4a2de9f14610190578063b3566f82146101c4575b600080fd5b61015a600480360360608110156100a357600080fd5b810190808035906020019092919080359060200190929190803590602001906401000000008111156100d457600080fd5b8201836020820111156100e657600080fd5b8035906020019184600183028401116401000000008311171561010857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061031a565b005b6101646105d1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101986105f5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101cc61061b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61023a6004803603602081101561020e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610641565b6040518082815260200191505060405180910390f35b61029c6004803603604081101561026657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610659565b005b6102e0600480360360208110156102b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106e2565b005b610318600480360360c08110156102f857600080fd5b810190808060a00190919291929080359060200190929190505050610831565b005b60606040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3532000000008152509050828133866040516020018084805190602001908083835b6020831061038e578051825260208201915060208101905060208303925061036b565b6001836020036101000a0380198251168184511680821785525050505050509050018373ffffffffffffffffffffffffffffffffffffffff1660601b8152601401828152602001935050505060405160208183030381529060405280519060200120146103fa57600080fd5b7209595ee9616b3efc1a31c3826c7ddc82e8db2e73ffffffffffffffffffffffffffffffffffffffff1661042e8484610c96565b73ffffffffffffffffffffffffffffffffffffffff161461044e57600080fd5b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054841015610503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f6e6f7468696e6720746f20636c61696d0000000000000000000000000000000081525060200191505060405180910390fd5b6000610557600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486610d4390919063ffffffff16565b905084600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506105ca600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163383610d5a565b5050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b157600080fd5b6106de600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383610d5a565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461073a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561077457600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606481111561083f57600080fd5b610877600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16333084671bc16d674ec8000002610f3d565b61087f611321565b60005b60058110156108c65783816005811061089757fe5b60200201358282600581106108a857fe5b602002019060ff16908160ff16815250508080600101915050610882565b503373ffffffffffffffffffffffffffffffffffffffff167fd2857a6681c3e8288192a8785bbbcddea1f14a7d984d63c0baee24f427e2f54182600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663146ca5316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561096a57600080fd5b505af115801561097e573d6000803e3d6000fd5b505050506040513d602081101561099457600080fd5b8101908080519060200190929190505050856040518084600560200280838360005b838110156109d15780820151818401526020810190506109b6565b505050509050018367ffffffffffffffff1681526020018260ff168152602001935050505060405180910390a2600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f7577d9e84846040518363ffffffff1660e01b81526004018083600560200280828437600081840152601f19601f82011690508083019250505082815260200192505050600060405180830381600087803b158015610a9657600080fd5b505af1158015610aaa573d6000803e3d6000fd5b50505050505050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663095ea7b38585604051602401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610b765780518252602082019150602081019050602083039250610b53565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610bd8576040519150601f19603f3d011682016040523d82523d6000602084013e610bdd565b606091505b5091509150818015610c1d5750600081511480610c1c5750808060200190516020811015610c0a57600080fd5b81019080805190602001909291905050505b5b610c8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f5472616e7366657248656c7065723a20415050524f56455f4641494c4544000081525060200191505060405180910390fd5b5050505050565b60006041825114610d0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45434453413a20696e76616c6964207369676e6174757265206c656e6774680081525060200191505060405180910390fd5b60008060006020850151925060408501519150606085015160001a9050610d3886828585611122565b935050505092915050565b600082821115610d4f57fe5b818303905092915050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610e1d5780518252602082019150602081019050602083039250610dfa565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e7f576040519150601f19603f3d011682016040523d82523d6000602084013e610e84565b606091505b5091509150818015610ec45750600081511480610ec35750808060200190516020811015610eb157600080fd5b81019080805190602001909291905050505b5b610f36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5472616e7366657248656c7065723a205452414e534645525f4641494c45440081525060200191505060405180910390fd5b5050505050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061101e5780518252602082019150602081019050602083039250610ffb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611080576040519150601f19603f3d011682016040523d82523d6000602084013e611085565b606091505b50915091508180156110c557506000815114806110c457508080602001905160208110156110b257600080fd5b81019080805190602001909291905050505b5b61111a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113886024913960400191505060405180910390fd5b505050505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c11156111a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806113446022913960400191505060405180910390fd5b601b8460ff1614806111b55750601c8460ff16145b61120a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806113666022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611266573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611315576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f45434453413a20696e76616c6964207369676e6174757265000000000000000081525060200191505060405180910390fd5b80915050949350505050565b6040518060a0016040528060059060208202803683378082019150509050509056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c75655472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a26469706673582212207a8eaf4a5d5d72a32cc906e92c2edc50009075c23ea7478d7cd6f8c46e1a9f3064736f6c634300060c0033

Deployed Bytecode Sourcemap

3890:4111:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6845:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2898:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6381:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6470;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6561:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6612:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3551:178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7555:441;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6845:616;6938:19;:83;;;;;;;;;;;;;;;;;;;7101:4;7065:6;7073:10;7085:12;7048:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7038:61;;;;;;:67;7030:76;;;;;;7159:42;7123:79;;:24;7131:4;7137:9;7123:7;:24::i;:::-;:79;;;7115:88;;;;;;7234:10;:22;7245:10;7234:22;;;;;;;;;;;;;;;;7220:12;:36;;7212:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7286:14;7303:40;7320:10;:22;7331:10;7320:22;;;;;;;;;;;;;;;;7303:12;:16;;:40;;;;:::i;:::-;7286:57;;7377:12;7352:10;:22;7363:10;7352:22;;;;;;;;;;;;;;;:37;;;;7398:57;7426:8;;;;;;;;;;;7436:10;7448:6;7398:27;:57::i;:::-;6845:616;;;;;:::o;2898:20::-;;;;;;;;;;;;:::o;6381:78::-;;;;;;;;;;;;;:::o;6470:::-;;;;;;;;;;;;;:::o;6561:44::-;;;;;;;;;;;;;;;;;:::o;6612:128::-;3364:5;;;;;;;;;;3350:19;;:10;:19;;;3342:28;;;;;;6685:49:::1;6713:8;;;;;;;;;;;6723:2;6727:6;6685:27;:49::i;:::-;6612:128:::0;;:::o;3551:178::-;3364:5;;;;;;;;;;3350:19;;:10;:19;;;3342:28;;;;;;3648:1:::1;3628:22;;:8;:22;;;;3620:31;;;::::0;::::1;;3691:8;3663:37;;3684:5;::::0;::::1;;;;;;;;3663:37;;;;;;;;;;;;3715:8;3707:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;3551:178:::0;:::o;7555:441::-;7649:3;7640:5;:12;;7631:22;;;;;;7662:85;7694:8;;;;;;;;;;;7704:10;7724:4;7741:5;7731:7;:15;7662:31;:85::i;:::-;7756:19;;:::i;:::-;7788:6;7784:66;7797:1;7795;:3;7784:66;;;7829:7;7837:1;7829:10;;;;;;;;;;;7814:3;7818:1;7814:6;;;;;;;;;;:26;;;;;;;;;;;7799:3;;;;;;;7784:66;;;;7871:10;7863:75;;;7883:3;7906:7;;;;;;;;;;;7895:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7931:5;7863:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7958:7;;;;;;;;;;;7947:27;;;7975:7;7984:5;7947:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7555:441;;;:::o;1332:358::-;1479:12;1493:17;1514:5;:10;;1548;1560:2;1564:5;1525:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1478:93;;;;1590:7;:57;;;;;1617:1;1602:4;:11;:16;:44;;;;1633:4;1622:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1602:44;1590:57;1582:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1332:358;;;;;:::o;3955:797::-;4033:7;4120:2;4100:9;:16;:22;4096:100;;4141:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4096:100;4269:9;4291;4313:7;4575:4;4564:9;4560:20;4554:27;4549:32;;4623:4;4612:9;4608:20;4602:27;4597:32;;4679:4;4668:9;4664:20;4658:27;4655:1;4650:36;4645:41;;4720:22;4728:4;4734:1;4737;4740;4720:7;:22::i;:::-;4713:29;;;;;3955:797;;;;:::o;870:113::-;928:7;956:1;951;:6;;944:14;;;;976:1;972;:5;965:12;;870:113;;;;:::o;1698:361::-;1847:12;1861:17;1882:5;:10;;1916;1928:2;1932:5;1893:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1882:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1846:93;;;;1958:7;:57;;;;;1985:1;1970:4;:11;:16;:44;;;;2001:4;1990:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1970:44;1958:57;1950:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1698:361;;;;;:::o;2067:402::-;2246:12;2260:17;2281:5;:10;;2315;2327:4;2333:2;2337:5;2292:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2281:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:99;;;;2363:7;:57;;;;;2390:1;2375:4;:11;:16;:44;;;;2406:4;2395:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2375:44;2363:57;2355:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2067:402;;;;;;:::o;4911:1464::-;4996:7;5941:66;5935:1;5927:10;;:80;;5919:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6072:2;6067:1;:7;;;:18;;;;6083:2;6078:1;:7;;;6067:18;6059:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6226:14;6243:24;6253:4;6259:1;6262;6265;6243:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6226:41;;6306:1;6288:20;;:6;:20;;;;6280:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6359:6;6352:13;;;4911:1464;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://7a8eaf4a5d5d72a32cc906e92c2edc50009075c23ea7478d7cd6f8c46e1a9f30

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.