Contract 0x4E19d015b2b4ff6c0AEfc078C9ae1c079bb6A64a

 
Txn Hash
Method
Block
From
To
Value
0x2c23359aa555dd14e37c077d9326e7f305384755dd9bd0e08f7270f273f884d9Update User Exte...97090302020-03-20 14:14:37871 days 20 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000349988
0x058f602809b3628795486259aba8e1a8708aa0a02af8eed4761b0a03c3745283Register User97089892020-03-20 14:06:41871 days 20 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000597458
0x8c2e076770b82871e9b3ffb513e07adf6e5f09a555f79b22bdc0241e3bac5cedUpdate User Exte...94157732020-02-04 11:15:34916 days 23 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000218745
0x76b2b04e45a075ccfd5de9bfb6c2aada718419a288b40ceb42caf9d539100e5dRegister User94157692020-02-04 11:13:48916 days 23 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000298724
0xcd3c17d9719c05b7b6862059800a1044a72b4c9e0598b26bdf878e04d2518f6aUpdate Many User...92783382020-01-14 9:26:40938 days 1 hr ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000611839
0xc24874d2abf92740c143bdd2f493288d32cbfe73a32e75fb8084260427bc3cf9Register Many Us...92783192020-01-14 9:23:10938 days 1 hr ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.001100969
0x6fbc3421abeac5019e52fab7a48374b26f97d7e8c85bef4dbb721bc331ea9545Update Many User...90543632019-12-05 10:05:41978 days 28 mins ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000539395
0x4b95838a2cf13b4a269ff74bf34c83dced94c967ca9c5abc5981da717aa497f5Register Many Us...90543372019-12-05 9:58:21978 days 36 mins ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.001279085
0xd444a18a97e698408510ac45783f1924921844b9c2529e41fd7d0d9180aa1d7eUpdate Many User...86490932019-09-30 8:42:281044 days 1 hr ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.0008674210
0xe71fdc8224f237e51cec5a5af2b93de97274ef0e9e86989990c75a717db9783aRegister Many Us...86488322019-09-30 7:37:011044 days 2 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.0019750810
0x6478a38d1dc1e7f2d87dcd80b14c83533656846f01628437e0071bf20725d7feUpdate Many User...84438802019-08-29 8:04:411076 days 2 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000393636
0x0a7f7235844b4dad9fa3f100802a62c5777a7feaeaaa33a2d0aac48cd893e5b5Register Many Us...84438222019-08-29 7:49:431076 days 2 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000835976
0x7e9fcad6b38b4acc209e96cb36759ec552ebf8c4666c4cdefbfe4df02bff47d2Update User Exte...83602782019-08-16 7:56:371089 days 2 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000128893
0xe9883cb2147f9e3025ef70802f4b132f86b5a395892a0351f883d9558ddc3197Register User83602612019-08-16 7:53:471089 days 2 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000242813
0xd3eda7e5861dd2da814834032f3218079bae58cd04f2ae667355678045700b0cUpdate User Exte...83543972019-08-15 9:43:591090 days 50 mins ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000300747
0xaf587040b0d75f54ec5da204492c27ffe8e17ef6e76ba5498188e2cda363ea26Register User83543802019-08-15 9:40:201090 days 54 mins ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.00064758
0x323c36f97f4cd607be37baf408918a96ceecbceab300592c09609f19f81f0ff0Update User Exte...82443322019-07-29 7:55:121107 days 2 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000257786
0x0aa27dfb4dded06b0464b3b757e6498304b338a5a4eba52501b97aa1518a90daUpdate Many User...82443262019-07-29 7:54:061107 days 2 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000774086
0x5d726d6b84c9e1fb293585851e42943a15a81255f31621d0bbccce6fce1ff969Register Many Us...82443122019-07-29 7:51:451107 days 2 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.002233436
0xee5478ae905545939e62dc402c97e6f68a0c579d6c13de29b64e985de1d85241Update Many User...80771792019-07-03 7:46:561133 days 2 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000903097
0xbddb6a7a1fabb33c7f733593d59ee8168c9a2496371ef82bc3ad1fb76494740dRegister Many Us...80771722019-07-03 7:45:151133 days 2 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.002197967
0x58af46e32bf86aeec9bf0f5e1271d648f152423755093bae7ef066e3c40e9a0bUpdate User Exte...80324802019-06-26 8:14:031140 days 2 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000343718
0x6708c59e2c152a1d3d81b293921fa2114497a4d8cd9237182ceebb3cdb77930aRegister User80323672019-06-26 7:44:241140 days 2 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.0008093810
0x28b043b5dc0c3e6d37af8bb375cf5c3fc034c4b74042fa866560a9d088a5fab7Update User Exte...80018742019-06-21 13:57:011144 days 20 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000214825
0x2bd1ae94f1af068f19ad8732e285f8de15a7e16c9dc3e6c2b0567f05d6587d73Update Many User...80018662019-06-21 13:54:571144 days 20 hrs ago0x0be1241468df7e9d3b74a84869ddf05c36fd7e50 IN  0x4e19d015b2b4ff6c0aefc078c9ae1c079bb6a64a0 Ether0.000645075
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UserRegistry

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-11-18
*/

/**
 * UserRegistry.sol
 * Mt Pelerin user registry.

 * The unflattened code is available through this github tag:
 * https://github.com/MtPelerin/MtPelerin-protocol/tree/etherscan-verify-batch-1

 * @notice Copyright © 2016 - 2018 Mt Pelerin Group SA - All Rights Reserved

 * @notice All matters regarding the intellectual property of this code 
 * @notice or software are subject to Swiss Law without reference to its 
 * @notice conflicts of law rules.

 * @notice License for each contract is available in the respective file
 * @notice or in the LICENSE.md file.
 * @notice https://github.com/MtPelerin/

 * @notice Code by OpenZeppelin is copyrighted and licensed on their repository:
 * @notice https://github.com/OpenZeppelin/openzeppelin-solidity
 */

pragma solidity ^0.4.24;

// File: contracts/zeppelin/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.
   */
  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: contracts/Authority.sol

/**
 * @title Authority
 * @dev The Authority contract has an authority address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 * Authority means to represent a legal entity that is entitled to specific rights
 *
 * @author Cyril Lapinte - <[email protected]>
 *
 * @notice Copyright © 2016 - 2018 Mt Pelerin Group SA - All Rights Reserved
 * @notice Please refer to the top of this file for the license.
 *
 * Error messages
 * AU01: Message sender must be an authority
 */
contract Authority is Ownable {

  address authority;

  /**
   * @dev Throws if called by any account other than the authority.
   */
  modifier onlyAuthority {
    require(msg.sender == authority, "AU01");
    _;
  }

  /**
   * @dev return the address associated to the authority
   */
  function authorityAddress() public view returns (address) {
    return authority;
  }

  /**
   * @dev rdefines an authority
   * @param _name the authority name
   * @param _address the authority address.
   */
  function defineAuthority(string _name, address _address) public onlyOwner {
    emit AuthorityDefined(_name, _address);
    authority = _address;
  }

  event AuthorityDefined(
    string name,
    address _address
  );
}

// File: contracts/interface/IRule.sol

/**
 * @title IRule
 * @dev IRule interface
 * @author Cyril Lapinte - <[email protected]>
 *
 * @notice Copyright © 2016 - 2018 Mt Pelerin Group SA - All Rights Reserved
 * @notice Please refer to the top of this file for the license.
 **/
interface IRule {
  function isAddressValid(address _address) external view returns (bool);
  function isTransferValid(address _from, address _to, uint256 _amount)
    external view returns (bool);
}

// File: contracts/interface/IUserRegistry.sol

/**
 * @title IUserRegistry
 * @dev IUserRegistry interface
 * @author Cyril Lapinte - <[email protected]>
 *
 * @notice Copyright © 2016 - 2018 Mt Pelerin Group SA - All Rights Reserved
 * @notice Please refer to the top of this file for the license.
 **/
contract IUserRegistry {

  function registerManyUsers(address[] _addresses, uint256 _validUntilTime)
    public;

  function attachManyAddresses(uint256[] _userIds, address[] _addresses)
    public;

  function detachManyAddresses(address[] _addresses)
    public;

  function userCount() public view returns (uint256);
  function userId(address _address) public view returns (uint256);
  function addressConfirmed(address _address) public view returns (bool);
  function validUntilTime(uint256 _userId) public view returns (uint256);
  function suspended(uint256 _userId) public view returns (bool);
  function extended(uint256 _userId, uint256 _key)
    public view returns (uint256);

  function isAddressValid(address _address) public view returns (bool);
  function isValid(uint256 _userId) public view returns (bool);

  function registerUser(address _address, uint256 _validUntilTime) public;
  function attachAddress(uint256 _userId, address _address) public;
  function confirmSelf() public;
  function detachAddress(address _address) public;
  function detachSelf() public;
  function detachSelfAddress(address _address) public;
  function suspendUser(uint256 _userId) public;
  function unsuspendUser(uint256 _userId) public;
  function suspendManyUsers(uint256[] _userIds) public;
  function unsuspendManyUsers(uint256[] _userIds) public;
  function updateUser(uint256 _userId, uint256 _validUntil, bool _suspended)
    public;

  function updateManyUsers(
    uint256[] _userIds,
    uint256 _validUntil,
    bool _suspended) public;

  function updateUserExtended(uint256 _userId, uint256 _key, uint256 _value)
    public;

  function updateManyUsersExtended(
    uint256[] _userIds,
    uint256 _key,
    uint256 _value) public;
}

// File: contracts/UserRegistry.sol

/**
 * @title UserRegistry
 * @dev UserRegistry contract
 * Configure and manage users
 * Extended may be used externaly to store data within a user context
 *
 * @author Cyril Lapinte - <[email protected]>
 *
 * @notice Copyright © 2016 - 2018 Mt Pelerin Group SA - All Rights Reserved
 * @notice Please refer to the top of this file for the license.
 *
 * Error messages
 * UR01: Users length does not match addresses length
 * UR02: UserId is invalid
 * UR03: WalletOwner is invalid
 * UR04: WalletOwner is already confirmed
 * UR05: User is already suspended
 * UR06: User is not suspended
*/
contract UserRegistry is IUserRegistry, Authority {

  struct User {
    uint256 validUntilTime;
    bool suspended;
    mapping(uint256 => uint256) extended;
  }
  struct WalletOwner {
    uint256 userId;
    bool confirmed;
  }

  mapping(uint256 => User) internal users;
  mapping(address => WalletOwner) internal walletOwners;
  uint256 public userCount;

  /**
   * @dev contructor
   **/
  constructor(address[] _addresses, uint256 _validUntilTime) public {
    for (uint256 i = 0; i < _addresses.length; i++) {
      registerUserInternal(_addresses[i], _validUntilTime);
      walletOwners[_addresses[i]].confirmed = true;
    }
  }

  /**
   * @dev register many users
   */
  function registerManyUsers(address[] _addresses, uint256 _validUntilTime)
    public onlyAuthority
  {
    for (uint256 i = 0; i < _addresses.length; i++) {
      registerUserInternal(_addresses[i], _validUntilTime);
    }
  }

  /**
   * @dev attach many addresses to many users
   */
  function attachManyAddresses(uint256[] _userIds, address[] _addresses)
    public onlyAuthority
  {
    require(_addresses.length == _userIds.length, "UR01");
    for (uint256 i = 0; i < _addresses.length; i++) {
      attachAddress(_userIds[i], _addresses[i]);
    }
  }

  /**
   * @dev detach many addresses association between addresses and their respective users
   */
  function detachManyAddresses(address[] _addresses) public onlyAuthority {
    for (uint256 i = 0; i < _addresses.length; i++) {
      detachAddress(_addresses[i]);
    }
  }

  /**
   * @dev number of user registred
   */
  function userCount() public view returns (uint256) {
    return userCount;
  }

  /**
   * @dev the userId associated to the provided address
   */
  function userId(address _address) public view returns (uint256) {
    return walletOwners[_address].userId;
  }

  /**
   * @dev the userId associated to the provided address if the user is valid
   */
  function validUserId(address _address) public view returns (uint256) {
    if (isAddressValid(_address)) {
      return walletOwners[_address].userId;
    }
    return 0;
  }

  /**
   * @dev the userId associated to the provided address
   */
  function addressConfirmed(address _address) public view returns (bool) {
    return walletOwners[_address].confirmed;
  }

  /**
   * @dev returns the time at which user validity ends
   */
  function validUntilTime(uint256 _userId) public view returns (uint256) {
    return users[_userId].validUntilTime;
  }

  /**
   * @dev is the user suspended
   */
  function suspended(uint256 _userId) public view returns (bool) {
    return users[_userId].suspended;
  }

  /**
   * @dev access to extended user data
   */
  function extended(uint256 _userId, uint256 _key)
    public view returns (uint256)
  {
    return users[_userId].extended[_key];
  }

  /**
   * @dev validity of the current user
   */
  function isAddressValid(address _address) public view returns (bool) {
    return walletOwners[_address].confirmed &&
      isValid(walletOwners[_address].userId);
  }

  /**
   * @dev validity of the current user
   */
  function isValid(uint256 _userId) public view returns (bool) {
    return isValidInternal(users[_userId]);
  }

  /**
   * @dev register a user
   */
  function registerUser(address _address, uint256 _validUntilTime)
    public onlyAuthority
  {
    registerUserInternal(_address, _validUntilTime);
  }

  /**
   * @dev register a user
   */
  function registerUserInternal(address _address, uint256 _validUntilTime)
    public
  {
    require(walletOwners[_address].userId == 0, "UR03");
    users[++userCount] = User(_validUntilTime, false);
    walletOwners[_address] = WalletOwner(userCount, false);
  }

  /**
   * @dev attach an address with a user
   */
  function attachAddress(uint256 _userId, address _address)
    public onlyAuthority
  {
    require(_userId > 0 && _userId <= userCount, "UR02");
    require(walletOwners[_address].userId == 0, "UR03");
    walletOwners[_address] = WalletOwner(_userId, false);
  }

  /**
   * @dev confirm the address by the user to activate it
   */
  function confirmSelf() public {
    require(walletOwners[msg.sender].userId != 0, "UR03");
    require(!walletOwners[msg.sender].confirmed, "UR04");
    walletOwners[msg.sender].confirmed = true;
  }

  /**
   * @dev detach the association between an address and its user
   */
  function detachAddress(address _address) public onlyAuthority {
    require(walletOwners[_address].userId != 0, "UR03");
    delete walletOwners[_address];
  }

  /**
   * @dev detach the association between an address and its user
   */
  function detachSelf() public {
    detachSelfAddress(msg.sender);
  }

  /**
   * @dev detach the association between an address and its user
   */
  function detachSelfAddress(address _address) public {
    uint256 senderUserId = walletOwners[msg.sender].userId;
    require(senderUserId != 0, "UR03");
    require(walletOwners[_address].userId == senderUserId, "UR06");
    delete walletOwners[_address];
  }

  /**
   * @dev suspend a user
   */
  function suspendUser(uint256 _userId) public onlyAuthority {
    require(_userId > 0 && _userId <= userCount, "UR02");
    require(!users[_userId].suspended, "UR06");
    users[_userId].suspended = true;
  }

  /**
   * @dev unsuspend a user
   */
  function unsuspendUser(uint256 _userId) public onlyAuthority {
    require(_userId > 0 && _userId <= userCount, "UR02");
    require(users[_userId].suspended, "UR06");
    users[_userId].suspended = false;
  }

  /**
   * @dev suspend many users
   */
  function suspendManyUsers(uint256[] _userIds) public onlyAuthority {
    for (uint256 i = 0; i < _userIds.length; i++) {
      suspendUser(_userIds[i]);
    }
  }

  /**
   * @dev unsuspend many users
   */
  function unsuspendManyUsers(uint256[] _userIds) public onlyAuthority {
    for (uint256 i = 0; i < _userIds.length; i++) {
      unsuspendUser(_userIds[i]);
    }
  }

  /**
   * @dev update a user
   */
  function updateUser(
    uint256 _userId,
    uint256 _validUntilTime,
    bool _suspended) public onlyAuthority
  {
    require(_userId > 0 && _userId <= userCount, "UR02");
    users[_userId].validUntilTime = _validUntilTime;
    users[_userId].suspended = _suspended;
  }

  /**
   * @dev update many users
   */
  function updateManyUsers(
    uint256[] _userIds,
    uint256 _validUntilTime,
    bool _suspended) public onlyAuthority
  {
    for (uint256 i = 0; i < _userIds.length; i++) {
      updateUser(_userIds[i], _validUntilTime, _suspended);
    }
  }

  /**
   * @dev update user extended information
   */
  function updateUserExtended(uint256 _userId, uint256 _key, uint256 _value)
    public onlyAuthority
  {
    require(_userId > 0 && _userId <= userCount, "UR02");
    users[_userId].extended[_key] = _value;
  }

  /**
   * @dev update many users' extended information
   */
  function updateManyUsersExtended(
    uint256[] _userIds,
    uint256 _key,
    uint256 _value) public onlyAuthority
  {
    for (uint256 i = 0; i < _userIds.length; i++) {
      updateUserExtended(_userIds[i], _key, _value);
    }
  }

  /**
   * @dev validity of the current user
   */
  function isValidInternal(User user) internal view returns (bool) {
    // solium-disable-next-line security/no-block-members
    return !user.suspended && user.validUntilTime > now;
  }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_userId","type":"uint256"}],"name":"suspendUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_userId","type":"uint256"}],"name":"validUntilTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addresses","type":"address[]"}],"name":"detachManyAddresses","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"userCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_userId","type":"uint256"},{"name":"_key","type":"uint256"},{"name":"_value","type":"uint256"}],"name":"updateUserExtended","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addresses","type":"address[]"},{"name":"_validUntilTime","type":"uint256"}],"name":"registerManyUsers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_validUntilTime","type":"uint256"}],"name":"registerUserInternal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_userId","type":"uint256"},{"name":"_address","type":"address"}],"name":"attachAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"confirmSelf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_userId","type":"uint256"}],"name":"unsuspendUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"detachAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"userId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_userIds","type":"uint256[]"}],"name":"suspendManyUsers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"authorityAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"validUserId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"detachSelf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"addressConfirmed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_userId","type":"uint256"}],"name":"suspended","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_userIds","type":"uint256[]"},{"name":"_addresses","type":"address[]"}],"name":"attachManyAddresses","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_userId","type":"uint256"},{"name":"_key","type":"uint256"}],"name":"extended","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"detachSelfAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_userIds","type":"uint256[]"},{"name":"_validUntilTime","type":"uint256"},{"name":"_suspended","type":"bool"}],"name":"updateManyUsers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_userId","type":"uint256"},{"name":"_validUntilTime","type":"uint256"},{"name":"_suspended","type":"bool"}],"name":"updateUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isAddressValid","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_userIds","type":"uint256[]"},{"name":"_key","type":"uint256"},{"name":"_value","type":"uint256"}],"name":"updateManyUsersExtended","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_userIds","type":"uint256[]"}],"name":"unsuspendManyUsers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_userId","type":"uint256"}],"name":"isValid","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_validUntilTime","type":"uint256"}],"name":"registerUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_address","type":"address"}],"name":"defineAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_addresses","type":"address[]"},{"name":"_validUntilTime","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"_address","type":"address"}],"name":"AuthorityDefined","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"}]

60806040523480156200001157600080fd5b5060405162002f4838038062002f4883398101806040528101908080518201929190602001805190602001909291905050506000336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156200014857620000c78382815181101515620000a757fe5b906020019060200201518362000151640100000000026401000000009004565b6001600360008584815181101515620000dc57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555080806001019150506200008a565b505050620002fc565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415156200020c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230330000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6040805190810160405280828152602001600015158152506002600060046000815460010191905081905581526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff0219169083151502179055509050506040805190810160405280600454815260200160001515815250600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff0219169083151502179055509050505050565b612c3c806200030c6000396000f300608060405260043610610195576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062a05dc31461019a57806304462608146101c7578063050e388f1461020857806307973ccf1461026e578063161b456b1461029957806322a16d08146102da578063256664921461034a578063278d8a1e146103975780632c15f434146103e457806330010312146103fb578063322a3a5414610428578063376fe1021461046b57806338c34193146104c25780633c695d4e14610528578063560cbd5e1461057f57806357074510146105d65780635efefefe146105ed578063715018a614610648578063848a2d031461065f5780638da5cb5b146106a4578063a319d2ab146106fb578063a77c5265146107a4578063ada70256146107ef578063b9c777e614610832578063c250f1ea146108ae578063cf31ff86146108f1578063d6f0cd021461094c578063e24df2c2146109c6578063f2fde38b14610a2c578063f577a50014610a6f578063fa0b5e5514610ab4578063fc21e16714610b01575b600080fd5b3480156101a657600080fd5b506101c560048036038101908080359060200190929190505050610b8a565b005b3480156101d357600080fd5b506101f260048036038101908080359060200190929190505050610da0565b6040518082815260200191505060405180910390f35b34801561021457600080fd5b5061026c60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610dc0565b005b34801561027a57600080fd5b50610283610ec6565b6040518082815260200191505060405180910390f35b3480156102a557600080fd5b506102d8600480360381019080803590602001909291908035906020019092919080359060200190929190505050610ed0565b005b3480156102e657600080fd5b50610348600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019092919050505061104c565b005b34801561035657600080fd5b50610395600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611154565b005b3480156103a357600080fd5b506103e260048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112fe565b005b3480156103f057600080fd5b506103f961158b565b005b34801561040757600080fd5b5061042660048036038101908080359060200190929190505050611768565b005b34801561043457600080fd5b50610469600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061197d565b005b34801561047757600080fd5b506104ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b5e565b6040518082815260200191505060405180910390f35b3480156104ce57600080fd5b5061052660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611baa565b005b34801561053457600080fd5b5061053d611cb0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561058b57600080fd5b506105c0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cda565b6040518082815260200191505060405180910390f35b3480156105e257600080fd5b506105eb611d3e565b005b3480156105f957600080fd5b5061062e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d49565b604051808215151515815260200191505060405180910390f35b34801561065457600080fd5b5061065d611da2565b005b34801561066b57600080fd5b5061068a60048036038101908080359060200190929190505050611ea4565b604051808215151515815260200191505060405180910390f35b3480156106b057600080fd5b506106b9611ed1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561070757600080fd5b506107a26004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611ef6565b005b3480156107b057600080fd5b506107d9600480360381019080803590602001909291908035906020019092919050505061208e565b6040518082815260200191505060405180910390f35b3480156107fb57600080fd5b50610830600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120c0565b005b34801561083e57600080fd5b506108ac600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019092919080351515906020019092919050505061229b565b005b3480156108ba57600080fd5b506108ef60048036038101908080359060200190929190803590602001909291908035151590602001909291905050506123a5565b005b3480156108fd57600080fd5b50610932600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061253e565b604051808215151515815260200191505060405180910390f35b34801561095857600080fd5b506109c46004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190803590602001909291905050506125ea565b005b3480156109d257600080fd5b50610a2a600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506126f4565b005b348015610a3857600080fd5b50610a6d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127fa565b005b348015610a7b57600080fd5b50610a9a60048036038101908080359060200190929190505050612861565b604051808215151515815260200191505060405180910390f35b348015610ac057600080fd5b50610aff600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506128b5565b005b348015610b0d57600080fd5b50610b88600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612988565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f415530310000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600081118015610c6157506004548111155b1515610cd5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230320000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6002600082815260200190815260200160002060010160009054906101000a900460ff16151515610d6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230360000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60016002600083815260200190815260200160002060010160006101000a81548160ff02191690831515021790555050565b600060026000838152602001908152602001600020600001549050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f415530310000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600090505b8151811015610ec257610eb58282815181101515610ea657fe5b9060200190602002015161197d565b8080600101915050610e8c565b5050565b6000600454905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f415530310000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600083118015610fa757506004548311155b151561101b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230320000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060026000858152602001908152602001600020600201600084815260200190815260200160002081905550505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611113576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f415530310000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600090505b825181101561114f57611142838281518110151561113257fe5b9060200190602002015183611154565b8080600101915050611118565b505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151561120e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230330000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6040805190810160405280828152602001600015158152506002600060046000815460010191905081905581526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff0219169083151502179055509050506040805190810160405280600454815260200160001515815250600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff0219169083151502179055509050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f415530310000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000821180156113d557506004548211155b1515611449576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230320000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230330000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b604080519081016040528083815260200160001515815250600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff0219169083151502179055509050505050565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151515611646576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230330000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1615151561170b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230340000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561182d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f415530310000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008111801561183f57506004548111155b15156118b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230320000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6002600082815260200190815260200160002060010160009054906101000a900460ff16151561194b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230360000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006002600083815260200190815260200160002060010160006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f415530310000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151515611afd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230330000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006101000a81549060ff0219169055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f415530310000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600090505b8151811015611cac57611c9f8282815181101515611c9057fe5b90602001906020020151610b8a565b8080600101915050611c76565b5050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000611ce58261253e565b15611d3457600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050611d39565b600090505b919050565b611d47336120c0565b565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dfd57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006002600083815260200190815260200160002060010160009054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fbd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f415530310000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b82518251141515612036576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230310000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600090505b81518110156120895761207c838281518110151561205557fe5b90602001906020020151838381518110151561206d57fe5b906020019060200201516112fe565b808060010191505061203b565b505050565b600060026000848152602001908152602001600020600201600083815260200190815260200160002054905092915050565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905060008114151515612180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230330000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515612239576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230360000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006101000a81549060ff021916905550505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612362576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f415530310000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600090505b835181101561239f57612392848281518110151561238157fe5b9060200190602002015184846123a5565b8080600101915050612367565b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561246a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f415530310000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008311801561247c57506004548311155b15156124f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f555230320000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b816002600085815260200190815260200160002060000181905550806002600085815260200190815260200160002060010160006101000a81548160ff021916908315150217905550505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1680156125e357506125e2600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612861565b5b9050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f415530310000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600090505b83518110156126ee576126e184828151811015156126d057fe5b906020019060200201518484610ed0565b80806001019150506126b6565b50505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f415530310000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600090505b81518110156127f6576127e982828151811015156127da57fe5b90602001906020020151611768565b80806001019150506127c0565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561285557600080fd5b61285e81612af8565b50565b60006128ae60026000848152602001908152602001600020604080519081016040529081600082015481526020016001820160009054906101000a900460ff161515151581525050612bf2565b9050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561297a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f415530310000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6129848282611154565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129e357600080fd5b7fc8c81ac5a1b95ead7b5f71eafa51c9a1436e443c27ba33460885b9debe345abf828260405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b83811015612a78578082015181840152602081019050612a5d565b50505050905090810190601f168015612aa55780820380516001836020036101000a031916815260200191505b50935050505060405180910390a180600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612b3457600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008160200151158015612c095750428260000151115b90509190505600a165627a7a72305820003ea36d035c1cda57d299bb611404946b1f7968df454945623923bf5791b2470029000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

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

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000


Swarm Source

bzzr://003ea36d035c1cda57d299bb611404946b1f7968df454945623923bf5791b247
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

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.