Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
10031481 | 1645 days ago | Contract Creation | 0 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
Contract Source Code (Solidity)
/** *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
- No Contract Security Audit Submitted- Submit Audit Here
[{"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
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.