Overview
ETH Balance
0.000613401966729223 ETH
Eth Value
$1.63 (@ $2,655.61/ETH)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 25 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Confirm Transact... | 14484330 | 877 days ago | IN | 0 ETH | 0.00452221 | ||||
Submit Transacti... | 14483574 | 877 days ago | IN | 0 ETH | 0.01457954 | ||||
Confirm Transact... | 14296748 | 906 days ago | IN | 0 ETH | 0.0086839 | ||||
Submit Transacti... | 14296579 | 906 days ago | IN | 0 ETH | 0.01733816 | ||||
Confirm Transact... | 14233246 | 916 days ago | IN | 0 ETH | 0.00854053 | ||||
Submit Transacti... | 14233090 | 916 days ago | IN | 0 ETH | 0.01499796 | ||||
Confirm Transact... | 14214768 | 919 days ago | IN | 0 ETH | 0.00592752 | ||||
Submit Transacti... | 14214746 | 919 days ago | IN | 0 ETH | 0.01175439 | ||||
Confirm Transact... | 14188580 | 923 days ago | IN | 0 ETH | 0.02784504 | ||||
Submit Transacti... | 14188551 | 923 days ago | IN | 0 ETH | 0.03075893 | ||||
Confirm Transact... | 14161074 | 927 days ago | IN | 0 ETH | 0.01595148 | ||||
Submit Transacti... | 14161052 | 927 days ago | IN | 0 ETH | 0.03312612 | ||||
Confirm Transact... | 14148144 | 929 days ago | IN | 0 ETH | 0.0104997 | ||||
Submit Transacti... | 14148124 | 929 days ago | IN | 0 ETH | 0.02244634 | ||||
Confirm Transact... | 14128871 | 932 days ago | IN | 0 ETH | 0.02797948 | ||||
Submit Transacti... | 14128861 | 932 days ago | IN | 0 ETH | 0.04571458 | ||||
Confirm Transact... | 14108956 | 935 days ago | IN | 0 ETH | 0.03214935 | ||||
Submit Transacti... | 14108914 | 935 days ago | IN | 0 ETH | 0.03793551 | ||||
Submit Transacti... | 14108593 | 935 days ago | IN | 0 ETH | 0.02158203 | ||||
Confirm Transact... | 14091402 | 938 days ago | IN | 0 ETH | 0.01247195 | ||||
Submit Transacti... | 14091383 | 938 days ago | IN | 0 ETH | 0.02773091 | ||||
Submit Transacti... | 14091173 | 938 days ago | IN | 0 ETH | 0.0428295 | ||||
Confirm Transact... | 14085297 | 939 days ago | IN | 0 ETH | 0.01286851 | ||||
Submit Transacti... | 14085263 | 939 days ago | IN | 0 ETH | 0.03358745 | ||||
0x60806040 | 14073337 | 941 days ago | IN | 0 ETH | 0.26233521 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
14484330 | 877 days ago | 0.706 ETH | ||||
14478394 | 878 days ago | 0.63490498 ETH | ||||
14296748 | 906 days ago | 0.5 ETH | ||||
14296560 | 906 days ago | 0.16849688 ETH | ||||
14275838 | 909 days ago | 0.16225327 ETH | ||||
14271200 | 910 days ago | 0.16073243 ETH | ||||
14233246 | 916 days ago | 0.7 ETH | ||||
14232993 | 916 days ago | 0.55010772 ETH | ||||
14214768 | 919 days ago | 2 ETH | ||||
14214404 | 919 days ago | 1.29201966 ETH | ||||
14214215 | 919 days ago | 0.50198497 ETH | ||||
14206113 | 920 days ago | 0.3312226 ETH | ||||
14188580 | 923 days ago | 0.8 ETH | ||||
14185363 | 923 days ago | 0.29380363 ETH | ||||
14180432 | 924 days ago | 0.52731498 ETH | ||||
14161074 | 927 days ago | 0.6 ETH | ||||
14159472 | 927 days ago | 0.66008581 ETH | ||||
14148144 | 929 days ago | 1.4 ETH | ||||
14148066 | 929 days ago | 0.60344599 ETH | ||||
14140327 | 930 days ago | 0.27386846 ETH | ||||
14137318 | 931 days ago | 0.21944717 ETH | ||||
14137313 | 931 days ago | 0.22958277 ETH | ||||
14128871 | 932 days ago | 2 ETH | ||||
14127465 | 932 days ago | 0.68105094 ETH | ||||
14122605 | 933 days ago | 0.198939 ETH |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x5874B643...337218100 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
MultisigWallet
Compiler Version
v0.8.0+commit.c7dfd78e
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.0; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; /// @title Multisignature wallet - Allows multiple parties to agree on transactions before execution. /// @author Stefan George - <[email protected]> contract MultisigWallet { event WithDrawal(address indexed _token, address indexed _to, uint256 _amount); /* * Events */ event Confirmation(address indexed sender, uint256 indexed transactionId); event Revocation(address indexed sender, uint256 indexed transactionId); event Submission(uint256 indexed transactionId); event Execution(uint256 indexed transactionId); event ExecutionFailure(uint256 indexed transactionId); event Deposit(address indexed sender, uint256 value); event OwnerAddition(address indexed owner); event OwnerRemoval(address indexed owner); event RequirementChange(uint256 required); event RequestLock(address indexed sender); event RequestUnlock(address indexed sender); event ExecuteUnlock(address indexed sender); /* * Constants */ uint256 constant public MAX_OWNER_COUNT = 50; uint256 constant public UNLOCK_TIME = 365 days; /* * Storage */ mapping (uint256 => Transaction) public transactions; mapping (uint256 => mapping (address => bool)) public confirmations; mapping (address => bool) public isOwner; address[] public owners; uint256 public required; uint256 public transactionCount; uint256 public unlockTimeStart; bool public isUnlocking; struct Transaction { string description; address destination; uint256 value; bytes data; bool executed; uint256 timestamp; } /* * Modifiers */ modifier onlyWallet() { require(msg.sender == address(this), "Only wallet"); _; } modifier ownerDoesNotExist(address owner) { require(!isOwner[owner], "Owner exists"); _; } modifier ownerExists(address owner) { require(isOwner[owner], "Owner does not exists"); _; } modifier transactionExists(uint256 transactionId) { require(transactions[transactionId].destination != address(0), "Tx doesn't exist"); _; } modifier confirmed(uint256 transactionId, address owner) { require(confirmations[transactionId][owner], "not confirmed"); _; } modifier notConfirmed(uint256 transactionId, address owner) { require(!confirmations[transactionId][owner], "is already confirmed"); _; } modifier notExecuted(uint256 transactionId) { require(!transactions[transactionId].executed, "tx already executed"); _; } modifier notNull(address _address) { require(_address != address(0), "address is null"); _; } modifier validRequirement(uint256 ownerCount, uint256 _required) { require(ownerCount <= MAX_OWNER_COUNT && _required <= ownerCount && _required != 0 && ownerCount != 0, "invalid requirement"); _; } /// @dev Fallback function allows to deposit ether. fallback() virtual external payable { if (msg.value > 0) emit Deposit(msg.sender, msg.value); } /// @dev Receive function allows to deposit ether. receive() virtual external payable { if (msg.value > 0) emit Deposit(msg.sender, msg.value); } /* * Public functions */ /// @dev Contract constructor sets initial owners and required number of confirmations. /// @param _owners List of initial owners. /// @param _required Number of required confirmations. constructor(address[] memory _owners, uint256 _required) validRequirement(_owners.length, _required) { for (uint256 i = 0; i < _owners.length; i++) { require(!isOwner[_owners[i]] && _owners[i] != address(0), "is already owner"); isOwner[_owners[i]] = true; } owners = _owners; required = _required; } /// @dev Allows to add a new owner. Transaction has to be sent by wallet. /// @param owner Address of new owner to add. function addOwner(address owner) virtual public onlyWallet ownerDoesNotExist(owner) notNull(owner) validRequirement(owners.length + 1, required) { isOwner[owner] = true; owners.push(owner); emit OwnerAddition(owner); } /// @dev Allows to remove an owner. Transaction has to be sent by wallet. /// @param owner Address of owner to remove. function removeOwner(address owner) virtual public onlyWallet ownerExists(owner) { isOwner[owner] = false; int256 ownerIndex = _indexOf(owners, owner); owners[uint256(ownerIndex)] = owners[owners.length - 1]; owners.pop(); if (required > owners.length) changeRequirement(owners.length); emit OwnerRemoval(owner); } /// @dev Allows to replace an owner with a new owner. Transaction has to be sent by wallet. /// @param owner Address of owner to be replaced. /// @param newOwner Address of new owner. function replaceOwner(address owner, address newOwner) virtual public onlyWallet ownerExists(owner) ownerDoesNotExist(newOwner) { for(uint256 i = 0; i < owners.length; i++) { if (owners[i] == owner) { owners[i] = newOwner; break; } } isOwner[owner] = false; isOwner[newOwner] = true; emit OwnerRemoval(owner); emit OwnerAddition(newOwner); } /// @dev Allows to change the number of required confirmations. Transaction has to be sent by wallet. /// @param _required Number of required confirmations. function changeRequirement(uint256 _required) virtual public onlyWallet validRequirement(owners.length, _required) { required = _required; emit RequirementChange(_required); } /// @dev Allows an owner to submit and confirm a transaction. /// @param destination Transaction target address. /// @param value Transaction ether value. /// @param data Transaction data payload. /// return Returns transaction ID. function submitTransaction(address destination, uint256 value, bytes memory data, string memory description) virtual public ownerExists(msg.sender) returns (uint256 transactionId) { transactionId = addTransaction(destination, value, data, description); confirmTransaction(transactionId); } /// @dev Allows an owner to confirm a transaction. /// @param transactionId Transaction ID. function confirmTransaction(uint256 transactionId) virtual public ownerExists(msg.sender) transactionExists(transactionId) notConfirmed(transactionId, msg.sender) { confirmations[transactionId][msg.sender] = true; emit Confirmation(msg.sender, transactionId); executeTransaction(transactionId); } /// @dev Allows an owner to revoke a confirmation for a transaction. /// @param transactionId Transaction ID. function revokeConfirmation(uint256 transactionId) virtual public ownerExists(msg.sender) confirmed(transactionId, msg.sender) notExecuted(transactionId) { confirmations[transactionId][msg.sender] = false; emit Revocation(msg.sender, transactionId); } /// @dev Allows anyone to execute a confirmed transaction. /// @param transactionId Transaction ID. function executeTransaction(uint256 transactionId) virtual public ownerExists(msg.sender) confirmed(transactionId, msg.sender) notExecuted(transactionId) { if (isConfirmed(transactionId)) { Transaction storage txn = transactions[transactionId]; txn.executed = true; if (external_call(txn.destination, txn.value, txn.data.length, txn.data)) emit Execution(transactionId); else { emit ExecutionFailure(transactionId); txn.executed = false; } } } // call has been separated into its own function in order to take advantage // of the Solidity's code generator to produce a loop that copies tx.data into memory. function external_call(address destination, uint256 value, uint256 dataLength, bytes memory data) virtual internal returns (bool) { bool result; assembly { let x := mload(0x40) // "Allocate" memory for output (0x40 is where "free memory" pointer is stored by convention) let d := add(data, 32) // First 32 bytes are the padded length of data, so exclude that result := call( sub(gas(), 34710), // 34710 is the value that solidity is currently emitting // It includes callGas (700) + callVeryLow (3, to pay for SUB) + callValueTransferGas (9000) + // callNewAccountGas (25000, in case the destination address does not exist and needs creating) destination, value, d, dataLength, // Size of the input (in bytes) - this is what fixes the padding problem x, 0 // Output is ignored, therefore the output size is zero ) } return result; } /// @dev Returns the confirmation status of a transaction. /// @param transactionId Transaction ID. /// return Confirmation status. function isConfirmed(uint256 transactionId) virtual public view returns (bool) { uint256 count = 0; for (uint256 i = 0; i < owners.length; i++) { if (confirmations[transactionId][owners[i]]) count += 1; if (count == required) return true; } return false; } /* * Internal functions */ /// @dev Adds a new transaction to the transaction mapping, if transaction does not exist yet. /// @param destination Transaction target address. /// @param value Transaction ether value. /// @param data Transaction data payload. /// return Returns transaction ID. function addTransaction(address destination, uint256 value, bytes memory data, string memory description) virtual internal notNull(destination) returns (uint256 transactionId) { transactionId = transactionCount; transactions[transactionId] = Transaction({ description: description, destination: destination, value: value, data: data, executed: false, timestamp: block.timestamp }); transactionCount += 1; emit Submission(transactionId); } /* * Web3 call functions */ /// @dev Returns number of confirmations of a transaction. /// @param transactionId Transaction ID. /// return Number of confirmations. function getConfirmationCount(uint256 transactionId) virtual public view returns (uint256 count) { for (uint256 i = 0; i < owners.length; i++) { if (confirmations[transactionId][owners[i]]) count += 1; } } /// @dev Returns total number of transactions after filers are applied. /// @param pending Include pending transactions. /// @param executed Include executed transactions. /// return Total number of transactions after filters are applied. function getTransactionCount(bool pending, bool executed) virtual public view returns (uint256 count) { for (uint256 i = 0; i < transactionCount; i++) { if ( pending && !transactions[i].executed || executed && transactions[i].executed) count += 1; } } /// @dev Returns array with owner addresses, which confirmed transaction. /// @param transactionId Transaction ID. /// return Returns array of owner addresses. function getConfirmations(uint256 transactionId) virtual public view returns (address[] memory _confirmations) { address[] memory confirmationsTemp = new address[](owners.length); uint256 count = 0; uint256 i; for (i = 0; i < owners.length; i++) { if (confirmations[transactionId][owners[i]]) { confirmationsTemp[count] = owners[i]; count += 1; } } _confirmations = new address[](count); for (i = 0; i < count; i++) { _confirmations[i] = confirmationsTemp[i]; } } /// @dev Returns list of transaction IDs in defined range. /// @param from Index start position of transaction array. /// @param to Index end position of transaction array. /// @param pending Include pending transactions. /// @param executed Include executed transactions. /// return Returns array of transaction IDs. function getTransactionIds(uint256 from, uint256 to, bool pending, bool executed) virtual public view returns (uint256[] memory _transactionIds) { uint256[] memory transactionIdsTemp = new uint256[](transactionCount); uint256 count = 0; uint256 i; for (i = 0; i < transactionCount; i++) if ( pending && !transactions[i].executed || executed && transactions[i].executed) { transactionIdsTemp[count] = i; count += 1; } _transactionIds = new uint256[](to - from); for (i = from; i < to; i++){ _transactionIds[i - from] = transactionIdsTemp[i]; } } function _indexOf(address[] memory array, address _address) private pure returns (int256) { for(uint256 i = 0; i < array.length; i++) { if(array[i] == _address) return int256(i); } return int8(-1); } function getOwners() virtual public view returns (address[] memory) { return owners; } function getTransaction(uint256 transactionId) virtual public view returns (Transaction memory) { return transactions[transactionId]; } /// @dev Withdraws token balance from the wallet /// @param _token Address of ERC20 token to withdraw. /// @param _to Address of receiver /// @param _amount Amount to withdraw function withdraw(address _token, address _to, uint256 _amount) public onlyWallet { require(_token != address(0), "Token address cannot be 0"); require(_to != address(0), "recipient address cannot be 0"); require(_amount > 0, "amount cannot be 0"); /** transfer amount */ /** transfer fee to feeCollector */ IERC20(_token).transfer(_to, _amount); emit WithDrawal(_token, _to, _amount); } /// @dev Withdraws ether balance from the wallet /// @param _to Address of receiver /// @param _amount Amount to withdraw function withdrawETH(address payable _to, uint256 _amount) public onlyWallet { _to.transfer(_amount); } /*************************************************************************/ /// @dev Funtions to recover multisig if some owner loses its privatekey function requestUnlock() public ownerExists(msg.sender) { require(!isUnlocking, "Already requested"); unlockTimeStart = block.timestamp; isUnlocking = true; emit RequestUnlock(msg.sender); } function requestLock() public ownerExists(msg.sender) { require(isUnlocking, "Not Unlocking"); unlockTimeStart = 0; isUnlocking = false; emit RequestLock(msg.sender); } function executeUnlock() public ownerExists(msg.sender) { require(isUnlocking, "Not Unlocking"); require(unlockTimeStart + UNLOCK_TIME < block.timestamp, "Time still not passed"); unlockTimeStart = 0; isUnlocking = false; required = 1; emit ExecuteUnlock(msg.sender); emit RequirementChange(1); } /*************************************************************************/ }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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); }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "istanbul", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address[]","name":"_owners","type":"address[]"},{"internalType":"uint256","name":"_required","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"Confirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"ExecuteUnlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"Execution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"ExecutionFailure","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"OwnerAddition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"OwnerRemoval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RequestLock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RequestUnlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"required","type":"uint256"}],"name":"RequirementChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"Revocation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"Submission","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_token","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"WithDrawal","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"MAX_OWNER_COUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNLOCK_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"addOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_required","type":"uint256"}],"name":"changeRequirement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"confirmTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"confirmations","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"executeTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executeUnlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"getConfirmationCount","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"getConfirmations","outputs":[{"internalType":"address[]","name":"_confirmations","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"getTransaction","outputs":[{"components":[{"internalType":"string","name":"description","type":"string"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"executed","type":"bool"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct MultisigWallet.Transaction","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"pending","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"name":"getTransactionCount","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"from","type":"uint256"},{"internalType":"uint256","name":"to","type":"uint256"},{"internalType":"bool","name":"pending","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"name":"getTransactionIds","outputs":[{"internalType":"uint256[]","name":"_transactionIds","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"transactionId","type":"uint256"}],"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":"isUnlocking","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"owners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"removeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"newOwner","type":"address"}],"name":"replaceOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requestLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requestUnlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"required","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"revokeConfirmation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"string","name":"description","type":"string"}],"name":"submitTransaction","outputs":[{"internalType":"uint256","name":"transactionId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transactionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"transactions","outputs":[{"internalType":"string","name":"description","type":"string"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"executed","type":"bool"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockTimeStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Deployed Bytecode
0x6080604052600436106101d15760003560e01c806398b3ee6c116100f7578063b9596dc811610095578063d9caed1211610064578063d9caed12146105a5578063dc8452cd146105c5578063e20056e6146105da578063ee22610b146105fa57610220565b8063b9596dc81461053b578063ba51a6df14610550578063c01a8c8414610570578063d74f8edd1461059057610220565b8063a433313b116100d1578063a433313b146104c4578063a8abe69a146104d9578063b5dc40c314610506578063b77bf6001461052657610220565b806398b3ee6c1461045b5780639ace38c214610470578063a0e67e2b146104a257610220565b8063413198311161016f57806356e19a2c1161013e57806356e19a2c146103e65780637065cb48146103fb578063784547a71461041b5780638b51d13f1461043b57610220565b8063413198311461036457806346e24b08146103865780634782f779146103a657806354741525146103c657610220565b806320ea8d86116101ab57806320ea8d86146102ca5780632f54bf6e146102ea57806333ea3dc8146103175780633411c81c1461034457610220565b8063025e7c271461025f57806308314e5814610295578063173825d9146102aa57610220565b3661022057341561021e57336001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040516102159190612431565b60405180910390a25b005b341561021e57336001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040516102159190612431565b34801561026b57600080fd5b5061027f61027a3660046122a4565b61061a565b60405161028c9190612374565b60405180910390f35b3480156102a157600080fd5b5061021e610644565b3480156102b657600080fd5b5061021e6102c53660046120ef565b6106da565b3480156102d657600080fd5b5061021e6102e53660046122a4565b6108dd565b3480156102f657600080fd5b5061030a6103053660046120ef565b6109cc565b60405161028c9190612426565b34801561032357600080fd5b506103376103323660046122a4565b6109e1565b60405161028c9190612722565b34801561035057600080fd5b5061030a61035f3660046122bc565b610b68565b34801561037057600080fd5b50610379610b88565b60405161028c9190612431565b34801561039257600080fd5b506103796103a13660046121b5565b610b90565b3480156103b257600080fd5b5061021e6103c1366004612112565b610be2565b3480156103d257600080fd5b506103796103e1366004612277565b610c3c565b3480156103f257600080fd5b5061021e610cb9565b34801561040757600080fd5b5061021e6104163660046120ef565b610d4a565b34801561042757600080fd5b5061030a6104363660046122a4565b610eaf565b34801561044757600080fd5b506103796104563660046122a4565b610f5d565b34801561046757600080fd5b5061030a610ff1565b34801561047c57600080fd5b5061049061048b3660046122a4565b610ffa565b60405161028c9695949392919061243a565b3480156104ae57600080fd5b506104b7611150565b60405161028c91906123a1565b3480156104d057600080fd5b5061021e6111b2565b3480156104e557600080fd5b506104f96104f43660046122e0565b6112ac565b60405161028c91906123ee565b34801561051257600080fd5b506104b76105213660046122a4565b61148a565b34801561053257600080fd5b506103796116c4565b34801561054757600080fd5b506103796116ca565b34801561055c57600080fd5b5061021e61056b3660046122a4565b6116d0565b34801561057c57600080fd5b5061021e61058b3660046122a4565b611778565b34801561059c57600080fd5b5061037961187b565b3480156105b157600080fd5b5061021e6105c0366004612175565b611880565b3480156105d157600080fd5b506103796119dc565b3480156105e657600080fd5b5061021e6105f536600461213d565b6119e2565b34801561060657600080fd5b5061021e6106153660046122a4565b611bca565b6003818154811061062a57600080fd5b6000918252602090912001546001600160a01b0316905081565b3360008181526002602052604090205460ff1661067c5760405162461bcd60e51b8152600401610673906126bc565b60405180910390fd5b60075460ff1661069e5760405162461bcd60e51b815260040161067390612695565b600060068190556007805460ff1916905560405133917f36599d2bc158f0203c296f3c5b96f8a39132dafda19ff59911784acb111eebc091a250565b3330146106f95760405162461bcd60e51b815260040161067390612617565b6001600160a01b038116600090815260026020526040902054819060ff166107335760405162461bcd60e51b8152600401610673906126bc565b6001600160a01b0382166000908152600260209081526040808320805460ff19169055600380548251818502810185019093528083526107b1938301828280156107a657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610788575b505050505084611dc8565b60038054919250906107c5906001906127b2565b815481106107e357634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600380546001600160a01b03909216918390811061081d57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600380548061086a57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b031916905501905560035460045411156108a4576003546108a4906116d0565b6040516001600160a01b038416907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a2505050565b3360008181526002602052604090205460ff1661090c5760405162461bcd60e51b8152600401610673906126bc565b60008281526001602090815260408083203380855292529091205483919060ff166109495760405162461bcd60e51b81526004016106739061250d565b600084815260208190526040902060040154849060ff161561097d5760405162461bcd60e51b815260040161067390612668565b6000858152600160209081526040808320338085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60026020526000908152604090205460ff1681565b6109e9611fa5565b60008281526020819052604090819020815160c08101909252805482908290610a11906127c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3d906127c9565b8015610a8a5780601f10610a5f57610100808354040283529160200191610a8a565b820191906000526020600020905b815481529060010190602001808311610a6d57829003601f168201915b505050918352505060018201546001600160a01b0316602082015260028201546040820152600382018054606090920191610ac4906127c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610af0906127c9565b8015610b3d5780601f10610b1257610100808354040283529160200191610b3d565b820191906000526020600020905b815481529060010190602001808311610b2057829003601f168201915b5050509183525050600482015460ff161515602082015260059091015460409091015290505b919050565b600160209081526000928352604080842090915290825290205460ff1681565b6301e1338081565b3360008181526002602052604081205490919060ff16610bc25760405162461bcd60e51b8152600401610673906126bc565b610bce86868686611e3c565b9150610bd982611778565b50949350505050565b333014610c015760405162461bcd60e51b815260040161067390612617565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610c37573d6000803e3d6000fd5b505050565b6000805b600554811015610cb257838015610c69575060008181526020819052604090206004015460ff16155b80610c8d5750828015610c8d575060008181526020819052604090206004015460ff165b15610ca057610c9d60018361279a565b91505b80610caa816127fe565b915050610c40565b5092915050565b3360008181526002602052604090205460ff16610ce85760405162461bcd60e51b8152600401610673906126bc565b60075460ff1615610d0b5760405162461bcd60e51b81526004016106739061256b565b426006556007805460ff1916600117905560405133907fddb78764bce2c67da3b2e2a5703de54b41b1982ec4899f61d5d9bd21a5bdae7490600090a250565b333014610d695760405162461bcd60e51b815260040161067390612617565b6001600160a01b038116600090815260026020526040902054819060ff1615610da45760405162461bcd60e51b8152600401610673906124e7565b816001600160a01b038116610dcb5760405162461bcd60e51b8152600401610673906125c4565b600354610dd990600161279a565b60045460328211158015610ded5750818111155b8015610df857508015155b8015610e0357508115155b610e1f5760405162461bcd60e51b8152600401610673906124ba565b6001600160a01b038516600081815260026020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b600080805b600354811015610f535760008481526001602052604081206003805491929184908110610ef157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1615610f2c57610f2960018361279a565b91505b600454821415610f4157600192505050610b63565b80610f4b816127fe565b915050610eb4565b5060009392505050565b6000805b600354811015610feb5760008381526001602052604081206003805491929184908110610f9e57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1615610fd957610fd660018361279a565b91505b80610fe3816127fe565b915050610f61565b50919050565b60075460ff1681565b600060208190529081526040902080548190611015906127c9565b80601f0160208091040260200160405190810160405280929190818152602001828054611041906127c9565b801561108e5780601f106110635761010080835404028352916020019161108e565b820191906000526020600020905b81548152906001019060200180831161107157829003601f168201915b505050506001830154600284015460038501805494956001600160a01b0390931694919350906110bd906127c9565b80601f01602080910402602001604051908101604052809291908181526020018280546110e9906127c9565b80156111365780601f1061110b57610100808354040283529160200191611136565b820191906000526020600020905b81548152906001019060200180831161111957829003601f168201915b505050506004830154600590930154919260ff1691905086565b606060038054806020026020016040519081016040528092919081815260200182805480156111a857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161118a575b5050505050905090565b3360008181526002602052604090205460ff166111e15760405162461bcd60e51b8152600401610673906126bc565b60075460ff166112035760405162461bcd60e51b815260040161067390612695565b426301e13380600654611216919061279a565b106112335760405162461bcd60e51b81526004016106739061248b565b600060068190556007805460ff19169055600160045560405133917f7eb8b526d9ccbd5cb80d8da09120b8aa6adf8ffab622eba6738a5dc52c84fbc891a27fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a60016040516112a19190612431565b60405180910390a150565b6060600060055467ffffffffffffffff8111156112d957634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611302578160200160208202803683370190505b5090506000805b6005548110156113a757858015611332575060008181526020819052604090206004015460ff16155b806113565750848015611356575060008181526020819052604090206004015460ff165b15611395578083838151811061137c57634e487b7160e01b600052603260045260246000fd5b602090810291909101015261139260018361279a565b91505b8061139f816127fe565b915050611309565b6113b188886127b2565b67ffffffffffffffff8111156113d757634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611400578160200160208202803683370190505b5093508790505b8681101561147f5782818151811061142f57634e487b7160e01b600052603260045260246000fd5b602002602001015184898361144491906127b2565b8151811061146257634e487b7160e01b600052603260045260246000fd5b602090810291909101015280611477816127fe565b915050611407565b505050949350505050565b60035460609060009067ffffffffffffffff8111156114b957634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156114e2578160200160208202803683370190505b5090506000805b6003548110156115ea576000858152600160205260408120600380549192918490811061152657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156115d8576003818154811061157457634e487b7160e01b600052603260045260246000fd5b9060005260206000200160009054906101000a90046001600160a01b03168383815181106115b257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03909216602092830291909101909101526115d560018361279a565b91505b806115e2816127fe565b9150506114e9565b8167ffffffffffffffff81111561161157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561163a578160200160208202803683370190505b509350600090505b818110156116bc5782818151811061166a57634e487b7160e01b600052603260045260246000fd5b602002602001015184828151811061169257634e487b7160e01b600052603260045260246000fd5b6001600160a01b0390921660209283029190910190910152806116b4816127fe565b915050611642565b505050919050565b60055481565b60065481565b3330146116ef5760405162461bcd60e51b815260040161067390612617565b60035481603282118015906117045750818111155b801561170f57508015155b801561171a57508115155b6117365760405162461bcd60e51b8152600401610673906124ba565b60048390556040517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9061176b908590612431565b60405180910390a1505050565b3360008181526002602052604090205460ff166117a75760405162461bcd60e51b8152600401610673906126bc565b60008281526020819052604090206001015482906001600160a01b03166117e05760405162461bcd60e51b8152600401610673906125ed565b60008381526001602090815260408083203380855292529091205484919060ff161561181e5760405162461bcd60e51b815260040161067390612596565b6000858152600160208181526040808420338086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a361187485611bca565b5050505050565b603281565b33301461189f5760405162461bcd60e51b815260040161067390612617565b6001600160a01b0383166118c55760405162461bcd60e51b815260040161067390612534565b6001600160a01b0382166118eb5760405162461bcd60e51b8152600401610673906126eb565b6000811161190b5760405162461bcd60e51b81526004016106739061263c565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906119399085908590600401612388565b602060405180830381600087803b15801561195357600080fd5b505af1158015611967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198b919061225b565b50816001600160a01b0316836001600160a01b03167ff771b0b0fed27d8b267e3c41067d13847651eed9062a84fca1ed123c6c069aa1836040516119cf9190612431565b60405180910390a3505050565b60045481565b333014611a015760405162461bcd60e51b815260040161067390612617565b6001600160a01b038216600090815260026020526040902054829060ff16611a3b5760405162461bcd60e51b8152600401610673906126bc565b6001600160a01b038216600090815260026020526040902054829060ff1615611a765760405162461bcd60e51b8152600401610673906124e7565b60005b600354811015611b3057846001600160a01b031660038281548110611aae57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415611b1e578360038281548110611aeb57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550611b30565b80611b28816127fe565b915050611a79565b506001600160a01b03808516600081815260026020526040808220805460ff1990811690915593871682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a26040516001600160a01b038416907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a250505050565b3360008181526002602052604090205460ff16611bf95760405162461bcd60e51b8152600401610673906126bc565b60008281526001602090815260408083203380855292529091205483919060ff16611c365760405162461bcd60e51b81526004016106739061250d565b600084815260208190526040902060040154849060ff1615611c6a5760405162461bcd60e51b815260040161067390612668565b611c7385610eaf565b1561187457600085815260208190526040902060048101805460ff191660019081179091558101546002820154600383018054611d53936001600160a01b0316929190611cbf906127c9565b9050846003018054611cd0906127c9565b80601f0160208091040260200160405190810160405280929190818152602001828054611cfc906127c9565b8015611d495780601f10611d1e57610100808354040283529160200191611d49565b820191906000526020600020905b815481529060010190602001808311611d2c57829003601f168201915b5050505050611f82565b15611d885760405186907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a2611dc0565b60405186907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a260048101805460ff191690555b505050505050565b6000805b8351811015611e2f57826001600160a01b0316848281518110611dff57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03161415611e1d579050611e36565b80611e27816127fe565b915050611dcc565b5060001990505b92915050565b6000846001600160a01b038116611e655760405162461bcd60e51b8152600401610673906125c4565b6005546040805160c0810182528581526001600160a01b038916602080830191909152818301899052606082018890526000608083018190524260a0840152848152808252929092208151805194965091939092611ec7928492910190611fe6565b506020828101516001830180546001600160a01b0319166001600160a01b039092169190911790556040830151600283015560608301518051611f109260038501920190611fe6565b50608082015160048201805460ff191691151591909117905560a090910151600591820155805460019190600090611f4990849061279a565b909155505060405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a250949350505050565b6000806040516020840160008287838a8c6187965a03f198975050505050505050565b6040518060c001604052806060815260200160006001600160a01b031681526020016000815260200160608152602001600015158152602001600081525090565b828054611ff2906127c9565b90600052602060002090601f016020900481019282612014576000855561205a565b82601f1061202d57805160ff191683800117855561205a565b8280016001018555821561205a579182015b8281111561205a57825182559160200191906001019061203f565b5061206692915061206a565b5090565b5b80821115612066576000815560010161206b565b600067ffffffffffffffff8084111561209a5761209a61282f565b604051601f8501601f1916810160200182811182821017156120be576120be61282f565b6040528481529150818385018610156120d657600080fd5b8484602083013760006020868301015250509392505050565b600060208284031215612100578081fd5b813561210b81612845565b9392505050565b60008060408385031215612124578081fd5b823561212f81612845565b946020939093013593505050565b6000806040838503121561214f578182fd5b823561215a81612845565b9150602083013561216a81612845565b809150509250929050565b600080600060608486031215612189578081fd5b833561219481612845565b925060208401356121a481612845565b929592945050506040919091013590565b600080600080608085870312156121ca578081fd5b84356121d581612845565b935060208501359250604085013567ffffffffffffffff808211156121f8578283fd5b818701915087601f83011261220b578283fd5b61221a8883356020850161207f565b9350606087013591508082111561222f578283fd5b508501601f81018713612240578182fd5b61224f8782356020840161207f565b91505092959194509250565b60006020828403121561226c578081fd5b815161210b8161285d565b60008060408385031215612289578182fd5b82356122948161285d565b9150602083013561216a8161285d565b6000602082840312156122b5578081fd5b5035919050565b600080604083850312156122ce578182fd5b82359150602083013561216a81612845565b600080600080608085870312156122f5578384fd5b8435935060208501359250604085013561230e8161285d565b9150606085013561231e8161285d565b939692955090935050565b60008151808452815b8181101561234e57602081850181015186830182015201612332565b8181111561235f5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156123e25783516001600160a01b0316835292840192918401916001016123bd565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156123e25783518352928401929184019160010161240a565b901515815260200190565b90815260200190565b600060c0825261244d60c0830189612329565b6001600160a01b03881660208401526040830187905282810360608401526124758187612329565b9415156080840152505060a00152949350505050565b602080825260159082015274151a5b59481cdd1a5b1b081b9bdd081c185cdcd959605a1b604082015260600190565b6020808252601390820152721a5b9d985b1a59081c995c5d5a5c995b595b9d606a1b604082015260600190565b6020808252600c908201526b4f776e65722065786973747360a01b604082015260600190565b6020808252600d908201526c1b9bdd0818dbdb999a5c9b5959609a1b604082015260600190565b60208082526019908201527f546f6b656e20616464726573732063616e6e6f74206265203000000000000000604082015260600190565b602080825260119082015270105b1c9958591e481c995c5d595cdd1959607a1b604082015260600190565b6020808252601490820152731a5cc8185b1c9958591e4818dbdb999a5c9b595960621b604082015260600190565b6020808252600f908201526e1859191c995cdcc81a5cc81b9d5b1b608a1b604082015260600190565b60208082526010908201526f151e08191bd95cdb89dd08195e1a5cdd60821b604082015260600190565b6020808252600b908201526a13db9b1e481dd85b1b195d60aa1b604082015260600190565b6020808252601290820152710616d6f756e742063616e6e6f7420626520360741b604082015260600190565b6020808252601390820152721d1e08185b1c9958591e48195e1958dd5d1959606a1b604082015260600190565b6020808252600d908201526c4e6f7420556e6c6f636b696e6760981b604082015260600190565b6020808252601590820152744f776e657220646f6573206e6f742065786973747360581b604082015260600190565b6020808252601d908201527f726563697069656e7420616464726573732063616e6e6f742062652030000000604082015260600190565b600060208252825160c0602084015261273e60e0840182612329565b905060018060a01b036020850151166040840152604084015160608401526060840151601f198483030160808501526127778282612329565b9150506080840151151560a084015260a084015160c08401528091505092915050565b600082198211156127ad576127ad612819565b500190565b6000828210156127c4576127c4612819565b500390565b6002810460018216806127dd57607f821691505b60208210811415610feb57634e487b7160e01b600052602260045260246000fd5b600060001982141561281257612812612819565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461285a57600080fd5b50565b801515811461285a57600080fdfea2646970667358221220a4477b614d27b3d572423b93da243f55d9f4c9df37ee28aeccae89e3596c426664736f6c63430008000033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $2,655.74 | 0.0006134 | $1.63 |
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.