Contract Overview
Balance: 0 Ether
Transactions: 3 txns
 Latest 3 txns

TxHash Age From To Value [TxFee]
0x7383c39c8dfefcaf05b8e14749a18abea756b6ba38ed57607dda7e742267a63145 days 7 hrs ago0xd85c3c5e20f6c168c111446583119944b303624d  IN   0x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether0.005019125
0x3eb253bc109f8b27229dc4a09a251fb68b9a015e30a1b901c1479674cad61cdd45 days 7 hrs ago0x2bf78e554bb2ba204dd3983f692c25f6dd053210  IN   0x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether0.004897525
0x2e3aaefd2cce00cc8ac91b3f6726782a0089a05fee3d8096334f8db5ed95a71567 days 20 hrs ago0x1b380dc721280ddbd4e0cbf342bf2c23a5fec96a  IN    Contract Creation0 Ether0.001864641
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0x93c6edce34a5e0b28715e5f3cb25c38ed8e87113e7da32259279964fbe67ae6f489523123 days 8 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0xca3171e120a94d77508a6df12fd5e22a74c1d5d8e1ff598bc1d48362490f572e489523123 days 8 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0x4566f05be4b7ee4b7c59b2bfe0e775cdf4feec49d52b6d5af8683c7476b103b9489522323 days 8 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0x4482d6bec94fd344a77aba80e620e3359c70c8c4f690bc112fabf6715e94ec77489522223 days 8 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0xe656ea3d37013d3f4a67a964c983439866e4c031a2cc12e7e0f641a30854d9be489521123 days 8 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0x32724944cd39911004f98dc82876c1bf8f4fc3c1953bd216df6fe9ca942e2cce489521123 days 8 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0xec543d600ef5723a17d42481fae5c46b7ca2be955565cf8e1d17e47ba5f02084489520123 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0x5bdcb8ca440f33e0c79a30cf54f6b3983030b2bc55e215643d7f1c41bccaebb7489520123 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0xe363f0dd35113089b8138d954d16903d7b5f4ed705d0215dea0326a841a6c01b489519123 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0x42864e7a0de4d5e1dc7ba77da33869f1eb20b08b81e5b3e61663529a0b875328489519123 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0x27e2302ae053f7753b8513b7feb8d98232f45d8d0f348719e2cef1f01eccd1ea489518223 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0x14da1d4f0f4e5b1a053b1a92b6c98717e000395499b7dd0056b1c009516af8fd489518223 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0x630b1f54af98793d2ce8ac83a68944ab4ea1cd74e1e16a92f911e5dac28d3945489517123 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0xa8af3a3486dd0e8b316dcad87706f403cd4a3abaacc90b7ed18198364d096cd8489516223 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0xac7596931847f2d5d23553d6d0226a72538438a80007100dc5dd05a8a57fd5d2489516223 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0x118f0927f75cf736aaf12b87f90b01c6824e1db7b67af3ee5a81847449b036f7489515123 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0x932689ae644beede451cf22c44f0791b0db4149e1855a9368884e18106fc0529489514123 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0xafed6343308cb3a34614629a2b6c317fb738ab4d9f19e9403a223b41f06462cf489514123 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0x17fc69412e87ff8f1ecb6cb3e73bdf446a6758ac5123d8d753ff30117ebd13ca489513123 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0x09a071f72953b626c3d7d1c7fbb88269ab9de26be6171f5fbbda3cca3af2ff6e489512523 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0xce62d4646e4a1078f8aa3c70642998d86d7fa97e4efc8cad18cf419911d0412f489512523 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0xad759b1579d8693aa7173346a3063ade4f5079f5ae5ca6598e6a6da2408b9ec9489511123 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0x24fc02e470982adfff4a31bd99870b43f7aae026681277d960bdda3643651e45489510223 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0x2e1523f11f02eea489daac5276c82e891b4daa45edd3424549ed68e231671d92489510223 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
0x727a801bdd42cbb187d4a84f4bd0a6e29c57c69f1d9925cc41e0d0f6ab0d837f489509223 days 9 hrs ago0xe7615ad93bca725eff6350704112a64a3c95d7830x00c5ce08a2e99d007b5d966bea21e3644e4a6b170 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: VerifierRegistry
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.24;

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

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


  event OwnershipRenounced(address indexed previousOwner);
  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 = 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 relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @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 {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}

// File: token-sale-contracts/contracts/Token.sol

// Abstract contract for the full ERC 20 Token standard
// https://github.com/ethereum/EIPs/issues/20

contract Token {
    /* This is a slight change to the ERC20 base standard.
    function totalSupply() constant returns (uint256 supply);
    is replaced with:
    uint256 public totalSupply;
    This automatically creates a getter function for the totalSupply.
    This is moved to the base contract since public getter functions are not
    currently recognised as an implementation of the matching abstract
    function by the compiler.
    */
    /// total amount of tokens
    uint256 public totalSupply;

    /// @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 `_spender` to spend `_value` tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @param _value The amount of tokens 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);
}

// File: token-sale-contracts/contracts/StandardToken.sol

/*
You should inherit from StandardToken or, for a token like you would want to
deploy in something like Mist, see HumanStandardToken.sol.
(This implements ONLY the standard functions and NOTHING else.
If you deploy this, you won't have anything useful.)

Implements ERC 20 Token standard: https://github.com/ethereum/EIPs/issues/20
.*/

contract StandardToken is Token {

    function transfer(address _to, uint256 _value) returns (bool success) {
        //Default assumes totalSupply can't be over max (2^256 - 1).
        //If your token leaves out totalSupply and can issue more tokens as time goes on, you need to check if it doesn't wrap.
        //Replace the if with this one instead.
        //if (balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
        if (balances[msg.sender] >= _value && _value > 0) {
            balances[msg.sender] -= _value;
            balances[_to] += _value;
            Transfer(msg.sender, _to, _value);
            return true;
        } else { return false; }
    }

    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
        //same as above. Replace this line with the following if you want to protect against wrapping uints.
        //if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
        if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0) {
            balances[_to] += _value;
            balances[_from] -= _value;
            allowed[_from][msg.sender] -= _value;
            Transfer(_from, _to, _value);
            return true;
        } else { return false; }
    }

    function balanceOf(address _owner) constant returns (uint256 balance) {
        return balances[_owner];
    }

    function approve(address _spender, uint256 _value) returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
      return allowed[_owner][_spender];
    }

    mapping (address => uint256) balances;
    mapping (address => mapping (address => uint256)) allowed;
}

// File: token-sale-contracts/contracts/HumanStandardToken.sol

/*
This Token Contract implements the standard token functionality (https://github.com/ethereum/EIPs/issues/20) as well as the following OPTIONAL extras intended for use by humans.

In other words. This is intended for deployment in something like a Token Factory or Mist wallet, and then used by humans.
Imagine coins, currencies, shares, voting weight, etc.
Machine-based, rapid creation of many tokens would not necessarily need these extra features or will be minted in other manners.

1) Initial Finite Supply (upon creation one specifies how much is minted).
2) In the absence of a token registry: Optional Decimal, Symbol & Name.
3) Optional approveAndCall() functionality to notify a contract if an approval() has occurred.

.*/

contract HumanStandardToken is StandardToken {

    function () {
        //if ether is sent to this address, send it back.
        throw;
    }

    /* Public variables of the token */

    /*
    NOTE:
    The following variables are OPTIONAL vanities. One does not have to include them.
    They allow one to customise the token contract & in no way influences the core functionality.
    Some wallets/interfaces might not even bother to look at this information.
    */
    string public name;                   //fancy name: eg Simon Bucks
    uint8 public decimals;                //How many decimals to show. ie. There could 1000 base units with 3 decimals. Meaning 0.980 SBX = 980 base units. It's like comparing 1 wei to 1 ether.
    string public symbol;                 //An identifier: eg SBX
    string public version = 'H0.1';       //human 0.1 standard. Just an arbitrary versioning scheme.

    function HumanStandardToken(
        uint256 _initialAmount,
        string _tokenName,
        uint8 _decimalUnits,
        string _tokenSymbol
        ) {
        balances[msg.sender] = _initialAmount;               // Give the creator all initial tokens
        totalSupply = _initialAmount;                        // Update total supply
        name = _tokenName;                                   // Set the name for display purposes
        decimals = _decimalUnits;                            // Amount of decimals for display purposes
        symbol = _tokenSymbol;                               // Set the symbol for display purposes
    }

    /* Approves and then calls the receiving contract */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);

        //call the receiveApproval function on the contract you want to be notified. This crafts the function signature manually so one doesn't have to include a contract in here just for this.
        //receiveApproval(address _from, uint256 _value, address _tokenContract, bytes _extraData)
        //it is assumed that when does this that the call *should* succeed, otherwise one would use vanilla approve instead.
        if(!_spender.call(bytes4(bytes32(sha3("receiveApproval(address,uint256,address,bytes)"))), msg.sender, _value, this, _extraData)) { throw; }
        return true;
    }
}

// File: contracts/VerifierRegistry.sol

contract VerifierRegistry is Ownable {
  event LogVerifierRegistered(
    address id,
    string location,
    bool created,
    uint256 balance,
    uint256 shard
  );

  event LogVerifierUpdated(
    address id,
    string location,
    bool created,
    uint256 balance,
    uint256 shard
  );

  event LogBalancePerShard(uint256 shard, uint256 balance);

  struct Verifier {
    address id;
    string location;
    bool created;
    uint256 balance;
    uint256 shard;
  }

  mapping(address => Verifier) public verifiers;

  /// @dev shard => balance
  mapping(uint256 => uint256) public balancesPerShard;

  address[] public addresses;
  address public tokenAddress;
  uint256 public verifiersPerShard;

  constructor(address _tokenAddress, uint256 _verifiersPerShard)
  public {
    tokenAddress = _tokenAddress;
    verifiersPerShard = _verifiersPerShard;
  }

  function create(string _location) public {
    Verifier storage verifier = verifiers[msg.sender];

    require(!verifier.created, "verifier already exists");

    verifier.id = msg.sender;
    verifier.location = _location;
    verifier.created = true;
    verifier.shard = uint256(addresses.length) / verifiersPerShard;

    addresses.push(verifier.id);

    emit LogVerifierRegistered(
      verifier.id,
      verifier.location,
      verifier.created,
      verifier.balance,
      verifier.shard
    );
  }

  function getNumberOfVerifiers() public view returns (uint) {
    return addresses.length;
  }

  function receiveApproval(address _from, uint256 _value, address _token, bytes _data) public returns (bool success) {
    Token token = Token(tokenAddress);

    uint256 allowance = token.allowance(_from, this);

    require(allowance > 0, "nothing to approve");

    require(token.transferFrom(_from, this, allowance), "transferFrom failed");

    verifiers[_from].balance += allowance;

    uint256 shard = verifiers[_from].shard;
    uint256 shardBalance = balancesPerShard[shard] + allowance;
    balancesPerShard[shard] = shardBalance;

    emit LogBalancePerShard(shard, shardBalance);

    return true;
  }

  function update(string _location) public {
    Verifier storage verifier = verifiers[msg.sender];

    require(verifier.created, "verifier do not exists");

    verifier.location = _location;

    emit LogVerifierUpdated(
      verifier.id,
      verifier.location,
      verifier.created,
      verifier.balance,
      verifier.shard
    );
  }

  function withdraw(uint256 _value) public returns (bool) {
    Verifier storage verifier = verifiers[msg.sender];

    require(_value > 0 && verifier.balance >= _value, "nothing to withdraw");

    verifier.balance -= _value;

    uint256 shard = verifier.shard;
    uint256 shardBalance = balancesPerShard[shard] - _value;
    balancesPerShard[shard] = shardBalance;

    emit LogBalancePerShard(shard, shardBalance);

    Token token = Token(tokenAddress);

    require(token.transfer(msg.sender, _value), "transfer failed");

    return true;
  }

  function updateTokenAddress(address _newTokenAddress) public onlyOwner {
    require(_newTokenAddress != address(0), "empty token address");

    tokenAddress = _newTokenAddress;
  }

  function updateVerifiersPerShard(uint256 _newVerifiersPerShard) public onlyOwner {
    require(_newVerifiersPerShard > 0, "_newVerifiersPerShard is empty");

    verifiersPerShard = _newVerifiersPerShard;
  }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"verifiersPerShard","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"withdraw","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_location","type":"string"}],"name":"update","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"balancesPerShard","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newTokenAddress","type":"address"}],"name":"updateTokenAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"verifiers","outputs":[{"name":"id","type":"address"},{"name":"location","type":"string"},{"name":"created","type":"bool"},{"name":"balance","type":"uint256"},{"name":"shard","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getNumberOfVerifiers","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"},{"name":"_token","type":"address"},{"name":"_data","type":"bytes"}],"name":"receiveApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newVerifiersPerShard","type":"uint256"}],"name":"updateVerifiersPerShard","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_location","type":"string"}],"name":"create","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"addresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_verifiersPerShard","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"address"},{"indexed":false,"name":"location","type":"string"},{"indexed":false,"name":"created","type":"bool"},{"indexed":false,"name":"balance","type":"uint256"},{"indexed":false,"name":"shard","type":"uint256"}],"name":"LogVerifierRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"address"},{"indexed":false,"name":"location","type":"string"},{"indexed":false,"name":"created","type":"bool"},{"indexed":false,"name":"balance","type":"uint256"},{"indexed":false,"name":"shard","type":"uint256"}],"name":"LogVerifierUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"shard","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"LogBalancePerShard","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
608060405234801561001057600080fd5b50604051604080611aac8339810180604052810190808051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060058190555050506119d6806100d66000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063043d9aaa146100e05780632e1a7d4d1461010b5780633d7403a3146101505780634ff85794146101b95780636691461a146101fa5780636c8244871461023d5780637104a14214610345578063715018a6146103705780638da5cb5b146103875780638f4ffcb1146103de578063969eb430146104a95780639d76ea58146104d6578063b6a46b3b1461052d578063edf26d9b14610596578063f2fde38b14610603575b600080fd5b3480156100ec57600080fd5b506100f5610646565b6040518082815260200191505060405180910390f35b34801561011757600080fd5b506101366004803603810190808035906020019092919050505061064c565b604051808215151515815260200191505060405180910390f35b34801561015c57600080fd5b506101b7600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610929565b005b3480156101c557600080fd5b506101e460048036038101908080359060200190929190505050610b58565b6040518082815260200191505060405180910390f35b34801561020657600080fd5b5061023b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b70565b005b34801561024957600080fd5b5061027e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cb4565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200185151515158152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b838110156103065780820151818401526020810190506102eb565b50505050905090810190601f1680156103335780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b34801561035157600080fd5b5061035a610daf565b6040518082815260200191505060405180910390f35b34801561037c57600080fd5b50610385610dbc565b005b34801561039357600080fd5b5061039c610ebe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103ea57600080fd5b5061048f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610ee3565b604051808215151515815260200191505060405180910390f35b3480156104b557600080fd5b506104d46004803603810190808035906020019092919050505061132e565b005b3480156104e257600080fd5b506104eb61140b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561053957600080fd5b50610594600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611431565b005b3480156105a257600080fd5b506105c160048036038101908080359060200190929190505050611766565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060f57600080fd5b50610644600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117a4565b005b60055481565b6000806000806000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002093506000861180156106a9575085846003015410155b151561071d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6e6f7468696e6720746f2077697468647261770000000000000000000000000081525060200191505060405180910390fd5b858460030160008282540392505081905550836004015492508560026000858152602001908152602001600020540391508160026000858152602001908152602001600020819055507f083a443e29e540b0046ce75d1318183bc3b44597b1d8594999179e773cc3439e8383604051808381526020018281526020019250505060405180910390a1600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561086d57600080fd5b505af1158015610881573d6000803e3d6000fd5b505050506040513d602081101561089757600080fd5b8101908080519060200190929190505050151561091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7472616e73666572206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b6001945050505050919050565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020160009054906101000a900460ff1615156109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f766572696669657220646f206e6f74206578697374730000000000000000000081525060200191505060405180910390fd5b81816001019080519060200190610a0a929190611905565b507f323d446bdd943279d2cfc24d9c0ae53f58e5de975996d75c19b276a9a9bfda5a8160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826001018360020160009054906101000a900460ff1684600301548560040154604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200185151515158152602001848152602001838152602001828103825286818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610b425780601f10610b1757610100808354040283529160200191610b42565b820191906000526020600020905b815481529060010190602001808311610b2557829003601f168201915b5050965050505050505060405180910390a15050565b60026020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bcb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610c70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f656d70747920746f6b656e20616464726573730000000000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d865780601f10610d5b57610100808354040283529160200191610d86565b820191906000526020600020905b815481529060010190602001808311610d6957829003601f168201915b5050505050908060020160009054906101000a900460ff16908060030154908060040154905085565b6000600380549050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e1757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8a306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015610fdf57600080fd5b505af1158015610ff3573d6000803e3d6000fd5b505050506040513d602081101561100957600080fd5b81019080805190602001909291905050509250600083111515611094576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f7468696e6720746f20617070726f7665000000000000000000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd8a30866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561116b57600080fd5b505af115801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b8101908080519060200190929190505050151561121a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f7472616e7366657246726f6d206661696c65640000000000000000000000000081525060200191505060405180910390fd5b82600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008282540192505081905550600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015491508260026000848152602001908152602001600020540190508060026000848152602001908152602001600020819055507f083a443e29e540b0046ce75d1318183bc3b44597b1d8594999179e773cc3439e8282604051808381526020018281526020019250505060405180910390a16001945050505050949350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561138957600080fd5b600081111515611401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f5f6e6577566572696669657273506572536861726420697320656d707479000081525060200191505060405180910390fd5b8060058190555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020160009054906101000a900460ff161515156114fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f766572696669657220616c72656164792065786973747300000000000000000081525060200191505060405180910390fd5b338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081816001019080519060200190611556929190611905565b5060018160020160006101000a81548160ff02191690831515021790555060055460038054905081151561158657fe5b04816004018190555060038160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507fd846f6ab60404ce70c316e1f4978c5fa90bbe71456c9ce63d673629c7d86898e8160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826001018360020160009054906101000a900460ff1684600301548560040154604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001851515151581526020018481526020018381526020018281038252868181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156117505780601f1061172557610100808354040283529160200191611750565b820191906000526020600020905b81548152906001019060200180831161173357829003601f168201915b5050965050505050505060405180910390a15050565b60038181548110151561177557fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117ff57600080fd5b6118088161180b565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561184757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061194657805160ff1916838001178555611974565b82800160010185558215611974579182015b82811115611973578251825591602001919060010190611958565b5b5090506119819190611985565b5090565b6119a791905b808211156119a357600081600090555060010161198b565b5090565b905600a165627a7a72305820c3285418447072dc504f5f4899c9d3a03e7ef054076eb0ee0c97eac3940d39ed00290000000000000000000000001588d300a9995934aa9daae19be285a66eb46c1c0000000000000000000000000000000000000000000000000000000000000001

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

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001588d300a9995934aa9daae19be285a66eb46c1c
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001


   Swarm Source:
bzzr://c3285418447072dc504f5f4899c9d3a03e7ef054076eb0ee0c97eac3940d39ed

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward