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

TxHash Age From To Value [TxFee]
0x1ce1ce09f3f09469061470343313ede83cd7fd7399e568d5f0323233c006c54d8 days 23 hrs ago0x2bf78e554bb2ba204dd3983f692c25f6dd053210  IN   0xc570beb552943e89ca2a58484b3a8dff545104d10 Ether0.00674656
0x0786fb798d732d7b1934fb00d3f53c7ab21aa53ec1ed935ef180b465b97b1aad8 days 23 hrs ago0xd85c3c5e20f6c168c111446583119944b303624d  IN   0xc570beb552943e89ca2a58484b3a8dff545104d10 Ether0.007179704
0xb78173e450065cb857dfe6269643ec77bca79f0e0c3991cab2bd8cbfebb1d2bd8 days 23 hrs ago0x1b380dc721280ddbd4e0cbf342bf2c23a5fec96a  IN    Contract Creation0 Ether0.002679226
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 6 Internal Transactions

ParentTxHash Block Age From To Value
0xaa139b9cd5c853529f5cb922b011d8f46cc5ea6205efde2bdb4733cf3683967650004728 days 22 hrs ago0xc570beb552943e89ca2a58484b3a8dff545104d10x1588d300a9995934aa9daae19be285a66eb46c1c0 Ether
0xaa139b9cd5c853529f5cb922b011d8f46cc5ea6205efde2bdb4733cf3683967650004728 days 22 hrs ago0xc570beb552943e89ca2a58484b3a8dff545104d10x1588d300a9995934aa9daae19be285a66eb46c1c0 Ether
0xaa139b9cd5c853529f5cb922b011d8f46cc5ea6205efde2bdb4733cf3683967650004728 days 22 hrs ago0x1588d300a9995934aa9daae19be285a66eb46c1c0xc570beb552943e89ca2a58484b3a8dff545104d10 Ether
0x3e848cc3f36ed6781e86e5100c4ed0ccb9a8a544695f275f0af7f7df72b8882650004678 days 23 hrs ago0xc570beb552943e89ca2a58484b3a8dff545104d10x1588d300a9995934aa9daae19be285a66eb46c1c0 Ether
0x3e848cc3f36ed6781e86e5100c4ed0ccb9a8a544695f275f0af7f7df72b8882650004678 days 23 hrs ago0xc570beb552943e89ca2a58484b3a8dff545104d10x1588d300a9995934aa9daae19be285a66eb46c1c0 Ether
0x3e848cc3f36ed6781e86e5100c4ed0ccb9a8a544695f275f0af7f7df72b8882650004678 days 23 hrs ago0x1588d300a9995934aa9daae19be285a66eb46c1c0xc570beb552943e89ca2a58484b3a8dff545104d10 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
pragma solidity ^0.4.8;

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: /Users/avoloshko/projects/digivice/node_modules/token-sale-contracts/contracts/Token.sol

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

/*
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
.*/
pragma solidity ^0.4.6;


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.

.*/


pragma solidity ^0.4.6;

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 name,
    string location,
    bool active,
    uint256 balance,
    uint256 shard
  );

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

  event LogBalancePerShard(uint256 shard, uint256 balance);

  event LogUpdateActiveStatus(address executor, address verifier, bool active);

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

  mapping(address => Verifier) public verifiers;
  mapping(bytes32 => bool) public uniqueNames;

  /// @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 _name, string _location) public {
    Verifier storage verifier = verifiers[msg.sender];

    require(verifier.id == address(0), "verifier already exists");

    bytes32 hash = hashName(_name);
    require(!uniqueNames[hash], "specified name is not available");
    uniqueNames[hash] = true;

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

    addresses.push(verifier.id);

    emit LogVerifierRegistered(
      verifier.id,
      verifier.name,
      verifier.location,
      verifier.active,
      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 _name, string _location) public {
    Verifier storage verifier = verifiers[msg.sender];

    require(verifier.id != address(0), "verifier do not exists");

    bytes32 hash = hashName(_name);
    bytes32 oldHash = hashName(verifier.name);
    require(hash == oldHash || !uniqueNames[hash], "specified name is not available");
    uniqueNames[oldHash] = false;
    uniqueNames[hash] = true;

    verifier.name = _name;
    verifier.location = _location;

    emit LogVerifierUpdated(
      verifier.id,
      verifier.name,
      verifier.location,
      verifier.active,
      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;
  }

  function updateActiveStatus(address _verifierAddress, bool _active) public onlyOwner {
    Verifier storage verifier = verifiers[_verifierAddress];
    require(verifier.id != address(0), "verifier do not exists");
    require(verifier.active != _active, "no changes to active flag");

    verifier.active = _active;

    emit LogUpdateActiveStatus(msg.sender, _verifierAddress, _active);
  }

  function hashName(string _base) internal pure returns (bytes32) {
    bytes memory baseBytes = bytes(_base);
    for(uint i = 0; i < baseBytes.length; i++) {
      if ((baseBytes[i] >= 65) && (baseBytes[i] <= 90)) {
        baseBytes[i] = bytes1(int(baseBytes[i]) + 32);
      }
    }
    return keccak256(_base);
  }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"verifiersPerShard","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_location","type":"string"}],"name":"create","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"_verifierAddress","type":"address"},{"name":"_active","type":"bool"}],"name":"updateActiveStatus","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":"name","type":"string"},{"name":"location","type":"string"},{"name":"active","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":true,"inputs":[{"name":"","type":"bytes32"}],"name":"uniqueNames","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","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"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_location","type":"string"}],"name":"update","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":"name","type":"string"},{"indexed":false,"name":"location","type":"string"},{"indexed":false,"name":"active","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":"name","type":"string"},{"indexed":false,"name":"location","type":"string"},{"indexed":false,"name":"active","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":false,"name":"executor","type":"address"},{"indexed":false,"name":"verifier","type":"address"},{"indexed":false,"name":"active","type":"bool"}],"name":"LogUpdateActiveStatus","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
608060405234801561001057600080fd5b506040516040806127078339810180604052810190808051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806006819055505050612631806100d66000396000f3006080604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063043d9aaa146100f6578063198e2b8a146101215780632e1a7d4d146101d0578063489e96eb146102155780634ff85794146102645780636691461a146102a55780636c824487146102e85780637104a1421461045c578063715018a6146104875780638da5cb5b1461049e5780638f4ffcb1146104f5578063969eb430146105c05780639d76ea58146105ed578063e068309514610644578063edf26d9b1461068d578063f2fde38b146106fa578063f4c84d191461073d575b600080fd5b34801561010257600080fd5b5061010b6107ec565b6040518082815260200191505060405180910390f35b34801561012d57600080fd5b506101ce600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506107f2565b005b3480156101dc57600080fd5b506101fb60048036038101908080359060200190929190505050610cee565b604051808215151515815260200191505060405180910390f35b34801561022157600080fd5b50610262600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610fcb565b005b34801561027057600080fd5b5061028f60048036038101908080359060200190929190505050611283565b6040518082815260200191505060405180910390f35b3480156102b157600080fd5b506102e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129b565b005b3480156102f457600080fd5b50610329600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113df565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200186151515158152602001858152602001848152602001838103835288818151815260200191508051906020019080838360005b838110156103b557808201518184015260208101905061039a565b50505050905090810190601f1680156103e25780820380516001836020036101000a031916815260200191505b50838103825287818151815260200191508051906020019080838360005b8381101561041b578082015181840152602081019050610400565b50505050905090810190601f1680156104485780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b34801561046857600080fd5b50610471611578565b6040518082815260200191505060405180910390f35b34801561049357600080fd5b5061049c611585565b005b3480156104aa57600080fd5b506104b3611687565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561050157600080fd5b506105a6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506116ac565b604051808215151515815260200191505060405180910390f35b3480156105cc57600080fd5b506105eb60048036038101908080359060200190929190505050611af7565b005b3480156105f957600080fd5b50610602611bd4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065057600080fd5b506106736004803603810190808035600019169060200190929190505050611bfa565b604051808215151515815260200191505060405180910390f35b34801561069957600080fd5b506106b860048036038101908080359060200190929190505050611c1a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561070657600080fd5b5061073b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c58565b005b34801561074957600080fd5b506107ea600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611cbf565b005b60065481565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209150600073ffffffffffffffffffffffffffffffffffffffff168260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f766572696669657220616c72656164792065786973747300000000000000000081525060200191505060405180910390fd5b610907846121a7565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156109a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f737065636966696564206e616d65206973206e6f7420617661696c61626c650081525060200191505060405180910390fd5b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550338260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083826001019080519060200190610a36929190612560565b5082826002019080519060200190610a4f929190612560565b5060018260030160006101000a81548160ff021916908315150217905550600654600480549050811515610a7f57fe5b04826005018190555060048260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507f7231e0164496ac51e95e4d19b47905608ad8c3604f634390c9d5d2b884b2ee598260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600101846002018560030160009054906101000a900460ff1686600401548760050154604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200186151515158152602001858152602001848152602001838103835288818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610c515780601f10610c2657610100808354040283529160200191610c51565b820191906000526020600020905b815481529060010190602001808311610c3457829003601f168201915b5050838103825287818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610cd45780601f10610ca957610100808354040283529160200191610cd4565b820191906000526020600020905b815481529060010190602001808311610cb757829003601f168201915b50509850505050505050505060405180910390a150505050565b6000806000806000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350600086118015610d4b575085846004015410155b1515610dbf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6e6f7468696e6720746f2077697468647261770000000000000000000000000081525060200191505060405180910390fd5b858460040160008282540392505081905550836005015492508560036000858152602001908152602001600020540391508160036000858152602001908152602001600020819055507f083a443e29e540b0046ce75d1318183bc3b44597b1d8594999179e773cc3439e8383604051808381526020018281526020019250505060405180910390a1600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f0f57600080fd5b505af1158015610f23573d6000803e3d6000fd5b505050506040513d6020811015610f3957600080fd5b81019080805190602001909291905050501515610fbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7472616e73666572206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b6001945050505050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561102857600080fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611132576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f766572696669657220646f206e6f74206578697374730000000000000000000081525060200191505060405180910390fd5b8115158160030160009054906101000a900460ff161515141515156111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f6e6f206368616e67657320746f2061637469766520666c61670000000000000081525060200191505060405180910390fd5b818160030160006101000a81548160ff0219169083151502179055507f9929c7d37018741c37bc358f5414d1fa0b1fc6fab06d6d69467586399743c7b6338484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182151515158152602001935050505060405180910390a1505050565b60036020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112f657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561139b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f656d70747920746f6b656e20616464726573730000000000000000000000000081525060200191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114b15780601f10611486576101008083540402835291602001916114b1565b820191906000526020600020905b81548152906001019060200180831161149457829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561154f5780601f106115245761010080835404028352916020019161154f565b820191906000526020600020905b81548152906001019060200180831161153257829003601f168201915b5050505050908060030160009054906101000a900460ff16908060040154908060050154905086565b6000600480549050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115e057600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8a306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156117a857600080fd5b505af11580156117bc573d6000803e3d6000fd5b505050506040513d60208110156117d257600080fd5b8101908080519060200190929190505050925060008311151561185d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f7468696e6720746f20617070726f7665000000000000000000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd8a30866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561193457600080fd5b505af1158015611948573d6000803e3d6000fd5b505050506040513d602081101561195e57600080fd5b810190808051906020019092919050505015156119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f7472616e7366657246726f6d206661696c65640000000000000000000000000081525060200191505060405180910390fd5b82600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008282540192505081905550600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015491508260036000848152602001908152602001600020540190508060036000848152602001908152602001600020819055507f083a443e29e540b0046ce75d1318183bc3b44597b1d8594999179e773cc3439e8282604051808381526020018281526020019250505060405180910390a16001945050505050949350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b5257600080fd5b600081111515611bca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f5f6e6577566572696669657273506572536861726420697320656d707479000081525060200191505060405180910390fd5b8060068190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915054906101000a900460ff1681565b600481815481101515611c2957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611cb357600080fd5b611cbc81612466565b50565b6000806000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250600073ffffffffffffffffffffffffffffffffffffffff168360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611dce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f766572696669657220646f206e6f74206578697374730000000000000000000081525060200191505060405180910390fd5b611dd7856121a7565b9150611e7e836001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e745780601f10611e4957610100808354040283529160200191611e74565b820191906000526020600020905b815481529060010190602001808311611e5757829003601f168201915b50505050506121a7565b9050806000191682600019161480611ebc575060026000836000191660001916815260200190815260200160002060009054906101000a900460ff16155b1515611f30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f737065636966696564206e616d65206973206e6f7420617661696c61626c650081525060200191505060405180910390fd5b600060026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160026000846000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555084836001019080519060200190611fb0929190612560565b5083836002019080519060200190611fc9929190612560565b507f45eb49b9383c91271a80e0fe5781c0eea6ff6f337988ebcfceb500c2fcf25f238360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600101856002018660030160009054906101000a900460ff1687600401548860050154604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001861515151581526020018581526020018481526020018381038352888181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156121095780601f106120de57610100808354040283529160200191612109565b820191906000526020600020905b8154815290600101906020018083116120ec57829003601f168201915b505083810382528781815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561218c5780601f106121615761010080835404028352916020019161218c565b820191906000526020600020905b81548152906001019060200180831161216f57829003601f168201915b50509850505050505050505060405180910390a15050505050565b600060606000839150600090505b81518110156123fa5760417f01000000000000000000000000000000000000000000000000000000000000000282828151811015156121f057fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916101580156123085750605a7f010000000000000000000000000000000000000000000000000000000000000002828281518110151561229857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191611155b156123ed576020828281518110151561231d57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004017f01000000000000000000000000000000000000000000000000000000000000000282828151811015156123bc57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b80806001019150506121b5565b836040518082805190602001908083835b602083101515612430578051825260208201915060208101905060208303925061240b565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902092505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156124a257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125a157805160ff19168380011785556125cf565b828001600101855582156125cf579182015b828111156125ce5782518255916020019190600101906125b3565b5b5090506125dc91906125e0565b5090565b61260291905b808211156125fe5760008160009055506001016125e6565b5090565b905600a165627a7a7230582033f92e7d6985e69c1f284360d7d2305aef8346a462d90559063b60cee62a167e00290000000000000000000000001588d300a9995934aa9daae19be285a66eb46c1c0000000000000000000000000000000000000000000000000000000000000064

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

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


   Swarm Source:
bzzr://33f92e7d6985e69c1f284360d7d2305aef8346a462d90559063b60cee62a167e

 

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