Overview
ETH Balance
0.00011 ETH
Eth Value
$0.37 (@ $3,401.49/ETH)More Info
Private Name Tags
ContractCreator
Latest 19 from a total of 19 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Is Signer | 15559321 | 832 days ago | IN | 0 ETH | 0.000064 | ||||
Is Signer | 15245400 | 882 days ago | IN | 0 ETH | 0.0001792 | ||||
Get Next Sequenc... | 14827269 | 951 days ago | IN | 0 ETH | 0.00125858 | ||||
Get Next Sequenc... | 14827267 | 951 days ago | IN | 0 ETH | 0.00145315 | ||||
Get Next Sequenc... | 14827253 | 951 days ago | IN | 0 ETH | 0.0013713 | ||||
Transfer | 11669546 | 1442 days ago | IN | 0 ETH | 0.00206427 | ||||
Transfer | 11544959 | 1461 days ago | IN | 0 ETH | 0.00103213 | ||||
Transfer | 11218289 | 1511 days ago | IN | 0 ETH | 0.00037457 | ||||
Is Signer | 9207499 | 1821 days ago | IN | 0 ETH | 0.00006226 | ||||
Is Signer | 6701126 | 2237 days ago | IN | 0 ETH | 0.00010551 | ||||
Get Next Sequenc... | 4352646 | 2637 days ago | IN | 0 ETH | 0.00051905 | ||||
Create Forwarder | 4352645 | 2637 days ago | IN | 0 ETH | 0.00273 | ||||
Activate Safe Mo... | 4352638 | 2637 days ago | IN | 0 ETH | 0.00189 | ||||
Create Forwarder | 4352619 | 2637 days ago | IN | 0 ETH | 0.00055395 | ||||
Is Signer | 4352502 | 2637 days ago | IN | 0 ETH | 0.00055395 | ||||
Send Multi Sig | 4352493 | 2637 days ago | IN | 0 ETH | 0.00189 | ||||
Send Multi Sig | 4352491 | 2637 days ago | IN | 0 ETH | 0.00189 | ||||
Create Forwarder | 4150979 | 2695 days ago | IN | 0 ETH | 0.00524815 | ||||
Transfer | 4150974 | 2695 days ago | IN | 0.0001 ETH | 0.00048953 |
Latest 2 internal transactions
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
4150982 | 2695 days ago | 0.00001 ETH | ||||
4150979 | 2695 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
WalletSimple
Compiler Version
v0.4.14+commit.c2215d46
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-08-13 */ pragma solidity ^0.4.14; /** * Contract that exposes the needed erc20 token functions */ contract ERC20Interface { // Send _value amount of tokens to address _to function transfer(address _to, uint256 _value) returns (bool success); // Get the account balance of another account with address _owner function balanceOf(address _owner) constant returns (uint256 balance); } /** * Contract that will forward any incoming Ether to its creator */ contract Forwarder { // Address to which any funds sent to this contract will be forwarded address public parentAddress; event ForwarderDeposited(address from, uint value, bytes data); event TokensFlushed( address tokenContractAddress, // The contract address of the token uint value // Amount of token sent ); /** * Create the contract, and set the destination address to that of the creator */ function Forwarder() { parentAddress = msg.sender; } /** * Modifier that will execute internal code block only if the sender is a parent of the forwarder contract */ modifier onlyParent { if (msg.sender != parentAddress) { throw; } _; } /** * Default function; Gets called when Ether is deposited, and forwards it to the destination address */ function() payable { if (!parentAddress.call.value(msg.value)(msg.data)) throw; // Fire off the deposited event if we can forward it ForwarderDeposited(msg.sender, msg.value, msg.data); } /** * Execute a token transfer of the full balance from the forwarder token to the main wallet contract * @param tokenContractAddress the address of the erc20 token contract */ function flushTokens(address tokenContractAddress) onlyParent { ERC20Interface instance = ERC20Interface(tokenContractAddress); var forwarderAddress = address(this); var forwarderBalance = instance.balanceOf(forwarderAddress); if (forwarderBalance == 0) { return; } if (!instance.transfer(parentAddress, forwarderBalance)) { throw; } TokensFlushed(tokenContractAddress, forwarderBalance); } /** * It is possible that funds were sent to this address before the contract was deployed. * We can flush those funds to the destination address. */ function flush() { if (!parentAddress.call.value(this.balance)()) throw; } } /** * Basic multi-signer wallet designed for use in a co-signing environment where 2 signatures are required to move funds. * Typically used in a 2-of-3 signing configuration. Uses ecrecover to allow for 2 signatures in a single transaction. */ contract WalletSimple { // Events event Deposited(address from, uint value, bytes data); event SafeModeActivated(address msgSender); event Transacted( address msgSender, // Address of the sender of the message initiating the transaction address otherSigner, // Address of the signer (second signature) used to initiate the transaction bytes32 operation, // Operation hash (sha3 of toAddress, value, data, expireTime, sequenceId) address toAddress, // The address the transaction was sent to uint value, // Amount of Wei sent to the address bytes data // Data sent when invoking the transaction ); event TokenTransacted( address msgSender, // Address of the sender of the message initiating the transaction address otherSigner, // Address of the signer (second signature) used to initiate the transaction bytes32 operation, // Operation hash (sha3 of toAddress, value, tokenContractAddress, expireTime, sequenceId) address toAddress, // The address the transaction was sent to uint value, // Amount of token sent address tokenContractAddress // The contract address of the token ); // Public fields address[] public signers; // The addresses that can co-sign transactions on the wallet bool public safeMode = false; // When active, wallet may only send to signer addresses // Internal fields uint constant SEQUENCE_ID_WINDOW_SIZE = 10; uint[10] recentSequenceIds; /** * Modifier that will execute internal code block only if the sender is an authorized signer on this wallet */ modifier onlysigner { if (!isSigner(msg.sender)) { throw; } _; } /** * Set up a simple multi-sig wallet by specifying the signers allowed to be used on this wallet. * 2 signers will be required to send a transaction from this wallet. * Note: The sender is NOT automatically added to the list of signers. * Signers CANNOT be changed once they are set * * @param allowedSigners An array of signers on the wallet */ function WalletSimple(address[] allowedSigners) { if (allowedSigners.length != 3) { // Invalid number of signers throw; } signers = allowedSigners; } /** * Gets called when a transaction is received without calling a method */ function() payable { if (msg.value > 0) { // Fire deposited event if we are receiving funds Deposited(msg.sender, msg.value, msg.data); } } /** * Create a new contract (and also address) that forwards funds to this contract * returns address of newly created forwarder address */ function createForwarder() onlysigner returns (address) { return new Forwarder(); } /** * Execute a multi-signature transaction from this wallet using 2 signers: one from msg.sender and the other from ecrecover. * The signature is a signed form (using eth.sign) of tightly packed toAddress, value, data, expireTime and sequenceId * Sequence IDs are numbers starting from 1. They are used to prevent replay attacks and may not be repeated. * * @param toAddress the destination address to send an outgoing transaction * @param value the amount in Wei to be sent * @param data the data to send to the toAddress when invoking the transaction * @param expireTime the number of seconds since 1970 for which this transaction is valid * @param sequenceId the unique sequence id obtainable from getNextSequenceId * @param signature the result of eth.sign on the operationHash sha3(toAddress, value, data, expireTime, sequenceId) */ function sendMultiSig(address toAddress, uint value, bytes data, uint expireTime, uint sequenceId, bytes signature) onlysigner { // Verify the other signer var operationHash = sha3("ETHER", toAddress, value, data, expireTime, sequenceId); var otherSigner = verifyMultiSig(toAddress, operationHash, signature, expireTime, sequenceId); // Success, send the transaction if (!(toAddress.call.value(value)(data))) { // Failed executing transaction throw; } Transacted(msg.sender, otherSigner, operationHash, toAddress, value, data); } /** * Execute a multi-signature token transfer from this wallet using 2 signers: one from msg.sender and the other from ecrecover. * The signature is a signed form (using eth.sign) of tightly packed toAddress, value, tokenContractAddress, expireTime and sequenceId * Sequence IDs are numbers starting from 1. They are used to prevent replay attacks and may not be repeated. * * @param toAddress the destination address to send an outgoing transaction * @param value the amount in tokens to be sent * @param tokenContractAddress the address of the erc20 token contract * @param expireTime the number of seconds since 1970 for which this transaction is valid * @param sequenceId the unique sequence id obtainable from getNextSequenceId * @param signature the result of eth.sign on the operationHash sha3(toAddress, value, tokenContractAddress, expireTime, sequenceId) */ function sendMultiSigToken(address toAddress, uint value, address tokenContractAddress, uint expireTime, uint sequenceId, bytes signature) onlysigner { // Verify the other signer var operationHash = sha3("ERC20", toAddress, value, tokenContractAddress, expireTime, sequenceId); var otherSigner = verifyMultiSig(toAddress, operationHash, signature, expireTime, sequenceId); ERC20Interface instance = ERC20Interface(tokenContractAddress); if (!instance.transfer(toAddress, value)) { throw; } TokenTransacted(msg.sender, otherSigner, operationHash, toAddress, value, tokenContractAddress); } /** * Execute a token flush from one of the forwarder addresses. This transfer needs only a single signature and can be done by any signer * * @param forwarderAddress the address of the forwarder address to flush the tokens from * @param tokenContractAddress the address of the erc20 token contract */ function flushForwarderTokens(address forwarderAddress, address tokenContractAddress) onlysigner { Forwarder forwarder = Forwarder(forwarderAddress); forwarder.flushTokens(tokenContractAddress); } /** * Do common multisig verification for both eth sends and erc20token transfers * * @param toAddress the destination address to send an outgoing transaction * @param operationHash the sha3 of the toAddress, value, data/tokenContractAddress and expireTime * @param signature the tightly packed signature of r, s, and v as an array of 65 bytes (returned by eth.sign) * @param expireTime the number of seconds since 1970 for which this transaction is valid * @param sequenceId the unique sequence id obtainable from getNextSequenceId * returns address of the address to send tokens or eth to */ function verifyMultiSig(address toAddress, bytes32 operationHash, bytes signature, uint expireTime, uint sequenceId) private returns (address) { var otherSigner = recoverAddressFromSignature(operationHash, signature); // Verify if we are in safe mode. In safe mode, the wallet can only send to signers if (safeMode && !isSigner(toAddress)) { // We are in safe mode and the toAddress is not a signer. Disallow! throw; } // Verify that the transaction has not expired if (expireTime < block.timestamp) { // Transaction expired throw; } // Try to insert the sequence ID. Will throw if the sequence id was invalid tryInsertSequenceId(sequenceId); if (!isSigner(otherSigner)) { // Other signer not on this wallet or operation does not match arguments throw; } if (otherSigner == msg.sender) { // Cannot approve own transaction throw; } return otherSigner; } /** * Irrevocably puts contract into safe mode. When in this mode, transactions may only be sent to signing addresses. */ function activateSafeMode() onlysigner { safeMode = true; SafeModeActivated(msg.sender); } /** * Determine if an address is a signer on this wallet * @param signer address to check * returns boolean indicating whether address is signer or not */ function isSigner(address signer) returns (bool) { // Iterate through all signers on the wallet and for (uint i = 0; i < signers.length; i++) { if (signers[i] == signer) { return true; } } return false; } /** * Gets the second signer's address using ecrecover * @param operationHash the sha3 of the toAddress, value, data/tokenContractAddress and expireTime * @param signature the tightly packed signature of r, s, and v as an array of 65 bytes (returned by eth.sign) * returns address recovered from the signature */ function recoverAddressFromSignature(bytes32 operationHash, bytes signature) private returns (address) { if (signature.length != 65) { throw; } // We need to unpack the signature, which is given as an array of 65 bytes (from eth.sign) bytes32 r; bytes32 s; uint8 v; assembly { r := mload(add(signature, 32)) s := mload(add(signature, 64)) v := and(mload(add(signature, 65)), 255) } if (v < 27) { v += 27; // Ethereum versions are 27 or 28 as opposed to 0 or 1 which is submitted by some signing libs } return ecrecover(operationHash, v, r, s); } /** * Verify that the sequence id has not been used before and inserts it. Throws if the sequence ID was not accepted. * We collect a window of up to 10 recent sequence ids, and allow any sequence id that is not in the window and * greater than the minimum element in the window. * @param sequenceId to insert into array of stored ids */ function tryInsertSequenceId(uint sequenceId) onlysigner private { // Keep a pointer to the lowest value element in the window uint lowestValueIndex = 0; for (uint i = 0; i < SEQUENCE_ID_WINDOW_SIZE; i++) { if (recentSequenceIds[i] == sequenceId) { // This sequence ID has been used before. Disallow! throw; } if (recentSequenceIds[i] < recentSequenceIds[lowestValueIndex]) { lowestValueIndex = i; } } if (sequenceId < recentSequenceIds[lowestValueIndex]) { // The sequence ID being used is lower than the lowest value in the window // so we cannot accept it as it may have been used before throw; } if (sequenceId > (recentSequenceIds[lowestValueIndex] + 10000)) { // Block sequence IDs which are much higher than the lowest value // This prevents people blocking the contract by using very large sequence IDs quickly throw; } recentSequenceIds[lowestValueIndex] = sequenceId; } /** * Gets the next available sequence ID for signing when using executeAndConfirm * returns the sequenceId one higher than the highest currently stored */ function getNextSequenceId() returns (uint) { uint highestSequenceId = 0; for (uint i = 0; i < SEQUENCE_ID_WINDOW_SIZE; i++) { if (recentSequenceIds[i] > highestSequenceId) { highestSequenceId = recentSequenceIds[i]; } } return highestSequenceId + 1; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"toAddress","type":"address"},{"name":"value","type":"uint256"},{"name":"tokenContractAddress","type":"address"},{"name":"expireTime","type":"uint256"},{"name":"sequenceId","type":"uint256"},{"name":"signature","type":"bytes"}],"name":"sendMultiSigToken","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"signers","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"forwarderAddress","type":"address"},{"name":"tokenContractAddress","type":"address"}],"name":"flushForwarderTokens","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"toAddress","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"},{"name":"expireTime","type":"uint256"},{"name":"sequenceId","type":"uint256"},{"name":"signature","type":"bytes"}],"name":"sendMultiSig","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"signer","type":"address"}],"name":"isSigner","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"getNextSequenceId","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"createForwarder","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"safeMode","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"activateSafeMode","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"allowedSigners","type":"address[]"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msgSender","type":"address"}],"name":"SafeModeActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msgSender","type":"address"},{"indexed":false,"name":"otherSigner","type":"address"},{"indexed":false,"name":"operation","type":"bytes32"},{"indexed":false,"name":"toAddress","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Transacted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msgSender","type":"address"},{"indexed":false,"name":"otherSigner","type":"address"},{"indexed":false,"name":"operation","type":"bytes32"},{"indexed":false,"name":"toAddress","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"tokenContractAddress","type":"address"}],"name":"TokenTransacted","type":"event"}]
Contract Creation Code
60606040526001805460ff19169055341561001957600080fd5b60405161100c38038061100c8339810160405280805190910190505b805160031461004357600080fd5b600081805161005692916020019061005e565b505b506100f1565b8280548282559060005260206000209081019282156100b5579160200282015b828111156100b55782518254600160a060020a031916600160a060020a03919091161782556020929092019160019091019061007e565b5b506100c29291506100c6565b5090565b6100ee91905b808211156100c2578054600160a060020a03191681556001016100cc565b5090565b90565b610f0c806101006000396000f3006060604052361561007d5763ffffffff60e060020a6000350416630dcd7a6c81146100f45780632079fb9a1461016a5780632da034091461019c57806339125215146101c35780637df73e2714610275578063a0b7967b146102a8578063a68a76cc146102cd578063abe3219c146102fc578063fc0f392d14610323575b5b60003411156100f1577f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f03334600036604051600160a060020a0385168152602081018490526060604082018181529082018390526080820184848082843782019150509550505050505060405180910390a15b5b005b34156100ff57600080fd5b6100f160048035600160a060020a03908116916024803592604435169160643591608435919060c49060a43590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061033895505050505050565b005b341561017557600080fd5b6101806004356104d6565b604051600160a060020a03909116815260200160405180910390f35b34156101a757600080fd5b6100f1600160a060020a0360043581169060243516610508565b005b34156101ce57600080fd5b6100f160048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094968635966020808201359750919550606081019450604090810135860180830194503592508291601f83018190048102019051908101604052818152929190602084018383808284375094965061058995505050505050565b005b341561028057600080fd5b610294600160a060020a03600435166107ce565b604051901515815260200160405180910390f35b34156102b357600080fd5b6102bb610841565b60405190815260200160405180910390f35b34156102d857600080fd5b610180610894565b604051600160a060020a03909116815260200160405180910390f35b341561030757600080fd5b6102946108cf565b604051901515815260200160405180910390f35b341561032e57600080fd5b6100f16108d8565b005b6000806000610346336107ce565b151561035157600080fd5b88888888886040517f455243323000000000000000000000000000000000000000000000000000000081526c01000000000000000000000000600160a060020a03968716810260058301526019820195909552929094169092026039820152604d810191909152606d810191909152608d01604051809103902092506103da8984868989610939565b915086905080600160a060020a031663a9059cbb8a8a60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561043c57600080fd5b6102c65a03f1151561044d57600080fd5b50505060405180519050151561046257600080fd5b7ff3574a20a6defd7fc26917e8013cdd578db5eaa4d9a3eb54f2bb0983ad8ab40d3383858c8c8c604051600160a060020a03968716815294861660208601526040808601949094529185166060850152608084015290921660a082015260c001905180910390a15b5b505050505050505050565b60008054829081106104e457fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b6000610513336107ce565b151561051e57600080fd5b5081600160a060020a038116633ef133678360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561056e57600080fd5b6102c65a03f1151561057f57600080fd5b5050505b5b505050565b600080610595336107ce565b15156105a057600080fd5b87878787876040517f455448455200000000000000000000000000000000000000000000000000000081526c01000000000000000000000000600160a060020a038716026005820152601981018590526039810184805190602001908083835b6020831061062057805182525b601f199092019160209182019101610600565b6001836020036101000a038019825116818451161790925250505091909101938452505060208201526040908101935091505051809103902091506106688883858888610939565b905087600160a060020a0316878760405180828051906020019080838360005b838110156106a15780820151818401525b602001610688565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f19250505015156106f257600080fd5b7f59bed9ab5d78073465dd642a9e3e76dfdb7d53bcae9d09df7d0b8f5234d5a8063382848b8b8b604051600160a060020a038088168252868116602083015260408201869052841660608201526080810183905260c060a0820181815290820183818151815260200191508051906020019080838360005b838110156107835780820151818401525b60200161076a565b50505050905090810190601f1680156107b05780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15b5b5050505050505050565b6000805b6000548110156108365782600160a060020a03166000828154811015156107f557fe5b906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316141561082d576001915061083b565b5b6001016107d2565b600091505b50919050565b600080805b600a8110156108885781600282600a811061085d57fe5b0160005b5054111561087f57600281600a811061087657fe5b0160005b505491505b5b600101610846565b8160010192505b505090565b600061089f336107ce565b15156108aa57600080fd5b6108b2610b54565b604051809103906000f08015156108c857600080fd5b90505b5b90565b60015460ff1681565b6108e1336107ce565b15156108ec57600080fd5b6001805460ff1916811790557f0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a9115733604051600160a060020a03909116815260200160405180910390a15b5b565b60008061094686866109c2565b60015490915060ff168015610961575061095f876107ce565b155b1561096b57600080fd5b4284101561097857600080fd5b61098183610a78565b61098a816107ce565b151561099557600080fd5b33600160a060020a031681600160a060020a031614156109b457600080fd5b8091505b5095945050505050565b60008060008084516041146109d657600080fd5b602085015192506040850151915060ff6041860151169050601b8160ff1610156109fe57601b015b6001868285856040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515610a6357600080fd5b50506020604051035193505b50505092915050565b600080610a84336107ce565b1515610a8f57600080fd5b5060009050805b600a811015610af75782600282600a8110610aad57fe5b0160005b50541415610abe57600080fd5b600282600a8110610acb57fe5b0160005b5054600282600a8110610ade57fe5b0160005b50541015610aee578091505b5b600101610a96565b600282600a8110610b0457fe5b0160005b5054831015610b1657600080fd5b600282600a8110610b2357fe5b0160005b505461271001831115610b3957600080fd5b82600283600a8110610b4757fe5b0160005b50555b5b505050565b60405161037c80610b658339019056006060604052341561000f57600080fd5b5b60008054600160a060020a03191633600160a060020a03161790555b5b6103408061003c6000396000f3006060604052361561003a5763ffffffff60e060020a600035041662821de381146100eb5780633ef133671461011a5780636b9f96ea1461013b575b5b60008054600160a060020a0316903490366040518083838082843782019150509250505060006040518083038185876187965a03f192505050151561007f57600080fd5b7f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051600160a060020a0385168152602081018490526060604082018181529082018390526080820184848082843782019150509550505050505060405180910390a15b005b34156100f657600080fd5b6100fe610150565b604051600160a060020a03909116815260200160405180910390f35b341561012557600080fd5b6100e9600160a060020a036004351661015f565b005b341561014657600080fd5b6100e96102dc565b005b600054600160a060020a031681565b600080548190819033600160a060020a0390811691161461017f57600080fd5b83925030915082600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156101dc57600080fd5b6102c65a03f115156101ed57600080fd5b5050506040518051915050801515610204576102d5565b60008054600160a060020a038086169263a9059cbb929091169084906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561026a57600080fd5b6102c65a03f1151561027b57600080fd5b50505060405180519050151561029057600080fd5b7f9401e4e79c19cbe2bd774cb70a94ba660e6718be1bac1298ab3b07f454a608218482604051600160a060020a03909216825260208201526040908101905180910390a15b5b50505050565b600054600160a060020a039081169030163160405160006040518083038185876187965a03f192505050151561031157600080fd5b5b5600a165627a7a72305820d0f8838ba17108a895d34ae8ef3bff4e0dc9d639c3c51921fee1d17eaa8037210029a165627a7a723058202a6e0c0758687b7db0ac38676ef952bba28bd4a5a580a99285dd37ea18d4fc0a002900000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000058251232c086247ca91998472245d8ae213666c000000000000000000000000b1b359cb06b3a40c53b2fa5ec112214626bc187a000000000000000000000000bcbd7ec77f3f286bdafcde2a3720e39e93a726c6
Deployed Bytecode
0x6060604052361561007d5763ffffffff60e060020a6000350416630dcd7a6c81146100f45780632079fb9a1461016a5780632da034091461019c57806339125215146101c35780637df73e2714610275578063a0b7967b146102a8578063a68a76cc146102cd578063abe3219c146102fc578063fc0f392d14610323575b5b60003411156100f1577f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f03334600036604051600160a060020a0385168152602081018490526060604082018181529082018390526080820184848082843782019150509550505050505060405180910390a15b5b005b34156100ff57600080fd5b6100f160048035600160a060020a03908116916024803592604435169160643591608435919060c49060a43590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061033895505050505050565b005b341561017557600080fd5b6101806004356104d6565b604051600160a060020a03909116815260200160405180910390f35b34156101a757600080fd5b6100f1600160a060020a0360043581169060243516610508565b005b34156101ce57600080fd5b6100f160048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094968635966020808201359750919550606081019450604090810135860180830194503592508291601f83018190048102019051908101604052818152929190602084018383808284375094965061058995505050505050565b005b341561028057600080fd5b610294600160a060020a03600435166107ce565b604051901515815260200160405180910390f35b34156102b357600080fd5b6102bb610841565b60405190815260200160405180910390f35b34156102d857600080fd5b610180610894565b604051600160a060020a03909116815260200160405180910390f35b341561030757600080fd5b6102946108cf565b604051901515815260200160405180910390f35b341561032e57600080fd5b6100f16108d8565b005b6000806000610346336107ce565b151561035157600080fd5b88888888886040517f455243323000000000000000000000000000000000000000000000000000000081526c01000000000000000000000000600160a060020a03968716810260058301526019820195909552929094169092026039820152604d810191909152606d810191909152608d01604051809103902092506103da8984868989610939565b915086905080600160a060020a031663a9059cbb8a8a60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561043c57600080fd5b6102c65a03f1151561044d57600080fd5b50505060405180519050151561046257600080fd5b7ff3574a20a6defd7fc26917e8013cdd578db5eaa4d9a3eb54f2bb0983ad8ab40d3383858c8c8c604051600160a060020a03968716815294861660208601526040808601949094529185166060850152608084015290921660a082015260c001905180910390a15b5b505050505050505050565b60008054829081106104e457fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b6000610513336107ce565b151561051e57600080fd5b5081600160a060020a038116633ef133678360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561056e57600080fd5b6102c65a03f1151561057f57600080fd5b5050505b5b505050565b600080610595336107ce565b15156105a057600080fd5b87878787876040517f455448455200000000000000000000000000000000000000000000000000000081526c01000000000000000000000000600160a060020a038716026005820152601981018590526039810184805190602001908083835b6020831061062057805182525b601f199092019160209182019101610600565b6001836020036101000a038019825116818451161790925250505091909101938452505060208201526040908101935091505051809103902091506106688883858888610939565b905087600160a060020a0316878760405180828051906020019080838360005b838110156106a15780820151818401525b602001610688565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f19250505015156106f257600080fd5b7f59bed9ab5d78073465dd642a9e3e76dfdb7d53bcae9d09df7d0b8f5234d5a8063382848b8b8b604051600160a060020a038088168252868116602083015260408201869052841660608201526080810183905260c060a0820181815290820183818151815260200191508051906020019080838360005b838110156107835780820151818401525b60200161076a565b50505050905090810190601f1680156107b05780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15b5b5050505050505050565b6000805b6000548110156108365782600160a060020a03166000828154811015156107f557fe5b906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316141561082d576001915061083b565b5b6001016107d2565b600091505b50919050565b600080805b600a8110156108885781600282600a811061085d57fe5b0160005b5054111561087f57600281600a811061087657fe5b0160005b505491505b5b600101610846565b8160010192505b505090565b600061089f336107ce565b15156108aa57600080fd5b6108b2610b54565b604051809103906000f08015156108c857600080fd5b90505b5b90565b60015460ff1681565b6108e1336107ce565b15156108ec57600080fd5b6001805460ff1916811790557f0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a9115733604051600160a060020a03909116815260200160405180910390a15b5b565b60008061094686866109c2565b60015490915060ff168015610961575061095f876107ce565b155b1561096b57600080fd5b4284101561097857600080fd5b61098183610a78565b61098a816107ce565b151561099557600080fd5b33600160a060020a031681600160a060020a031614156109b457600080fd5b8091505b5095945050505050565b60008060008084516041146109d657600080fd5b602085015192506040850151915060ff6041860151169050601b8160ff1610156109fe57601b015b6001868285856040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515610a6357600080fd5b50506020604051035193505b50505092915050565b600080610a84336107ce565b1515610a8f57600080fd5b5060009050805b600a811015610af75782600282600a8110610aad57fe5b0160005b50541415610abe57600080fd5b600282600a8110610acb57fe5b0160005b5054600282600a8110610ade57fe5b0160005b50541015610aee578091505b5b600101610a96565b600282600a8110610b0457fe5b0160005b5054831015610b1657600080fd5b600282600a8110610b2357fe5b0160005b505461271001831115610b3957600080fd5b82600283600a8110610b4757fe5b0160005b50555b5b505050565b60405161037c80610b658339019056006060604052341561000f57600080fd5b5b60008054600160a060020a03191633600160a060020a03161790555b5b6103408061003c6000396000f3006060604052361561003a5763ffffffff60e060020a600035041662821de381146100eb5780633ef133671461011a5780636b9f96ea1461013b575b5b60008054600160a060020a0316903490366040518083838082843782019150509250505060006040518083038185876187965a03f192505050151561007f57600080fd5b7f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051600160a060020a0385168152602081018490526060604082018181529082018390526080820184848082843782019150509550505050505060405180910390a15b005b34156100f657600080fd5b6100fe610150565b604051600160a060020a03909116815260200160405180910390f35b341561012557600080fd5b6100e9600160a060020a036004351661015f565b005b341561014657600080fd5b6100e96102dc565b005b600054600160a060020a031681565b600080548190819033600160a060020a0390811691161461017f57600080fd5b83925030915082600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156101dc57600080fd5b6102c65a03f115156101ed57600080fd5b5050506040518051915050801515610204576102d5565b60008054600160a060020a038086169263a9059cbb929091169084906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561026a57600080fd5b6102c65a03f1151561027b57600080fd5b50505060405180519050151561029057600080fd5b7f9401e4e79c19cbe2bd774cb70a94ba660e6718be1bac1298ab3b07f454a608218482604051600160a060020a03909216825260208201526040908101905180910390a15b5b50505050565b600054600160a060020a039081169030163160405160006040518083038185876187965a03f192505050151561031157600080fd5b5b5600a165627a7a72305820d0f8838ba17108a895d34ae8ef3bff4e0dc9d639c3c51921fee1d17eaa8037210029a165627a7a723058202a6e0c0758687b7db0ac38676ef952bba28bd4a5a580a99285dd37ea18d4fc0a0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000058251232c086247ca91998472245d8ae213666c000000000000000000000000b1b359cb06b3a40c53b2fa5ec112214626bc187a000000000000000000000000bcbd7ec77f3f286bdafcde2a3720e39e93a726c6
-----Decoded View---------------
Arg [0] : allowedSigners (address[]): 0x058251232C086247cA91998472245D8Ae213666c,0xB1b359CB06B3a40c53b2fa5Ec112214626bc187A,0xbcBD7ec77f3f286BDaFcDE2A3720E39e93A726C6
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [2] : 000000000000000000000000058251232c086247ca91998472245d8ae213666c
Arg [3] : 000000000000000000000000b1b359cb06b3a40c53b2fa5ec112214626bc187a
Arg [4] : 000000000000000000000000bcbd7ec77f3f286bdafcde2a3720e39e93a726c6
Swarm Source
bzzr://2a6e0c0758687b7db0ac38676ef952bba28bd4a5a580a99285dd37ea18d4fc0a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,400.22 | 0.00011 | $0.374024 |
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.