Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 2 internal transactions
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0x8dde4b352ce05855342883319c24b05726ae2beddd28c1fbd3c4e2262fff784e | 9238342 | 814 days 17 hrs ago | 0x2b2180a92a686cfc03599b9e5027e35b9448e9f3 | Contract Creation | 0 MATIC | ||
0x8b93e13814d1b66424f7f30862e32f0aba83b12a2102d327052b3dc1285c29dd | 7463520 | 857 days 4 hrs ago | 0x2b2180a92a686cfc03599b9e5027e35b9448e9f3 | Contract Creation | 0 MATIC |
[ Download CSV Export ]
Contract Name:
EVSignerControl
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-06-30 */ /* Copyright BlockVigil, Inc. 2019 */ pragma solidity ^0.5.7; contract SignerControlBase { event PrimaryOwnerAddition(address indexed owner); event SecondaryOwnerAddition(address indexed owner); event PrimaryOwnerRemoval(address indexed owner); event SecondaryOwnerRemoval(address indexed owner); event RequirementChange(uint required); ///events related to transactions agreed through this contract event TransactionSubmission(uint transactionId); event TransactionConfirmation(address indexed sender, uint indexed transactionId); event TransactionRevocation(address indexed sender, uint indexed transactionId); event TransactionExecution(uint transactionId); event TransactionExecutionFailure(uint transactionId); uint constant MAX_OWNER_COUNT = 50; mapping (address => bool) public isPrimaryOwner; mapping (address => bool) public isSecondaryOwner; mapping (uint => mapping (address => bool)) public confirmations; mapping (uint => Transaction) public transactions; mapping (uint => mapping (address => bool)) public transactionConfirmations; address[] public primaryOwners; address[] public secondaryOwners; uint public required_confirmations; // required for signer address modifications and secondary ownership modifications uint public requestCount; uint public transactionCount; ///holds information on transactions to enable safe execution of ownership functions struct Transaction { address destination; uint value; bytes data; bool executed; } modifier valid_requirements(uint ownerCount, uint _required) { if ( ownerCount > MAX_OWNER_COUNT || _required > ownerCount || _required == 0 || ownerCount == 0) revert(); _; } modifier primaryOwnerDoesNotExist(address owner) { if (isPrimaryOwner[owner]) revert("Primary Owner already exists"); _; } modifier primaryOwnerExists(address owner) { if (!isPrimaryOwner[owner]) revert(); _; } modifier PrimaryOrSecondaryOwnerExists(address owner) { if(!isPrimaryOwner[owner] && !isSecondaryOwner[owner]) revert('Not an owner'); _; } modifier PrimaryOrSecondaryOwnerDoesNotExist(address owner) { if(isPrimaryOwner[owner] || isSecondaryOwner[owner]) revert('Already an owner'); _; } modifier onlySignerControl() { if (msg.sender != address(this)) revert("Only SignerControl contract can perform this task"); _; } modifier notNull(address _address) { if (_address == address(0)) revert("Null address specified"); _; } modifier transactionExists(uint _transactionid) { if (transactions[_transactionid].destination == address(0)) revert("Transaction ID does not exist"); _; } modifier transactionNotConfirmed(uint transactionId, address _sender) { if (transactionConfirmations[transactionId][_sender]) revert("Transaction already confirmed"); _; } modifier confirmed(uint request_id, address _sender) { if (!confirmations[request_id][_sender]) revert("Request was never confirmed to be revoked"); _; } modifier transactionNotExecuted(uint transactionId) { if (transactions[transactionId].executed) revert("Transaction has already been executed"); _; } constructor (address[] memory _primaryOwners, address[] memory _secondaryOwners, uint _required_confirmations) public valid_requirements(_primaryOwners.length+_secondaryOwners.length, _required_confirmations) { uint i; for (i=0; i<_primaryOwners.length; i++) { if (isPrimaryOwner[_primaryOwners[i]] || _primaryOwners[i] == address(0)) revert(); isPrimaryOwner[_primaryOwners[i]] = true; } for (i=0; i<_secondaryOwners.length; i++) { if (isSecondaryOwner[_secondaryOwners[i]] || _secondaryOwners[i] == address(0)) revert(); isSecondaryOwner[_secondaryOwners[i]] = true; } primaryOwners = _primaryOwners; secondaryOwners = _secondaryOwners; required_confirmations = _required_confirmations; } /// @dev Allows to add a new primary owner. Transaction has to be sent by prepopulated primary accounts supplied during contract instantiation. /// @param newPrimaryOwner Address of new primary owner. function addPrimaryOwner(address newPrimaryOwner) public primaryOwnerExists(msg.sender) primaryOwnerDoesNotExist(newPrimaryOwner) notNull(newPrimaryOwner) valid_requirements(primaryOwners.length + secondaryOwners.length + 1, required_confirmations) { isPrimaryOwner[newPrimaryOwner] = true; primaryOwners.push(newPrimaryOwner); emit PrimaryOwnerAddition(newPrimaryOwner); } /// @dev Allows to remove a primary owner. Transaction has to be sent by an existing primary owner /// @param owner Address of owner to be removed function removePrimaryOwner(address owner) public primaryOwnerExists(msg.sender) primaryOwnerExists(owner) valid_requirements(primaryOwners.length + secondaryOwners.length -1, required_confirmations) { isPrimaryOwner[owner] = false; for (uint i=0; i<primaryOwners.length - 1; i++) if (primaryOwners[i] == owner) { primaryOwners[i] = primaryOwners[primaryOwners.length - 1]; break; } primaryOwners.length -= 1; // this depends on the fact that primaryOwnerExists() if (required_confirmations > primaryOwners.length + secondaryOwners.length) changeRequirement(primaryOwners.length + secondaryOwners.length); emit PrimaryOwnerRemoval(owner); } /// @dev Allows to change the number of required confirmations. Transaction has to be sent by a primary owner /// @param _required Number of required confirmations. function changeRequirement(uint _required) public valid_requirements(primaryOwners.length + secondaryOwners.length, _required) { if (!isPrimaryOwner[msg.sender]) revert(); required_confirmations = _required; emit RequirementChange(_required); } /// @dev Allows to replace a primary owner with a new owner. Only allowed to be executed by an existing primary owner. /// @param owner Address of owner to be replaced. /// @param newOwner Address of new owner. function replacePrimaryOwner(address owner, address newOwner) public primaryOwnerExists(msg.sender) { for (uint i=0; i<primaryOwners.length; i++) if (primaryOwners[i] == owner) { primaryOwners[i] = newOwner; break; } isPrimaryOwner[owner] = false; isPrimaryOwner[newOwner] = true; emit PrimaryOwnerRemoval(owner); emit PrimaryOwnerAddition(newOwner); } /// @dev Allows to add a new second owner. Transaction has to be sent only the current instance of SignerControl contract. /// @param newSecondaryOwner Address of new secondary owner. function addSecondaryOwner(address newSecondaryOwner) public onlySignerControl notNull(newSecondaryOwner) valid_requirements(primaryOwners.length + secondaryOwners.length + 1, required_confirmations) { isSecondaryOwner[newSecondaryOwner] = true; secondaryOwners.push(newSecondaryOwner); emit SecondaryOwnerAddition(newSecondaryOwner); } function removeSecondaryOwner(address owner) public onlySignerControl notNull(owner) valid_requirements(primaryOwners.length + secondaryOwners.length - 1, required_confirmations) { isSecondaryOwner[owner] = false; for (uint i=0; i<secondaryOwners.length - 1; i++) if (secondaryOwners[i] == owner) { secondaryOwners[i] = secondaryOwners[secondaryOwners.length - 1]; break; } secondaryOwners.length -= 1; // this depends on the fact that primaryOwnerExists() if (required_confirmations > primaryOwners.length + secondaryOwners.length) changeRequirement(primaryOwners.length + secondaryOwners.length); emit SecondaryOwnerRemoval(owner); } /* MultiSig Wallet Transaction submission and confirmation logic begins here These enable the safe execution of ownership functions over the contract */ /// @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 memory 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 PrimaryOrSecondaryOwnerExists(msg.sender) transactionExists(transactionId) transactionNotConfirmed(transactionId, msg.sender) { transactionConfirmations[transactionId][msg.sender] = true; emit TransactionConfirmation(msg.sender, transactionId); executeTransaction(transactionId); } /// @dev Allows anyone to execute a confirmed transaction. /// @param transactionId Transaction ID. function executeTransaction(uint transactionId) public transactionNotExecuted(transactionId) { if (isConfirmedTransaction(transactionId)) { Transaction storage temptx = transactions[transactionId]; temptx.executed = true; (bool success, bytes memory data) = temptx.destination.call.value(temptx.value)(temptx.data); if (success) emit TransactionExecution(transactionId); else { emit TransactionExecutionFailure(transactionId); temptx.executed = false; } } } /// @dev Returns the confirmation status of a transaction. /// @param transactionId Transaction ID. /// @return Confirmation status. function isConfirmedTransaction(uint transactionId) public view returns (bool) { uint count = 0; uint i = 0; for (i=0; i<secondaryOwners.length; i++) { if (transactionConfirmations[transactionId][secondaryOwners[i]]) count += 1; if (count == required_confirmations) return true; } // if secondary owners havent done their bit yet for (i=0; i<primaryOwners.length; i++) { if (transactionConfirmations[transactionId][primaryOwners[i]]) count += 1; if (count == required_confirmations) 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 memory data) internal notNull(destination) returns (uint transactionId) { transactionId = transactionCount; transactions[transactionId] = Transaction({ destination: destination, value: value, data: data, executed: false }); transactionCount += 1; emit TransactionSubmission(transactionId); } /* Utility public functions */ /// @dev Get primary owners. /// @return List of primary owner addresses. function getPrimaryOwners() public view returns (address[] memory) { return primaryOwners; } /// @dev Get secondary owners. /// @return List of secondary owner addresses. function getSecondaryOwners() public view returns (address[] memory) { return secondaryOwners; } /* Transaction features */ /// @dev Returns number of confirmations of a transaction. /// @param transactionId Transaction ID. /// @return Number of confirmations. function getTransactionConfirmationCount(uint transactionId) public view returns (uint count) { uint i = 0; for (i=0; i<primaryOwners.length; i++) if (transactionConfirmations[transactionId][primaryOwners[i]]) count += 1; for (i=0; i<secondaryOwners.length; i++) if (transactionConfirmations[transactionId][secondaryOwners[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 view returns (uint count) { for (uint 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 getTransactionConfirmations(uint transactionId) public view returns (address[] memory _confirmations ) { address[] memory confirmationsTemp = new address[](primaryOwners.length + secondaryOwners.length); uint count = 0; uint i; // go through secondaryOwners for (i=0; i<secondaryOwners.length; i++) if (transactionConfirmations[transactionId][secondaryOwners[i]]) { confirmationsTemp[count] = secondaryOwners[i]; count += 1; } // go through primaryOwners for (i=0; i<primaryOwners.length; i++) if (transactionConfirmations[transactionId][primaryOwners[i]]) { confirmationsTemp[count] = primaryOwners[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 view returns (uint[] memory _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]; } } contract EVSignerControl is SignerControlBase{ event SignerAddition(address indexed signer); event SignerRemoval(address indexed signer); address[] public signers; mapping(address => bool) public isSigner; modifier signerExists(address signer) { if (!isSigner[signer]) revert(); _; } modifier signerDoesNotExist(address signer) { if (isSigner[signer]) revert("Signer already exists"); _; } constructor (address[] memory _primaryOwners, address[] memory _secondaryOwners, address[] memory _signers, uint _required_confirmations) SignerControlBase(_primaryOwners, _secondaryOwners, _required_confirmations) public { for (uint i=0; i<_signers.length; i++) { if (isSigner[_signers[i]] || _signers[i] == address(0)) revert(); isSigner[_signers[i]] = true; } signers = _signers; } /// @dev Reset allowed secondary owners and signers function takeOver() public { require (isPrimaryOwner[msg.sender] == true); uint i; for(i=0; i<secondaryOwners.length; i++) { isSecondaryOwner[secondaryOwners[i]] = false; secondaryOwners[i] = address(0); // overwrite all secondary owners } secondaryOwners.length = 0; for(i=0; i<signers.length; i++) { signers[i] = address(0); // overwrite all signer addresses } signers.length = 0; } /// @dev Allows to add a signer. Transaction has to be sent by a Owner. /// @param signer Address of signer. function addSigner(address signer) signerDoesNotExist (signer) public { require(isPrimaryOwner[msg.sender] || isSecondaryOwner[msg.sender]); isSigner[signer] = true; signers.push(signer); emit SignerAddition(signer); } /// @dev Returns list of signers. /// @return List of signer addresses. function getSigners() public view returns (address[] memory) { return signers; } /// @dev Allows to remove a signer. Transaction has to be sent by an Owner. /// @param signer Address of signer. function removeSigner(address signer) signerExists(signer) public { require(isPrimaryOwner[msg.sender] || isSecondaryOwner[msg.sender]); isSigner[signer] = false; for (uint i=0; i<signers.length - 1; i++) if (signers[i] == signer) { signers[i] = signers[signers.length - 1]; break; } signers.length -= 1; // this depends on the fact that signerExists() emit SignerRemoval(signer); } /* *Proxy logic */ function () payable external { require(isSigner[msg.sender]); address contractAddr; uint begin_index = msg.data.length - 32; assembly { let ptr := mload(0x40) calldatacopy(ptr, begin_index, 32) contractAddr := mload(ptr) } require(contractAddr != address(0)); assembly { let ptr := mload(0x40) let actualcalldatasize := sub(calldatasize, 32) calldatacopy(ptr, 0, actualcalldatasize) let result := call(gas, contractAddr, callvalue, ptr, actualcalldatasize, 0, 0) let size := returndatasize returndatacopy(ptr, 0, size) switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } } function deployContract(uint value, bytes memory bytecode) signerExists(msg.sender) public returns (address contractAddress) { assembly { /// the first slot of a dynamic type like bytes always holds the length of the array /// advance it by 32 bytes to access teh actual contents contractAddress := create(value, add(bytecode, 0x20), mload(bytecode)) } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address[]","name":"_primaryOwners","type":"address[]"},{"internalType":"address[]","name":"_secondaryOwners","type":"address[]"},{"internalType":"address[]","name":"_signers","type":"address[]"},{"internalType":"uint256","name":"_required_confirmations","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"PrimaryOwnerAddition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"PrimaryOwnerRemoval","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":"owner","type":"address"}],"name":"SecondaryOwnerAddition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"SecondaryOwnerRemoval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"signer","type":"address"}],"name":"SignerAddition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"signer","type":"address"}],"name":"SignerRemoval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"TransactionConfirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"TransactionExecution","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"TransactionExecutionFailure","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"TransactionRevocation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"TransactionSubmission","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"address","name":"newPrimaryOwner","type":"address"}],"name":"addPrimaryOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newSecondaryOwner","type":"address"}],"name":"addSecondaryOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"signer","type":"address"}],"name":"addSigner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_required","type":"uint256"}],"name":"changeRequirement","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"confirmTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"confirmations","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"bytecode","type":"bytes"}],"name":"deployContract","outputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"executeTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getPrimaryOwners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSecondaryOwners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSigners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"getTransactionConfirmationCount","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"getTransactionConfirmations","outputs":[{"internalType":"address[]","name":"_confirmations","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bool","name":"pending","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"name":"getTransactionCount","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"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[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"transactionId","type":"uint256"}],"name":"isConfirmedTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPrimaryOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSecondaryOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSigner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"primaryOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"removePrimaryOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"removeSecondaryOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"signer","type":"address"}],"name":"removeSigner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"newOwner","type":"address"}],"name":"replacePrimaryOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"requestCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"required_confirmations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"secondaryOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"signers","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"submitTransaction","outputs":[{"internalType":"uint256","name":"transactionId","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"takeOver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"transactionConfirmations","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transactionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"transactions","outputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"executed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162002ae338038062002ae3833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82518660208202830111640100000000821117156200008c57600080fd5b82525081516020918201928201910280838360005b83811015620000bb578181015183820152602001620000a1565b5050505090500160405260200180516040519392919084640100000000821115620000e557600080fd5b908301906020820185811115620000fb57600080fd5b82518660208202830111640100000000821117156200011957600080fd5b82525081516020918201928201910280838360005b83811015620001485781810151838201526020016200012e565b50505050905001604052602001805160405193929190846401000000008211156200017257600080fd5b9083019060208201858111156200018857600080fd5b8251866020820283011164010000000082111715620001a657600080fd5b82525081516020918201928201910280838360005b83811015620001d5578181015183820152602001620001bb565b505050509190910160405250602001518451865191935086925085918491018160328211806200020457508181115b806200020e575080155b8062000218575081155b156200022357600080fd5b60005b8551811015620002f1576000808783815181106200024057fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff168062000299575060006001600160a01b03168682815181106200028657fe5b60200260200101516001600160a01b0316145b15620002a457600080fd5b6001600080888481518110620002b657fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010162000226565b5060005b8451811015620003c157600160008683815181106200031057fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff168062000369575060006001600160a01b03168582815181106200035657fe5b60200260200101516001600160a01b0316145b156200037457600080fd5b60018060008784815181106200038657fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101620002f5565b8551620003d6906005906020890190620004ea565b508451620003ec906006906020880190620004ea565b5050506007919091555060009150505b8251811015620004c957600b60008483815181106200041757fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff168062000470575060006001600160a01b03168382815181106200045d57fe5b60200260200101516001600160a01b0316145b156200047b57600080fd5b6001600b60008584815181106200048e57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101620003fc565b508151620004df90600a906020850190620004ea565b50505050506200057e565b82805482825590600052602060002090810192821562000542579160200282015b828111156200054257825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200050b565b506200055092915062000554565b5090565b6200057b91905b80821115620005505780546001600160a01b03191681556001016200055b565b90565b612555806200058e6000396000f3fe6080604052600436106101ee5760003560e01c806394cf795e1161010d578063bbc2dbe3116100a0578063e27c105f1161006f578063e27c105f146108d2578063e39383a41461098c578063eb12d61e146109c5578063ed14b6a5146109f8578063ee22610b14610a0d576101ee565b8063bbc2dbe314610798578063c01a8c84146107ad578063c6427474146107d7578063cbb831c11461089f576101ee565b8063a8abe69a116100dc578063a8abe69a146106ef578063ae5799dc1461072f578063b77bf60014610759578063ba51a6df1461076e576101ee565b806394cf795e146105c55780639ace38c2146105da578063a48c3969146106a7578063a85a5e4a146106bc576101ee565b80635015f5f1116101855780635badbe4c116101545780635badbe4c14610520578063739cc0dc1461053557806377a1b2301461055f5780637df73e2714610592576101ee565b80635015f5f11461044257806350b7e9421461047557806354741525146104b057806359227d61146104f6576101ee565b80632ff11be1116101c15780632ff11be1146103475780633411c81c1461037157806340dc3a41146103aa5780634dec40591461040f576101ee565b80630e0538b51461025b5780630e316ab7146102a25780632079fb9a146102d7578063229075441461031d575b336000908152600b602052604090205460ff1661020a57600080fd5b604051600090601f1936019060208282375191506001600160a01b03821661023157600080fd5b604051602036038060008337600080828434885af13d806000853e818015610257578185f35b8185fd5b34801561026757600080fd5b5061028e6004803603602081101561027e57600080fd5b50356001600160a01b0316610a37565b604080519115158252519081900360200190f35b3480156102ae57600080fd5b506102d5600480360360208110156102c557600080fd5b50356001600160a01b0316610a4c565b005b3480156102e357600080fd5b50610301600480360360208110156102fa57600080fd5b5035610bca565b604080516001600160a01b039092168252519081900360200190f35b34801561032957600080fd5b506103016004803603602081101561034057600080fd5b5035610bf1565b34801561035357600080fd5b506103016004803603602081101561036a57600080fd5b5035610bfe565b34801561037d57600080fd5b5061028e6004803603604081101561039457600080fd5b50803590602001356001600160a01b0316610c0b565b3480156103b657600080fd5b506103bf610c2b565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103fb5781810151838201526020016103e3565b505050509050019250505060405180910390f35b34801561041b57600080fd5b5061028e6004803603602081101561043257600080fd5b50356001600160a01b0316610c8e565b34801561044e57600080fd5b506102d56004803603602081101561046557600080fd5b50356001600160a01b0316610ca3565b34801561048157600080fd5b506102d56004803603604081101561049857600080fd5b506001600160a01b0381358116916020013516610eb4565b3480156104bc57600080fd5b506104e4600480360360408110156104d357600080fd5b508035151590602001351515610ff1565b60408051918252519081900360200190f35b34801561050257600080fd5b5061028e6004803603602081101561051957600080fd5b503561105f565b34801561052c57600080fd5b506104e4611164565b34801561054157600080fd5b506103bf6004803603602081101561055857600080fd5b503561116a565b34801561056b57600080fd5b506102d56004803603602081101561058257600080fd5b50356001600160a01b03166113a8565b34801561059e57600080fd5b5061028e600480360360208110156105b557600080fd5b50356001600160a01b031661156a565b3480156105d157600080fd5b506103bf61157f565b3480156105e657600080fd5b50610604600480360360208110156105fd57600080fd5b50356115df565b60405180856001600160a01b03166001600160a01b031681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b83811015610669578181015183820152602001610651565b50505050905090810190601f1680156106965780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b3480156106b357600080fd5b506104e461169e565b3480156106c857600080fd5b506102d5600480360360208110156106df57600080fd5b50356001600160a01b03166116a4565b3480156106fb57600080fd5b506103bf6004803603608081101561071257600080fd5b50803590602081013590604081013515159060600135151561184f565b34801561073b57600080fd5b506104e46004803603602081101561075257600080fd5b503561197c565b34801561076557600080fd5b506104e4611a54565b34801561077a57600080fd5b506102d56004803603602081101561079157600080fd5b5035611a5a565b3480156107a457600080fd5b506103bf611ae5565b3480156107b957600080fd5b506102d5600480360360208110156107d057600080fd5b5035611b45565b3480156107e357600080fd5b506104e4600480360360608110156107fa57600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561082a57600080fd5b82018360208201111561083c57600080fd5b8035906020019184600183028401116401000000008311171561085e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611cf8945050505050565b3480156108ab57600080fd5b506102d5600480360360208110156108c257600080fd5b50356001600160a01b0316611d17565b3480156108de57600080fd5b50610301600480360360408110156108f557600080fd5b8135919081019060408101602082013564010000000081111561091757600080fd5b82018360208201111561092957600080fd5b8035906020019184600183028401116401000000008311171561094b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611e72945050505050565b34801561099857600080fd5b5061028e600480360360408110156109af57600080fd5b50803590602001356001600160a01b0316611ea1565b3480156109d157600080fd5b506102d5600480360360208110156109e857600080fd5b50356001600160a01b0316611ec1565b348015610a0457600080fd5b506102d5611fec565b348015610a1957600080fd5b506102d560048036036020811015610a3057600080fd5b503561210f565b60016020526000908152604090205460ff1681565b6001600160a01b0381166000908152600b6020526040902054819060ff16610a7357600080fd5b3360009081526020819052604090205460ff1680610aa057503360009081526001602052604090205460ff165b610aa957600080fd5b6001600160a01b0382166000908152600b60205260408120805460ff191690555b600a5460001901811015610b7d57826001600160a01b0316600a8281548110610aef57fe5b6000918252602090912001546001600160a01b03161415610b7557600a80546000198101908110610b1c57fe5b600091825260209091200154600a80546001600160a01b039092169183908110610b4257fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610b7d565b600101610aca565b50600a80546000190190610b919082612409565b506040516001600160a01b038316907fa2a6e2b8f0cf0f627456034557b0149227a355af53f5bc8ce7e496bfbe73c0a990600090a25050565b600a8181548110610bd757fe5b6000918252602090912001546001600160a01b0316905081565b60058181548110610bd757fe5b60068181548110610bd757fe5b600260209081526000928352604080842090915290825290205460ff1681565b60606006805480602002602001604051908101604052809291908181526020018280548015610c8357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c65575b505050505090505b90565b60006020819052908152604090205460ff1681565b333014610ce15760405162461bcd60e51b81526004018080602001828103825260318152602001806124cb6031913960400191505060405180910390fd5b806001600160a01b038116610d36576040805162461bcd60e51b8152602060048201526016602482015275139d5b1b081859191c995cdcc81cdc1958da599a595960521b604482015290519081900360640190fd5b600654600554600754910160001901906032821180610d5457508181115b80610d5d575080155b80610d66575081155b15610d7057600080fd5b6001600160a01b0384166000908152600160205260408120805460ff191690555b60065460001901811015610e4457846001600160a01b031660068281548110610db657fe5b6000918252602090912001546001600160a01b03161415610e3c57600680546000198101908110610de357fe5b600091825260209091200154600680546001600160a01b039092169183908110610e0957fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610e44565b600101610d91565b50600680546000190190610e589082612409565b5060065460055460075491011015610e7a57600654600554610e7a9101611a5a565b6040516001600160a01b038516907f5e6ce049a1882a95d9fb59d67984f095fd6668e5758ebe5acb47f3c802a4a7ae90600090a250505050565b3360008181526020819052604090205460ff16610ed057600080fd5b60005b600554811015610f5857836001600160a01b031660058281548110610ef457fe5b6000918252602090912001546001600160a01b03161415610f50578260058281548110610f1d57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610f58565b600101610ed3565b506001600160a01b03808416600081815260208190526040808220805460ff1990811690915593861682528082208054909416600117909355915190917ffa6e7df21e5db24c7e7e699b06f831640a634130e24c61000cf69d668eefc7e491a26040516001600160a01b038316907f44f4c9f70ded83f0bb52b6130247618ba2ac00c72755a648e4a7df94f92799be90600090a2505050565b6000805b6009548110156110585783801561101f57506000818152600360208190526040909120015460ff16155b80611044575082801561104457506000818152600360208190526040909120015460ff165b15611050576001820191505b600101610ff5565b5092915050565b600080805b6006548110156110de576000848152600460205260408120600680549192918490811061108d57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156110c1576001820191505b6007548214156110d65760019250505061115f565b600101611064565b5060005b60055481101561115c576000848152600460205260408120600580549192918490811061110b57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561113f576001820191505b6007548214156111545760019250505061115f565b6001016110e2565b50505b919050565b60085481565b606080600680549050600580549050016040519080825280602002602001820160405280156111a3578160200160208202803883390190505b5090506000805b60065481101561126657600085815260046020526040812060068054919291849081106111d357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561125e576006818154811061120d57fe5b9060005260206000200160009054906101000a90046001600160a01b031683838151811061123757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001820191505b6001016111aa565b5060005b600554811015611326576000858152600460205260408120600580549192918490811061129357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561131e57600581815481106112cd57fe5b9060005260206000200160009054906101000a90046001600160a01b03168383815181106112f757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001820191505b60010161126a565b81604051908082528060200260200182016040528015611350578160200160208202803883390190505b509350600090505b818110156113a05782818151811061136c57fe5b602002602001015184828151811061138057fe5b6001600160a01b0390921660209283029190910190910152600101611358565b505050919050565b3360008181526020819052604090205460ff166113c457600080fd5b6001600160a01b038216600090815260208190526040902054829060ff166113eb57600080fd5b60065460055460075491016000190190603282118061140957508181115b80611412575080155b8061141b575081155b1561142557600080fd5b6001600160a01b0385166000908152602081905260408120805460ff191690555b600554600019018110156114f957856001600160a01b03166005828154811061146b57fe5b6000918252602090912001546001600160a01b031614156114f15760058054600019810190811061149857fe5b600091825260209091200154600580546001600160a01b0390921691839081106114be57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506114f9565b600101611446565b5060058054600019019061150d9082612409565b506006546005546007549101101561152f5760065460055461152f9101611a5a565b6040516001600160a01b038616907ffa6e7df21e5db24c7e7e699b06f831640a634130e24c61000cf69d668eefc7e490600090a25050505050565b600b6020526000908152604090205460ff1681565b6060600a805480602002602001604051908101604052809291908181526020018280548015610c83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610c65575050505050905090565b60036020908152600091825260409182902080546001808301546002808501805488516101009582161595909502600019011691909104601f81018790048702840187019097528683526001600160a01b0390931695909491929183018282801561168b5780601f106116605761010080835404028352916020019161168b565b820191906000526020600020905b81548152906001019060200180831161166e57829003601f168201915b5050506003909301549192505060ff1684565b60075481565b3360008181526020819052604090205460ff166116c057600080fd5b6001600160a01b038216600090815260208190526040902054829060ff1615611730576040805162461bcd60e51b815260206004820152601c60248201527f5072696d617279204f776e657220616c72656164792065786973747300000000604482015290519081900360640190fd5b826001600160a01b038116611785576040805162461bcd60e51b8152602060048201526016602482015275139d5b1b081859191c995cdcc81cdc1958da599a595960521b604482015290519081900360640190fd5b60065460055460075491016001019060328211806117a257508181115b806117ab575080155b806117b4575081155b156117be57600080fd5b6001600160a01b038616600081815260208190526040808220805460ff1916600190811790915560058054918201815583527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b03191684179055517f44f4c9f70ded83f0bb52b6130247618ba2ac00c72755a648e4a7df94f92799be9190a2505050505050565b60608060095460405190808252806020026020018201604052801561187e578160200160208202803883390190505b5090506000805b600954811015611901578580156118af57506000818152600360208190526040909120015460ff16155b806118d457508480156118d457506000818152600360208190526040909120015460ff165b156118f957808383815181106118e657fe5b6020026020010181815250506001820191505b600101611885565b87870360405190808252806020026020018201604052801561192d578160200160208202803883390190505b5093508790505b868110156119715782818151811061194857fe5b6020026020010151848983038151811061195e57fe5b6020908102919091010152600101611934565b505050949350505050565b6000805b6005548110156119e557600083815260046020526040812060058054919291849081106119a957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156119dd576001820191505b600101611980565b5060005b600654811015611a4e5760008381526004602052604081206006805491929184908110611a1257fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1615611a46576001820191505b6001016119e9565b50919050565b60095481565b60065460055401816032821180611a7057508181115b80611a79575080155b80611a82575081155b15611a8c57600080fd5b3360009081526020819052604090205460ff16611aa857600080fd5b60078390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b60606005805480602002602001604051908101604052809291908181526020018280548015610c83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610c65575050505050905090565b3360008181526020819052604090205460ff16158015611b7e57506001600160a01b03811660009081526001602052604090205460ff16155b15611bbf576040805162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71037bbb732b960a11b604482015290519081900360640190fd5b60008281526003602052604090205482906001600160a01b0316611c2a576040805162461bcd60e51b815260206004820152601d60248201527f5472616e73616374696f6e20494420646f6573206e6f74206578697374000000604482015290519081900360640190fd5b60008381526004602090815260408083203380855292529091205484919060ff1615611c9d576040805162461bcd60e51b815260206004820152601d60248201527f5472616e73616374696f6e20616c726561647920636f6e6669726d6564000000604482015290519081900360640190fd5b6000858152600460209081526040808320338085529252808320805460ff191660011790555187927f3d185bf73d86ca21df4e92a671e0bab99ab7d42404531bafda489fefb443474a91a3611cf18561210f565b5050505050565b6000611d058484846122dd565b9050611d1081611b45565b9392505050565b333014611d555760405162461bcd60e51b81526004018080602001828103825260318152602001806124cb6031913960400191505060405180910390fd5b806001600160a01b038116611daa576040805162461bcd60e51b8152602060048201526016602482015275139d5b1b081859191c995cdcc81cdc1958da599a595960521b604482015290519081900360640190fd5b6006546005546007549101600101906032821180611dc757508181115b80611dd0575080155b80611dd9575081155b15611de357600080fd5b6001600160a01b0384166000818152600160208190526040808320805460ff19168317905560068054928301815583527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90910180546001600160a01b03191684179055517f37b40e790fc0665f103d9dfd19ef4f10f3905bebda246957fa1cce8d90300e979190a250505050565b336000818152600b602052604081205490919060ff16611e9157600080fd5b82516020840185f0949350505050565b600460209081526000928352604080842090915290825290205460ff1681565b6001600160a01b0381166000908152600b6020526040902054819060ff1615611f29576040805162461bcd60e51b81526020600482015260156024820152745369676e657220616c72656164792065786973747360581b604482015290519081900360640190fd5b3360009081526020819052604090205460ff1680611f5657503360009081526001602052604090205460ff165b611f5f57600080fd5b6001600160a01b0382166000818152600b6020526040808220805460ff19166001908117909155600a8054918201815583527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b03191684179055517f8191ca9d665b824fc53160f3727e7ec3a5330e4a67e1db6c4a86678956dfef199190a25050565b3360009081526020819052604090205460ff16151560011461200d57600080fd5b60005b6006548110156120a1576000600160006006848154811061202d57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff191692151592909217909155600680548390811061207057fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600101612010565b60006120ae600682612409565b50600090505b600a548110156120fe576000600a82815481106120cd57fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556001016120b4565b600061210b600a82612409565b5050565b60008181526003602081905260409091200154819060ff16156121635760405162461bcd60e51b81526004018080602001828103825260258152602001806124fc6025913960400191505060405180910390fd5b61216c8261105f565b1561210b576000828152600360208190526040808320918201805460ff191660019081179091558254818401549251600280860180549697966060966001600160a01b0390951695919392839285926000199181161561010002919091011604801561220f5780601f106121ed57610100808354040283529182019161220f565b820191906000526020600020905b8154815290600101906020018083116121fb575b505091505060006040518083038185875af1925050503d8060008114612251576040519150601f19603f3d011682016040523d82523d6000602084013e612256565b606091505b50915091508115612299576040805186815290517fa04152e2017fefaf7d75b86e3c491d40f690e6936155ca58eacae210f5655e609181900360200190a1611cf1565b6040805186815290517f507a14a7a7f368a6a287e15565b7d56dfe09018c750d5059985077d7a9e584a19181900360200190a15050600301805460ff191690555050565b6000836001600160a01b038116612334576040805162461bcd60e51b8152602060048201526016602482015275139d5b1b081859191c995cdcc81cdc1958da599a595960521b604482015290519081900360640190fd5b600954604080516080810182526001600160a01b03888116825260208083018981528385018981526000606086018190528781526003845295909520845181546001600160a01b031916941693909317835551600183015592518051949650919390926123a8926002850192910190612432565b50606091909101516003909101805460ff19169115159190911790556009805460010190556040805183815290517f49f9b5aa8dbe34efd913cf40354bcd20d1e2ac420da5b766c55801a8bc8daa73916020908290030190a1509392505050565b81548183558181111561242d5760008381526020902061242d9181019083016124b0565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061247357805160ff19168380011785556124a0565b828001600101855582156124a0579182015b828111156124a0578251825591602001919060010190612485565b506124ac9291506124b0565b5090565b610c8b91905b808211156124ac57600081556001016124b656fe4f6e6c79205369676e6572436f6e74726f6c20636f6e74726163742063616e20706572666f726d2074686973207461736b5472616e73616374696f6e2068617320616c7265616479206265656e206578656375746564a265627a7a723158200c57687840d2882587cf840c49ac1f6d9683a926204bab602ee06a7d65801f9364736f6c63430005110032000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a62336f410d2ce40d4fd6b23663a7a80164d2af10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a62336f410d2ce40d4fd6b23663a7a80164d2af1000000000000000000000000007b003c4d0145b512286494d5ae123aeef29d9e0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000a62336f410d2ce40d4fd6b23663a7a80164d2af1000000000000000000000000281048bf4d3bbbbd38abe184f6b306216b2e06ae000000000000000000000000a3f36a33e66adeb98e08fe1bd96b4c58517c64c40000000000000000000000008a8c076ad2e974b12223fa5a09f62275cfa0c2c0
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a62336f410d2ce40d4fd6b23663a7a80164d2af10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a62336f410d2ce40d4fd6b23663a7a80164d2af1000000000000000000000000007b003c4d0145b512286494d5ae123aeef29d9e0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000a62336f410d2ce40d4fd6b23663a7a80164d2af1000000000000000000000000281048bf4d3bbbbd38abe184f6b306216b2e06ae000000000000000000000000a3f36a33e66adeb98e08fe1bd96b4c58517c64c40000000000000000000000008a8c076ad2e974b12223fa5a09f62275cfa0c2c0
-----Decoded View---------------
Arg [0] : _primaryOwners (address[]): 0xa62336f410d2ce40d4fd6b23663a7a80164d2af1
Arg [1] : _secondaryOwners (address[]): 0xa62336f410d2ce40d4fd6b23663a7a80164d2af1,0x007b003c4d0145b512286494d5ae123aeef29d9e
Arg [2] : _signers (address[]): 0xa62336f410d2ce40d4fd6b23663a7a80164d2af1,0x281048bf4d3bbbbd38abe184f6b306216b2e06ae,0xa3f36a33e66adeb98e08fe1bd96b4c58517c64c4,0x8a8c076ad2e974b12223fa5a09f62275cfa0c2c0
Arg [3] : _required_confirmations (uint256): 1
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 000000000000000000000000a62336f410d2ce40d4fd6b23663a7a80164d2af1
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [7] : 000000000000000000000000a62336f410d2ce40d4fd6b23663a7a80164d2af1
Arg [8] : 000000000000000000000000007b003c4d0145b512286494d5ae123aeef29d9e
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [10] : 000000000000000000000000a62336f410d2ce40d4fd6b23663a7a80164d2af1
Arg [11] : 000000000000000000000000281048bf4d3bbbbd38abe184f6b306216b2e06ae
Arg [12] : 000000000000000000000000a3f36a33e66adeb98e08fe1bd96b4c58517c64c4
Arg [13] : 0000000000000000000000008a8c076ad2e974b12223fa5a09f62275cfa0c2c0
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.