ETH Price: $1,944.29 (-2.06%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Current Pass...80911492019-07-05 11:46:282086 days ago1562327188IN
0x41c32A83...23F545657
0 ETH0.000063351.5
Add Passport Log...80911412019-07-05 11:44:552086 days ago1562327095IN
0x41c32A83...23F545657
0 ETH0.000071881.5
Set Current Pass...77972482019-05-20 13:56:302131 days ago1558360590IN
0x41c32A83...23F545657
0 ETH0.0004210710
Add Passport Log...77972462019-05-20 13:56:032131 days ago1558360563IN
0x41c32A83...23F545657
0 ETH0.0004779310

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PassportLogicRegistry

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-03-19
*/

pragma solidity ^0.4.24;

// File: openzeppelin-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: openzeppelin-solidity/contracts/ownership/HasNoEther.sol

/**
 * @title Contracts that should not own Ether
 * @author Remco Bloemen <remco@2π.com>
 * @dev This tries to block incoming ether to prevent accidental loss of Ether. Should Ether end up
 * in the contract, it will allow the owner to reclaim this Ether.
 * @notice Ether can still be sent to this contract by:
 * calling functions labeled `payable`
 * `selfdestruct(contract_address)`
 * mining directly to the contract address
 */
contract HasNoEther is Ownable {

  /**
  * @dev Constructor that rejects incoming Ether
  * The `payable` flag is added so we can access `msg.value` without compiler warning. If we
  * leave out payable, then Solidity will allow inheriting contracts to implement a payable
  * constructor. By doing it this way we prevent a payable constructor from working. Alternatively
  * we could use assembly to access msg.value.
  */
  constructor() public payable {
    require(msg.value == 0);
  }

  /**
   * @dev Disallows direct send by setting a default function without the `payable` flag.
   */
  function() external {
  }

  /**
   * @dev Transfer all Ether held by the contract to the owner.
   */
  function reclaimEther() external onlyOwner {
    owner.transfer(address(this).balance);
  }
}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * See https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address _who) public view returns (uint256);
  function transfer(address _to, uint256 _value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address _owner, address _spender)
    public view returns (uint256);

  function transferFrom(address _from, address _to, uint256 _value)
    public returns (bool);

  function approve(address _spender, uint256 _value) public returns (bool);
  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

// File: openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
  function safeTransfer(
    ERC20Basic _token,
    address _to,
    uint256 _value
  )
    internal
  {
    require(_token.transfer(_to, _value));
  }

  function safeTransferFrom(
    ERC20 _token,
    address _from,
    address _to,
    uint256 _value
  )
    internal
  {
    require(_token.transferFrom(_from, _to, _value));
  }

  function safeApprove(
    ERC20 _token,
    address _spender,
    uint256 _value
  )
    internal
  {
    require(_token.approve(_spender, _value));
  }
}

// File: openzeppelin-solidity/contracts/ownership/CanReclaimToken.sol

/**
 * @title Contracts that should be able to recover tokens
 * @author SylTi
 * @dev This allow a contract to recover any ERC20 token received in a contract by transferring the balance to the contract owner.
 * This will prevent any accidental loss of tokens.
 */
contract CanReclaimToken is Ownable {
  using SafeERC20 for ERC20Basic;

  /**
   * @dev Reclaim all ERC20Basic compatible tokens
   * @param _token ERC20Basic The address of the token contract
   */
  function reclaimToken(ERC20Basic _token) external onlyOwner {
    uint256 balance = _token.balanceOf(this);
    _token.safeTransfer(owner, balance);
  }

}

// File: openzeppelin-solidity/contracts/ownership/HasNoTokens.sol

/**
 * @title Contracts that should not own Tokens
 * @author Remco Bloemen <remco@2π.com>
 * @dev This blocks incoming ERC223 tokens to prevent accidental loss of tokens.
 * Should tokens (any ERC20Basic compatible) end up in the contract, it allows the
 * owner to reclaim the tokens.
 */
contract HasNoTokens is CanReclaimToken {

 /**
  * @dev Reject all ERC223 compatible tokens
  * @param _from address The address that is transferring the tokens
  * @param _value uint256 the amount of the specified token
  * @param _data Bytes The data passed from the caller.
  */
  function tokenFallback(
    address _from,
    uint256 _value,
    bytes _data
  )
    external
    pure
  {
    _from;
    _value;
    _data;
    revert();
  }

}

// File: contracts/IPassportLogicRegistry.sol

interface IPassportLogicRegistry {
    /**
     * @dev This event will be emitted every time a new passport logic implementation is registered
     * @param version representing the version name of the registered passport logic implementation
     * @param implementation representing the address of the registered passport logic implementation
     */
    event PassportLogicAdded(string version, address implementation);

    /**
     * @dev This event will be emitted every time a new passport logic implementation is set as current one
     * @param version representing the version name of the current passport logic implementation
     * @param implementation representing the address of the current passport logic implementation
     */
    event CurrentPassportLogicSet(string version, address implementation);

    /**
     * @dev Tells the address of the passport logic implementation for a given version
     * @param _version to query the implementation of
     * @return address of the passport logic implementation registered for the given version
     */
    function getPassportLogic(string _version) external view returns (address);

    /**
     * @dev Tells the version of the current passport logic implementation
     * @return version of the current passport logic implementation
     */
    function getCurrentPassportLogicVersion() external view returns (string);

    /**
     * @dev Tells the address of the current passport logic implementation
     * @return address of the current passport logic implementation
     */
    function getCurrentPassportLogic() external view returns (address);
}

// File: contracts/PassportLogicRegistry.sol

/**
 * @title PassportImplRegistry
 * @dev This contract works as a registry of passport implementations, it holds the implementations for the registered versions.
 */
contract PassportLogicRegistry is IPassportLogicRegistry, Ownable, HasNoEther, HasNoTokens {
    // current passport version/implementation
    string internal currentPassportLogicVersion;
    address internal currentPassportLogic;

    // Mapping of versions to passport implementations
    mapping(string => address) internal passportLogicImplementations;

    /**
     * @dev The PassportImplRegistry constructor sets the current passport version and implementation.
     */
    constructor (string _version, address _implementation) public {
        _addPassportLogic(_version, _implementation);
        _setCurrentPassportLogic(_version);
    }

    /**
     * @dev Registers a new passport version with its logic implementation address
     * @param _version representing the version name of the new passport logic implementation to be registered
     * @param _implementation representing the address of the new passport logic implementation to be registered
     */
    function addPassportLogic(string _version, address _implementation) public onlyOwner {
        _addPassportLogic(_version, _implementation);
    }

    /**
     * @dev Tells the address of the passport logic implementation for a given version
     * @param _version to query the implementation of
     * @return address of the passport logic implementation registered for the given version
     */
    function getPassportLogic(string _version) external view returns (address) {
        return passportLogicImplementations[_version];
    }

    /**
     * @dev Sets a new passport logic implementation as current one
     * @param _version representing the version name of the passport logic implementation to be set as current one
     */
    function setCurrentPassportLogic(string _version) public onlyOwner {
        _setCurrentPassportLogic(_version);
    }

    /**
     * @dev Tells the version of the current passport logic implementation
     * @return version of the current passport logic implementation
     */
    function getCurrentPassportLogicVersion() external view returns (string) {
        return currentPassportLogicVersion;
    }

    /**
     * @dev Tells the address of the current passport logic implementation
     * @return address of the current passport logic implementation
     */
    function getCurrentPassportLogic() external view returns (address) {
        return currentPassportLogic;
    }

    function _addPassportLogic(string _version, address _implementation) internal {
        require(_implementation != 0x0, "Cannot set implementation to a zero address");
        require(passportLogicImplementations[_version] == 0x0, "Cannot replace existing version implementation");

        passportLogicImplementations[_version] = _implementation;
        emit PassportLogicAdded(_version, _implementation);
    }

    function _setCurrentPassportLogic(string _version) internal {
        require(passportLogicImplementations[_version] != 0x0, "Cannot set non-existing passport logic as current implementation");

        currentPassportLogicVersion = _version;
        currentPassportLogic = passportLogicImplementations[_version];
        emit CurrentPassportLogicSet(currentPassportLogicVersion, currentPassportLogic);
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_version","type":"string"}],"name":"setCurrentPassportLogic","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentPassportLogic","outputs":[{"name":"","type":"address"}],"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":true,"inputs":[{"name":"_version","type":"string"}],"name":"getPassportLogic","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"reclaimEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentPassportLogicVersion","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_version","type":"string"},{"name":"_implementation","type":"address"}],"name":"addPassportLogic","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_version","type":"string"},{"name":"_implementation","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"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"},{"anonymous":false,"inputs":[{"indexed":false,"name":"version","type":"string"},{"indexed":false,"name":"implementation","type":"address"}],"name":"PassportLogicAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"version","type":"string"},{"indexed":false,"name":"implementation","type":"address"}],"name":"CurrentPassportLogicSet","type":"event"}]

60806040523480156200001157600080fd5b506040516200135738038062001357833981016040528051602082015160008054600160a060020a0319163317905591019034156200004f57600080fd5b62000064828264010000000062000080810204565b620000788264010000000062000342810204565b505062000642565b600160a060020a03811615156200011e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f43616e6e6f742073657420696d706c656d656e746174696f6e20746f2061207a60448201527f65726f2061646472657373000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003826040518082805190602001908083835b60208310620001525780518252601f19909201916020918201910162000131565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a03161591506200021e905057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f43616e6e6f74207265706c616365206578697374696e672076657273696f6e2060448201527f696d706c656d656e746174696f6e000000000000000000000000000000000000606482015290519081900360840190fd5b806003836040518082805190602001908083835b60208310620002535780518252601f19909201916020918201910162000232565b51815160209384036101000a60001901801990921691161790529201948552506040805194859003820185208054600160a060020a031916600160a060020a0397881617905594861684820152848452865194840194909452505083517f7471eb04045ae72adb2fb73deb1e873113901110dd66dbde715232f2495a0cd8928592859290918291606083019186019080838360005b8381101562000302578181015183820152602001620002e8565b50505050905090810190601f168015620003305780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b6003816040518082805190602001908083835b60208310620003765780518252601f19909201916020918201910162000355565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a03161515915062000443905057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602481018290527f43616e6e6f7420736574206e6f6e2d6578697374696e672070617373706f727460448201527f206c6f6769632061732063757272656e7420696d706c656d656e746174696f6e606482015290519081900360840190fd5b8051620004589060019060208401906200059d565b506003816040518082805190602001908083835b602083106200048d5780518252601f1990920191602091820191016200046c565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188205460028054600160a060020a031916600160a060020a03928316178082559091169289018390528189526001805480821615909702909401909516949094049387018490527f4e366bf178b123bb29442cddeceedf743c23cbb40cffa5f577217fe2c54a0b19969195509350918291506060820190859080156200058b5780601f106200055f576101008083540402835291602001916200058b565b820191906000526020600020905b8154815290600101906020018083116200056d57829003601f168201915b5050935050505060405180910390a150565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005e057805160ff191683800117855562000610565b8280016001018555821562000610579182015b8281111562000610578251825591602001919060010190620005f3565b506200061e92915062000622565b5090565b6200063f91905b808211156200061e576000815560010162000629565b90565b610d0580620006526000396000f3006080604052600436106100ae5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166317ffc32081146100bd578063593efdf1146100e0578063609725ef14610139578063715018a61461016a5780638da5cb5b1461017f5780639a1295d9146101945780639f727c27146101b4578063ba612493146101c9578063c0ee0b8a14610253578063c7c40fbb14610284578063f2fde38b146102e8575b3480156100ba57600080fd5b50005b3480156100c957600080fd5b506100de600160a060020a0360043516610309565b005b3480156100ec57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100de9436949293602493928401919081908401838280828437509497506103d59650505050505050565b34801561014557600080fd5b5061014e6103f8565b60408051600160a060020a039092168252519081900360200190f35b34801561017657600080fd5b506100de610408565b34801561018b57600080fd5b5061014e610474565b3480156101a057600080fd5b5061014e6004803560248101910135610483565b3480156101c057600080fd5b506100de6104bc565b3480156101d557600080fd5b506101de61050e565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610218578181015183820152602001610200565b50505050905090810190601f1680156102455780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025f57600080fd5b506100de60048035600160a060020a03169060248035916044359182019101356105a3565b34801561029057600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100de94369492936024939284019190819084018382808284375094975050509235600160a060020a031693506105a892505050565b3480156102f457600080fd5b506100de600160a060020a03600435166105c9565b60008054600160a060020a0316331461032157600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561038257600080fd5b505af1158015610396573d6000803e3d6000fd5b505050506040513d60208110156103ac57600080fd5b50516000549091506103d190600160a060020a0384811691168363ffffffff6105e916565b5050565b600054600160a060020a031633146103ec57600080fd5b6103f5816106a1565b50565b600254600160a060020a03165b90565b600054600160a060020a0316331461041f57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b6000600383836040518083838082843790910194855250506040519283900360200190922054600160a060020a03169250505092915050565b600054600160a060020a031633146104d357600080fd5b60008054604051600160a060020a0390911691303180156108fc02929091818181858888f193505050501580156103f5573d6000803e3d6000fd5b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156105995780601f1061056e57610100808354040283529160200191610599565b820191906000526020600020905b81548152906001019060200180831161057c57829003601f168201915b5050505050905090565b600080fd5b600054600160a060020a031633146105bf57600080fd5b6103d182826108fe565b600054600160a060020a031633146105e057600080fd5b6103f581610bc4565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561066557600080fd5b505af1158015610679573d6000803e3d6000fd5b505050506040513d602081101561068f57600080fd5b5051151561069c57600080fd5b505050565b6003816040518082805190602001908083835b602083106106d35780518252601f1990920191602091820191016106b4565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a03161515915061079f905057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602481018290527f43616e6e6f7420736574206e6f6e2d6578697374696e672070617373706f727460448201527f206c6f6769632061732063757272656e7420696d706c656d656e746174696f6e606482015290519081900360840190fd5b80516107b2906001906020840190610c41565b506003816040518082805190602001908083835b602083106107e55780518252601f1990920191602091820191016107c6565b518151600019602094850361010090810a82019283169219939093169190911790925294909201968752604080519788900382018820546002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03928316178082559091169289018390528189526001805480821615909702909401909516949094049387018490527f4e366bf178b123bb29442cddeceedf743c23cbb40cffa5f577217fe2c54a0b19969195509350918291506060820190859080156108ec5780601f106108c1576101008083540402835291602001916108ec565b820191906000526020600020905b8154815290600101906020018083116108cf57829003601f168201915b5050935050505060405180910390a150565b600160a060020a038116151561099b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f43616e6e6f742073657420696d706c656d656e746174696f6e20746f2061207a60448201527f65726f2061646472657373000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003826040518082805190602001908083835b602083106109cd5780518252601f1990920191602091820191016109ae565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316159150610a98905057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f43616e6e6f74207265706c616365206578697374696e672076657273696f6e2060448201527f696d706c656d656e746174696f6e000000000000000000000000000000000000606482015290519081900360840190fd5b806003836040518082805190602001908083835b60208310610acb5780518252601f199092019160209182019101610aac565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0397881617905594861684820152848452865194840194909452505083517f7471eb04045ae72adb2fb73deb1e873113901110dd66dbde715232f2495a0cd8928592859290918291606083019186019080838360005b83811015610b85578181015183820152602001610b6d565b50505050905090810190601f168015610bb25780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b600160a060020a0381161515610bd957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610c8257805160ff1916838001178555610caf565b82800160010185558215610caf579182015b82811115610caf578251825591602001919060010190610c94565b50610cbb929150610cbf565b5090565b61040591905b80821115610cbb5760008155600101610cc55600a165627a7a7230582030be6f6b69b04014d32f60ed59003aff34c27c83b36b507d48ae67ba320048f50029000000000000000000000000000000000000000000000000000000000000004000000000000000000000000076e2fe5c37c47fe09dcfa55bec9fd34318922f270000000000000000000000000000000000000000000000000000000000000003302e310000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106100ae5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166317ffc32081146100bd578063593efdf1146100e0578063609725ef14610139578063715018a61461016a5780638da5cb5b1461017f5780639a1295d9146101945780639f727c27146101b4578063ba612493146101c9578063c0ee0b8a14610253578063c7c40fbb14610284578063f2fde38b146102e8575b3480156100ba57600080fd5b50005b3480156100c957600080fd5b506100de600160a060020a0360043516610309565b005b3480156100ec57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100de9436949293602493928401919081908401838280828437509497506103d59650505050505050565b34801561014557600080fd5b5061014e6103f8565b60408051600160a060020a039092168252519081900360200190f35b34801561017657600080fd5b506100de610408565b34801561018b57600080fd5b5061014e610474565b3480156101a057600080fd5b5061014e6004803560248101910135610483565b3480156101c057600080fd5b506100de6104bc565b3480156101d557600080fd5b506101de61050e565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610218578181015183820152602001610200565b50505050905090810190601f1680156102455780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025f57600080fd5b506100de60048035600160a060020a03169060248035916044359182019101356105a3565b34801561029057600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100de94369492936024939284019190819084018382808284375094975050509235600160a060020a031693506105a892505050565b3480156102f457600080fd5b506100de600160a060020a03600435166105c9565b60008054600160a060020a0316331461032157600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561038257600080fd5b505af1158015610396573d6000803e3d6000fd5b505050506040513d60208110156103ac57600080fd5b50516000549091506103d190600160a060020a0384811691168363ffffffff6105e916565b5050565b600054600160a060020a031633146103ec57600080fd5b6103f5816106a1565b50565b600254600160a060020a03165b90565b600054600160a060020a0316331461041f57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b6000600383836040518083838082843790910194855250506040519283900360200190922054600160a060020a03169250505092915050565b600054600160a060020a031633146104d357600080fd5b60008054604051600160a060020a0390911691303180156108fc02929091818181858888f193505050501580156103f5573d6000803e3d6000fd5b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156105995780601f1061056e57610100808354040283529160200191610599565b820191906000526020600020905b81548152906001019060200180831161057c57829003601f168201915b5050505050905090565b600080fd5b600054600160a060020a031633146105bf57600080fd5b6103d182826108fe565b600054600160a060020a031633146105e057600080fd5b6103f581610bc4565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561066557600080fd5b505af1158015610679573d6000803e3d6000fd5b505050506040513d602081101561068f57600080fd5b5051151561069c57600080fd5b505050565b6003816040518082805190602001908083835b602083106106d35780518252601f1990920191602091820191016106b4565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a03161515915061079f905057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602481018290527f43616e6e6f7420736574206e6f6e2d6578697374696e672070617373706f727460448201527f206c6f6769632061732063757272656e7420696d706c656d656e746174696f6e606482015290519081900360840190fd5b80516107b2906001906020840190610c41565b506003816040518082805190602001908083835b602083106107e55780518252601f1990920191602091820191016107c6565b518151600019602094850361010090810a82019283169219939093169190911790925294909201968752604080519788900382018820546002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03928316178082559091169289018390528189526001805480821615909702909401909516949094049387018490527f4e366bf178b123bb29442cddeceedf743c23cbb40cffa5f577217fe2c54a0b19969195509350918291506060820190859080156108ec5780601f106108c1576101008083540402835291602001916108ec565b820191906000526020600020905b8154815290600101906020018083116108cf57829003601f168201915b5050935050505060405180910390a150565b600160a060020a038116151561099b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f43616e6e6f742073657420696d706c656d656e746174696f6e20746f2061207a60448201527f65726f2061646472657373000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003826040518082805190602001908083835b602083106109cd5780518252601f1990920191602091820191016109ae565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316159150610a98905057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f43616e6e6f74207265706c616365206578697374696e672076657273696f6e2060448201527f696d706c656d656e746174696f6e000000000000000000000000000000000000606482015290519081900360840190fd5b806003836040518082805190602001908083835b60208310610acb5780518252601f199092019160209182019101610aac565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0397881617905594861684820152848452865194840194909452505083517f7471eb04045ae72adb2fb73deb1e873113901110dd66dbde715232f2495a0cd8928592859290918291606083019186019080838360005b83811015610b85578181015183820152602001610b6d565b50505050905090810190601f168015610bb25780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b600160a060020a0381161515610bd957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610c8257805160ff1916838001178555610caf565b82800160010185558215610caf579182015b82811115610caf578251825591602001919060010190610c94565b50610cbb929150610cbf565b5090565b61040591905b80821115610cbb5760008155600101610cc55600a165627a7a7230582030be6f6b69b04014d32f60ed59003aff34c27c83b36b507d48ae67ba320048f50029

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

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000076e2fe5c37c47fe09dcfa55bec9fd34318922f270000000000000000000000000000000000000000000000000000000000000003302e310000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _version (string): 0.1
Arg [1] : _implementation (address): 0x76E2fe5C37c47Fe09DCFa55Bec9Fd34318922F27

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 00000000000000000000000076e2fe5c37c47fe09dcfa55bec9fd34318922f27
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [3] : 302e310000000000000000000000000000000000000000000000000000000000


Swarm Source

bzzr://30be6f6b69b04014d32f60ed59003aff34c27c83b36b507d48ae67ba320048f5

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
Loading...
Loading
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.