ETH Price: $2,548.59 (-3.73%)
Gas: 1 Gwei

Contract

0x58F6B8D0A80E2c1a394d0C01445721C1B7df5139
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Generate Game68865042018-12-14 18:11:412067 days ago1544811101IN
0x58F6B8D0...1B7df5139
0 ETH0.00012043.9
Generate Game68864992018-12-14 18:11:222067 days ago1544811082IN
0x58F6B8D0...1B7df5139
0 ETH0.00012043.9
Generate Game68864912018-12-14 18:09:082067 days ago1544810948IN
0x58F6B8D0...1B7df5139
0 ETH0.001334773.9
Drain Game68864142018-12-14 17:53:072067 days ago1544809987IN
0x58F6B8D0...1B7df5139
0 ETH0.001287034.2
Generate Game68347912018-12-06 5:21:252075 days ago1544073685IN
0x58F6B8D0...1B7df5139
0 ETH0.0036233210.6
Generate Game66560222018-11-06 20:18:152105 days ago1541535495IN
0x58F6B8D0...1B7df5139
0 ETH0.00143734.2
Drain Game65775132018-10-24 23:21:502118 days ago1540423310IN
0x58F6B8D0...1B7df5139
0 ETH0.00190036.2
Generate Game64220082018-09-29 15:27:532143 days ago1538234873IN
0x58F6B8D0...1B7df5139
0 ETH0.0046718313.5
Generate Game64219502018-09-29 15:16:312143 days ago1538234191IN
0x58F6B8D0...1B7df5139
0 ETH0.0042564812.5
Generate Game63750532018-09-21 22:26:112151 days ago1537568771IN
0x58F6B8D0...1B7df5139
0 ETH0.003224179.4
Generate Game63701112018-09-21 3:01:592152 days ago1537498919IN
0x58F6B8D0...1B7df5139
0 ETH0.002622487.7
Generate Game63380432018-09-15 19:39:292157 days ago1537040369IN
0x58F6B8D0...1B7df5139
0 ETH0.001161013.4
Revoke Stack63313092018-09-14 17:09:582158 days ago1536944998IN
0x58F6B8D0...1B7df5139
0 ETH0.000621594.3
Generate Game63033552018-09-10 1:45:192163 days ago1536543919IN
0x58F6B8D0...1B7df5139
0 ETH0.001156713.4
Generate Game62561362018-09-02 3:35:432170 days ago1535859343IN
0x58F6B8D0...1B7df5139
0 ETH0.000123244
Generate Game62561322018-09-02 3:34:152170 days ago1535859255IN
0x58F6B8D0...1B7df5139
0 ETH0.000123244
Generate Game62561312018-09-02 3:33:462170 days ago1535859226IN
0x58F6B8D0...1B7df5139
0 ETH0.001352464
Revoke Stack61291992018-08-11 16:18:012192 days ago1534004281IN
0x58F6B8D0...1B7df5139
0 ETH0.000607144.2
Generate Game61290722018-08-11 15:47:222192 days ago1534002442IN
0x58F6B8D0...1B7df5139
0 ETH0.001441394.2
Generate Game61235692018-08-10 17:36:272193 days ago1533922587IN
0x58F6B8D0...1B7df5139
0 ETH0.0040972412
Generate Game61046122018-08-07 12:53:432196 days ago1533646423IN
0x58F6B8D0...1B7df5139
0 ETH0.00081332.4
Generate Game60775012018-08-02 23:10:342201 days ago1533251434IN
0x58F6B8D0...1B7df5139
0 ETH0.000407451.2
Generate Game60652372018-07-31 21:04:472203 days ago1533071087IN
0x58F6B8D0...1B7df5139
0 ETH0.000405731.2
Generate Game60645002018-07-31 18:05:042203 days ago1533060304IN
0x58F6B8D0...1B7df5139
0 ETH0.000415751.2
Generate Game60644562018-07-31 17:54:312203 days ago1533059671IN
0x58F6B8D0...1B7df5139
0 ETH0.000447041.3
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:
PizzaParlor

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-03-30
*/

pragma solidity ^0.4.15;

/*
  https://cryptogs.io
  --Austin Thomas Griffith for ETHDenver
  PizzaParlor -- a new venue for cryptogs games
  less transactions than original Cryptogs.sol assuming some
  centralization and a single commit reveal for randomness
*/



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


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


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

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

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

}


contract PizzaParlor {

  uint8 public constant FLIPPINESS = 64;
  uint8 public constant FLIPPINESSROUNDBONUS = 16;
  uint8 public constant MAXROUNDS = 12; //must be greater than (255-FLIPPINESS)/FLIPPINESSROUNDBONUS
  uint32 public constant BLOCKTIMEOUT = 40;// a few hours?

  address public cryptogsAddress;
  function PizzaParlor(address _cryptogsAddress) public {
    cryptogsAddress=_cryptogsAddress;
  }

  //to make less transactions on-chain, game creation will happen off-chain
  //at this point, two players have agreed upon the ten cryptogs that will
  //be in the game, five from each player
  // the server will generate a secret, reveal, and commit
  // this commit is used as the game id and both players share it
  // the server will pick one user at random to be the game master
  // this player will get the reveal and be in charge of generating the game
  // technically either player can generate the game with the reveal
  // (and either player can drain the stack with the secret)

    //     commit      ->      player  -> stack hash
  mapping (bytes32 => mapping (address => bytes32)) public commitReceipt;

    //     commit      ->      player  -> block number
  mapping (bytes32 => mapping (address => uint32)) public commitBlock;

  mapping (bytes32 => uint8) public stacksTransferred;

  //tx1&2: players submit to a particular commit hash their stack of pogs (the two txs can happen on the same block, no one is waiting)
  //these go to the Cryptogs contract and it is transferStackAndCall'ed to here
  function onTransferStack(address _sender, uint _token1, uint _token2, uint _token3, uint _token4, uint _token5, bytes32 _commit){

    //make sure this came from the Cryptogs contract
    require(msg.sender == cryptogsAddress);

    //make sure this commit is unique / doesn't already exist
    require(commitReceipt[_commit][_sender] == 0);

    //make sure there aren't already two stacks submitted
    require(stacksTransferred[_commit]<2);
    stacksTransferred[_commit]++;

    //make sure this contract now owns these tokens
    NFT cryptogsContract = NFT(cryptogsAddress);
    require(cryptogsContract.tokenIndexToOwner(_token1)==address(this));
    require(cryptogsContract.tokenIndexToOwner(_token2)==address(this));
    require(cryptogsContract.tokenIndexToOwner(_token3)==address(this));
    require(cryptogsContract.tokenIndexToOwner(_token4)==address(this));
    require(cryptogsContract.tokenIndexToOwner(_token5)==address(this));

    //generate a receipt for the transfer
    bytes32 receipt = keccak256(_commit,_sender,_token1,_token2,_token3,_token4,_token5);
    commitReceipt[_commit][_sender] = receipt;
    commitBlock[_commit][_sender] = uint32(block.number);

    //fire an event for the frontend
    TransferStack(_commit,_sender,receipt,now,_token1,_token2,_token3,_token4,_token5);
  }
  event TransferStack(bytes32 indexed _commit,address indexed _sender,bytes32 indexed _receipt,uint _timestamp,uint256 _token1,uint256 _token2,uint256 _token3,uint256 _token4,uint256 _token5);

  //tx3: either player, knowing the reveal, can generate the game
  //this tx calculates random, generates game events, and transfers
  // tokens back to winners
  //in order to make game costs fair, the frontend should randomly select
  // one of the two players and give them the reveal to generate the game
  // in a bit you could give it to the other player too .... then after the
  // timeout, they would get the secret to drain the stack
  function generateGame(bytes32 _commit,bytes32 _reveal,address _opponent,uint _token1, uint _token2, uint _token3, uint _token4, uint _token5,uint _token6, uint _token7, uint _token8, uint _token9, uint _token10){
    //verify that receipts are valid
    require( commitReceipt[_commit][msg.sender] == keccak256(_commit,msg.sender,_token1,_token2,_token3,_token4,_token5) );
    require( commitReceipt[_commit][_opponent] == keccak256(_commit,_opponent,_token6,_token7,_token8,_token9,_token10) );

    //verify we are on a later block so random will work
    require( uint32(block.number) > commitBlock[_commit][msg.sender]);
    require( uint32(block.number) > commitBlock[_commit][_opponent]);

    //verify that the reveal is correct
    require(_commit == keccak256(_reveal));

    //make sure there are exactly two stacks submitted
    require(stacksTransferred[_commit]==2);

    _generateGame(_commit,_reveal,_opponent,[_token1,_token2,_token3,_token4,_token5,_token6,_token7,_token8,_token9,_token10]);
  }

  function _generateGame(bytes32 _commit,bytes32 _reveal,address _opponent,uint[10] _tokens) internal {
    //create Cryptogs contract for transfers
    NFT cryptogsContract = NFT(cryptogsAddress);

    //generate the random using commit / reveal and blockhash from future (now past) block
    bytes32[4] memory pseudoRandoms = _generateRandom(_reveal,commitBlock[_commit][msg.sender],commitBlock[_commit][_opponent]);

    bool whosTurn = uint8(pseudoRandoms[0][0])%2==0;
    CoinFlip(_commit,whosTurn,whosTurn ? msg.sender : _opponent);
    for(uint8 round=1;round<=MAXROUNDS;round++){
      for(uint8 i=1;i<=10;i++){
        //first check and see if this token has flipped yet
        if(_tokens[i-1]>0){

          //get the random byte between 0-255 from our pseudoRandoms array of bytes32
          uint8 rand = _getRandom(pseudoRandoms,(round-1)*10 + i);

          uint8 threshold = (FLIPPINESS+round*FLIPPINESSROUNDBONUS);
          if( rand < threshold || round==MAXROUNDS ){
            _flip(_commit,round,cryptogsContract,_tokens,i-1,_opponent,whosTurn);
          }
        }
      }
      whosTurn = !whosTurn;
    }


    delete commitReceipt[_commit][msg.sender];
    delete commitReceipt[_commit][_opponent];

    GenerateGame(_commit,msg.sender);
  }
  event CoinFlip(bytes32 indexed _commit,bool _result,address _winner);
  event GenerateGame(bytes32 indexed _commit,address indexed _sender);

  function _getRandom(bytes32[4] pseudoRandoms,uint8 randIndex) internal returns (uint8 rand){
    if(randIndex<32){
      rand = uint8(pseudoRandoms[0][randIndex]);
    }else if(randIndex<64){
      rand = uint8(pseudoRandoms[1][randIndex-32]);
    }else if(randIndex<96){
      rand = uint8(pseudoRandoms[1][randIndex-64]);
    }else{
      rand = uint8(pseudoRandoms[1][randIndex-96]);
    }
    return rand;
  }

  function _generateRandom(bytes32 _reveal, uint32 block1,uint32 block2) internal returns(bytes32[4] pseudoRandoms){
    pseudoRandoms[0] = keccak256(_reveal,block.blockhash(max(block1,block2)));
    pseudoRandoms[1] = keccak256(pseudoRandoms[0]);
    pseudoRandoms[2] = keccak256(pseudoRandoms[1]);
    pseudoRandoms[3] = keccak256(pseudoRandoms[2]);
    return pseudoRandoms;
  }

  function max(uint32 a, uint32 b) private pure returns (uint32) {
      return a > b ? a : b;
  }

  function _flip(bytes32 _commit,uint8 round,NFT cryptogsContract,uint[10] _tokens,uint8 tokenIndex,address _opponent,bool whosTurn) internal {
    address flipper;
    if(whosTurn) {
      flipper=msg.sender;
    }else{
      flipper=_opponent;
    }
    cryptogsContract.transfer(flipper,_tokens[tokenIndex]);
    Flip(_commit,round,flipper,_tokens[tokenIndex]);
    _tokens[tokenIndex]=0;
  }
  event Flip(bytes32 indexed _commit,uint8 _round,address indexed _flipper,uint indexed _token);

  //if the game times out without either player generating the game,
  // (the frontend should have selected one of the players randomly to generate the game)
  //the frontend should give the other player the secret to drain the game
  // secret -> reveal -> commit
  function drainGame(bytes32 _commit,bytes32 _secret,address _opponent,uint _token1, uint _token2, uint _token3, uint _token4, uint _token5,uint _token6, uint _token7, uint _token8, uint _token9, uint _token10){
    //verify that receipts are valid
    require( commitReceipt[_commit][msg.sender] == keccak256(_commit,msg.sender,_token1,_token2,_token3,_token4,_token5) );
    require( commitReceipt[_commit][_opponent] == keccak256(_commit,_opponent,_token6,_token7,_token8,_token9,_token10) );

    //verify we are on a later block so random will work
    require( uint32(block.number) > commitBlock[_commit][msg.sender]+BLOCKTIMEOUT);
    require( uint32(block.number) > commitBlock[_commit][_opponent]+BLOCKTIMEOUT);

    //make sure the commit is the doublehash of the secret
    require(_commit == keccak256(keccak256(_secret)));

    //make sure there are exactly two stacks submitted
    require(stacksTransferred[_commit]==2);

    _drainGame(_commit,_opponent,[_token1,_token2,_token3,_token4,_token5,_token6,_token7,_token8,_token9,_token10]);
  }

  function _drainGame(bytes32 _commit,address _opponent, uint[10] _tokens) internal {
    //create Cryptogs contract for transfers
    NFT cryptogsContract = NFT(cryptogsAddress);

    cryptogsContract.transfer(msg.sender,_tokens[0]);
    cryptogsContract.transfer(msg.sender,_tokens[1]);
    cryptogsContract.transfer(msg.sender,_tokens[2]);
    cryptogsContract.transfer(msg.sender,_tokens[3]);
    cryptogsContract.transfer(msg.sender,_tokens[4]);
    cryptogsContract.transfer(msg.sender,_tokens[5]);
    cryptogsContract.transfer(msg.sender,_tokens[6]);
    cryptogsContract.transfer(msg.sender,_tokens[7]);
    cryptogsContract.transfer(msg.sender,_tokens[8]);
    cryptogsContract.transfer(msg.sender,_tokens[9]);

    Flip(_commit,1,msg.sender,_tokens[0]);
    Flip(_commit,1,msg.sender,_tokens[1]);
    Flip(_commit,1,msg.sender,_tokens[2]);
    Flip(_commit,1,msg.sender,_tokens[3]);
    Flip(_commit,1,msg.sender,_tokens[4]);
    Flip(_commit,1,msg.sender,_tokens[5]);
    Flip(_commit,1,msg.sender,_tokens[6]);
    Flip(_commit,1,msg.sender,_tokens[7]);
    Flip(_commit,1,msg.sender,_tokens[8]);
    Flip(_commit,1,msg.sender,_tokens[9]);

    delete commitReceipt[_commit][msg.sender];
    delete commitReceipt[_commit][_opponent];
    DrainGame(_commit,msg.sender);
  }
  event DrainGame(bytes32 indexed _commit,address indexed _sender);

  //if only one player ever ends up submitting a stack, they need to be able
  //to pull thier tokens back
  function revokeStack(bytes32 _commit,uint _token1, uint _token2, uint _token3, uint _token4, uint _token5){
    //verify that receipt is valid
    require( commitReceipt[_commit][msg.sender] == keccak256(_commit,msg.sender,_token1,_token2,_token3,_token4,_token5) );

    //make sure there is exactly one stacks submitted
    require(stacksTransferred[_commit]==1);

    stacksTransferred[_commit]=0;

    NFT cryptogsContract = NFT(cryptogsAddress);

    cryptogsContract.transfer(msg.sender,_token1);
    cryptogsContract.transfer(msg.sender,_token2);
    cryptogsContract.transfer(msg.sender,_token3);
    cryptogsContract.transfer(msg.sender,_token4);
    cryptogsContract.transfer(msg.sender,_token5);


    bytes32 previousReceipt = commitReceipt[_commit][msg.sender];

    delete commitReceipt[_commit][msg.sender];
    //fire an event for the frontend
    RevokeStack(_commit,msg.sender,now,_token1,_token2,_token3,_token4,_token5,previousReceipt);
  }
  event RevokeStack(bytes32 indexed _commit,address indexed _sender,uint _timestamp,uint256 _token1,uint256 _token2,uint256 _token3,uint256 _token4,uint256 _token5,bytes32 _receipt);

}

contract NFT {
  function approve(address _to,uint256 _tokenId) public returns (bool) { }
  function transfer(address _to,uint256 _tokenId) external { }
  mapping (uint256 => address) public tokenIndexToOwner;
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"FLIPPINESS","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"},{"name":"","type":"address"}],"name":"commitBlock","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FLIPPINESSROUNDBONUS","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sender","type":"address"},{"name":"_token1","type":"uint256"},{"name":"_token2","type":"uint256"},{"name":"_token3","type":"uint256"},{"name":"_token4","type":"uint256"},{"name":"_token5","type":"uint256"},{"name":"_commit","type":"bytes32"}],"name":"onTransferStack","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_commit","type":"bytes32"},{"name":"_secret","type":"bytes32"},{"name":"_opponent","type":"address"},{"name":"_token1","type":"uint256"},{"name":"_token2","type":"uint256"},{"name":"_token3","type":"uint256"},{"name":"_token4","type":"uint256"},{"name":"_token5","type":"uint256"},{"name":"_token6","type":"uint256"},{"name":"_token7","type":"uint256"},{"name":"_token8","type":"uint256"},{"name":"_token9","type":"uint256"},{"name":"_token10","type":"uint256"}],"name":"drainGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_commit","type":"bytes32"},{"name":"_token1","type":"uint256"},{"name":"_token2","type":"uint256"},{"name":"_token3","type":"uint256"},{"name":"_token4","type":"uint256"},{"name":"_token5","type":"uint256"}],"name":"revokeStack","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAXROUNDS","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"},{"name":"","type":"address"}],"name":"commitReceipt","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_commit","type":"bytes32"},{"name":"_reveal","type":"bytes32"},{"name":"_opponent","type":"address"},{"name":"_token1","type":"uint256"},{"name":"_token2","type":"uint256"},{"name":"_token3","type":"uint256"},{"name":"_token4","type":"uint256"},{"name":"_token5","type":"uint256"},{"name":"_token6","type":"uint256"},{"name":"_token7","type":"uint256"},{"name":"_token8","type":"uint256"},{"name":"_token9","type":"uint256"},{"name":"_token10","type":"uint256"}],"name":"generateGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cryptogsAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BLOCKTIMEOUT","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"stacksTransferred","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_cryptogsAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_commit","type":"bytes32"},{"indexed":true,"name":"_sender","type":"address"},{"indexed":true,"name":"_receipt","type":"bytes32"},{"indexed":false,"name":"_timestamp","type":"uint256"},{"indexed":false,"name":"_token1","type":"uint256"},{"indexed":false,"name":"_token2","type":"uint256"},{"indexed":false,"name":"_token3","type":"uint256"},{"indexed":false,"name":"_token4","type":"uint256"},{"indexed":false,"name":"_token5","type":"uint256"}],"name":"TransferStack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_commit","type":"bytes32"},{"indexed":false,"name":"_result","type":"bool"},{"indexed":false,"name":"_winner","type":"address"}],"name":"CoinFlip","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_commit","type":"bytes32"},{"indexed":true,"name":"_sender","type":"address"}],"name":"GenerateGame","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_commit","type":"bytes32"},{"indexed":false,"name":"_round","type":"uint8"},{"indexed":true,"name":"_flipper","type":"address"},{"indexed":true,"name":"_token","type":"uint256"}],"name":"Flip","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_commit","type":"bytes32"},{"indexed":true,"name":"_sender","type":"address"}],"name":"DrainGame","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_commit","type":"bytes32"},{"indexed":true,"name":"_sender","type":"address"},{"indexed":false,"name":"_timestamp","type":"uint256"},{"indexed":false,"name":"_token1","type":"uint256"},{"indexed":false,"name":"_token2","type":"uint256"},{"indexed":false,"name":"_token3","type":"uint256"},{"indexed":false,"name":"_token4","type":"uint256"},{"indexed":false,"name":"_token5","type":"uint256"},{"indexed":false,"name":"_receipt","type":"bytes32"}],"name":"RevokeStack","type":"event"}]

6060604052341561000f57600080fd5b604051602080611aa18339810160405280805160008054600160a060020a03909216600160a060020a03199092169190911790555050611a4d806100546000396000f3006060604052600436106100a05763ffffffff60e060020a600035041663372e80c381146100a55780634e0733ea146100ce57806359828c9914610109578063610b16ab1461011c5780639a99ebf41461014f5780639edc7b4414610197578063a5f357de146101bc578063b314335c146101cf578063bb8f712f14610203578063ce5c52011461024b578063d4eb45401461027a578063f9c7e1c71461028d575b600080fd5b34156100b057600080fd5b6100b86102a3565b60405160ff909116815260200160405180910390f35b34156100d957600080fd5b6100f0600435600160a060020a03602435166102a8565b60405163ffffffff909116815260200160405180910390f35b341561011457600080fd5b6100b86102cb565b341561012757600080fd5b61014d600160a060020a036004351660243560443560643560843560a43560c4356102d0565b005b341561015a57600080fd5b61014d600435602435600160a060020a036044351660643560843560a43560c43560e43561010435610124356101443561016435610184356106e7565b34156101a257600080fd5b61014d60043560243560443560643560843560a43561093f565b34156101c757600080fd5b6100b8610c99565b34156101da57600080fd5b6101f1600435600160a060020a0360243516610c9e565b60405190815260200160405180910390f35b341561020e57600080fd5b61014d600435602435600160a060020a036044351660643560843560a43560c43560e4356101043561012435610144356101643561018435610cbb565b341561025657600080fd5b61025e610eea565b604051600160a060020a03909116815260200160405180910390f35b341561028557600080fd5b6100f0610ef9565b341561029857600080fd5b6100b8600435610efe565b604081565b600260209081526000928352604080842090915290825290205463ffffffff1681565b601081565b60008054819033600160a060020a039081169116146102ee57600080fd5b6000838152600160209081526040808320600160a060020a038d1684529091529020541561031b57600080fd5b600083815260036020526040902054600260ff9091161061033b57600080fd5b600083815260036020526040808220805460ff8082166001011660ff199091161790559054600160a060020a0390811693503016908390631d36e06c908b905160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156103ae57600080fd5b5af115156103bb57600080fd5b50505060405180519050600160a060020a03161415156103da57600080fd5b30600160a060020a031682600160a060020a0316631d36e06c8960405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561042a57600080fd5b5af1151561043757600080fd5b50505060405180519050600160a060020a031614151561045657600080fd5b30600160a060020a031682600160a060020a0316631d36e06c8860405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156104a657600080fd5b5af115156104b357600080fd5b50505060405180519050600160a060020a03161415156104d257600080fd5b30600160a060020a031682600160a060020a0316631d36e06c8760405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561052257600080fd5b5af1151561052f57600080fd5b50505060405180519050600160a060020a031614151561054e57600080fd5b30600160a060020a031682600160a060020a0316631d36e06c8660405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561059e57600080fd5b5af115156105ab57600080fd5b50505060405180519050600160a060020a03161415156105ca57600080fd5b82898989898989604051968752600160a060020a03959095166c01000000000000000000000000026020870152603486019390935260548501919091526074840152609483015260b482015260d4016040519081900390206000848152600160209081526040808320600160a060020a038e168085529083528184208590558784526002835281842081855290925291829020805463ffffffff19164363ffffffff1617905591925082919085907fbc03a9cf3a0cea583d2d3433a6d1f5f4da47c1821cb48d3ae9977ea802a6dd449042908d908d908d908d908d905180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a4505050505050505050565b8c338b8b8b8b8b604051968752600160a060020a03959095166c01000000000000000000000000026020870152603486019390935260548501919091526074840152609483015260b482015260d40160405190819003902060008e8152600160209081526040808320600160a060020a03331684529091529020541461076c57600080fd5b8c8b8686868686604051968752600160a060020a03959095166c01000000000000000000000000026020870152603486019390935260548501919091526074840152609483015260b482015260d401604051809103902060001916600160008f6000191660001916815260200190815260200160002060008d600160a060020a0316600160a060020a03168152602001908152602001600020546000191614151561081657600080fd5b60008d8152600260209081526040808320600160a060020a033316845290915290205463ffffffff9081166028018116439091161161085457600080fd5b60008d8152600260209081526040808320600160a060020a038f16845290915290205463ffffffff9081166028018116439091161161089257600080fd5b8b60405190815260200160405180910390206040519081526020016040519081900390208d146108c157600080fd5b60008d81526003602052604090205460ff166002146108df57600080fd5b6109308d8c610140604051908101604052808e81526020018d81526020018c81526020018b81526020018a815260200189815260200188815260200187815260200186815260200185815250610f13565b50505050505050505050505050565b60008087338888888888604051968752600160a060020a03959095166c01000000000000000000000000026020870152603486019390935260548501919091526074840152609483015260b482015260d4016040519081900390206000898152600160209081526040808320600160a060020a0333168452909152902054146109c757600080fd5b60008881526003602052604090205460ff166001146109e557600080fd5b600088815260036020526040808220805460ff191690559054600160a060020a03169250829063a9059cbb9033908a905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610a5657600080fd5b5af11515610a6357600080fd5b50505081600160a060020a031663a9059cbb338860405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610aba57600080fd5b5af11515610ac757600080fd5b50505081600160a060020a031663a9059cbb338760405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610b1e57600080fd5b5af11515610b2b57600080fd5b50505081600160a060020a031663a9059cbb338660405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610b8257600080fd5b5af11515610b8f57600080fd5b50505081600160a060020a031663a9059cbb338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610be657600080fd5b5af11515610bf357600080fd5b505050600088815260016020908152604080832033600160a060020a0316808552925280832080549390559192509089907faf1edfefb4cf4eecc7f6c040867de3c931298f6c597cc633ea77b7986fd7a7ff9042908b908b908b908b908b908a905196875260208701959095526040808701949094526060860192909252608085015260a084015260c083019190915260e0909101905180910390a35050505050505050565b600c81565b600160209081526000928352604080842090915290825290205481565b8c338b8b8b8b8b604051968752600160a060020a03959095166c01000000000000000000000000026020870152603486019390935260548501919091526074840152609483015260b482015260d40160405190819003902060008e8152600160209081526040808320600160a060020a033316845290915290205414610d4057600080fd5b8c8b8686868686604051968752600160a060020a03959095166c01000000000000000000000000026020870152603486019390935260548501919091526074840152609483015260b482015260d401604051809103902060001916600160008f6000191660001916815260200190815260200160002060008d600160a060020a0316600160a060020a031681526020019081526020016000205460001916141515610dea57600080fd5b60008d8152600260209081526040808320600160a060020a033316845290915290205463ffffffff9081164390911611610e2357600080fd5b60008d8152600260209081526040808320600160a060020a038f16845290915290205463ffffffff9081164390911611610e5c57600080fd5b8b6040519081526020016040519081900390208d14610e7a57600080fd5b60008d81526003602052604090205460ff16600214610e9857600080fd5b6109308d8d8d610140604051908101604052808f81526020018e81526020018d81526020018c81526020018b81526020018a8152602001898152602001888152602001878152602001868152506115ab565b600054600160a060020a031681565b602881565b60036020526000908152604090205460ff1681565b600054600160a060020a03168063a9059cbb33845160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610f6b57600080fd5b5af11515610f7857600080fd5b505050600160a060020a03811663a9059cbb33602085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610fd357600080fd5b5af11515610fe057600080fd5b505050600160a060020a03811663a9059cbb33604085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561103b57600080fd5b5af1151561104857600080fd5b505050600160a060020a03811663a9059cbb33606085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156110a357600080fd5b5af115156110b057600080fd5b505050600160a060020a03811663a9059cbb33608085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561110b57600080fd5b5af1151561111857600080fd5b505050600160a060020a03811663a9059cbb3360a085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561117357600080fd5b5af1151561118057600080fd5b505050600160a060020a03811663a9059cbb3360c085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156111db57600080fd5b5af115156111e857600080fd5b505050600160a060020a03811663a9059cbb3360e085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561124357600080fd5b5af1151561125057600080fd5b505050600160a060020a03811663a9059cbb3361010085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156112ac57600080fd5b5af115156112b957600080fd5b505050600160a060020a03811663a9059cbb3361012085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561131557600080fd5b5af1151561132257600080fd5b508391505051600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a46020820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a46040820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a46060820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a46080820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a460a0820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a460c0820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a460e0820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a4610100820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a4610120820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a46000848152600160209081526040808320600160a060020a0333811680865282855283862086905590881685529252808320929092559085907f3e34363ddbc7b0d3069cc77187cf380a37574760ab8294704fc29a5542f54175905160405180910390a350505050565b60006115b56119d8565b60008054878252600260209081526040808420600160a060020a0333811686529252808420548883168552908420549190921694508291829182918291611607918c9163ffffffff9182169116611797565b95506002865160001a60f860020a0260f860020a900460ff1681151561162957fe5b0660ff161594508a7f3cd01757a3219212bee8308b93a6e0d333a25a61b674e1053a360e5768c01390868061165e578b611660565b335b6040519115158252600160a060020a031660208201526040908101905180910390a2600193505b600c60ff85161161172657600192505b600a60ff8416116117185760008860ff600019860116600a81106116b757fe5b6020020151111561170d576116d4868460018703600a020161181f565b91506010840260400190508060ff168260ff1610806116f6575060ff8416600c145b1561170d5761170d8b85898b600188038e8b6118c6565b600190920191611697565b931593600190930192611687565b60008b8152600160209081526040808320600160a060020a03338116808652828552838620869055908e168552925280832092909255908c907f3faf8fa3d70be2795b288eeaecec28ebc8c8d2f0a8fec2a576322cd8ed50d6f7905160405180910390a35050505050505050505050565b61179f6119d8565b836117aa84846119b4565b63ffffffff1640604051918252602082015260409081019051908190039020815280516040519081526020016040519081900390206020820190815251604051908152602001604051908190039020604082019081525160405190815260200160405190819003902060608201529392505050565b600060208260ff16101561185257825160ff83166020811061183d57fe5b1a60f860020a0260f860020a900490506118c0565b60408260ff16101561187557602083015160ff601f198401166020811061183d57fe5b60608260ff16101561189857602083015160ff603f198401166020811061183d57fe5b602083015160ff605f19840116602081106118af57fe5b1a60f860020a0260f860020a900490505b92915050565b600081156118d55750336118d8565b50815b600160a060020a03861663a9059cbb828760ff8816600a81106118f757fe5b602002015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561193f57600080fd5b5af1151561194c57600080fd5b508691505060ff8516600a811061195f57fe5b6020020151600160a060020a03821689600080516020611a028339815191528a60405160ff909116815260200160405180910390a460008560ff8616600a81106119a557fe5b60200201525050505050505050565b60008163ffffffff168363ffffffff16116119cf57816119d1565b825b9392505050565b60806040519081016040526004815b600081526000199190910190602001816119e7579050509056003665eb6c1d573fea820e2e5da7f05de75fb2ee0f16809ffa651bb1e007adaa79a165627a7a723058207621401dd7920b67023717738b55148ef05fe83e1f4cf378f026c8b11329be5d0029000000000000000000000000efabe332d31c3982b76f8630a306c960169bd5b3

Deployed Bytecode

0x6060604052600436106100a05763ffffffff60e060020a600035041663372e80c381146100a55780634e0733ea146100ce57806359828c9914610109578063610b16ab1461011c5780639a99ebf41461014f5780639edc7b4414610197578063a5f357de146101bc578063b314335c146101cf578063bb8f712f14610203578063ce5c52011461024b578063d4eb45401461027a578063f9c7e1c71461028d575b600080fd5b34156100b057600080fd5b6100b86102a3565b60405160ff909116815260200160405180910390f35b34156100d957600080fd5b6100f0600435600160a060020a03602435166102a8565b60405163ffffffff909116815260200160405180910390f35b341561011457600080fd5b6100b86102cb565b341561012757600080fd5b61014d600160a060020a036004351660243560443560643560843560a43560c4356102d0565b005b341561015a57600080fd5b61014d600435602435600160a060020a036044351660643560843560a43560c43560e43561010435610124356101443561016435610184356106e7565b34156101a257600080fd5b61014d60043560243560443560643560843560a43561093f565b34156101c757600080fd5b6100b8610c99565b34156101da57600080fd5b6101f1600435600160a060020a0360243516610c9e565b60405190815260200160405180910390f35b341561020e57600080fd5b61014d600435602435600160a060020a036044351660643560843560a43560c43560e4356101043561012435610144356101643561018435610cbb565b341561025657600080fd5b61025e610eea565b604051600160a060020a03909116815260200160405180910390f35b341561028557600080fd5b6100f0610ef9565b341561029857600080fd5b6100b8600435610efe565b604081565b600260209081526000928352604080842090915290825290205463ffffffff1681565b601081565b60008054819033600160a060020a039081169116146102ee57600080fd5b6000838152600160209081526040808320600160a060020a038d1684529091529020541561031b57600080fd5b600083815260036020526040902054600260ff9091161061033b57600080fd5b600083815260036020526040808220805460ff8082166001011660ff199091161790559054600160a060020a0390811693503016908390631d36e06c908b905160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156103ae57600080fd5b5af115156103bb57600080fd5b50505060405180519050600160a060020a03161415156103da57600080fd5b30600160a060020a031682600160a060020a0316631d36e06c8960405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561042a57600080fd5b5af1151561043757600080fd5b50505060405180519050600160a060020a031614151561045657600080fd5b30600160a060020a031682600160a060020a0316631d36e06c8860405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156104a657600080fd5b5af115156104b357600080fd5b50505060405180519050600160a060020a03161415156104d257600080fd5b30600160a060020a031682600160a060020a0316631d36e06c8760405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561052257600080fd5b5af1151561052f57600080fd5b50505060405180519050600160a060020a031614151561054e57600080fd5b30600160a060020a031682600160a060020a0316631d36e06c8660405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561059e57600080fd5b5af115156105ab57600080fd5b50505060405180519050600160a060020a03161415156105ca57600080fd5b82898989898989604051968752600160a060020a03959095166c01000000000000000000000000026020870152603486019390935260548501919091526074840152609483015260b482015260d4016040519081900390206000848152600160209081526040808320600160a060020a038e168085529083528184208590558784526002835281842081855290925291829020805463ffffffff19164363ffffffff1617905591925082919085907fbc03a9cf3a0cea583d2d3433a6d1f5f4da47c1821cb48d3ae9977ea802a6dd449042908d908d908d908d908d905180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a4505050505050505050565b8c338b8b8b8b8b604051968752600160a060020a03959095166c01000000000000000000000000026020870152603486019390935260548501919091526074840152609483015260b482015260d40160405190819003902060008e8152600160209081526040808320600160a060020a03331684529091529020541461076c57600080fd5b8c8b8686868686604051968752600160a060020a03959095166c01000000000000000000000000026020870152603486019390935260548501919091526074840152609483015260b482015260d401604051809103902060001916600160008f6000191660001916815260200190815260200160002060008d600160a060020a0316600160a060020a03168152602001908152602001600020546000191614151561081657600080fd5b60008d8152600260209081526040808320600160a060020a033316845290915290205463ffffffff9081166028018116439091161161085457600080fd5b60008d8152600260209081526040808320600160a060020a038f16845290915290205463ffffffff9081166028018116439091161161089257600080fd5b8b60405190815260200160405180910390206040519081526020016040519081900390208d146108c157600080fd5b60008d81526003602052604090205460ff166002146108df57600080fd5b6109308d8c610140604051908101604052808e81526020018d81526020018c81526020018b81526020018a815260200189815260200188815260200187815260200186815260200185815250610f13565b50505050505050505050505050565b60008087338888888888604051968752600160a060020a03959095166c01000000000000000000000000026020870152603486019390935260548501919091526074840152609483015260b482015260d4016040519081900390206000898152600160209081526040808320600160a060020a0333168452909152902054146109c757600080fd5b60008881526003602052604090205460ff166001146109e557600080fd5b600088815260036020526040808220805460ff191690559054600160a060020a03169250829063a9059cbb9033908a905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610a5657600080fd5b5af11515610a6357600080fd5b50505081600160a060020a031663a9059cbb338860405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610aba57600080fd5b5af11515610ac757600080fd5b50505081600160a060020a031663a9059cbb338760405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610b1e57600080fd5b5af11515610b2b57600080fd5b50505081600160a060020a031663a9059cbb338660405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610b8257600080fd5b5af11515610b8f57600080fd5b50505081600160a060020a031663a9059cbb338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610be657600080fd5b5af11515610bf357600080fd5b505050600088815260016020908152604080832033600160a060020a0316808552925280832080549390559192509089907faf1edfefb4cf4eecc7f6c040867de3c931298f6c597cc633ea77b7986fd7a7ff9042908b908b908b908b908b908a905196875260208701959095526040808701949094526060860192909252608085015260a084015260c083019190915260e0909101905180910390a35050505050505050565b600c81565b600160209081526000928352604080842090915290825290205481565b8c338b8b8b8b8b604051968752600160a060020a03959095166c01000000000000000000000000026020870152603486019390935260548501919091526074840152609483015260b482015260d40160405190819003902060008e8152600160209081526040808320600160a060020a033316845290915290205414610d4057600080fd5b8c8b8686868686604051968752600160a060020a03959095166c01000000000000000000000000026020870152603486019390935260548501919091526074840152609483015260b482015260d401604051809103902060001916600160008f6000191660001916815260200190815260200160002060008d600160a060020a0316600160a060020a031681526020019081526020016000205460001916141515610dea57600080fd5b60008d8152600260209081526040808320600160a060020a033316845290915290205463ffffffff9081164390911611610e2357600080fd5b60008d8152600260209081526040808320600160a060020a038f16845290915290205463ffffffff9081164390911611610e5c57600080fd5b8b6040519081526020016040519081900390208d14610e7a57600080fd5b60008d81526003602052604090205460ff16600214610e9857600080fd5b6109308d8d8d610140604051908101604052808f81526020018e81526020018d81526020018c81526020018b81526020018a8152602001898152602001888152602001878152602001868152506115ab565b600054600160a060020a031681565b602881565b60036020526000908152604090205460ff1681565b600054600160a060020a03168063a9059cbb33845160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610f6b57600080fd5b5af11515610f7857600080fd5b505050600160a060020a03811663a9059cbb33602085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610fd357600080fd5b5af11515610fe057600080fd5b505050600160a060020a03811663a9059cbb33604085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561103b57600080fd5b5af1151561104857600080fd5b505050600160a060020a03811663a9059cbb33606085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156110a357600080fd5b5af115156110b057600080fd5b505050600160a060020a03811663a9059cbb33608085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561110b57600080fd5b5af1151561111857600080fd5b505050600160a060020a03811663a9059cbb3360a085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561117357600080fd5b5af1151561118057600080fd5b505050600160a060020a03811663a9059cbb3360c085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156111db57600080fd5b5af115156111e857600080fd5b505050600160a060020a03811663a9059cbb3360e085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561124357600080fd5b5af1151561125057600080fd5b505050600160a060020a03811663a9059cbb3361010085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156112ac57600080fd5b5af115156112b957600080fd5b505050600160a060020a03811663a9059cbb3361012085015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561131557600080fd5b5af1151561132257600080fd5b508391505051600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a46020820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a46040820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a46060820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a46080820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a460a0820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a460c0820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a460e0820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a4610100820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a4610120820151600160a060020a03331685600080516020611a02833981519152600160405160ff909116815260200160405180910390a46000848152600160209081526040808320600160a060020a0333811680865282855283862086905590881685529252808320929092559085907f3e34363ddbc7b0d3069cc77187cf380a37574760ab8294704fc29a5542f54175905160405180910390a350505050565b60006115b56119d8565b60008054878252600260209081526040808420600160a060020a0333811686529252808420548883168552908420549190921694508291829182918291611607918c9163ffffffff9182169116611797565b95506002865160001a60f860020a0260f860020a900460ff1681151561162957fe5b0660ff161594508a7f3cd01757a3219212bee8308b93a6e0d333a25a61b674e1053a360e5768c01390868061165e578b611660565b335b6040519115158252600160a060020a031660208201526040908101905180910390a2600193505b600c60ff85161161172657600192505b600a60ff8416116117185760008860ff600019860116600a81106116b757fe5b6020020151111561170d576116d4868460018703600a020161181f565b91506010840260400190508060ff168260ff1610806116f6575060ff8416600c145b1561170d5761170d8b85898b600188038e8b6118c6565b600190920191611697565b931593600190930192611687565b60008b8152600160209081526040808320600160a060020a03338116808652828552838620869055908e168552925280832092909255908c907f3faf8fa3d70be2795b288eeaecec28ebc8c8d2f0a8fec2a576322cd8ed50d6f7905160405180910390a35050505050505050505050565b61179f6119d8565b836117aa84846119b4565b63ffffffff1640604051918252602082015260409081019051908190039020815280516040519081526020016040519081900390206020820190815251604051908152602001604051908190039020604082019081525160405190815260200160405190819003902060608201529392505050565b600060208260ff16101561185257825160ff83166020811061183d57fe5b1a60f860020a0260f860020a900490506118c0565b60408260ff16101561187557602083015160ff601f198401166020811061183d57fe5b60608260ff16101561189857602083015160ff603f198401166020811061183d57fe5b602083015160ff605f19840116602081106118af57fe5b1a60f860020a0260f860020a900490505b92915050565b600081156118d55750336118d8565b50815b600160a060020a03861663a9059cbb828760ff8816600a81106118f757fe5b602002015160405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561193f57600080fd5b5af1151561194c57600080fd5b508691505060ff8516600a811061195f57fe5b6020020151600160a060020a03821689600080516020611a028339815191528a60405160ff909116815260200160405180910390a460008560ff8616600a81106119a557fe5b60200201525050505050505050565b60008163ffffffff168363ffffffff16116119cf57816119d1565b825b9392505050565b60806040519081016040526004815b600081526000199190910190602001816119e7579050509056003665eb6c1d573fea820e2e5da7f05de75fb2ee0f16809ffa651bb1e007adaa79a165627a7a723058207621401dd7920b67023717738b55148ef05fe83e1f4cf378f026c8b11329be5d0029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000efabe332d31c3982b76f8630a306c960169bd5b3

-----Decoded View---------------
Arg [0] : _cryptogsAddress (address): 0xeFabE332D31c3982B76F8630a306C960169bD5b3

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000efabe332d31c3982b76f8630a306c960169bd5b3


Swarm Source

bzzr://7621401dd7920b67023717738b55148ef05fe83e1f4cf378f026c8b11329be5d

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.