ETH Price: $3,412.63 (-1.46%)
Gas: 6 Gwei

Contract

0xB6d64221451edBAc7736d4C3dA7fc827457dEc03
 

Overview

ETH Balance

0.000889592656523036 ETH

Eth Value

$3.04 (@ $3,412.63/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Set Owner201111792024-06-17 11:22:2315 days ago1718623343IN
0xB6d64221...7457dEc03
0 ETH0.00015226.3222601
Execute150924932022-07-07 1:29:44726 days ago1657157384IN
0xB6d64221...7457dEc03
0 ETH0.0008658626.07254825
Transfer150307752022-06-26 20:34:35737 days ago1656275675IN
0xB6d64221...7457dEc03
0 ETH0.0006108228.99699257
Transfer150001932022-06-21 3:20:33742 days ago1655781633IN
0xB6d64221...7457dEc03
0.00088959 ETH0.0007983837.9008416
Init123736182021-05-05 10:12:501154 days ago1620209570IN
0xB6d64221...7457dEc03
0 ETH0.0034710136.00000218
0x6080604097731712020-03-30 12:57:441555 days ago1585573064IN
 Create: BaseWallet
0 ETH0.018104920

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BaseWallet

Compiler Version
v0.5.4+commit.9549d8ff

Optimization Enabled:
Yes with 999 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at Etherscan.io on 2020-03-30
*/

// Copyright (C) 2018  Argent Labs Ltd. <https://argent.xyz>

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

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;
}

/**
 * @title BaseWallet
 * @dev Simple modular wallet that authorises modules to call its invoke() method.
 * @author Julien Niset - <[email protected]>
 */
contract BaseWallet {

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

    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 Received(uint indexed value, address indexed sender, bytes data);
    event OwnerChanged(address owner);

    /**
     * @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) 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);
        }
        if (address(this).balance > 0) {
            emit Received(address(this).balance, address(0), "");
        }
    }

    /**
     * @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) {
            emit AuthorisedModule(_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];
            }
        }
    }

    /**
    * @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.
     */
    function invoke(address _target, uint _value, bytes calldata _data) external moduleOnly returns (bytes memory _result) {
        bool success;
        // solium-disable-next-line security/no-call-value
        (success, _result) = _target.call.value(_value)(_data);
        if (!success) {
            // solium-disable-next-line security/no-inline-assembly
            assembly {
                returndatacopy(0, 0, returndatasize)
                revert(0, returndatasize)
            }
        }
        emit Invoked(msg.sender, _target, _value, _data);
    }

    /**
     * @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":"_owner","type":"address"},{"name":"_modules","type":"address[]"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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":"_result","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":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"}],"name":"OwnerChanged","type":"event"}]

608060405234801561001057600080fd5b50610f77806100206000396000f3fe6080604052600436106100ce576000357c0100000000000000000000000000000000000000000000000000000000900480635f54892b116100865780638f6f03321161006b5780638f6f0332146103fb578063d6eb1bbf14610502578063f7e80e9814610549576100ce565b80635f54892b1461039a5780638da5cb5b146103e6576100ce565b80631f17732d116100b75780631f17732d146102a15780633c5a3cea146102dc5780635c60da1b14610369576100ce565b806313af40351461021357806313da30b214610246575b600036111561021157600080357fffffffff0000000000000000000000000000000000000000000000000000000016815260036020526040902054600160a060020a031680151561018a5733600160a060020a0316347f606834f57405380c4fb88d1f4850326ad3885f014bab3b568dfbf7a041eef73860003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a361020f565b600160a060020a03811660009081526002602052604090205460ff1615156101eb57604051600080516020610ed58339815191528152600401808060200182810382526030815260200180610ef56030913960400191505060405180910390fd5b3660008037600080366000845afa3d6000803e80801561020a573d6000f35b3d6000fd5b505b005b34801561021f57600080fd5b506102116004803603602081101561023657600080fd5b5035600160a060020a0316610570565b34801561025257600080fd5b506102116004803603604081101561026957600080fd5b508035600160a060020a031690602001357fffffffff000000000000000000000000000000000000000000000000000000001661068e565b3480156102ad57600080fd5b50610211600480360360408110156102c457600080fd5b50600160a060020a03813516906020013515156107cd565b3480156102e857600080fd5b50610211600480360360408110156102ff57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561032a57600080fd5b82018360208201111561033c57600080fd5b8035906020019184602083028401116401000000008311171561035e57600080fd5b5090925090506109af565b34801561037557600080fd5b5061037e610cd9565b60408051600160a060020a039092168252519081900360200190f35b3480156103a657600080fd5b5061037e600480360360208110156103bd57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610ce8565b3480156103f257600080fd5b5061037e610d03565b34801561040757600080fd5b5061048d6004803603606081101561041e57600080fd5b600160a060020a038235169160208101359181019060608101604082013564010000000081111561044e57600080fd5b82018360208201111561046057600080fd5b8035906020019184600183028401116401000000008311171561048257600080fd5b509092509050610d12565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104c75781810151838201526020016104af565b50505050905090810190601f1680156104f45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561050e57600080fd5b506105356004803603602081101561052557600080fd5b5035600160a060020a0316610e66565b604080519115158252519081900360200190f35b34801561055557600080fd5b5061055e610e7b565b60408051918252519081900360200190f35b3360009081526002602052604090205460ff1615156105c857604051600080516020610ed58339815191528152600401808060200182810382526027815260200180610f256027913960400191505060405180910390fd5b600160a060020a038116151561062d5760408051600080516020610ed5833981519152815260206004820152601a60248201527f42573a20616464726573732063616e6e6f74206265206e756c6c000000000000604482015290519081900360640190fd5b60018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf369181900360200190a150565b3360009081526002602052604090205460ff1615156106e657604051600080516020610ed58339815191528152600401808060200182810382526027815260200180610f256027913960400191505060405180910390fd5b600160a060020a03821660009081526002602052604090205460ff16151561074757604051600080516020610ed58339815191528152600401808060200182810382526030815260200180610ef56030913960400191505060405180910390fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116600081815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038716908117909155905190917fd04b9de96b5ba21173fd97c509db394c9e07a59ffb10c26da7f6ce38a8102fcb91a35050565b3360009081526002602052604090205460ff16151561082557604051600080516020610ed58339815191528152600401808060200182810382526027815260200180610f256027913960400191505060405180910390fd5b600160a060020a03821660009081526002602052604090205460ff161515811515146109ab576040805182151581529051600160a060020a038416917f8da3ff870ae294081392139550e167f1f31f277f22015ee22fbffdbd7758f4e1919081900360200190a260018115151415610938576004805460019081018255600160a060020a038416600081815260026020526040808220805460ff191690941790935582517f19ab453c0000000000000000000000000000000000000000000000000000000081523094810194909452915190926319ab453c92602480830193919282900301818387803b15801561091b57600080fd5b505af115801561092f573d6000803e3d6000fd5b505050506109ab565b60048054600019019081905560001061098a57604051600080516020610ed58339815191528152600401808060200182810382526028815260200180610e826028913960400191505060405180910390fd5b600160a060020a0382166000908152600260205260409020805460ff191690555b5050565b600154600160a060020a03161580156109c85750600454155b1515610a235760408051600080516020610ed5833981519152815260206004820152601e60248201527f42573a2077616c6c657420616c726561647920696e697469616c697365640000604482015290519081900360640190fd5b60008111610a6a57604051600080516020610ed5833981519152815260040180806020018281038252602b815260200180610eaa602b913960400191505060405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038516179055600481905560005b81811015610c875760026000848484818110610ab257fe5b60209081029290920135600160a060020a03168352508101919091526040016000205460ff1615610b325760408051600080516020610ed5833981519152815260206004820152601b60248201527f42573a206d6f64756c6520697320616c72656164792061646465640000000000604482015290519081900360640190fd5b600160026000858585818110610b4457fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff1916911515919091179055828282818110610b8157fe5b90506020020135600160a060020a0316600160a060020a03166319ab453c306040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b158015610c0457600080fd5b505af1158015610c18573d6000803e3d6000fd5b505050508282828181101515610c2a57fe5b90506020020135600160a060020a0316600160a060020a03167f8da3ff870ae294081392139550e167f1f31f277f22015ee22fbffdbd7758f4e16001604051808215151515815260200191505060405180910390a2600101610a9a565b50600030311115610cd457604080516020808252600090820181905291513031917f606834f57405380c4fb88d1f4850326ad3885f014bab3b568dfbf7a041eef738919081900360600190a35b505050565b600054600160a060020a031681565b600360205260009081526040902054600160a060020a031681565b600154600160a060020a031681565b3360009081526002602052604090205460609060ff161515610d6d57604051600080516020610ed58339815191528152600401808060200182810382526027815260200180610f256027913960400191505060405180910390fd5b600085600160a060020a0316858585604051808383808284376040519201945060009350909150508083038185875af1925050503d8060008114610dcd576040519150601f19603f3d011682016040523d82523d6000602084013e610dd2565b606091505b5092509050801515610de8573d6000803e3d6000fd5b8486600160a060020a031633600160a060020a03167f7d2476ab50663f025cff0be85655bcf355f62768615c0c478f3cd5293f807365878760405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a450949350505050565b60026020526000908152604090205460ff1681565b6004548156fe42573a2077616c6c6574206d7573742068617665206174206c65617374206f6e65206d6f64756c6542573a20636f6e737472756374696f6e207265717569726573206174206c656173742031206d6f64756c6508c379a00000000000000000000000000000000000000000000000000000000042573a206d75737420626520616e20617574686f7269736564206d6f64756c6520666f72207374617469632063616c6c42573a206d73672e73656e646572206e6f7420616e20617574686f72697a6564206d6f64756c65a165627a7a72305820b006dfbc2c336045fc14f05576b37e93870a076202db4360484f2efd240c18510029

Deployed Bytecode

0x6080604052600436106100ce576000357c0100000000000000000000000000000000000000000000000000000000900480635f54892b116100865780638f6f03321161006b5780638f6f0332146103fb578063d6eb1bbf14610502578063f7e80e9814610549576100ce565b80635f54892b1461039a5780638da5cb5b146103e6576100ce565b80631f17732d116100b75780631f17732d146102a15780633c5a3cea146102dc5780635c60da1b14610369576100ce565b806313af40351461021357806313da30b214610246575b600036111561021157600080357fffffffff0000000000000000000000000000000000000000000000000000000016815260036020526040902054600160a060020a031680151561018a5733600160a060020a0316347f606834f57405380c4fb88d1f4850326ad3885f014bab3b568dfbf7a041eef73860003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a361020f565b600160a060020a03811660009081526002602052604090205460ff1615156101eb57604051600080516020610ed58339815191528152600401808060200182810382526030815260200180610ef56030913960400191505060405180910390fd5b3660008037600080366000845afa3d6000803e80801561020a573d6000f35b3d6000fd5b505b005b34801561021f57600080fd5b506102116004803603602081101561023657600080fd5b5035600160a060020a0316610570565b34801561025257600080fd5b506102116004803603604081101561026957600080fd5b508035600160a060020a031690602001357fffffffff000000000000000000000000000000000000000000000000000000001661068e565b3480156102ad57600080fd5b50610211600480360360408110156102c457600080fd5b50600160a060020a03813516906020013515156107cd565b3480156102e857600080fd5b50610211600480360360408110156102ff57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561032a57600080fd5b82018360208201111561033c57600080fd5b8035906020019184602083028401116401000000008311171561035e57600080fd5b5090925090506109af565b34801561037557600080fd5b5061037e610cd9565b60408051600160a060020a039092168252519081900360200190f35b3480156103a657600080fd5b5061037e600480360360208110156103bd57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610ce8565b3480156103f257600080fd5b5061037e610d03565b34801561040757600080fd5b5061048d6004803603606081101561041e57600080fd5b600160a060020a038235169160208101359181019060608101604082013564010000000081111561044e57600080fd5b82018360208201111561046057600080fd5b8035906020019184600183028401116401000000008311171561048257600080fd5b509092509050610d12565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104c75781810151838201526020016104af565b50505050905090810190601f1680156104f45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561050e57600080fd5b506105356004803603602081101561052557600080fd5b5035600160a060020a0316610e66565b604080519115158252519081900360200190f35b34801561055557600080fd5b5061055e610e7b565b60408051918252519081900360200190f35b3360009081526002602052604090205460ff1615156105c857604051600080516020610ed58339815191528152600401808060200182810382526027815260200180610f256027913960400191505060405180910390fd5b600160a060020a038116151561062d5760408051600080516020610ed5833981519152815260206004820152601a60248201527f42573a20616464726573732063616e6e6f74206265206e756c6c000000000000604482015290519081900360640190fd5b60018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf369181900360200190a150565b3360009081526002602052604090205460ff1615156106e657604051600080516020610ed58339815191528152600401808060200182810382526027815260200180610f256027913960400191505060405180910390fd5b600160a060020a03821660009081526002602052604090205460ff16151561074757604051600080516020610ed58339815191528152600401808060200182810382526030815260200180610ef56030913960400191505060405180910390fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116600081815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038716908117909155905190917fd04b9de96b5ba21173fd97c509db394c9e07a59ffb10c26da7f6ce38a8102fcb91a35050565b3360009081526002602052604090205460ff16151561082557604051600080516020610ed58339815191528152600401808060200182810382526027815260200180610f256027913960400191505060405180910390fd5b600160a060020a03821660009081526002602052604090205460ff161515811515146109ab576040805182151581529051600160a060020a038416917f8da3ff870ae294081392139550e167f1f31f277f22015ee22fbffdbd7758f4e1919081900360200190a260018115151415610938576004805460019081018255600160a060020a038416600081815260026020526040808220805460ff191690941790935582517f19ab453c0000000000000000000000000000000000000000000000000000000081523094810194909452915190926319ab453c92602480830193919282900301818387803b15801561091b57600080fd5b505af115801561092f573d6000803e3d6000fd5b505050506109ab565b60048054600019019081905560001061098a57604051600080516020610ed58339815191528152600401808060200182810382526028815260200180610e826028913960400191505060405180910390fd5b600160a060020a0382166000908152600260205260409020805460ff191690555b5050565b600154600160a060020a03161580156109c85750600454155b1515610a235760408051600080516020610ed5833981519152815260206004820152601e60248201527f42573a2077616c6c657420616c726561647920696e697469616c697365640000604482015290519081900360640190fd5b60008111610a6a57604051600080516020610ed5833981519152815260040180806020018281038252602b815260200180610eaa602b913960400191505060405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038516179055600481905560005b81811015610c875760026000848484818110610ab257fe5b60209081029290920135600160a060020a03168352508101919091526040016000205460ff1615610b325760408051600080516020610ed5833981519152815260206004820152601b60248201527f42573a206d6f64756c6520697320616c72656164792061646465640000000000604482015290519081900360640190fd5b600160026000858585818110610b4457fe5b60209081029290920135600160a060020a0316835250810191909152604001600020805460ff1916911515919091179055828282818110610b8157fe5b90506020020135600160a060020a0316600160a060020a03166319ab453c306040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b158015610c0457600080fd5b505af1158015610c18573d6000803e3d6000fd5b505050508282828181101515610c2a57fe5b90506020020135600160a060020a0316600160a060020a03167f8da3ff870ae294081392139550e167f1f31f277f22015ee22fbffdbd7758f4e16001604051808215151515815260200191505060405180910390a2600101610a9a565b50600030311115610cd457604080516020808252600090820181905291513031917f606834f57405380c4fb88d1f4850326ad3885f014bab3b568dfbf7a041eef738919081900360600190a35b505050565b600054600160a060020a031681565b600360205260009081526040902054600160a060020a031681565b600154600160a060020a031681565b3360009081526002602052604090205460609060ff161515610d6d57604051600080516020610ed58339815191528152600401808060200182810382526027815260200180610f256027913960400191505060405180910390fd5b600085600160a060020a0316858585604051808383808284376040519201945060009350909150508083038185875af1925050503d8060008114610dcd576040519150601f19603f3d011682016040523d82523d6000602084013e610dd2565b606091505b5092509050801515610de8573d6000803e3d6000fd5b8486600160a060020a031633600160a060020a03167f7d2476ab50663f025cff0be85655bcf355f62768615c0c478f3cd5293f807365878760405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a450949350505050565b60026020526000908152604090205460ff1681565b6004548156fe42573a2077616c6c6574206d7573742068617665206174206c65617374206f6e65206d6f64756c6542573a20636f6e737472756374696f6e207265717569726573206174206c656173742031206d6f64756c6508c379a00000000000000000000000000000000000000000000000000000000042573a206d75737420626520616e20617574686f7269736564206d6f64756c6520666f72207374617469632063616c6c42573a206d73672e73656e646572206e6f7420616e20617574686f72697a6564206d6f64756c65a165627a7a72305820b006dfbc2c336045fc14f05576b37e93870a076202db4360484f2efd240c18510029

Deployed Bytecode Sourcemap

1827:5348:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6388:1;6370:8;:19;6366:799;;;6406:14;6431:7;;;;6423:16;;:7;:16;;;;;;-1:-1:-1;;;;;6423:16:0;6458:20;;6454:700;;;6524:10;-1:-1:-1;;;;;6504:41:0;6513:9;6504:41;6536:8;;6504:41;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;6504:41:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;6504:41:0;;;;-1:-1:-1;6504:41:0;;-1:-1:-1;;;;6504:41:0;6454:700;;;-1:-1:-1;;;;;6594:18:0;;;;;;:10;:18;;;;;;;;6586:79;;;;;;-1:-1:-1;;;;;;;;;;;6586:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6808:14;6805:1;6802;6789:34;6905:1;6902;6886:14;6883:1;6875:6;6870:3;6859:48;6950:16;6947:1;6944;6929:38;6996:6;7024:36;;;;7102:16;7099:1;7091:28;7024:36;7042:16;7039:1;7032:27;6766:373;6366:799;;1827:5348;5011:205;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5011:205:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5011:205:0;-1:-1:-1;;;;;5011:205:0;;:::i;4633:266::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4633:266:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4633:266:0;;-1:-1:-1;;;;;4633:266:0;;;;;;;;:::i;3859:545::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3859:545:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3859:545:0;;;;;;;;;;:::i;2960:732::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2960:732:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;2960:732:0;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2960:732:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2960:732: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;-1:-1;2960:732:0;;-1:-1:-1;2960:732:0;-1:-1:-1;2960:732:0;:::i;1896:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1896:29:0;;;:::i;:::-;;;;-1:-1:-1;;;;;1896:29:0;;;;;;;;;;;;;;2091:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2091:42:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2091:42:0;;;;:::i;1950:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1950:20:0;;;:::i;5445:575::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5445:575:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;5445:575:0;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;5445:575:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5445:575: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;-1:-1;5445:575:0;;-1:-1:-1;5445:575:0;-1:-1:-1;5445:575:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5445:575:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2008:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2008:43:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2008:43:0;-1:-1:-1;;;;;2008:43:0;;:::i;:::-;;;;;;;;;;;;;;;;;;2170:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2170:19:0;;;:::i;:::-;;;;;;;;;;;;;;;;5011:205;2690:10;2679:22;;;;:10;:22;;;;;;;;2671:74;;;;;;-1:-1:-1;;;;;;;;;;;2671:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5087:23:0;;;;5079:62;;;;;-1:-1:-1;;;;;;;;;;;5079:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5152:5;:17;;-1:-1:-1;;;;;5152:17:0;;-1:-1:-1;;5152:17:0;;;;;;;;5185:23;;;;;;;;;;;;;;;;5011:205;:::o;4633:266::-;2690:10;2679:22;;;;:10;:22;;;;;;;;2671:74;;;;;;-1:-1:-1;;;;;;;;;;;2671:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4731:19:0;;;;;;:10;:19;;;;;;;;4723:80;;;;;;-1:-1:-1;;;;;;;;;;;4723:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4814:16;;;;;;;:7;:16;;;;;;:26;;-1:-1:-1;;4814:26:0;-1:-1:-1;;;;;4814:26:0;;;;;;;;4856:35;;4814:26;;4856:35;;;4633:266;;:::o;3859:545::-;2690:10;2679:22;;;;:10;:22;;;;;;;;2671:74;;;;;;-1:-1:-1;;;;;;;;;;;2671:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3949:19:0;;;;;;:10;:19;;;;;;;;:29;;;;;;3945:452;;4000:33;;;;;;;;;;-1:-1:-1;;;;;4000:33:0;;;;;;;;;;;;;4062:4;4052:14;;;;4048:338;;;4087:7;:12;;4098:1;4087:12;;;;;-1:-1:-1;;;;;4118:19:0;;4087:7;4118:19;;;:10;:19;;;;;;:26;;-1:-1:-1;;4118:26:0;;;;;;;4163;;;;;4184:4;4163:26;;;;;;;;;4118:19;;4163:20;;:26;;;;;4087:7;;4163:26;;;;;4087:7;4118:19;4163:26;;;5:2:-1;;;;30:1;27;20:12;5:2;4163:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4163:26:0;;;;4048:338;;;4230:7;:12;;-1:-1:-1;;4230:12:0;;;;;:7;-1:-1:-1;4261:64:0;;;;-1:-1:-1;;;;;;;;;;;4261:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4351:19:0;;;;;;:10;:19;;;;;4344:26;;-1:-1:-1;;4344:26:0;;;4048:338;3859:545;;:::o;2960:732::-;3047:5;;-1:-1:-1;;;;;3047:5:0;:19;:35;;;;-1:-1:-1;3070:7:0;;:12;3047:35;3039:78;;;;;;;-1:-1:-1;;;;;;;;;;;3039:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3154:1;3136:19;;3128:75;;;;-1:-1:-1;;;;;;;;;;;3128:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3214:5;:14;;-1:-1:-1;;3214:14:0;-1:-1:-1;;;;;3214:14:0;;;;;3239:7;:25;;;-1:-1:-1;3275:290:0;3295:19;;;3275:290;;;3344:10;:23;3355:8;;3364:1;3355:11;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3355:11:0;3344:23;;-1:-1:-1;3344:23:0;;;;;;;;-1:-1:-1;3344:23:0;;;;:32;3336:72;;;;;-1:-1:-1;;;;;;;;;;;3336:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3449:4;3423:10;:23;3434:8;;3443:1;3434:11;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3434:11:0;3423:23;;-1:-1:-1;3423:23:0;;;;;;;;-1:-1:-1;3423:23:0;:30;;-1:-1:-1;;3423:30:0;;;;;;;;;;3475:8;;3484:1;3475:11;;;;;;;;;;;;;-1:-1:-1;;;;;3475:11:0;-1:-1:-1;;;;;3468:24:0;;3493:4;3468:30;;;;;;;;;;;;;-1:-1:-1;;;;;3468:30:0;-1:-1:-1;;;;;3468:30:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3468:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3468:30:0;;;;3535:8;;3544:1;3535:11;;;;;;;;;;;;;;;-1:-1:-1;;;;;3535:11:0;-1:-1:-1;;;;;3518:35:0;;3548:4;3518:35;;;;;;;;;;;;;;;;;;;;;;3316:3;;3275:290;;;-1:-1:-1;3603:1:0;3587:4;3579:21;:25;3575:110;;;3626:47;;;;;;;3666:1;3626:47;;;;;;;;3643:4;3635:21;;3626:47;;;;;;;;;;3575:110;2960:732;;;:::o;1896:29::-;;;-1:-1:-1;;;;;1896:29:0;;:::o;2091:42::-;;;;;;;;;;;;-1:-1:-1;;;;;2091:42:0;;:::o;1950:20::-;;;-1:-1:-1;;;;;1950:20:0;;:::o;5445:575::-;2690:10;2679:22;;;;:10;:22;;;;;;5542:20;;2679:22;;2671:74;;;;;;-1:-1:-1;;;;;;;;;;;2671:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5575:12;5679:7;-1:-1:-1;;;;;5679:12:0;5698:6;5706:5;;5679:33;;;;;30:3:-1;22:6;14;1:33;5679::0;;45:16:-1;;;-1:-1;5679:33:0;;-1:-1:-1;5679:33:0;;-1:-1:-1;;5679: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;-1:-1;5658:54:0;-1:-1:-1;5658:54:0;-1:-1:-1;5727:8:0;;5723:231;;;5870:14;5867:1;5864;5849:36;5913:14;5910:1;5903:25;5830:113;5998:6;5989:7;-1:-1:-1;;;;;5969:43:0;5977:10;-1:-1:-1;;;;;5969:43:0;;6006:5;;5969:43;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;5969:43:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;5969:43:0;;;;-1:-1:-1;5969:43:0;;-1:-1:-1;;;;5969:43:0;2756:1;5445:575;;;;;;:::o;2008:43::-;;;;;;;;;;;;;;;:::o;2170:19::-;;;;:::o

Swarm Source

bzzr://b006dfbc2c336045fc14f05576b37e93870a076202db4360484f2efd240c1851

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.