ETH Price: $1,961.02 (+1.16%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x80866249...2A3019dd5
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Registry

Compiler Version
v0.4.23+commit.124ca40d

Optimization Enabled:
Yes with 20000 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity ^0.4.23;

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

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev 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: registry/contracts/Registry.sol

interface RegistryClone {
    function syncAttributeValue(address _who, bytes32 _attribute, uint256 _value) external;
}

contract Registry {
    struct AttributeData {
        uint256 value;
        bytes32 notes;
        address adminAddr;
        uint256 timestamp;
    }
    
    // never remove any storage variables
    address public owner;
    address public pendingOwner;
    bool initialized;

    // Stores arbitrary attributes for users. An example use case is an ERC20
    // token that requires its users to go through a KYC/AML check - in this case
    // a validator can set an account's "hasPassedKYC/AML" attribute to 1 to indicate
    // that account can use the token. This mapping stores that value (1, in the
    // example) as well as which validator last set the value and at what time,
    // so that e.g. the check can be renewed at appropriate intervals.
    mapping(address => mapping(bytes32 => AttributeData)) attributes;
    // The logic governing who is allowed to set what attributes is abstracted as
    // this accessManager, so that it may be replaced by the owner as needed
    bytes32 constant WRITE_PERMISSION = keccak256("canWriteTo-");
    mapping(bytes32 => RegistryClone[]) subscribers;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    event SetAttribute(address indexed who, bytes32 attribute, uint256 value, bytes32 notes, address indexed adminAddr);
    event SetManager(address indexed oldManager, address indexed newManager);
    event StartSubscription(bytes32 indexed attribute, RegistryClone indexed subscriber);
    event StopSubscription(bytes32 indexed attribute, RegistryClone indexed subscriber);

    // Allows a write if either a) the writer is that Registry's owner, or
    // b) the writer is writing to attribute foo and that writer already has
    // the canWriteTo-foo attribute set (in that same Registry)
    function confirmWrite(bytes32 _attribute, address _admin) internal view returns (bool) {
        return (_admin == owner || hasAttribute(_admin, keccak256(WRITE_PERMISSION ^ _attribute)));
    }

    // Writes are allowed only if the accessManager approves
    function setAttribute(address _who, bytes32 _attribute, uint256 _value, bytes32 _notes) public {
        require(confirmWrite(_attribute, msg.sender));
        attributes[_who][_attribute] = AttributeData(_value, _notes, msg.sender, block.timestamp);
        emit SetAttribute(_who, _attribute, _value, _notes, msg.sender);

        RegistryClone[] storage targets = subscribers[_attribute];
        uint256 index = targets.length;
        while (index --> 0) {
            targets[index].syncAttributeValue(_who, _attribute, _value);
        }
    }

    function subscribe(bytes32 _attribute, RegistryClone _syncer) external onlyOwner {
        subscribers[_attribute].push(_syncer);
        emit StartSubscription(_attribute, _syncer);
    }

    function unsubscribe(bytes32 _attribute, uint256 _index) external onlyOwner {
        uint256 length = subscribers[_attribute].length;
        require(_index < length);
        emit StopSubscription(_attribute, subscribers[_attribute][_index]);
        subscribers[_attribute][_index] = subscribers[_attribute][length - 1];
        subscribers[_attribute].length = length - 1;
    }

    function subscriberCount(bytes32 _attribute) public view returns (uint256) {
        return subscribers[_attribute].length;
    }

    function setAttributeValue(address _who, bytes32 _attribute, uint256 _value) public {
        require(confirmWrite(_attribute, msg.sender));
        attributes[_who][_attribute] = AttributeData(_value, "", msg.sender, block.timestamp);
        emit SetAttribute(_who, _attribute, _value, "", msg.sender);
        RegistryClone[] storage targets = subscribers[_attribute];
        uint256 index = targets.length;
        while (index --> 0) {
            targets[index].syncAttributeValue(_who, _attribute, _value);
        }
    }

    // Returns true if the uint256 value stored for this attribute is non-zero
    function hasAttribute(address _who, bytes32 _attribute) public view returns (bool) {
        return attributes[_who][_attribute].value != 0;
    }


    // Returns the exact value of the attribute, as well as its metadata
    function getAttribute(address _who, bytes32 _attribute) public view returns (uint256, bytes32, address, uint256) {
        AttributeData memory data = attributes[_who][_attribute];
        return (data.value, data.notes, data.adminAddr, data.timestamp);
    }

    function getAttributeValue(address _who, bytes32 _attribute) public view returns (uint256) {
        return attributes[_who][_attribute].value;
    }

    function getAttributeAdminAddr(address _who, bytes32 _attribute) public view returns (address) {
        return attributes[_who][_attribute].adminAddr;
    }

    function getAttributeTimestamp(address _who, bytes32 _attribute) public view returns (uint256) {
        return attributes[_who][_attribute].timestamp;
    }

    function syncAttribute(bytes32 _attribute, uint256 _startIndex, address[] _addresses) external {
        RegistryClone[] storage targets = subscribers[_attribute];
        uint256 index = targets.length;
        while (index --> _startIndex) {
            RegistryClone target = targets[index];
            for (uint256 i = _addresses.length; i --> 0; ) {
                address who = _addresses[i];
                target.syncAttributeValue(who, _attribute, attributes[who][_attribute].value);
            }
        }
    }

    function reclaimEther(address _to) external onlyOwner {
        _to.transfer(address(this).balance);
    }

    function reclaimToken(ERC20 token, address _to) external onlyOwner {
        uint256 balance = token.balanceOf(this);
        token.transfer(_to, balance);
    }

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

    /**
    * @dev Modifier throws if called by any account other than the pendingOwner.
    */
    modifier onlyPendingOwner() {
        require(msg.sender == pendingOwner);
        _;
    }

    /**
    * @dev Allows the current owner to set the pendingOwner address.
    * @param newOwner The address to transfer ownership to.
    */
    function transferOwnership(address newOwner) public onlyOwner {
        pendingOwner = newOwner;
    }

    /**
    * @dev Allows the pendingOwner address to finalize the transfer.
    */
    function claimOwnership() public onlyPendingOwner {
        emit OwnershipTransferred(owner, pendingOwner);
        owner = pendingOwner;
        pendingOwner = address(0);
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"_who","type":"address"},{"name":"_attribute","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_notes","type":"bytes32"}],"name":"setAttribute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_attribute","type":"bytes32"}],"name":"subscriberCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_attribute","type":"bytes32"}],"name":"getAttribute","outputs":[{"name":"","type":"uint256"},{"name":"","type":"bytes32"},{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_attribute","type":"bytes32"},{"name":"_index","type":"uint256"}],"name":"unsubscribe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_attribute","type":"bytes32"}],"name":"getAttributeAdminAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_attribute","type":"bytes32"}],"name":"getAttributeTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_attribute","type":"bytes32"}],"name":"hasAttribute","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"_to","type":"address"}],"name":"reclaimToken","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":"_to","type":"address"}],"name":"reclaimEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_attribute","type":"bytes32"},{"name":"_syncer","type":"address"}],"name":"subscribe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_attribute","type":"bytes32"},{"name":"_startIndex","type":"uint256"},{"name":"_addresses","type":"address[]"}],"name":"syncAttribute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_attribute","type":"bytes32"}],"name":"getAttributeValue","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","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":"_who","type":"address"},{"name":"_attribute","type":"bytes32"},{"name":"_value","type":"uint256"}],"name":"setAttributeValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"},{"indexed":false,"name":"attribute","type":"bytes32"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"notes","type":"bytes32"},{"indexed":true,"name":"adminAddr","type":"address"}],"name":"SetAttribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"oldManager","type":"address"},{"indexed":true,"name":"newManager","type":"address"}],"name":"SetManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"attribute","type":"bytes32"},{"indexed":true,"name":"subscriber","type":"address"}],"name":"StartSubscription","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"attribute","type":"bytes32"},{"indexed":true,"name":"subscriber","type":"address"}],"name":"StopSubscription","type":"event"}]

0x608060405234801561001057600080fd5b506115af806100206000396000f3006080604052600436106100f05763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663015aeda781146100f5578063100ad9f11461012e578063163f66911461015857806340f74566146101c45780634e71e0c8146101df5780636ca06072146101f457806371b6d6ea1461024e5780637338c25c1461027f57806388ee39cc146102c45780638da5cb5b146102f85780639a6a30a41461030d578063a32d76971461033b578063e01709bc1461036c578063e23c506314610394578063e30c3978146103c5578063f2fde38b146103da578063fdac9ff714610408575b600080fd5b34801561010157600080fd5b5061012c73ffffffffffffffffffffffffffffffffffffffff6004351660243560443560643561043c565b005b34801561013a57600080fd5b506101466004356106d3565b60408051918252519081900360200190f35b34801561016457600080fd5b5061018973ffffffffffffffffffffffffffffffffffffffff600435166024356106e5565b60408051948552602085019390935273ffffffffffffffffffffffffffffffffffffffff909116838301526060830152519081900360800190f35b3480156101d057600080fd5b5061012c600435602435610762565b3480156101eb57600080fd5b5061012c61097e565b34801561020057600080fd5b5061022573ffffffffffffffffffffffffffffffffffffffff60043516602435610a3c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561025a57600080fd5b5061014673ffffffffffffffffffffffffffffffffffffffff60043516602435610a74565b34801561028b57600080fd5b506102b073ffffffffffffffffffffffffffffffffffffffff60043516602435610aac565b604080519115158252519081900360200190f35b3480156102d057600080fd5b5061012c73ffffffffffffffffffffffffffffffffffffffff60043581169060243516610ae3565b34801561030457600080fd5b50610225610ce2565b34801561031957600080fd5b5061012c73ffffffffffffffffffffffffffffffffffffffff60043516610cfe565b34801561034757600080fd5b5061012c60043573ffffffffffffffffffffffffffffffffffffffff60243516610dd3565b34801561037857600080fd5b5061012c60048035906024803591604435918201910135610eee565b3480156103a057600080fd5b5061014673ffffffffffffffffffffffffffffffffffffffff600435166024356110f6565b3480156103d157600080fd5b5061022561112b565b3480156103e657600080fd5b5061012c73ffffffffffffffffffffffffffffffffffffffff60043516611147565b34801561041457600080fd5b5061012c73ffffffffffffffffffffffffffffffffffffffff60043516602435604435611218565b600080610449853361149a565b151561045457600080fd5b608060405190810160405280858152602001846000191681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815250600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760001916600019168152602001908152602001600020600082015181600001556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f7f467fc85b3c9db1144a5f705bcb37dcd17e760ed57b1921186f50b51000c3a18787876040518084600019166000191681526020018381526020018260001916600019168152602001935050505060405180910390a35050600083815260036020526040902080545b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190600010156106cb57818181548110151561062857fe5b6000918252602082200154604080517ff5be438900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018a9052604482018990529151919092169263f5be4389926064808201939182900301818387803b1580156106ae57600080fd5b505af11580156106c2573d6000803e3d6000fd5b505050506105ee565b505050505050565b60009081526003602052604090205490565b6000806000806106f3611512565b5050505073ffffffffffffffffffffffffffffffffffffffff928316600090815260026020818152604080842095845294815291849020845160808101865281548082526001830154948201859052928201549096169486018590526003015460609095018590529490939150565b600080543373ffffffffffffffffffffffffffffffffffffffff9081169116146107ed57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79204f776e657200000000000000000000000000000000000000000000604482015290519081900360640190fd5b5060008281526003602052604090205480821061080957600080fd5b600083815260036020526040902080548390811061082357fe5b600091825260208220015460405173ffffffffffffffffffffffffffffffffffffffff9091169185917fb2323eec35dc99548462ae5379857df730d727775c28ed24e05697645c39031f9190a3600083815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83019081106108ac57fe5b600091825260208083209091015485835260039091526040909120805473ffffffffffffffffffffffffffffffffffffffff90921691849081106108ec57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94909416939093179092558481526003909152604090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201906109789082611539565b50505050565b6001543373ffffffffffffffffffffffffffffffffffffffff9081169116146109a657600080fd5b6001546000805460405173ffffffffffffffffffffffffffffffffffffffff93841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020818152604080842094845293905291902001541690565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600260209081526040808320938352929052206003015490565b73ffffffffffffffffffffffffffffffffffffffff9190911660009081526002602090815260408083209383529290522054151590565b600080543373ffffffffffffffffffffffffffffffffffffffff908116911614610b6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79204f776e657200000000000000000000000000000000000000000000604482015290519081900360640190fd5b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610c0957600080fd5b505af1158015610c1d573d6000803e3d6000fd5b505050506040513d6020811015610c3357600080fd5b5051604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820184905291519293509085169163a9059cbb916044808201926020929091908290030181600087803b158015610cb157600080fd5b505af1158015610cc5573d6000803e3d6000fd5b505050506040513d6020811015610cdb57600080fd5b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000543373ffffffffffffffffffffffffffffffffffffffff908116911614610d8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79204f776e657200000000000000000000000000000000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff80831691309091163180156108fc02916000818181858888f19350505050158015610dcf573d6000803e3d6000fd5b5050565b6000543373ffffffffffffffffffffffffffffffffffffffff908116911614610e5d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79204f776e657200000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000828152600360209081526040808320805460018101825590845291832090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091559051909184917f1b268da283b6794e2e7cb16ebd9e4bbcfad6ae81d2321f9c2e281f9f53167a739190a35050565b60008481526003602052604081208054909180805b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8401938810156110eb578484815481101515610f3c57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1692508591505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191600010156110e657868683818110610f9c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1690508273ffffffffffffffffffffffffffffffffffffffff1663f5be4389828b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e60001916600019168152602001908152602001600020600001546040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018281526020019350505050600060405180830381600087803b1580156110c957600080fd5b505af11580156110dd573d6000803e3d6000fd5b50505050610f64565b610f03565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600260209081526040808320938352929052205490565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000543373ffffffffffffffffffffffffffffffffffffffff9081169116146111d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79204f776e657200000000000000000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080611225843361149a565b151561123057600080fd5b608060405190810160405280848152602001600080191681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815250600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008660001916600019168152602001908152602001600020600082015181600001556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050503373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f7f467fc85b3c9db1144a5f705bcb37dcd17e760ed57b1921186f50b51000c3a186866040518083600019166000191681526020018281526020016020019250505060405180910390a35050600082815260036020526040902080545b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019060001015610cdb5781818154811015156113f757fe5b6000918252602082200154604080517ff5be438900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015260248201899052604482018890529151919092169263f5be4389926064808201939182900301818387803b15801561147d57600080fd5b505af1158015611491573d6000803e3d6000fd5b505050506113bd565b6000805473ffffffffffffffffffffffffffffffffffffffff8381169116148061150b5750604080517f63616e5772697465546f2d0000000000000000000000000000000000000000008152815190819003600b01812085188152905190819003602001902061150b908390610aac565b9392505050565b60408051608081018252600080825260208201819052918101829052606081019190915290565b81548183558181111561155d5760008381526020902061155d918101908301611562565b505050565b61158091905b8082111561157c5760008155600101611568565b5090565b905600a165627a7a723058203c525021d6c080c74b950a61833aab43cee4773414de1d99c6dbd8910f78d2730029

Deployed Bytecode

0x6080604052600436106100f05763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663015aeda781146100f5578063100ad9f11461012e578063163f66911461015857806340f74566146101c45780634e71e0c8146101df5780636ca06072146101f457806371b6d6ea1461024e5780637338c25c1461027f57806388ee39cc146102c45780638da5cb5b146102f85780639a6a30a41461030d578063a32d76971461033b578063e01709bc1461036c578063e23c506314610394578063e30c3978146103c5578063f2fde38b146103da578063fdac9ff714610408575b600080fd5b34801561010157600080fd5b5061012c73ffffffffffffffffffffffffffffffffffffffff6004351660243560443560643561043c565b005b34801561013a57600080fd5b506101466004356106d3565b60408051918252519081900360200190f35b34801561016457600080fd5b5061018973ffffffffffffffffffffffffffffffffffffffff600435166024356106e5565b60408051948552602085019390935273ffffffffffffffffffffffffffffffffffffffff909116838301526060830152519081900360800190f35b3480156101d057600080fd5b5061012c600435602435610762565b3480156101eb57600080fd5b5061012c61097e565b34801561020057600080fd5b5061022573ffffffffffffffffffffffffffffffffffffffff60043516602435610a3c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561025a57600080fd5b5061014673ffffffffffffffffffffffffffffffffffffffff60043516602435610a74565b34801561028b57600080fd5b506102b073ffffffffffffffffffffffffffffffffffffffff60043516602435610aac565b604080519115158252519081900360200190f35b3480156102d057600080fd5b5061012c73ffffffffffffffffffffffffffffffffffffffff60043581169060243516610ae3565b34801561030457600080fd5b50610225610ce2565b34801561031957600080fd5b5061012c73ffffffffffffffffffffffffffffffffffffffff60043516610cfe565b34801561034757600080fd5b5061012c60043573ffffffffffffffffffffffffffffffffffffffff60243516610dd3565b34801561037857600080fd5b5061012c60048035906024803591604435918201910135610eee565b3480156103a057600080fd5b5061014673ffffffffffffffffffffffffffffffffffffffff600435166024356110f6565b3480156103d157600080fd5b5061022561112b565b3480156103e657600080fd5b5061012c73ffffffffffffffffffffffffffffffffffffffff60043516611147565b34801561041457600080fd5b5061012c73ffffffffffffffffffffffffffffffffffffffff60043516602435604435611218565b600080610449853361149a565b151561045457600080fd5b608060405190810160405280858152602001846000191681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815250600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760001916600019168152602001908152602001600020600082015181600001556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f7f467fc85b3c9db1144a5f705bcb37dcd17e760ed57b1921186f50b51000c3a18787876040518084600019166000191681526020018381526020018260001916600019168152602001935050505060405180910390a35050600083815260036020526040902080545b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190600010156106cb57818181548110151561062857fe5b6000918252602082200154604080517ff5be438900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018a9052604482018990529151919092169263f5be4389926064808201939182900301818387803b1580156106ae57600080fd5b505af11580156106c2573d6000803e3d6000fd5b505050506105ee565b505050505050565b60009081526003602052604090205490565b6000806000806106f3611512565b5050505073ffffffffffffffffffffffffffffffffffffffff928316600090815260026020818152604080842095845294815291849020845160808101865281548082526001830154948201859052928201549096169486018590526003015460609095018590529490939150565b600080543373ffffffffffffffffffffffffffffffffffffffff9081169116146107ed57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79204f776e657200000000000000000000000000000000000000000000604482015290519081900360640190fd5b5060008281526003602052604090205480821061080957600080fd5b600083815260036020526040902080548390811061082357fe5b600091825260208220015460405173ffffffffffffffffffffffffffffffffffffffff9091169185917fb2323eec35dc99548462ae5379857df730d727775c28ed24e05697645c39031f9190a3600083815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83019081106108ac57fe5b600091825260208083209091015485835260039091526040909120805473ffffffffffffffffffffffffffffffffffffffff90921691849081106108ec57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94909416939093179092558481526003909152604090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201906109789082611539565b50505050565b6001543373ffffffffffffffffffffffffffffffffffffffff9081169116146109a657600080fd5b6001546000805460405173ffffffffffffffffffffffffffffffffffffffff93841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020818152604080842094845293905291902001541690565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600260209081526040808320938352929052206003015490565b73ffffffffffffffffffffffffffffffffffffffff9190911660009081526002602090815260408083209383529290522054151590565b600080543373ffffffffffffffffffffffffffffffffffffffff908116911614610b6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79204f776e657200000000000000000000000000000000000000000000604482015290519081900360640190fd5b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610c0957600080fd5b505af1158015610c1d573d6000803e3d6000fd5b505050506040513d6020811015610c3357600080fd5b5051604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820184905291519293509085169163a9059cbb916044808201926020929091908290030181600087803b158015610cb157600080fd5b505af1158015610cc5573d6000803e3d6000fd5b505050506040513d6020811015610cdb57600080fd5b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000543373ffffffffffffffffffffffffffffffffffffffff908116911614610d8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79204f776e657200000000000000000000000000000000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff80831691309091163180156108fc02916000818181858888f19350505050158015610dcf573d6000803e3d6000fd5b5050565b6000543373ffffffffffffffffffffffffffffffffffffffff908116911614610e5d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79204f776e657200000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000828152600360209081526040808320805460018101825590845291832090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091559051909184917f1b268da283b6794e2e7cb16ebd9e4bbcfad6ae81d2321f9c2e281f9f53167a739190a35050565b60008481526003602052604081208054909180805b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8401938810156110eb578484815481101515610f3c57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1692508591505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191600010156110e657868683818110610f9c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1690508273ffffffffffffffffffffffffffffffffffffffff1663f5be4389828b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e60001916600019168152602001908152602001600020600001546040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018281526020019350505050600060405180830381600087803b1580156110c957600080fd5b505af11580156110dd573d6000803e3d6000fd5b50505050610f64565b610f03565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600260209081526040808320938352929052205490565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000543373ffffffffffffffffffffffffffffffffffffffff9081169116146111d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79204f776e657200000000000000000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080611225843361149a565b151561123057600080fd5b608060405190810160405280848152602001600080191681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815250600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008660001916600019168152602001908152602001600020600082015181600001556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050503373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f7f467fc85b3c9db1144a5f705bcb37dcd17e760ed57b1921186f50b51000c3a186866040518083600019166000191681526020018281526020016020019250505060405180910390a35050600082815260036020526040902080545b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019060001015610cdb5781818154811015156113f757fe5b6000918252602082200154604080517ff5be438900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015260248201899052604482018890529151919092169263f5be4389926064808201939182900301818387803b15801561147d57600080fd5b505af1158015611491573d6000803e3d6000fd5b505050506113bd565b6000805473ffffffffffffffffffffffffffffffffffffffff8381169116148061150b5750604080517f63616e5772697465546f2d0000000000000000000000000000000000000000008152815190819003600b01812085188152905190819003602001902061150b908390610aac565b9392505050565b60408051608081018252600080825260208201819052918101829052606081019190915290565b81548183558181111561155d5760008381526020902061155d918101908301611562565b505050565b61158091905b8082111561157c5760008155600101611568565b5090565b905600a165627a7a723058203c525021d6c080c74b950a61833aab43cee4773414de1d99c6dbd8910f78d2730029

Swarm Source

bzzr://3c525021d6c080c74b950a61833aab43cee4773414de1d99c6dbd8910f78d273

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

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.