Source Code
Overview
ETH Balance
0.000001 ETH
Token Holdings
More Info
ContractCreator
Multi Chain
Multichain Addresses
N/ALatest 6 from a total of 6 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Init Wallet | 7202789 | 516 days 4 hrs ago | IN | 0 ETH | 0.00007479 | ||||
Init Wallet | 7202402 | 516 days 6 hrs ago | IN | 0 ETH | 0.00011219 | ||||
Transfer | 7202329 | 516 days 6 hrs ago | IN | 0.000001 ETH | 0.00004155 | ||||
Init Wallet | 7202308 | 516 days 6 hrs ago | IN | 0 ETH | 0.00007479 | ||||
Init Wallet | 7202282 | 516 days 6 hrs ago | IN | 0 ETH | 0.00011179 | ||||
0x60806040 | 7197929 | 517 days 1 hr ago | IN | Create: WalletLibrary | 0 ETH | 0.00345337 |
Latest 20 internal transactions
Advanced mode:
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
7236001 | 510 days 9 hrs ago | 0 ETH | ||||
7216399 | 513 days 19 hrs ago | 0 ETH | ||||
7208905 | 515 days 3 hrs ago | 0 ETH | ||||
7208901 | 515 days 3 hrs ago | 0 ETH | ||||
7208894 | 515 days 3 hrs ago | 0 ETH | ||||
7208883 | 515 days 3 hrs ago | 0 ETH | ||||
7208878 | 515 days 3 hrs ago | 0 ETH | ||||
7208874 | 515 days 3 hrs ago | 0 ETH | ||||
7208865 | 515 days 3 hrs ago | 0 ETH | ||||
7208862 | 515 days 3 hrs ago | 0 ETH | ||||
7208853 | 515 days 3 hrs ago | 0 ETH | ||||
7208827 | 515 days 3 hrs ago | 0 ETH | ||||
7208819 | 515 days 3 hrs ago | 0 ETH | ||||
7203255 | 516 days 2 hrs ago | 0 ETH | ||||
7203254 | 516 days 2 hrs ago | 0 ETH | ||||
7203253 | 516 days 2 hrs ago | 0 ETH | ||||
7203252 | 516 days 2 hrs ago | 0 ETH | ||||
7202803 | 516 days 4 hrs ago | 0 ETH | ||||
7202404 | 516 days 6 hrs ago | 0 ETH | ||||
7197929 | 517 days 1 hr ago | 0 ETH |
Loading...
Loading
Contract Name:
WalletLibrary
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; /** * A multisig wallet library * Only deployed once, proxy contracts execute the functions via delegatecall * Owners can: * - Submit a transaction * - Approve and revoke approval of pending transactions * - Anyone can execute a transaction after enough owners approved it */ contract WalletLibrary { event Deposit(address indexed sender, uint256 amount, uint256 balance); event SubmitTransaction( address indexed owner, uint256 indexed txIndex, address indexed to, uint256 value, bytes data ); event ConfirmTransaction(address indexed owner, uint256 indexed txIndex); event RevokeConfirmation(address indexed owner, uint256 indexed txIndex); event ExecuteTransaction(address indexed owner, uint256 indexed txIndex); address public walletLibrary; address[] public owners; mapping(address => bool) public isOwner; uint256 public numConfirmationsRequired; struct Transaction { address to; uint256 value; bytes data; bool executed; uint256 numConfirmations; } // mapping from tx index => owner => bool mapping(uint256 => mapping(address => bool)) public isConfirmed; Transaction[] public transactions; modifier onlyOwner() { require(isOwner[msg.sender], "not owner"); _; } modifier txExists(uint256 _txIndex) { require(_txIndex < transactions.length, "tx does not exist"); _; } modifier notExecuted(uint256 _txIndex) { require(!transactions[_txIndex].executed, "tx already executed"); _; } modifier notConfirmed(uint256 _txIndex) { require(!isConfirmed[_txIndex][msg.sender], "tx already confirmed"); _; } function initWallet( address[] memory _owners, uint256 _numConfirmationsRequired ) public { require(_owners.length > 0, "owners required"); require( _numConfirmationsRequired > 0 && _numConfirmationsRequired <= _owners.length, "invalid number of confirmations" ); for (uint256 i = 0; i < _owners.length; i++) { address owner = _owners[i]; require(owner != address(0), "invalid owner"); require(!isOwner[owner], "owner not unique"); isOwner[owner] = true; owners.push(owner); } numConfirmationsRequired = _numConfirmationsRequired; } receive() external payable { emit Deposit(msg.sender, msg.value, address(this).balance); } function submitTransaction( address _to, uint256 _value, bytes memory _data ) public onlyOwner { uint256 txIndex = transactions.length; transactions.push( Transaction({ to: _to, value: _value, data: _data, executed: false, numConfirmations: 0 }) ); emit SubmitTransaction(msg.sender, txIndex, _to, _value, _data); } function confirmTransaction(uint256 _txIndex) public onlyOwner txExists(_txIndex) notExecuted(_txIndex) notConfirmed(_txIndex) { Transaction storage transaction = transactions[_txIndex]; transaction.numConfirmations += 1; isConfirmed[_txIndex][msg.sender] = true; emit ConfirmTransaction(msg.sender, _txIndex); } function executeTransaction(uint256 _txIndex) public onlyOwner txExists(_txIndex) notExecuted(_txIndex) { Transaction storage transaction = transactions[_txIndex]; require( transaction.numConfirmations >= numConfirmationsRequired, "cannot execute tx" ); transaction.executed = true; (bool success, ) = transaction.to.call{value: transaction.value}( transaction.data ); require(success, "tx failed"); emit ExecuteTransaction(msg.sender, _txIndex); } function revokeConfirmation(uint256 _txIndex) public onlyOwner txExists(_txIndex) notExecuted(_txIndex) { Transaction storage transaction = transactions[_txIndex]; require(isConfirmed[_txIndex][msg.sender], "tx not confirmed"); transaction.numConfirmations -= 1; isConfirmed[_txIndex][msg.sender] = false; emit RevokeConfirmation(msg.sender, _txIndex); } function getOwners() public view returns (address[] memory) { return owners; } function getTransactionCount() public view returns (uint256) { return transactions.length; } function getTransaction(uint256 _txIndex) public view returns ( address to, uint256 value, bytes memory data, bool executed, uint256 numConfirmations ) { Transaction storage transaction = transactions[_txIndex]; return ( transaction.to, transaction.value, transaction.data, transaction.executed, transaction.numConfirmations ); } }
{ "remappings": [ "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "script/=script/", "src/=src/", "test/=test/", "src/=src/", "test/=test/", "script/=script/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"txIndex","type":"uint256"}],"name":"ConfirmTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"balance","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"txIndex","type":"uint256"}],"name":"ExecuteTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"txIndex","type":"uint256"}],"name":"RevokeConfirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"txIndex","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"SubmitTransaction","type":"event"},{"inputs":[{"internalType":"uint256","name":"_txIndex","type":"uint256"}],"name":"confirmTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txIndex","type":"uint256"}],"name":"executeTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txIndex","type":"uint256"}],"name":"getTransaction","outputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"executed","type":"bool"},{"internalType":"uint256","name":"numConfirmations","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTransactionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_owners","type":"address[]"},{"internalType":"uint256","name":"_numConfirmationsRequired","type":"uint256"}],"name":"initWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"isConfirmed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numConfirmationsRequired","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"owners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txIndex","type":"uint256"}],"name":"revokeConfirmation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"submitTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"transactions","outputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"executed","type":"bool"},{"internalType":"uint256","name":"numConfirmations","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b506113dc806100206000396000f3fe6080604052600436106100e15760003560e01c8063a0e67e2b1161007f578063c642747411610059578063c6427474146102d3578063c876b308146102f3578063d0549b8514610313578063ee22610b1461032957600080fd5b8063a0e67e2b14610271578063ad60e71e14610293578063c01a8c84146102b357600080fd5b80632f54bf6e116100bb5780632f54bf6e146101a557806333ea3dc8146101e557806380f59a65146102165780639ace38c21461025157600080fd5b8063025e7c271461012757806320ea8d86146101645780632e7700f01461018657600080fd5b36610122576040805134815247602082015233917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15910160405180910390a2005b600080fd5b34801561013357600080fd5b50610147610142366004610ec0565b610349565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561017057600080fd5b5061018461017f366004610ec0565b610373565b005b34801561019257600080fd5b506005545b60405190815260200161015b565b3480156101b157600080fd5b506101d56101c0366004610ef5565b60026020526000908152604090205460ff1681565b604051901515815260200161015b565b3480156101f157600080fd5b50610205610200366004610ec0565b6104fe565b60405161015b959493929190610f64565b34801561022257600080fd5b506101d5610231366004610f9f565b600460209081526000928352604080842090915290825290205460ff1681565b34801561025d57600080fd5b5061020561026c366004610ec0565b6105f9565b34801561027d57600080fd5b506102866106d2565b60405161015b9190610fcb565b34801561029f57600080fd5b506101846102ae36600461105f565b610734565b3480156102bf57600080fd5b506101846102ce366004610ec0565b610926565b3480156102df57600080fd5b506101846102ee366004611112565b610ab4565b3480156102ff57600080fd5b50600054610147906001600160a01b031681565b34801561031f57600080fd5b5061019760035481565b34801561033557600080fd5b50610184610344366004610ec0565b610c34565b6001818154811061035957600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526002602052604090205460ff166103ab5760405162461bcd60e51b81526004016103a2906111c1565b60405180910390fd5b600554819081106103ce5760405162461bcd60e51b81526004016103a2906111e4565b81600581815481106103e2576103e261120f565b600091825260209091206003600590920201015460ff16156104165760405162461bcd60e51b81526004016103a290611225565b60006005848154811061042b5761042b61120f565b600091825260208083208784526004825260408085203386529092529220546005909102909101915060ff166104965760405162461bcd60e51b815260206004820152601060248201526f1d1e081b9bdd0818dbdb999a5c9b595960821b60448201526064016103a2565b60018160040160008282546104ab9190611268565b90915550506000848152600460209081526040808320338085529252808320805460ff191690555186927ff0dca620e2e81f7841d07bcc105e1704fb01475b278a9d4c236e1c62945edd5591a350505050565b600080606060008060006005878154811061051b5761051b61120f565b6000918252602090912060059091020180546001820154600383015460048401546002850180549596506001600160a01b039094169492939260ff9092169183906105659061127f565b80601f01602080910402602001604051908101604052809291908181526020018280546105919061127f565b80156105de5780601f106105b3576101008083540402835291602001916105de565b820191906000526020600020905b8154815290600101906020018083116105c157829003601f168201915b50505050509250955095509550955095505091939590929450565b6005818154811061060957600080fd5b60009182526020909120600590910201805460018201546002830180546001600160a01b03909316945090929161063f9061127f565b80601f016020809104026020016040519081016040528092919081815260200182805461066b9061127f565b80156106b85780601f1061068d576101008083540402835291602001916106b8565b820191906000526020600020905b81548152906001019060200180831161069b57829003601f168201915b505050506003830154600490930154919260ff1691905085565b6060600180548060200260200160405190810160405280929190818152602001828054801561072a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161070c575b5050505050905090565b60008251116107775760405162461bcd60e51b815260206004820152600f60248201526e1bdddb995c9cc81c995c5d5a5c9959608a1b60448201526064016103a2565b600081118015610788575081518111155b6107d45760405162461bcd60e51b815260206004820152601f60248201527f696e76616c6964206e756d626572206f6620636f6e6669726d6174696f6e730060448201526064016103a2565b60005b825181101561091f5760008382815181106107f4576107f461120f565b6020026020010151905060006001600160a01b0316816001600160a01b0316036108505760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21037bbb732b960991b60448201526064016103a2565b6001600160a01b03811660009081526002602052604090205460ff16156108ac5760405162461bcd60e51b815260206004820152601060248201526f6f776e6572206e6f7420756e6971756560801b60448201526064016103a2565b6001600160a01b03166000818152600260205260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b031916909117905580610917816112b9565b9150506107d7565b5060035550565b3360009081526002602052604090205460ff166109555760405162461bcd60e51b81526004016103a2906111c1565b600554819081106109785760405162461bcd60e51b81526004016103a2906111e4565b816005818154811061098c5761098c61120f565b600091825260209091206003600590920201015460ff16156109c05760405162461bcd60e51b81526004016103a290611225565b6000838152600460209081526040808320338452909152902054839060ff1615610a235760405162461bcd60e51b81526020600482015260146024820152731d1e08185b1c9958591e4818dbdb999a5c9b595960621b60448201526064016103a2565b600060058581548110610a3857610a3861120f565b906000526020600020906005020190506001816004016000828254610a5d91906112d2565b90915550506000858152600460209081526040808320338085529252808320805460ff191660011790555187927f5cbe105e36805f7820e291f799d5794ff948af2a5f664e580382defb6339004191a35050505050565b3360009081526002602052604090205460ff16610ae35760405162461bcd60e51b81526004016103a2906111c1565b600580546040805160a0810182526001600160a01b03878116825260208083018881529383018781526000606085018190526080850181905260018701885587905283517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db097870297880180546001600160a01b0319169190941617835593517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db187015592518051949592949193610bc0937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db20192910190610e27565b50606082015160038201805460ff19169115159190911790556080909101516004909101556040516001600160a01b03851690829033907fd5a05bf70715ad82a09a756320284a1b54c9ff74cd0f8cce6219e79b563fe59d90610c2690889088906112ea565b60405180910390a450505050565b3360009081526002602052604090205460ff16610c635760405162461bcd60e51b81526004016103a2906111c1565b60055481908110610c865760405162461bcd60e51b81526004016103a2906111e4565b8160058181548110610c9a57610c9a61120f565b600091825260209091206003600590920201015460ff1615610cce5760405162461bcd60e51b81526004016103a290611225565b600060058481548110610ce357610ce361120f565b9060005260206000209060050201905060035481600401541015610d3d5760405162461bcd60e51b81526020600482015260116024820152700c6c2dcdcdee840caf0cac6eae8ca40e8f607b1b60448201526064016103a2565b60038101805460ff191660019081179091558154908201546040516000926001600160a01b03169190610d7490600286019061130b565b60006040518083038185875af1925050503d8060008114610db1576040519150601f19603f3d011682016040523d82523d6000602084013e610db6565b606091505b5050905080610df35760405162461bcd60e51b81526020600482015260096024820152681d1e0819985a5b195960ba1b60448201526064016103a2565b604051859033907f5445f318f4f5fcfb66592e68e0cc5822aa15664039bd5f0ffde24c5a8142b1ac90600090a35050505050565b828054610e339061127f565b90600052602060002090601f016020900481019282610e555760008555610e9b565b82601f10610e6e57805160ff1916838001178555610e9b565b82800160010185558215610e9b579182015b82811115610e9b578251825591602001919060010190610e80565b50610ea7929150610eab565b5090565b5b80821115610ea75760008155600101610eac565b600060208284031215610ed257600080fd5b5035919050565b80356001600160a01b0381168114610ef057600080fd5b919050565b600060208284031215610f0757600080fd5b610f1082610ed9565b9392505050565b6000815180845260005b81811015610f3d57602081850181015186830182015201610f21565b81811115610f4f576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038616815284602082015260a060408201526000610f8b60a0830186610f17565b931515606083015250608001529392505050565b60008060408385031215610fb257600080fd5b82359150610fc260208401610ed9565b90509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561100c5783516001600160a01b031683529284019291840191600101610fe7565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561105757611057611018565b604052919050565b6000806040838503121561107257600080fd5b823567ffffffffffffffff8082111561108a57600080fd5b818501915085601f83011261109e57600080fd5b81356020828211156110b2576110b2611018565b8160051b92506110c381840161102e565b82815292840181019281810190898511156110dd57600080fd5b948201945b84861015611102576110f386610ed9565b825294820194908201906110e2565b9997909101359750505050505050565b60008060006060848603121561112757600080fd5b61113084610ed9565b92506020808501359250604085013567ffffffffffffffff8082111561115557600080fd5b818701915087601f83011261116957600080fd5b81358181111561117b5761117b611018565b61118d601f8201601f1916850161102e565b915080825288848285010111156111a357600080fd5b80848401858401376000848284010152508093505050509250925092565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b6020808252601190820152701d1e08191bd95cc81b9bdd08195e1a5cdd607a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6020808252601390820152721d1e08185b1c9958591e48195e1958dd5d1959606a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008282101561127a5761127a611252565b500390565b600181811c9082168061129357607f821691505b6020821081036112b357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600182016112cb576112cb611252565b5060010190565b600082198211156112e5576112e5611252565b500190565b8281526040602082015260006113036040830184610f17565b949350505050565b600080835481600182811c91508083168061132757607f831692505b6020808410820361134657634e487b7160e01b86526022600452602486fd5b81801561135a576001811461136b57611398565b60ff19861689528489019650611398565b60008a81526020902060005b868110156113905781548b820152908501908301611377565b505084890196505b50949897505050505050505056fea264697066735822122074f5755d30cab0471c1a16fc62ebcea4cac6733908b3a5151daa24cbd8648b6e64736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106100e15760003560e01c8063a0e67e2b1161007f578063c642747411610059578063c6427474146102d3578063c876b308146102f3578063d0549b8514610313578063ee22610b1461032957600080fd5b8063a0e67e2b14610271578063ad60e71e14610293578063c01a8c84146102b357600080fd5b80632f54bf6e116100bb5780632f54bf6e146101a557806333ea3dc8146101e557806380f59a65146102165780639ace38c21461025157600080fd5b8063025e7c271461012757806320ea8d86146101645780632e7700f01461018657600080fd5b36610122576040805134815247602082015233917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15910160405180910390a2005b600080fd5b34801561013357600080fd5b50610147610142366004610ec0565b610349565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561017057600080fd5b5061018461017f366004610ec0565b610373565b005b34801561019257600080fd5b506005545b60405190815260200161015b565b3480156101b157600080fd5b506101d56101c0366004610ef5565b60026020526000908152604090205460ff1681565b604051901515815260200161015b565b3480156101f157600080fd5b50610205610200366004610ec0565b6104fe565b60405161015b959493929190610f64565b34801561022257600080fd5b506101d5610231366004610f9f565b600460209081526000928352604080842090915290825290205460ff1681565b34801561025d57600080fd5b5061020561026c366004610ec0565b6105f9565b34801561027d57600080fd5b506102866106d2565b60405161015b9190610fcb565b34801561029f57600080fd5b506101846102ae36600461105f565b610734565b3480156102bf57600080fd5b506101846102ce366004610ec0565b610926565b3480156102df57600080fd5b506101846102ee366004611112565b610ab4565b3480156102ff57600080fd5b50600054610147906001600160a01b031681565b34801561031f57600080fd5b5061019760035481565b34801561033557600080fd5b50610184610344366004610ec0565b610c34565b6001818154811061035957600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526002602052604090205460ff166103ab5760405162461bcd60e51b81526004016103a2906111c1565b60405180910390fd5b600554819081106103ce5760405162461bcd60e51b81526004016103a2906111e4565b81600581815481106103e2576103e261120f565b600091825260209091206003600590920201015460ff16156104165760405162461bcd60e51b81526004016103a290611225565b60006005848154811061042b5761042b61120f565b600091825260208083208784526004825260408085203386529092529220546005909102909101915060ff166104965760405162461bcd60e51b815260206004820152601060248201526f1d1e081b9bdd0818dbdb999a5c9b595960821b60448201526064016103a2565b60018160040160008282546104ab9190611268565b90915550506000848152600460209081526040808320338085529252808320805460ff191690555186927ff0dca620e2e81f7841d07bcc105e1704fb01475b278a9d4c236e1c62945edd5591a350505050565b600080606060008060006005878154811061051b5761051b61120f565b6000918252602090912060059091020180546001820154600383015460048401546002850180549596506001600160a01b039094169492939260ff9092169183906105659061127f565b80601f01602080910402602001604051908101604052809291908181526020018280546105919061127f565b80156105de5780601f106105b3576101008083540402835291602001916105de565b820191906000526020600020905b8154815290600101906020018083116105c157829003601f168201915b50505050509250955095509550955095505091939590929450565b6005818154811061060957600080fd5b60009182526020909120600590910201805460018201546002830180546001600160a01b03909316945090929161063f9061127f565b80601f016020809104026020016040519081016040528092919081815260200182805461066b9061127f565b80156106b85780601f1061068d576101008083540402835291602001916106b8565b820191906000526020600020905b81548152906001019060200180831161069b57829003601f168201915b505050506003830154600490930154919260ff1691905085565b6060600180548060200260200160405190810160405280929190818152602001828054801561072a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161070c575b5050505050905090565b60008251116107775760405162461bcd60e51b815260206004820152600f60248201526e1bdddb995c9cc81c995c5d5a5c9959608a1b60448201526064016103a2565b600081118015610788575081518111155b6107d45760405162461bcd60e51b815260206004820152601f60248201527f696e76616c6964206e756d626572206f6620636f6e6669726d6174696f6e730060448201526064016103a2565b60005b825181101561091f5760008382815181106107f4576107f461120f565b6020026020010151905060006001600160a01b0316816001600160a01b0316036108505760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21037bbb732b960991b60448201526064016103a2565b6001600160a01b03811660009081526002602052604090205460ff16156108ac5760405162461bcd60e51b815260206004820152601060248201526f6f776e6572206e6f7420756e6971756560801b60448201526064016103a2565b6001600160a01b03166000818152600260205260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b031916909117905580610917816112b9565b9150506107d7565b5060035550565b3360009081526002602052604090205460ff166109555760405162461bcd60e51b81526004016103a2906111c1565b600554819081106109785760405162461bcd60e51b81526004016103a2906111e4565b816005818154811061098c5761098c61120f565b600091825260209091206003600590920201015460ff16156109c05760405162461bcd60e51b81526004016103a290611225565b6000838152600460209081526040808320338452909152902054839060ff1615610a235760405162461bcd60e51b81526020600482015260146024820152731d1e08185b1c9958591e4818dbdb999a5c9b595960621b60448201526064016103a2565b600060058581548110610a3857610a3861120f565b906000526020600020906005020190506001816004016000828254610a5d91906112d2565b90915550506000858152600460209081526040808320338085529252808320805460ff191660011790555187927f5cbe105e36805f7820e291f799d5794ff948af2a5f664e580382defb6339004191a35050505050565b3360009081526002602052604090205460ff16610ae35760405162461bcd60e51b81526004016103a2906111c1565b600580546040805160a0810182526001600160a01b03878116825260208083018881529383018781526000606085018190526080850181905260018701885587905283517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db097870297880180546001600160a01b0319169190941617835593517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db187015592518051949592949193610bc0937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db20192910190610e27565b50606082015160038201805460ff19169115159190911790556080909101516004909101556040516001600160a01b03851690829033907fd5a05bf70715ad82a09a756320284a1b54c9ff74cd0f8cce6219e79b563fe59d90610c2690889088906112ea565b60405180910390a450505050565b3360009081526002602052604090205460ff16610c635760405162461bcd60e51b81526004016103a2906111c1565b60055481908110610c865760405162461bcd60e51b81526004016103a2906111e4565b8160058181548110610c9a57610c9a61120f565b600091825260209091206003600590920201015460ff1615610cce5760405162461bcd60e51b81526004016103a290611225565b600060058481548110610ce357610ce361120f565b9060005260206000209060050201905060035481600401541015610d3d5760405162461bcd60e51b81526020600482015260116024820152700c6c2dcdcdee840caf0cac6eae8ca40e8f607b1b60448201526064016103a2565b60038101805460ff191660019081179091558154908201546040516000926001600160a01b03169190610d7490600286019061130b565b60006040518083038185875af1925050503d8060008114610db1576040519150601f19603f3d011682016040523d82523d6000602084013e610db6565b606091505b5050905080610df35760405162461bcd60e51b81526020600482015260096024820152681d1e0819985a5b195960ba1b60448201526064016103a2565b604051859033907f5445f318f4f5fcfb66592e68e0cc5822aa15664039bd5f0ffde24c5a8142b1ac90600090a35050505050565b828054610e339061127f565b90600052602060002090601f016020900481019282610e555760008555610e9b565b82601f10610e6e57805160ff1916838001178555610e9b565b82800160010185558215610e9b579182015b82811115610e9b578251825591602001919060010190610e80565b50610ea7929150610eab565b5090565b5b80821115610ea75760008155600101610eac565b600060208284031215610ed257600080fd5b5035919050565b80356001600160a01b0381168114610ef057600080fd5b919050565b600060208284031215610f0757600080fd5b610f1082610ed9565b9392505050565b6000815180845260005b81811015610f3d57602081850181015186830182015201610f21565b81811115610f4f576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038616815284602082015260a060408201526000610f8b60a0830186610f17565b931515606083015250608001529392505050565b60008060408385031215610fb257600080fd5b82359150610fc260208401610ed9565b90509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561100c5783516001600160a01b031683529284019291840191600101610fe7565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561105757611057611018565b604052919050565b6000806040838503121561107257600080fd5b823567ffffffffffffffff8082111561108a57600080fd5b818501915085601f83011261109e57600080fd5b81356020828211156110b2576110b2611018565b8160051b92506110c381840161102e565b82815292840181019281810190898511156110dd57600080fd5b948201945b84861015611102576110f386610ed9565b825294820194908201906110e2565b9997909101359750505050505050565b60008060006060848603121561112757600080fd5b61113084610ed9565b92506020808501359250604085013567ffffffffffffffff8082111561115557600080fd5b818701915087601f83011261116957600080fd5b81358181111561117b5761117b611018565b61118d601f8201601f1916850161102e565b915080825288848285010111156111a357600080fd5b80848401858401376000848284010152508093505050509250925092565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b6020808252601190820152701d1e08191bd95cc81b9bdd08195e1a5cdd607a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6020808252601390820152721d1e08185b1c9958591e48195e1958dd5d1959606a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008282101561127a5761127a611252565b500390565b600181811c9082168061129357607f821691505b6020821081036112b357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600182016112cb576112cb611252565b5060010190565b600082198211156112e5576112e5611252565b500190565b8281526040602082015260006113036040830184610f17565b949350505050565b600080835481600182811c91508083168061132757607f831692505b6020808410820361134657634e487b7160e01b86526022600452602486fd5b81801561135a576001811461136b57611398565b60ff19861689528489019650611398565b60008a81526020902060005b868110156113905781548b820152908501908301611377565b505084890196505b50949897505050505050505056fea264697066735822122074f5755d30cab0471c1a16fc62ebcea4cac6733908b3a5151daa24cbd8648b6e64736f6c634300080d0033
Loading...
Loading
[ Download: CSV Export ]
[ 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.