ETH Price: $1,961.44 (-0.08%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Authorise Module239373632025-12-04 3:56:1187 days ago1764820571IN
0x29b94b04...7fF3d2600
0 ETH0.000000250.01056149
Init165774042023-02-07 14:09:471118 days ago1675778987IN
0x29b94b04...7fF3d2600
0 ETH0.0034476429.57908078

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 0xbc0b5970...01157638D
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
BaseWallet

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 999 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-09-29
*/

pragma solidity ^0.6.12;
// 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/>.

// SPDX-License-Identifier: GPL-3.0-only


/**
 * @title IModule
 * @notice 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 IModule {
    /**
     * @notice Inits a module for a wallet by e.g. setting some wallet specific parameters in storage.
     * @param _wallet The wallet.
     */
    function init(address _wallet) external;

    /**	
     * @notice Adds a module to a wallet. Cannot execute when wallet is locked (or under recovery)	
     * @param _wallet The target wallet.	
     * @param _module The modules to authorise.	
     */	
    function addModule(address _wallet, address _module) external;
}


/**
 * @title IWallet
 * @notice Interface for the BaseWallet
 */
interface IWallet {
    /**
     * @notice Returns the wallet owner.
     * @return The wallet owner address.
     */
    function owner() external view returns (address);

    /**
     * @notice Returns the number of authorised modules.
     * @return The number of authorised modules.
     */
    function modules() external view returns (uint);

    /**
     * @notice Sets a new owner for the wallet.
     * @param _newOwner The new owner.
     */
    function setOwner(address _newOwner) external;

    /**
     * @notice Checks if a module is authorised on the wallet.
     * @param _module The module address to check.
     * @return `true` if the module is authorised, otherwise `false`.
     */
    function authorised(address _module) external view returns (bool);

    /**
     * @notice Returns the module responsible for a static call redirection.
     * @param _sig The signature of the static call.
     * @return the module doing the redirection
     */
    function enabled(bytes4 _sig) external view returns (address);

    /**
     * @notice 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;

    /**
    * @notice 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;
}



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

    // The implementation of the proxy
    address public implementation;
    // The owner
    address public override owner;
    // The authorised modules
    mapping (address => bool) public override authorised;
    // The enabled static calls
    mapping (bytes4 => address) public override enabled;
    // The number of modules
    uint public override 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);

    /**
     * @notice Throws if the sender is not an authorised module.
     */
    modifier moduleOnly {
        require(authorised[msg.sender], "BW: msg.sender not an authorized module");
        _;
    }

    /**
     * @notice 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;
            IModule(_modules[i]).init(address(this));
            emit AuthorisedModule(_modules[i], true);
        }
        if (address(this).balance > 0) {
            emit Received(address(this).balance, address(0), "");
        }
    }

    /**
     * @inheritdoc IWallet
     */
    function authoriseModule(address _module, bool _value) external override moduleOnly {
        if (authorised[_module] != _value) {
            emit AuthorisedModule(_module, _value);
            if (_value == true) {
                modules += 1;
                authorised[_module] = true;
                IModule(_module).init(address(this));
            } else {
                modules -= 1;
                require(modules > 0, "BW: wallet must have at least one module");
                delete authorised[_module];
            }
        }
    }

    /**
    * @inheritdoc IWallet
    */
    function enableStaticCall(address _module, bytes4 _method) external override moduleOnly {
        require(authorised[_module], "BW: must be an authorised module for static call");
        enabled[_method] = _module;
        emit EnabledStaticCall(_module, _method);
    }

    /**
     * @inheritdoc IWallet
     */
    function setOwner(address _newOwner) external override moduleOnly {
        require(_newOwner != address(0), "BW: address cannot be null");
        owner = _newOwner;
        emit OwnerChanged(_newOwner);
    }

    /**
     * @notice 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;
        (success, _result) = _target.call{value: _value}(_data);
        if (!success) {
            // solhint-disable-next-line no-inline-assembly
            assembly {
                returndatacopy(0, 0, returndatasize())
                revert(0, returndatasize())
            }
        }
        emit Invoked(msg.sender, _target, _value, _data);
    }

    /**
     * @notice This method delegates the static call to a target contract if the data corresponds
     * to an enabled module, or logs the call otherwise.
     */
    fallback() external payable {
        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");

            // solhint-disable-next-line 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())}
            }
        }
    }

    receive() external payable {
    }
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"module","type":"address"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"AuthorisedModule","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"module","type":"address"},{"indexed":true,"internalType":"bytes4","name":"method","type":"bytes4"}],"name":"EnabledStaticCall","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"module","type":"address"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"Invoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"Received","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"_module","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"authoriseModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorised","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_module","type":"address"},{"internalType":"bytes4","name":"_method","type":"bytes4"}],"name":"enableStaticCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"enabled","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address[]","name":"_modules","type":"address[]"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"invoke","outputs":[{"internalType":"bytes","name":"_result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"modules","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

0x608060405234801561001057600080fd5b50610e5d806100206000396000f3fe6080604052600436106100b55760003560e01c80635f54892b116100695780638f6f03321161004e5780638f6f03321461038d578063d6eb1bbf14610494578063f7e80e98146104db576100bc565b80635f54892b146103445780638da5cb5b14610378576100bc565b80631f17732d1161009a5780631f17732d1461024b5780633c5a3cea146102865780635c60da1b14610313576100bc565b806313af4035146101d357806313da30b214610208576100bc565b366100bc57005b600080356001600160e01b0319168152600360205260409020546001600160a01b03168061015557336001600160a01b0316347f606834f57405380c4fb88d1f4850326ad3885f014bab3b568dfbf7a041eef73860003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a36101d0565b6001600160a01b03811660009081526002602052604090205460ff166101ac5760405162461bcd60e51b8152600401808060200182810382526030815260200180610dd16030913960400191505060405180910390fd5b3660008037600080366000845afa3d6000803e8080156101cb573d6000f35b3d6000fd5b50005b3480156101df57600080fd5b50610206600480360360208110156101f657600080fd5b50356001600160a01b0316610502565b005b34801561021457600080fd5b506102066004803603604081101561022b57600080fd5b5080356001600160a01b031690602001356001600160e01b03191661060c565b34801561025757600080fd5b506102066004803603604081101561026e57600080fd5b506001600160a01b038135169060200135151561071f565b34801561029257600080fd5b50610206600480360360408110156102a957600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156102d457600080fd5b8201836020820111156102e657600080fd5b8035906020019184602083028401116401000000008311171561030857600080fd5b5090925090506108ec565b34801561031f57600080fd5b50610328610be1565b604080516001600160a01b039092168252519081900360200190f35b34801561035057600080fd5b506103286004803603602081101561036757600080fd5b50356001600160e01b031916610bf0565b34801561038457600080fd5b50610328610c0b565b34801561039957600080fd5b5061041f600480360360608110156103b057600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156103e057600080fd5b8201836020820111156103f257600080fd5b8035906020019184600183028401116401000000008311171561041457600080fd5b509092509050610c1a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610459578181015183820152602001610441565b50505050905090810190601f1680156104865780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104a057600080fd5b506104c7600480360360208110156104b757600080fd5b50356001600160a01b0316610d62565b604080519115158252519081900360200190f35b3480156104e757600080fd5b506104f0610d77565b60408051918252519081900360200190f35b3360009081526002602052604090205460ff166105505760405162461bcd60e51b8152600401808060200182810382526027815260200180610e016027913960400191505060405180910390fd5b6001600160a01b0381166105ab576040805162461bcd60e51b815260206004820152601a60248201527f42573a20616464726573732063616e6e6f74206265206e756c6c000000000000604482015290519081900360640190fd5b600180546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf369181900360200190a150565b3360009081526002602052604090205460ff1661065a5760405162461bcd60e51b8152600401808060200182810382526027815260200180610e016027913960400191505060405180910390fd5b6001600160a01b03821660009081526002602052604090205460ff166106b15760405162461bcd60e51b8152600401808060200182810382526030815260200180610dd16030913960400191505060405180910390fd5b6001600160e01b03198116600081815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038716908117909155905190917fd04b9de96b5ba21173fd97c509db394c9e07a59ffb10c26da7f6ce38a8102fcb91a35050565b3360009081526002602052604090205460ff1661076d5760405162461bcd60e51b8152600401808060200182810382526027815260200180610e016027913960400191505060405180910390fd5b6001600160a01b03821660009081526002602052604090205460ff161515811515146108e85760408051821515815290516001600160a01b038416917f8da3ff870ae294081392139550e167f1f31f277f22015ee22fbffdbd7758f4e1919081900360200190a2600181151514156108805760048054600190810182556001600160a01b038416600081815260026020526040808220805460ff191690941790935582517f19ab453c0000000000000000000000000000000000000000000000000000000081523094810194909452915190926319ab453c92602480830193919282900301818387803b15801561086357600080fd5b505af1158015610877573d6000803e3d6000fd5b505050506108e8565b6004805460001901908190556108c75760405162461bcd60e51b8152600401808060200182810382526028815260200180610d7e6028913960400191505060405180910390fd5b6001600160a01b0382166000908152600260205260409020805460ff191690555b5050565b6001546001600160a01b03161580156109055750600454155b610956576040805162461bcd60e51b815260206004820152601e60248201527f42573a2077616c6c657420616c726561647920696e697469616c697365640000604482015290519081900360640190fd5b806109925760405162461bcd60e51b815260040180806020018281038252602b815260200180610da6602b913960400191505060405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038516179055600481905560005b81811015610b9457600260008484848181106109da57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1615610a52576040805162461bcd60e51b815260206004820152601b60248201527f42573a206d6f64756c6520697320616c72656164792061646465640000000000604482015290519081900360640190fd5b600160026000858585818110610a6457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550828282818110610ab757fe5b905060200201356001600160a01b03166001600160a01b03166319ab453c306040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015610b1557600080fd5b505af1158015610b29573d6000803e3d6000fd5b50505050828282818110610b3957fe5b905060200201356001600160a01b03166001600160a01b03167f8da3ff870ae294081392139550e167f1f31f277f22015ee22fbffdbd7758f4e1600160405180821515815260200191505060405180910390a26001016109c2565b504715610bdc576040805160208082526000908201819052915147917f606834f57405380c4fb88d1f4850326ad3885f014bab3b568dfbf7a041eef738919081900360600190a35b505050565b6000546001600160a01b031681565b6003602052600090815260409020546001600160a01b031681565b6001546001600160a01b031681565b3360009081526002602052604090205460609060ff16610c6b5760405162461bcd60e51b8152600401808060200182810382526027815260200180610e016027913960400191505060405180910390fd5b6000856001600160a01b0316858585604051808383808284376040519201945060009350909150508083038185875af1925050503d8060008114610ccb576040519150601f19603f3d011682016040523d82523d6000602084013e610cd0565b606091505b509250905080610ce4573d6000803e3d6000fd5b84866001600160a01b0316336001600160a01b03167f7d2476ab50663f025cff0be85655bcf355f62768615c0c478f3cd5293f807365878760405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a450949350505050565b60026020526000908152604090205460ff1681565b6004548156fe42573a2077616c6c6574206d7573742068617665206174206c65617374206f6e65206d6f64756c6542573a20636f6e737472756374696f6e207265717569726573206174206c656173742031206d6f64756c6542573a206d75737420626520616e20617574686f7269736564206d6f64756c6520666f72207374617469632063616c6c42573a206d73672e73656e646572206e6f7420616e20617574686f72697a6564206d6f64756c65a26469706673582212201f9bf5f55db61d0fbbd8e1f9d7d34945e51fb700926c85357e6881cac5ed19a564736f6c634300060c0033

Deployed Bytecode

0x6080604052600436106100b55760003560e01c80635f54892b116100695780638f6f03321161004e5780638f6f03321461038d578063d6eb1bbf14610494578063f7e80e98146104db576100bc565b80635f54892b146103445780638da5cb5b14610378576100bc565b80631f17732d1161009a5780631f17732d1461024b5780633c5a3cea146102865780635c60da1b14610313576100bc565b806313af4035146101d357806313da30b214610208576100bc565b366100bc57005b600080356001600160e01b0319168152600360205260409020546001600160a01b03168061015557336001600160a01b0316347f606834f57405380c4fb88d1f4850326ad3885f014bab3b568dfbf7a041eef73860003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a36101d0565b6001600160a01b03811660009081526002602052604090205460ff166101ac5760405162461bcd60e51b8152600401808060200182810382526030815260200180610dd16030913960400191505060405180910390fd5b3660008037600080366000845afa3d6000803e8080156101cb573d6000f35b3d6000fd5b50005b3480156101df57600080fd5b50610206600480360360208110156101f657600080fd5b50356001600160a01b0316610502565b005b34801561021457600080fd5b506102066004803603604081101561022b57600080fd5b5080356001600160a01b031690602001356001600160e01b03191661060c565b34801561025757600080fd5b506102066004803603604081101561026e57600080fd5b506001600160a01b038135169060200135151561071f565b34801561029257600080fd5b50610206600480360360408110156102a957600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156102d457600080fd5b8201836020820111156102e657600080fd5b8035906020019184602083028401116401000000008311171561030857600080fd5b5090925090506108ec565b34801561031f57600080fd5b50610328610be1565b604080516001600160a01b039092168252519081900360200190f35b34801561035057600080fd5b506103286004803603602081101561036757600080fd5b50356001600160e01b031916610bf0565b34801561038457600080fd5b50610328610c0b565b34801561039957600080fd5b5061041f600480360360608110156103b057600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156103e057600080fd5b8201836020820111156103f257600080fd5b8035906020019184600183028401116401000000008311171561041457600080fd5b509092509050610c1a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610459578181015183820152602001610441565b50505050905090810190601f1680156104865780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104a057600080fd5b506104c7600480360360208110156104b757600080fd5b50356001600160a01b0316610d62565b604080519115158252519081900360200190f35b3480156104e757600080fd5b506104f0610d77565b60408051918252519081900360200190f35b3360009081526002602052604090205460ff166105505760405162461bcd60e51b8152600401808060200182810382526027815260200180610e016027913960400191505060405180910390fd5b6001600160a01b0381166105ab576040805162461bcd60e51b815260206004820152601a60248201527f42573a20616464726573732063616e6e6f74206265206e756c6c000000000000604482015290519081900360640190fd5b600180546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf369181900360200190a150565b3360009081526002602052604090205460ff1661065a5760405162461bcd60e51b8152600401808060200182810382526027815260200180610e016027913960400191505060405180910390fd5b6001600160a01b03821660009081526002602052604090205460ff166106b15760405162461bcd60e51b8152600401808060200182810382526030815260200180610dd16030913960400191505060405180910390fd5b6001600160e01b03198116600081815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038716908117909155905190917fd04b9de96b5ba21173fd97c509db394c9e07a59ffb10c26da7f6ce38a8102fcb91a35050565b3360009081526002602052604090205460ff1661076d5760405162461bcd60e51b8152600401808060200182810382526027815260200180610e016027913960400191505060405180910390fd5b6001600160a01b03821660009081526002602052604090205460ff161515811515146108e85760408051821515815290516001600160a01b038416917f8da3ff870ae294081392139550e167f1f31f277f22015ee22fbffdbd7758f4e1919081900360200190a2600181151514156108805760048054600190810182556001600160a01b038416600081815260026020526040808220805460ff191690941790935582517f19ab453c0000000000000000000000000000000000000000000000000000000081523094810194909452915190926319ab453c92602480830193919282900301818387803b15801561086357600080fd5b505af1158015610877573d6000803e3d6000fd5b505050506108e8565b6004805460001901908190556108c75760405162461bcd60e51b8152600401808060200182810382526028815260200180610d7e6028913960400191505060405180910390fd5b6001600160a01b0382166000908152600260205260409020805460ff191690555b5050565b6001546001600160a01b03161580156109055750600454155b610956576040805162461bcd60e51b815260206004820152601e60248201527f42573a2077616c6c657420616c726561647920696e697469616c697365640000604482015290519081900360640190fd5b806109925760405162461bcd60e51b815260040180806020018281038252602b815260200180610da6602b913960400191505060405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038516179055600481905560005b81811015610b9457600260008484848181106109da57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1615610a52576040805162461bcd60e51b815260206004820152601b60248201527f42573a206d6f64756c6520697320616c72656164792061646465640000000000604482015290519081900360640190fd5b600160026000858585818110610a6457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550828282818110610ab757fe5b905060200201356001600160a01b03166001600160a01b03166319ab453c306040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015610b1557600080fd5b505af1158015610b29573d6000803e3d6000fd5b50505050828282818110610b3957fe5b905060200201356001600160a01b03166001600160a01b03167f8da3ff870ae294081392139550e167f1f31f277f22015ee22fbffdbd7758f4e1600160405180821515815260200191505060405180910390a26001016109c2565b504715610bdc576040805160208082526000908201819052915147917f606834f57405380c4fb88d1f4850326ad3885f014bab3b568dfbf7a041eef738919081900360600190a35b505050565b6000546001600160a01b031681565b6003602052600090815260409020546001600160a01b031681565b6001546001600160a01b031681565b3360009081526002602052604090205460609060ff16610c6b5760405162461bcd60e51b8152600401808060200182810382526027815260200180610e016027913960400191505060405180910390fd5b6000856001600160a01b0316858585604051808383808284376040519201945060009350909150508083038185875af1925050503d8060008114610ccb576040519150601f19603f3d011682016040523d82523d6000602084013e610cd0565b606091505b509250905080610ce4573d6000803e3d6000fd5b84866001600160a01b0316336001600160a01b03167f7d2476ab50663f025cff0be85655bcf355f62768615c0c478f3cd5293f807365878760405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a450949350505050565b60026020526000908152604090205460ff1681565b6004548156fe42573a2077616c6c6574206d7573742068617665206174206c65617374206f6e65206d6f64756c6542573a20636f6e737472756374696f6e207265717569726573206174206c656173742031206d6f64756c6542573a206d75737420626520616e20617574686f7269736564206d6f64756c6520666f72207374617469632063616c6c42573a206d73672e73656e646572206e6f7420616e20617574686f72697a6564206d6f64756c65a26469706673582212201f9bf5f55db61d0fbbd8e1f9d7d34945e51fb700926c85357e6881cac5ed19a564736f6c634300060c0033

Deployed Bytecode Sourcemap

3404:4848:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7511:14;7536:7;;-1:-1:-1;;;;;;7536:7:0;7528:16;;:7;:16;;;;;;-1:-1:-1;;;;;7528:16:0;;7555:644;;7621:10;-1:-1:-1;;;;;7601:41:0;7610:9;7601:41;7633:8;;7601:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7601:41:0;;;;;;;;-1:-1:-1;7601:41:0;;-1:-1:-1;;;;7601:41:0;7555:644;;;-1:-1:-1;;;;;7683:18:0;;;;;;:10;:18;;;;;;;;7675:79;;;;-1:-1:-1;;;7675:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7879:14;7876:1;7873;7860:34;7974:1;7971;7955:14;7952:1;7944:6;7937:5;7926:50;8015:16;8012:1;8009;7994:38;8057:6;8081:36;;;;8155:16;8152:1;8144:28;8081:36;8099:16;8096:1;8089:27;7841:347;7472:734;3404:4848;6331:214;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6331:214:0;-1:-1:-1;;;;;6331:214:0;;:::i;:::-;;6002:275;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6002:275:0;;-1:-1:-1;;;;;6002:275:0;;;;;-1:-1:-1;;;;;;6002:275:0;;:::i;5386:564::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5386:564:0;;;;;;;;;;:::i;4590:742::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4590:742:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4590:742:0;;-1:-1:-1;4590:742:0;-1:-1:-1;4590:742:0;:::i;3484:29::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;3484:29:0;;;;;;;;;;;;;;3697:51;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3697:51:0;-1:-1:-1;;;;;;3697:51:0;;:::i;3538:29::-;;;;;;;;;;;;;:::i;6777:512::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6777:512:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6777:512:0;;-1:-1:-1;6777:512:0;-1:-1:-1;6777:512:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3605:52;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3605:52:0;-1:-1:-1;;;;;3605:52:0;;:::i;:::-;;;;;;;;;;;;;;;;;;3785:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6331:214;4317:10;4306:22;;;;:10;:22;;;;;;;;4298:74;;;;-1:-1:-1;;;4298:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6416:23:0;::::1;6408:62;;;::::0;;-1:-1:-1;;;6408:62:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;6481:5;:17:::0;;-1:-1:-1;;;;;6481:17:0;::::1;-1:-1:-1::0;;6481:17:0;;::::1;::::0;::::1;::::0;;;6514:23:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;6331:214:::0;:::o;6002:275::-;4317:10;4306:22;;;;:10;:22;;;;;;;;4298:74;;;;-1:-1:-1;;;4298:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6109:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;::::1;;6101:80;;;;-1:-1:-1::0;;;6101:80:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;6192:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;:26;;-1:-1:-1;;6192:26:0::1;-1:-1:-1::0;;;;;6192:26:0;::::1;::::0;;::::1;::::0;;;6234:35;;6192:26;;6234:35:::1;::::0;::::1;6002:275:::0;;:::o;5386:564::-;4317:10;4306:22;;;;:10;:22;;;;;;;;4298:74;;;;-1:-1:-1;;;4298:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5485:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;::::1;;:29;;::::0;::::1;;;5481:462;;5536:33;::::0;;;::::1;;::::0;;;;-1:-1:-1;;;;;5536:33:0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;5598:4;5588:14:::0;::::1;;;5584:348;;;5623:7;:12:::0;;5634:1:::1;5623:12:::0;;::::1;::::0;;-1:-1:-1;;;;;5654:19:0;::::1;5623:7;5654:19:::0;;;:10:::1;:19;::::0;;;;;:26;;-1:-1:-1;;5654:26:0::1;::::0;;::::1;::::0;;;5699:36;;;;;5729:4:::1;5699:36:::0;;::::1;::::0;;;;;;5654:19;;5699:21:::1;::::0;:36;;;;;5623:7;;5699:36;;;;;5623:7;5654:19;5699:36;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5584:348;;;5776:7;:12:::0;;-1:-1:-1;;5776:12:0;;;;;5807:64:::1;;;;-1:-1:-1::0;;;5807:64:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5897:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;5890:26;;-1:-1:-1;;5890:26:0::1;::::0;;5584:348:::1;5386:564:::0;;:::o;4590:742::-;4677:5;;-1:-1:-1;;;;;4677:5:0;:19;:35;;;;-1:-1:-1;4700:7:0;;:12;4677:35;4669:78;;;;;-1:-1:-1;;;4669:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4766:19;4758:75;;;;-1:-1:-1;;;4758:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4844:5;:14;;-1:-1:-1;;4844:14:0;-1:-1:-1;;;;;4844:14:0;;;;;4869:7;:25;;;-1:-1:-1;4905:300:0;4925:19;;;4905:300;;;4974:10;:23;4985:8;;4994:1;4985:11;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4985:11:0;4974:23;;-1:-1:-1;4974:23:0;;;;;;;;-1:-1:-1;4974:23:0;;;;:32;4966:72;;;;;-1:-1:-1;;;4966:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5079:4;5053:10;:23;5064:8;;5073:1;5064:11;;;;;;;;;;;;;-1:-1:-1;;;;;5064:11:0;-1:-1:-1;;;;;5053:23:0;-1:-1:-1;;;;;5053:23:0;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;5106:8;;5115:1;5106:11;;;;;;;;;;;;;-1:-1:-1;;;;;5106:11:0;-1:-1:-1;;;;;5098:25:0;;5132:4;5098:40;;;;;;;;;;;;;-1:-1:-1;;;;;5098:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5175:8;;5184:1;5175:11;;;;;;;;;;;;;-1:-1:-1;;;;;5175:11:0;-1:-1:-1;;;;;5158:35:0;;5188:4;5158:35;;;;;;;;;;;;;;;;;;;;4946:3;;4905:300;;;-1:-1:-1;5219:21:0;:25;5215:110;;5266:47;;;;;;;5306:1;5266:47;;;;;;;;5275:21;;5266:47;;;;;;;;;;5215:110;4590:742;;;:::o;3484:29::-;;;-1:-1:-1;;;;;3484:29:0;;:::o;3697:51::-;;;;;;;;;;;;-1:-1:-1;;;;;3697:51:0;;:::o;3538:29::-;;;-1:-1:-1;;;;;3538:29:0;;:::o;6777:512::-;4317:10;4306:22;;;;:10;:22;;;;;;6874:20;;4306:22;;4298:74;;;;-1:-1:-1;;;4298:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6907:12:::1;6951:7;-1:-1:-1::0;;;;;6951:12:0::1;6971:6;6979:5;;6951:34;;;;;;;;;;::::0;;::::1;::::0;-1:-1:-1;6951:34:0::1;::::0;-1:-1:-1;6951:34:0;;-1:-1:-1;;6951:34:0;;::::1;::::0;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;6930:55:0;-1:-1:-1;6930:55:0;-1:-1:-1;6930:55:0;6996:227:::1;;7135:16;7132:1;::::0;7114:38:::1;7180:16;7132:1;7170:27;7095:117;7267:6;7258:7;-1:-1:-1::0;;;;;7238:43:0::1;7246:10;-1:-1:-1::0;;;;;7238:43:0::1;;7275:5;;7238:43;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;7238:43:0::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;7238:43:0;;-1:-1:-1;;;;7238:43:0::1;4383:1;6777:512:::0;;;;;;:::o;3605:52::-;;;;;;;;;;;;;;;:::o;3785:28::-;;;;:::o

Swarm Source

ipfs://1f9bf5f55db61d0fbbd8e1f9d7d34945e51fb700926c85357e6881cac5ed19a5

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.