ETH Price: $2,462.04 (+2.63%)

Contract

0xe8B3722059f8F3672F14F1a9561388Cb4CCF04A2
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
103226432020-06-23 14:38:221549 days ago1592923102  Contract Creation0 ETH
Loading...
Loading

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

Contract Name:
BaseWallet

Compiler Version
v0.5.4+commit.9549d8ff

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-02-27
*/

// File: browser/IERC20.sol

pragma solidity ^0.5.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
// File: browser/Module.sol

pragma solidity ^0.5.4;


/**
 * @title Module
 * @dev Interface for a module. 
 * A module MUST implement the addModule() method to ensure that a wallet with at least one module
 * can never end up in a "frozen" state.
 * @author Julien Niset - <[email protected]>
 */
interface Module {

    /**
     * @dev Inits a module for a wallet by e.g. setting some wallet specific parameters in storage.
     * @param _wallet The wallet.
     */
    function init(BaseWallet _wallet) external;

    /**
     * @dev Adds a module to a wallet.
     * @param _wallet The target wallet.
     * @param _module The modules to authorise.
     */
    function addModule(BaseWallet _wallet, Module _module) external;

    /**
    * @dev Utility method to recover any ERC20 token that was sent to the
    * module by mistake. 
    * @param _token The token to recover.
    */
    function recoverToken(address _token) external;
}
// File: browser/BaseWallet.sol

pragma solidity ^0.5.4;



/**
 * @title BaseWallet
 */
contract BaseWallet {

    // The owner
    address public owner;
    // The number of modules
    uint public modules;
    // The authorised modules/devices
    mapping (address => bool) public authorised;
    // The enabled static calls
    mapping (bytes4 => address) public enabled;

    event AuthorisedModule(address indexed module, bool value);
    event EnabledStaticCall(address indexed module, bytes4 indexed method);
    event Invoked(address indexed module, address indexed target, uint indexed value, bytes data);
    event OwnerChanged(address owner);
    event Received(uint indexed value, address indexed sender, bytes data);
    event WithdrawToOwner(address owner, address token, uint256 amount);
    /**
     * @dev Throws if the sender is not an authorised module.
     */
    modifier moduleOnly {
        require(authorised[msg.sender], "BW: msg.sender not an authorized module");
        _;
    }

    /**
     * @dev Inits the wallet by setting the owner and authorising a list of modules.
     * @param _owner The owner.
     * @param _modules The modules to authorise.
     */
    function init(
        address _owner,
        address[] calldata _modules,
        address _target,
        bytes calldata _data
    )
        external
    {
        require(owner == address(0) && modules == 0, "BW: wallet already initialised");
        require(_modules.length > 0, "BW: construction requires at least 1 module");
        owner = _owner;
        modules = _modules.length;
        for(uint256 i = 0; i < _modules.length; i++) {
            require(authorised[_modules[i]] == false, "BW: module is already added");
            authorised[_modules[i]] = true;
            Module(_modules[i]).init(this);
            emit AuthorisedModule(_modules[i], true);
        }
    }
    /**
     * @dev invokes call towards targetAddress with targetData on behalf of user wallet.
     * @param _target The calling address.
     * @param _data Call data for the transaction.
     */
    function invokeTargetWithData(
        address _target,
        bytes memory _data
    )
        public
    {
        if (_target != address(0) && _data.length > 0) {
            _invoke(_target, 0, _data);
        }
    }

    /**
    @dev returns funds withdraw from contract wallet to owner address
    @param _token The token to be transfered back.
    @param _amount The amount to be transfered back.
     */
    function withdrawToOwner(
        address _token,
        uint256 _amount
        )
        external
        moduleOnly
        {
        IERC20(_token).transfer(owner, _amount);
        emit WithdrawToOwner(owner, _token, _amount);
    }

    /**
     * @dev Enables/Disables a module.
     * @param _module The target module.
     * @param _value Set to true to authorise the module.
     */
    function authoriseModule(
        address _module,
        bool _value
    )
        external
        moduleOnly
    {
        if (authorised[_module] != _value) {
            if(_value == true) {
                modules += 1;
                authorised[_module] = true;
                Module(_module).init(this);
            }
            else {
                modules -= 1;
                require(modules > 0, "BW: wallet must have at least one module");
                delete authorised[_module];
            }
            emit AuthorisedModule(_module, _value);
        }
    }

    /**
    * @dev Enables a static method by specifying the target module to which the call
    * must be delegated.
    * @param _module The target module.
    * @param _method The static method signature.
    */
    function enableStaticCall(
        address _module,
        bytes4 _method
    )
        external
        moduleOnly
    {
        require(authorised[_module], "BW: must be an authorised module for static call");
        enabled[_method] = _module;
        emit EnabledStaticCall(_module, _method);
    }

    /**
     * @dev Sets a new owner for the wallet.
     * @param _newOwner The new owner.
     */
    function setOwner(address _newOwner)
        external
        moduleOnly
    {
        require(_newOwner != address(0), "BW: address cannot be null");
        owner = _newOwner;
        emit OwnerChanged(_newOwner);
    }
    
    /**
     * @dev Performs a generic transaction.
     * @param _target The address for the transaction.
     * @param _value The value of the transaction.
     * @param _data The data of the transaction.
     * @return the result data of the forwarded call.
     */
    function invoke(
        address _target,
        uint _value,
        bytes calldata _data
    )
        external
        moduleOnly
        returns (bytes memory)
    {
        return _invoke(_target, _value, _data);
    }

    function _invoke(
        address _target,
        uint _value,
        bytes memory _data
    )
        private
        returns (bytes memory)
    {
        // solium-disable-next-line security/no-call-value
        (bool success, bytes memory result) = _target.call.value(_value)(_data);
        require(success, "BW: call to target failed");
        emit Invoked(msg.sender, _target, _value, _data);
        return result;
    }

    /**
     * @dev This method makes it possible for the wallet to comply to interfaces expecting the wallet to
     * implement specific static methods. It delegates the static call to a target contract if the data corresponds
     * to an enabled method, or logs the call otherwise.
     */
    function() external payable {
        if(msg.data.length > 0) {
            address module = enabled[msg.sig];
            if(module == address(0)) {
                emit Received(msg.value, msg.sender, msg.data);
            }
            else {
                require(authorised[module], "BW: must be an authorised module for static call");
                // solium-disable-next-line security/no-inline-assembly
                assembly {
                    calldatacopy(0, 0, calldatasize())
                    let result := staticcall(gas, module, 0, calldatasize(), 0, 0)
                    returndatacopy(0, 0, returndatasize())
                    switch result
                    case 0 {revert(0, returndatasize())}
                    default {return (0, returndatasize())}
                }
            }
        }
    }

}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_module","type":"address"},{"name":"_method","type":"bytes4"}],"name":"enableStaticCall","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_module","type":"address"},{"name":"_value","type":"bool"}],"name":"authoriseModule","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_data","type":"bytes"}],"name":"invokeTargetWithData","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawToOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_modules","type":"address[]"},{"name":"_target","type":"address"},{"name":"_data","type":"bytes"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes4"}],"name":"enabled","outputs":[{"name":"","type":"address"}],"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":"_target","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"invoke","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"authorised","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"modules","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"module","type":"address"},{"indexed":false,"name":"value","type":"bool"}],"name":"AuthorisedModule","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"module","type":"address"},{"indexed":true,"name":"method","type":"bytes4"}],"name":"EnabledStaticCall","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"module","type":"address"},{"indexed":true,"name":"target","type":"address"},{"indexed":true,"name":"value","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Invoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"value","type":"uint256"},{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"WithdrawToOwner","type":"event"}]

Deployed Bytecode

0x6080604052600436106100b9576000357c01000000000000000000000000000000000000000000000000000000009004806354b57aa81161008157806354b57aa81461054d5780635f54892b146106685780638da5cb5b146107025780638f6f033214610759578063d6eb1bbf14610882578063f7e80e98146108eb576100b9565b806313af4035146102e257806313da30b2146103335780631f17732d146103ad578063298d0b271461040a57806347c62a0d146104f2575b60008036905011156102e05760006003600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610214573373ffffffffffffffffffffffffffffffffffffffff16347f606834f57405380c4fb88d1f4850326ad3885f014bab3b568dfbf7a041eef73860003660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a36102de565b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156102b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611b8c6030913960400191505060405180910390fd5b3660008037600080366000845afa3d6000803e80600081146102d9573d6000f35b3d6000fd5b505b005b3480156102ee57600080fd5b506103316004803603602081101561030557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610916565b005b34801561033f57600080fd5b506103ab6004803603604081101561035657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610b05565b005b3480156103b957600080fd5b50610408600480360360408110156103d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610d44565b005b34801561041657600080fd5b506104f06004803603604081101561042d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561046a57600080fd5b82018360208201111561047c57600080fd5b8035906020019184600183028401116401000000008311171561049e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611082565b005b3480156104fe57600080fd5b5061054b6004803603604081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110d7565b005b34801561055957600080fd5b506106666004803603608081101561057057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156105ad57600080fd5b8201836020820111156105bf57600080fd5b803590602001918460208302840111640100000000831117156105e157600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561062257600080fd5b82018360208201111561063457600080fd5b8035906020019184600183028401116401000000008311171561065657600080fd5b909192939192939050505061133f565b005b34801561067457600080fd5b506106c06004803603602081101561068b57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506117af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561070e57600080fd5b506107176117e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076557600080fd5b506108076004803603606081101561077c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156107c357600080fd5b8201836020820111156107d557600080fd5b803590602001918460018302840111640100000000831117156107f757600080fd5b9091929391929390505050611807565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561084757808201518184015260208101905061082c565b50505050905090810190601f1680156108745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561088e57600080fd5b506108d1600480360360208110156108a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611906565b604051808215151515815260200191505060405180910390f35b3480156108f757600080fd5b50610900611926565b6040518082815260200191505060405180910390f35b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156109ba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180611bbc6027913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f42573a20616464726573732063616e6e6f74206265206e756c6c00000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf3681604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180611bbc6027913960400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611b8c6030913960400191505060405180910390fd5b8160036000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff167fd04b9de96b5ba21173fd97c509db394c9e07a59ffb10c26da7f6ce38a8102fcb60405160405180910390a35050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180611bbc6027913960400191505060405180910390fd5b801515600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561107e57600115158115151415610f6e57600180600082825401925050819055506001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166319ab453c306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610f5157600080fd5b505af1158015610f65573d6000803e3d6000fd5b5050505061102b565b600180600082825403925050819055506000600154111515610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180611b396028913960400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b8173ffffffffffffffffffffffffffffffffffffffff167f8da3ff870ae294081392139550e167f1f31f277f22015ee22fbffdbd7758f4e182604051808215151515815260200191505060405180910390a25b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156110c0575060008151115b156110d3576110d18260008361192c565b505b5050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561117b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180611bbc6027913960400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561123f57600080fd5b505af1158015611253573d6000803e3d6000fd5b505050506040513d602081101561126957600080fd5b8101908080519060200190929190505050507fc7e3790af79a279b7a14bf28913b02c050824b90caa320cb2255bdb9821bc95d6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a15050565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561139e57506000600154145b1515611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f42573a2077616c6c657420616c726561647920696e697469616c69736564000081525060200191505060405180910390fd5b600085859050111515611470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180611b61602b913960400191505060405180910390fd5b856000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484905060018190555060008090505b858590508110156117a657600015156002600088888581811015156114e157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415156115bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f42573a206d6f64756c6520697320616c7265616479206164646564000000000081525060200191505060405180910390fd5b60016002600088888581811015156115d157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550858582818110151561164d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166319ab453c306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561170457600080fd5b505af1158015611718573d6000803e3d6000fd5b50505050858582818110151561172a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8da3ff870ae294081392139550e167f1f31f277f22015ee22fbffdbd7758f4e16001604051808215151515815260200191505060405180910390a280806001019150506114c0565b50505050505050565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156118ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180611bbc6027913960400191505060405180910390fd5b6118fc858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061192c565b9050949350505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60015481565b6060600060608573ffffffffffffffffffffffffffffffffffffffff1685856040518082805190602001908083835b602083101515611980578051825260208201915060208101905060208303925061195b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146119e2576040519150601f19603f3d011682016040523d82523d6000602084013e6119e7565b606091505b5091509150811515611a61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f42573a2063616c6c20746f20746172676574206661696c65640000000000000081525060200191505060405180910390fd5b848673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7d2476ab50663f025cff0be85655bcf355f62768615c0c478f3cd5293f807365876040518080602001828103825283818151815260200191508051906020019080838360005b83811015611af2578082015181840152602081019050611ad7565b50505050905090810190601f168015611b1f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a48092505050939250505056fe42573a2077616c6c6574206d7573742068617665206174206c65617374206f6e65206d6f64756c6542573a20636f6e737472756374696f6e207265717569726573206174206c656173742031206d6f64756c6542573a206d75737420626520616e20617574686f7269736564206d6f64756c6520666f72207374617469632063616c6c42573a206d73672e73656e646572206e6f7420616e20617574686f72697a6564206d6f64756c65a165627a7a723058207ab26633a47147402d73621e66cb60ac78907b2fa83d7b34b858801c595b162c0029

Deployed Bytecode Sourcemap

3924:6532:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9655:1;9637:8;;:15;;:19;9634:810;;;9673:14;9690:7;:16;9698:7;;;;9690:16;;;;;;;;;;;;;;;;;;;;;;;;;;;9673:33;;9742:1;9724:20;;:6;:20;;;9721:712;;;9790:10;9770:41;;9779:9;9770:41;9802:8;;9770:41;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9770:41:0;;;;;;;;;;;;;;9721:712;;;9873:10;:18;9884:6;9873:18;;;;;;;;;;;;;;;;;;;;;;;;;9865:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10087:14;10084:1;10081;10068:34;10184:1;10181;10165:14;10162:1;10154:6;10149:3;10138:48;10229:16;10226:1;10223;10208:38;10275:6;10308:1;10303:36;;;;10381:16;10378:1;10370:28;10303:36;10321:16;10318:1;10311:27;10045:373;9634:810;;3924:6532;8086:228;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8086:228:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8086:228:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;7660:314;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7660:314:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7660:314:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6826:605;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6826:605:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6826:605:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5978:231;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5978:231:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5978:231:0;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5978:231:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5978:231:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5978:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5978:231:0;;;;;;;;;;;;;;;:::i;:::-;;6412:247;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6412:247:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6412:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5061:707;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5061:707:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5061:707:0;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5061:707:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5061:707:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;5061:707:0;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5061:707:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5061:707:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5061:707:0;;;;;;;;;;;;:::i;:::-;;4176:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4176:42:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4176:42:0;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3971:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3971:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8602:234;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8602:234:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8602:234:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8602:234:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8602:234:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8602:234:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8602:234:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4093:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4093:43:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4093:43:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4028:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4028:19:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8086:228;4780:10;:22;4791:10;4780:22;;;;;;;;;;;;;;;;;;;;;;;;;4772:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8206:1;8185:23;;:9;:23;;;;8177:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8258:9;8250:5;;:17;;;;;;;;;;;;;;;;;;8283:23;8296:9;8283:23;;;;;;;;;;;;;;;;;;;;;;8086:228;:::o;7660:314::-;4780:10;:22;4791:10;4780:22;;;;;;;;;;;;;;;;;;;;;;;;;4772:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7806:10;:19;7817:7;7806:19;;;;;;;;;;;;;;;;;;;;;;;;;7798:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7908:7;7889;:16;7897:7;7889:16;;;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;7958:7;7931:35;;;7949:7;7931:35;;;;;;;;;;;;7660:314;;:::o;6826:605::-;4780:10;:22;4791:10;4780:22;;;;;;;;;;;;;;;;;;;;;;;;;4772:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6987:6;6964:29;;:10;:19;6975:7;6964:19;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;6960:464;;;7023:4;7013:14;;:6;:14;;;7010:350;;;7059:1;7048:7;;:12;;;;;;;;;;;7101:4;7079:10;:19;7090:7;7079:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;7131:7;7124:20;;;7145:4;7124:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7124:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7124:26:0;;;;7010:350;;;7215:1;7204:7;;:12;;;;;;;;;;;7253:1;7243:7;;:11;7235:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7325:10;:19;7336:7;7325:19;;;;;;;;;;;;;;;;7318:26;;;;;;;;;;;7010:350;7396:7;7379:33;;;7405:6;7379:33;;;;;;;;;;;;;;;;;;;;;;6960:464;6826:605;;:::o;5978:231::-;6125:1;6106:21;;:7;:21;;;;:41;;;;;6146:1;6131:5;:12;:16;6106:41;6102:100;;;6164:26;6172:7;6181:1;6184:5;6164:7;:26::i;:::-;;6102:100;5978:231;;:::o;6412:247::-;4780:10;:22;4791:10;4780:22;;;;;;;;;;;;;;;;;;;;;;;;;4772:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6564:6;6557:23;;;6581:5;;;;;;;;;;;6588:7;6557:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6557:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6557:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6557:39:0;;;;;;;;;;;;;;;;;6612;6628:5;;;;;;;;;;;6635:6;6643:7;6612:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6412:247;;:::o;5061:707::-;5261:1;5244:19;;:5;;;;;;;;;;;:19;;;:35;;;;;5278:1;5267:7;;:12;5244:35;5236:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5351:1;5333:8;;:15;;:19;5325:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5419:6;5411:5;;:14;;;;;;;;;;;;;;;;;;5446:8;;:15;;5436:7;:25;;;;5476:9;5488:1;5476:13;;5472:289;5495:8;;:15;;5491:1;:19;5472:289;;;5567:5;5540:32;;:10;:23;5551:8;;5560:1;5551:11;;;;;;;;;;;;;;;;;5540:23;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;5532:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5645:4;5619:10;:23;5630:8;;5639:1;5630:11;;;;;;;;;;;;;;;;;5619:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;5671:8;;5680:1;5671:11;;;;;;;;;;;;;;;;;5664:24;;;5689:4;5664:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5664:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5664:30:0;;;;5731:8;;5740:1;5731:11;;;;;;;;;;;;;;;;;5714:35;;;5744:4;5714:35;;;;;;;;;;;;;;;;;;;;;;5512:3;;;;;;;5472:289;;;;5061:707;;;;;;:::o;4176:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;3971:20::-;;;;;;;;;;;;;:::o;8602:234::-;8760:12;4780:10;:22;4791:10;4780:22;;;;;;;;;;;;;;;;;;;;;;;;;4772:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8797:31;8805:7;8814:6;8822:5;;8797:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8797:31:0;;;;;;:7;:31::i;:::-;8790:38;;8602:234;;;;;;:::o;4093:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;4028:19::-;;;;:::o;8844:444::-;8980:12;9071;9085:19;9108:7;:12;;9127:6;9135:5;9108:33;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;9108:33:0;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;9070:71:0;;;;9160:7;9152:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9242:6;9233:7;9213:43;;9221:10;9213:43;;;9250:5;9213:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9213:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9274:6;9267:13;;;;8844:444;;;;;:::o

Swarm Source

bzzr://7ab26633a47147402d73621e66cb60ac78907b2fa83d7b34b858801c595b162c

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