Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
MultiSigWallet
Compiler Version
v0.4.4+commit.4633f3de
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-06-22 */ pragma solidity 0.4.4; /// @title Multisignature wallet - Allows multiple parties to agree on transactions before execution. /// @author Stefan George - <[email protected]> contract MultiSigWallet { uint constant public MAX_OWNER_COUNT = 50; event Confirmation(address indexed sender, uint indexed transactionId); event Revocation(address indexed sender, uint indexed transactionId); event Submission(uint indexed transactionId); event Execution(uint indexed transactionId); event ExecutionFailure(uint indexed transactionId); event Deposit(address indexed sender, uint value); event OwnerAddition(address indexed owner); event OwnerRemoval(address indexed owner); event RequirementChange(uint required); mapping (uint => Transaction) public transactions; mapping (uint => mapping (address => bool)) public confirmations; mapping (address => bool) public isOwner; address[] public owners; uint public required; uint public transactionCount; struct Transaction { address destination; uint value; bytes data; bool executed; } modifier onlyWallet() { if (msg.sender != address(this)) throw; _; } modifier ownerDoesNotExist(address owner) { if (isOwner[owner]) throw; _; } modifier ownerExists(address owner) { if (!isOwner[owner]) throw; _; } modifier transactionExists(uint transactionId) { if (transactions[transactionId].destination == 0) throw; _; } modifier confirmed(uint transactionId, address owner) { if (!confirmations[transactionId][owner]) throw; _; } modifier notConfirmed(uint transactionId, address owner) { if (confirmations[transactionId][owner]) throw; _; } modifier notExecuted(uint transactionId) { if (transactions[transactionId].executed) throw; _; } modifier notNull(address _address) { if (_address == 0) throw; _; } modifier validRequirement(uint ownerCount, uint _required) { if ( ownerCount > MAX_OWNER_COUNT || _required > ownerCount || _required == 0 || ownerCount == 0) throw; _; } /// @dev Fallback function allows to deposit ether. function() payable { if (msg.value > 0) 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. function MultiSigWallet(address[] _owners, uint _required) public validRequirement(_owners.length, _required) { for (uint i=0; i<_owners.length; i++) { if (isOwner[_owners[i]] || _owners[i] == 0) throw; 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. function addOwner(address owner) public onlyWallet ownerDoesNotExist(owner) notNull(owner) validRequirement(owners.length + 1, required) { isOwner[owner] = true; owners.push(owner); OwnerAddition(owner); } /// @dev Allows to remove an owner. Transaction has to be sent by wallet. /// @param owner Address of owner. function removeOwner(address owner) public onlyWallet ownerExists(owner) { isOwner[owner] = false; for (uint i=0; i<owners.length - 1; i++) if (owners[i] == owner) { owners[i] = owners[owners.length - 1]; break; } owners.length -= 1; if (required > owners.length) changeRequirement(owners.length); 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 owner Address of new owner. function replaceOwner(address owner, address newOwner) public onlyWallet ownerExists(owner) ownerDoesNotExist(newOwner) { for (uint i=0; i<owners.length; i++) if (owners[i] == owner) { owners[i] = newOwner; break; } isOwner[owner] = false; isOwner[newOwner] = true; OwnerRemoval(owner); 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(uint _required) public onlyWallet validRequirement(owners.length, _required) { required = _required; 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, uint value, bytes data) public returns (uint transactionId) { transactionId = addTransaction(destination, value, data); confirmTransaction(transactionId); } /// @dev Allows an owner to confirm a transaction. /// @param transactionId Transaction ID. function confirmTransaction(uint transactionId) public ownerExists(msg.sender) transactionExists(transactionId) notConfirmed(transactionId, msg.sender) { confirmations[transactionId][msg.sender] = true; Confirmation(msg.sender, transactionId); executeTransaction(transactionId); } /// @dev Allows an owner to revoke a confirmation for a transaction. /// @param transactionId Transaction ID. function revokeConfirmation(uint transactionId) public ownerExists(msg.sender) confirmed(transactionId, msg.sender) notExecuted(transactionId) { confirmations[transactionId][msg.sender] = false; Revocation(msg.sender, transactionId); } /// @dev Allows anyone to execute a confirmed transaction. /// @param transactionId Transaction ID. function executeTransaction(uint transactionId) public notExecuted(transactionId) { if (isConfirmed(transactionId)) { Transaction tx = transactions[transactionId]; tx.executed = true; if (tx.destination.call.value(tx.value)(tx.data)) Execution(transactionId); else { ExecutionFailure(transactionId); tx.executed = false; } } } /// @dev Returns the confirmation status of a transaction. /// @param transactionId Transaction ID. /// @return Confirmation status. function isConfirmed(uint transactionId) public constant returns (bool) { uint count = 0; for (uint i=0; i<owners.length; i++) { if (confirmations[transactionId][owners[i]]) count += 1; if (count == required) return true; } } /* * 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, uint value, bytes data) internal notNull(destination) returns (uint transactionId) { transactionId = transactionCount; transactions[transactionId] = Transaction({ destination: destination, value: value, data: data, executed: false }); transactionCount += 1; Submission(transactionId); } /* * Web3 call functions */ /// @dev Returns number of confirmations of a transaction. /// @param transactionId Transaction ID. /// @return Number of confirmations. function getConfirmationCount(uint transactionId) public constant returns (uint count) { for (uint 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) public constant returns (uint count) { for (uint i=0; i<transactionCount; i++) if ( pending && !transactions[i].executed || executed && transactions[i].executed) count += 1; } /// @dev Returns list of owners. /// @return List of owner addresses. function getOwners() public constant returns (address[]) { return owners; } /// @dev Returns array with owner addresses, which confirmed transaction. /// @param transactionId Transaction ID. /// @return Returns array of owner addresses. function getConfirmations(uint transactionId) public constant returns (address[] _confirmations) { address[] memory confirmationsTemp = new address[](owners.length); uint count = 0; uint 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(uint from, uint to, bool pending, bool executed) public constant returns (uint[] _transactionIds) { uint[] memory transactionIdsTemp = new uint[](transactionCount); uint count = 0; uint i; for (i=0; i<transactionCount; i++) if ( pending && !transactions[i].executed || executed && transactions[i].executed) { transactionIdsTemp[count] = i; count += 1; } _transactionIds = new uint[](to - from); for (i=from; i<to; i++) _transactionIds[i - from] = transactionIdsTemp[i]; } } /// @title Multisignature wallet with daily limit - Allows an owner to withdraw a daily limit without multisig. /// @author Stefan George - <[email protected]> contract MultiSigWalletWithDailyLimit is MultiSigWallet { event DailyLimitChange(uint dailyLimit); uint public dailyLimit; uint public lastDay; uint public spentToday; /* * Public functions */ /// @dev Contract constructor sets initial owners, required number of confirmations and daily withdraw limit. /// @param _owners List of initial owners. /// @param _required Number of required confirmations. /// @param _dailyLimit Amount in wei, which can be withdrawn without confirmations on a daily basis. function MultiSigWalletWithDailyLimit(address[] _owners, uint _required, uint _dailyLimit) public MultiSigWallet(_owners, _required) { dailyLimit = _dailyLimit; } /// @dev Allows to change the daily limit. Transaction has to be sent by wallet. /// @param _dailyLimit Amount in wei. function changeDailyLimit(uint _dailyLimit) public onlyWallet { dailyLimit = _dailyLimit; DailyLimitChange(_dailyLimit); } /// @dev Allows anyone to execute a confirmed transaction or ether withdraws until daily limit is reached. /// @param transactionId Transaction ID. function executeTransaction(uint transactionId) public notExecuted(transactionId) { Transaction tx = transactions[transactionId]; bool confirmed = isConfirmed(transactionId); if (confirmed || tx.data.length == 0 && isUnderLimit(tx.value)) { tx.executed = true; if (!confirmed) spentToday += tx.value; if (tx.destination.call.value(tx.value)(tx.data)) Execution(transactionId); else { ExecutionFailure(transactionId); tx.executed = false; if (!confirmed) spentToday -= tx.value; } } } /* * Internal functions */ /// @dev Returns if amount is within daily limit and resets spentToday after one day. /// @param amount Amount to withdraw. /// @return Returns if amount is under daily limit. function isUnderLimit(uint amount) internal returns (bool) { if (now > lastDay + 24 hours) { lastDay = now; spentToday = 0; } if (spentToday + amount > dailyLimit || spentToday + amount < spentToday) return false; return true; } /* * Web3 call functions */ /// @dev Returns maximum withdraw amount. /// @return Returns amount. function calcMaxWithdraw() public constant returns (uint) { if (now > lastDay + 24 hours) return dailyLimit; return dailyLimit - spentToday; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"owners","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"removeOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"revokeConfirmation","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"confirmations","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"pending","type":"bool"},{"name":"executed","type":"bool"}],"name":"getTransactionCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"addOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"isConfirmed","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"getConfirmationCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"transactions","outputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"},{"name":"executed","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getOwners","outputs":[{"name":"","type":"address[]"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"from","type":"uint256"},{"name":"to","type":"uint256"},{"name":"pending","type":"bool"},{"name":"executed","type":"bool"}],"name":"getTransactionIds","outputs":[{"name":"_transactionIds","type":"uint256[]"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"getConfirmations","outputs":[{"name":"_confirmations","type":"address[]"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"transactionCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_required","type":"uint256"}],"name":"changeRequirement","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"confirmTransaction","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"submitTransaction","outputs":[{"name":"transactionId","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MAX_OWNER_COUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"required","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"newOwner","type":"address"}],"name":"replaceOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"executeTransaction","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"_owners","type":"address[]"},{"name":"_required","type":"uint256"}],"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Confirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Revocation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Submission","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Execution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"ExecutionFailure","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerAddition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerRemoval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"required","type":"uint256"}],"name":"RequirementChange","type":"event"}]
Contract Creation Code
606060405260405161148a38038061148a8339810160405280516080519101906000825182603282118061003257508181115b8061003b575080155b80610044575081155b1561004e57610002565b600092505b84518310156100c6576002600050600086858151811015610002576020908102909101810151600160a060020a031682528101919091526040016000205460ff16806100bc5750848381518110156100025790602001906020020151600160a060020a03166000145b1561014b57610002565b845160038054828255600082905290917fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b918201916020890182156101c5579160200282015b828111156101c55782518254600160a060020a0319166c010000000000000000000000009182029190910417825560209092019160019091019061010c565b600160026000506000878681518110156100025790602001906020020151600160a060020a0316815260200190815260200160002060006101000a81548160ff02191690837f0100000000000000000000000000000000000000000000000000000000000000908102040217905550600190920191610053565b506101eb9291505b80821115610205578054600160a060020a03191681556001016101cd565b505060048490555050505050611281806102096000396000f35b509056606060405236156100fb5760e060020a6000350463025e7c278114610149578063173825d91461017b57806320ea8d86146101a85780632f54bf6e146101dc5780633411c81c146101fc57806354741525146102295780637065cb481461029d578063784547a7146102c85780638b51d13f146102d85780639ace38c21461034c578063a0e67e2b14610387578063a8abe69a146103f6578063b5dc40c3146104d5578063b77bf600146105e1578063ba51a6df146105ef578063c01a8c841461061b578063c64274741461062b578063d74f8edd1461069c578063dc8452cd146106a9578063e20056e6146106b7578063ee22610b146106e7575b6106f7600034111561014757604080513481529051600160a060020a033316917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b565b34610002576106f960043560038054829081101561000257600091825260209091200154600160a060020a0316905081565b34610002576106f7600435600030600160a060020a031633600160a060020a031614151561095757610002565b34610002576106f7600435600160a060020a033390811660009081526002602052604090205460ff161515610b9d57610002565b346100025761071560043560026020526000908152604090205460ff1681565b34610002576001602090815260043560009081526040808220909252602435815220546107159060ff1681565b34610002576107296004356024356000805b600554811015610c4c57838015610264575060008181526020819052604090206003015460ff16155b806102885750828015610288575060008181526020819052604090206003015460ff165b1561029557600191909101905b60010161023b565b34610002576106f760043530600160a060020a031633600160a060020a0316141515610c5357610002565b3461000257610715600435610740565b34610002576107296004356000805b600354811015610d83576000838152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561034457600191909101905b6001016102e7565b3461000257600060208190526004358152604090208054600182015460038301546107b893600160a060020a03909316926002019060ff1684565b34610002576040805160208082018352600082526003805484518184028101840190955280855261086294928301828280156103ec57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116103ce575b5050505050905090565b346100025761086260043560243560443560643560408051602081810183526000808352835191820184528082526005549351929391929091829180591061043b5750595b908082528060200260200182016040528015610452575b509250600091508190505b600554811015610d8957858015610486575060008181526020819052604090206003015460ff16155b806104aa57508480156104aa575060008181526020819052604090206003015460ff165b156104cd5780838381518110156100025760209081029091010152600191909101905b60010161045d565b34610002576108626004356040805160208181018352600080835283519182018452808252600354935192939192909182918059106105115750595b908082528060200260200182016040528015610528575b509250600091508190505b600354811015610dfe576000858152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16156105d957600380548290811015610002576000918252602090912001548351600160a060020a03909116908490849081101561000257600160a060020a03909216602092830290910190910152600191909101905b600101610533565b346100025761072960055481565b34610002576106f76004355b30600160a060020a031633600160a060020a0316141515610e7a57610002565b34610002576106f76004356108b3565b3461000257604080516020600460443581810135601f810184900484028501840190955284845261072994823594602480359560649492939190920191819084018382808284375094965050505050505060006108ac848484600083600160a060020a0381161515610ad857610002565b3461000257610729603281565b346100025761072960045481565b34610002576106f7600435602435600030600160a060020a031633600160a060020a0316141515610f4557610002565b34610002576106f7600435610936565b005b60408051600160a060020a039092168252519081900360200190f35b604080519115158252519081900360200190f35b60408051918252519081900360200190f35b6110b8835b600080805b6003548110156107b1576000848152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16156107a257600191909101905b600454821415610d7b57600192505b5050919050565b60408051600160a060020a03861681526020810185905282151560608201526080918101828152845460026000196101006001841615020190911604928201839052909160a0830190859080156108505780601f1061082557610100808354040283529160200191610850565b820191906000526020600020905b81548152906001019060200180831161083357829003601f168201915b50509550505050505060405180910390f35b60405180806020018281038252838181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050019250505060405180910390f35b9050610f3e815b33600160a060020a03811660009081526002602052604090205460ff161515610ee557610002565b6000858152600160208181526040808420600160a060020a0333168086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a3610c45855b600081815260208190526040812060030154829060ff161561073b57610002565b600160a060020a038216600090815260026020526040902054829060ff16151561098057610002565b600160a060020a0383166000908152600260205260408120805460ff1916905591505b60035460001901821015610a455782600160a060020a0316600360005083815481101561000257600091825260209091200154600160a060020a03161415610aaf57600380546000198101908110156100025760009182526020909120015460038054600160a060020a039092169184908110156100025760009182526020909120018054600160a060020a031916606060020a928302929092049190911790555b600380546000198101808355919082908015829011610aba57600083815260209020610aba918101908301610b85565b604051600160a060020a038416907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a25b505050565b6001909101906109a3565b505060035460045411159150610a75905057600354610a75906105fb565b60055460408051608081018252878152602080820188815282840188815260006060850181905286815280845294852084518154606060020a91820291909104600160a060020a031990911617815591516001808401919091559051805160028085018054818a5298879020999b5096989497601f948116156101000260001901160483018590048401949093929101908390106111ef57805160ff19168380011785555b5061121f9291505b80821115610b995760008155600101610b85565b5090565b600082815260016020908152604080832033600160a060020a038116855292529091205483919060ff161515610bd257610002565b600084815260208190526040902060030154849060ff1615610bf357610002565b6000858152600160209081526040808320600160a060020a0333168085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35b5050505050565b5092915050565b600160a060020a038116600090815260026020526040902054819060ff1615610c7b57610002565b81600160a060020a0381161515610c9157610002565b6003546004546001909101906032821180610cab57508181115b80610cb4575080155b80610cbd575081155b15610cc757610002565b600160a060020a0385166000908152600260205260409020805460ff19166001908117909155600380549182018082559091908281838015829011610d1d57600083815260209020610d1d918101908301610b85565b50505060009283525060208220018054600160a060020a031916606060020a88810204179055604051600160a060020a038716917ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d91a25050505050565b600101610745565b50919050565b878703604051805910610d995750595b908082528060200260200182016040528015610db0575b5093508790505b86811015610df3578281815181101561000257906020019060200201518489830381518110156100025760209081029091010152600101610db7565b505050949350505050565b81604051805910610e0c5750595b908082528060200260200182016040528015610e23575b509350600090505b81811015610e72578281815181101561000257906020019060200201518482815181101561000257600160a060020a03909216602092830290910190910152600101610e2b565b505050919050565b600354816032821180610e8c57508181115b80610e95575080155b80610e9e575081155b15610ea857610002565b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b6000828152602081905260409020548290600160a060020a03161515610f0a57610002565b600083815260016020908152604080832033600160a060020a038116855292529091205484919060ff16156108db57610002565b9392505050565b600160a060020a038316600090815260026020526040902054839060ff161515610f6e57610002565b600160a060020a038316600090815260026020526040902054839060ff1615610f9657610002565b600092505b6003548310156110135784600160a060020a0316600360005084815481101561000257600091825260209091200154600160a060020a031614156110ad578360036000508481548110156100025760009182526020909120018054600160a060020a031916606060020a928302929092049190911790555b600160a060020a03808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a2604051600160a060020a038516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b600190920191610f9b565b15610aaa576000838152602081905260409081902060038101805460ff19166001908117909155815481830154935160028085018054959850600160a060020a03909316959492939192839285926000199183161561010002919091019091160480156111665780601f1061113b57610100808354040283529160200191611166565b820191906000526020600020905b81548152906001019060200180831161114957829003601f168201915b505091505060006040518083038185876185025a03f192505050156111b55760405183907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a2610aaa565b60405183907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a250600301805460ff1916905550565b82800160010185558215610b7d579182015b82811115610b7d578251826000505591602001919060010190611201565b5050606091909101516003909101805460ff191660f860020a9283029290920491909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a2509392505050560000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000006f692c070f3263d1c3400367832faf5ccc6cd2f2
Deployed Bytecode
0x606060405236156100fb5760e060020a6000350463025e7c278114610149578063173825d91461017b57806320ea8d86146101a85780632f54bf6e146101dc5780633411c81c146101fc57806354741525146102295780637065cb481461029d578063784547a7146102c85780638b51d13f146102d85780639ace38c21461034c578063a0e67e2b14610387578063a8abe69a146103f6578063b5dc40c3146104d5578063b77bf600146105e1578063ba51a6df146105ef578063c01a8c841461061b578063c64274741461062b578063d74f8edd1461069c578063dc8452cd146106a9578063e20056e6146106b7578063ee22610b146106e7575b6106f7600034111561014757604080513481529051600160a060020a033316917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b565b34610002576106f960043560038054829081101561000257600091825260209091200154600160a060020a0316905081565b34610002576106f7600435600030600160a060020a031633600160a060020a031614151561095757610002565b34610002576106f7600435600160a060020a033390811660009081526002602052604090205460ff161515610b9d57610002565b346100025761071560043560026020526000908152604090205460ff1681565b34610002576001602090815260043560009081526040808220909252602435815220546107159060ff1681565b34610002576107296004356024356000805b600554811015610c4c57838015610264575060008181526020819052604090206003015460ff16155b806102885750828015610288575060008181526020819052604090206003015460ff165b1561029557600191909101905b60010161023b565b34610002576106f760043530600160a060020a031633600160a060020a0316141515610c5357610002565b3461000257610715600435610740565b34610002576107296004356000805b600354811015610d83576000838152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561034457600191909101905b6001016102e7565b3461000257600060208190526004358152604090208054600182015460038301546107b893600160a060020a03909316926002019060ff1684565b34610002576040805160208082018352600082526003805484518184028101840190955280855261086294928301828280156103ec57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116103ce575b5050505050905090565b346100025761086260043560243560443560643560408051602081810183526000808352835191820184528082526005549351929391929091829180591061043b5750595b908082528060200260200182016040528015610452575b509250600091508190505b600554811015610d8957858015610486575060008181526020819052604090206003015460ff16155b806104aa57508480156104aa575060008181526020819052604090206003015460ff165b156104cd5780838381518110156100025760209081029091010152600191909101905b60010161045d565b34610002576108626004356040805160208181018352600080835283519182018452808252600354935192939192909182918059106105115750595b908082528060200260200182016040528015610528575b509250600091508190505b600354811015610dfe576000858152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16156105d957600380548290811015610002576000918252602090912001548351600160a060020a03909116908490849081101561000257600160a060020a03909216602092830290910190910152600191909101905b600101610533565b346100025761072960055481565b34610002576106f76004355b30600160a060020a031633600160a060020a0316141515610e7a57610002565b34610002576106f76004356108b3565b3461000257604080516020600460443581810135601f810184900484028501840190955284845261072994823594602480359560649492939190920191819084018382808284375094965050505050505060006108ac848484600083600160a060020a0381161515610ad857610002565b3461000257610729603281565b346100025761072960045481565b34610002576106f7600435602435600030600160a060020a031633600160a060020a0316141515610f4557610002565b34610002576106f7600435610936565b005b60408051600160a060020a039092168252519081900360200190f35b604080519115158252519081900360200190f35b60408051918252519081900360200190f35b6110b8835b600080805b6003548110156107b1576000848152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16156107a257600191909101905b600454821415610d7b57600192505b5050919050565b60408051600160a060020a03861681526020810185905282151560608201526080918101828152845460026000196101006001841615020190911604928201839052909160a0830190859080156108505780601f1061082557610100808354040283529160200191610850565b820191906000526020600020905b81548152906001019060200180831161083357829003601f168201915b50509550505050505060405180910390f35b60405180806020018281038252838181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050019250505060405180910390f35b9050610f3e815b33600160a060020a03811660009081526002602052604090205460ff161515610ee557610002565b6000858152600160208181526040808420600160a060020a0333168086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a3610c45855b600081815260208190526040812060030154829060ff161561073b57610002565b600160a060020a038216600090815260026020526040902054829060ff16151561098057610002565b600160a060020a0383166000908152600260205260408120805460ff1916905591505b60035460001901821015610a455782600160a060020a0316600360005083815481101561000257600091825260209091200154600160a060020a03161415610aaf57600380546000198101908110156100025760009182526020909120015460038054600160a060020a039092169184908110156100025760009182526020909120018054600160a060020a031916606060020a928302929092049190911790555b600380546000198101808355919082908015829011610aba57600083815260209020610aba918101908301610b85565b604051600160a060020a038416907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a25b505050565b6001909101906109a3565b505060035460045411159150610a75905057600354610a75906105fb565b60055460408051608081018252878152602080820188815282840188815260006060850181905286815280845294852084518154606060020a91820291909104600160a060020a031990911617815591516001808401919091559051805160028085018054818a5298879020999b5096989497601f948116156101000260001901160483018590048401949093929101908390106111ef57805160ff19168380011785555b5061121f9291505b80821115610b995760008155600101610b85565b5090565b600082815260016020908152604080832033600160a060020a038116855292529091205483919060ff161515610bd257610002565b600084815260208190526040902060030154849060ff1615610bf357610002565b6000858152600160209081526040808320600160a060020a0333168085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35b5050505050565b5092915050565b600160a060020a038116600090815260026020526040902054819060ff1615610c7b57610002565b81600160a060020a0381161515610c9157610002565b6003546004546001909101906032821180610cab57508181115b80610cb4575080155b80610cbd575081155b15610cc757610002565b600160a060020a0385166000908152600260205260409020805460ff19166001908117909155600380549182018082559091908281838015829011610d1d57600083815260209020610d1d918101908301610b85565b50505060009283525060208220018054600160a060020a031916606060020a88810204179055604051600160a060020a038716917ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d91a25050505050565b600101610745565b50919050565b878703604051805910610d995750595b908082528060200260200182016040528015610db0575b5093508790505b86811015610df3578281815181101561000257906020019060200201518489830381518110156100025760209081029091010152600101610db7565b505050949350505050565b81604051805910610e0c5750595b908082528060200260200182016040528015610e23575b509350600090505b81811015610e72578281815181101561000257906020019060200201518482815181101561000257600160a060020a03909216602092830290910190910152600101610e2b565b505050919050565b600354816032821180610e8c57508181115b80610e95575080155b80610e9e575081155b15610ea857610002565b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b6000828152602081905260409020548290600160a060020a03161515610f0a57610002565b600083815260016020908152604080832033600160a060020a038116855292529091205484919060ff16156108db57610002565b9392505050565b600160a060020a038316600090815260026020526040902054839060ff161515610f6e57610002565b600160a060020a038316600090815260026020526040902054839060ff1615610f9657610002565b600092505b6003548310156110135784600160a060020a0316600360005084815481101561000257600091825260209091200154600160a060020a031614156110ad578360036000508481548110156100025760009182526020909120018054600160a060020a031916606060020a928302929092049190911790555b600160a060020a03808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a2604051600160a060020a038516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b600190920191610f9b565b15610aaa576000838152602081905260409081902060038101805460ff19166001908117909155815481830154935160028085018054959850600160a060020a03909316959492939192839285926000199183161561010002919091019091160480156111665780601f1061113b57610100808354040283529160200191611166565b820191906000526020600020905b81548152906001019060200180831161114957829003601f168201915b505091505060006040518083038185876185025a03f192505050156111b55760405183907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a2610aaa565b60405183907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a250600301805460ff1916905550565b82800160010185558215610b7d579182015b82811115610b7d578251826000505591602001919060010190611201565b5050606091909101516003909101805460ff191660f860020a9283029290920491909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a250939250505056
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000006f692c070f3263d1c3400367832faf5ccc6cd2f2
-----Decoded View---------------
Arg [0] : _owners (address[]): 0x6F692C070f3263d1c3400367832Faf5CcC6Cd2f2
Arg [1] : _required (uint256): 1
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 0000000000000000000000006f692c070f3263d1c3400367832faf5ccc6cd2f2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.