diff --git a/contracts/MultiSigStub.sol b/contracts/MultiSigStub.sol index 609571f..230e27c 100644 --- a/contracts/MultiSigStub.sol +++ b/contracts/MultiSigStub.sol @@ -6,6 +6,19 @@ pragma solidity ^0.4.15; */ contract MultiSigStub { + address[] public owners; + address[] public tokens; + mapping (uint => Transaction) public transactions; + mapping (uint => mapping (address => bool)) public confirmations; + uint public transactionCount; + + struct Transaction { + address destination; + uint value; + bytes data; + bool executed; + } + function MultiSigStub(address[] _owners, uint256 _required) { //bytes4 sig = bytes4(sha3("Constructor(address[],uint256)")); bytes4 sig = 0xe0c4e63b; @@ -21,9 +34,7 @@ contract MultiSigStub { _delegatecall(m_data, size); } - function() - payable - { + modifier delegated { uint size = msg.data.length; bytes32 m_data = _malloc(size); @@ -32,11 +43,165 @@ contract MultiSigStub { } bytes32 m_result = _delegatecall(m_data, size); - + _; assembly { return(m_result, 0x20) } } + + function() + payable + delegated + { + + } + + function submitTransaction(address destination, uint value, bytes data) + public + delegated + returns (uint) + { + + } + + function confirmTransaction(uint transactionId) + public + delegated + { + + } + + function watch(address _tokenAddr, bytes _data) + public + delegated + { + + } + + function setMyTokenList(address[] _tokenList) + public + delegated + { + + } + /// @dev Returns the confirmation status of a transaction. + /// @param transactionId Transaction ID. + /// @return Confirmation status. + function isConfirmed(uint transactionId) + public + constant + delegated + returns (bool) + { + + } + + /* + * Web3 call functions + */ + function tokenBalances(address) + public + constant + delegated + returns (uint) + { + + } + + + /// @dev Returns number of confirmations of a transaction. + /// @param transactionId Transaction ID. + /// @return Number of confirmations. + function getConfirmationCount(uint transactionId) + public + constant + delegated + returns (uint) + { + + } + + /// @dev Returns total number of transactions after filters 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 + delegated + returns (uint) + { + + } + + /// @dev Returns list of owners. + /// @return List of owner addresses. + function getOwners() + public + constant + returns (address[]) + { + return owners; + } + + /// @dev Returns list of tokens. + /// @return List of token addresses. + function getTokenList() + public + constant + returns (address[]) + { + return tokens; + } + + /// @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 Transaction) public transactions; mapping (uint => mapping (address => bool)) public confirmations; - - mapping (address => bool) public isOwner; - mapping (address => uint) public tokenBalances; - mapping (address => address[]) public userList; - address[] public tokens; - uint public required; uint public transactionCount; - uint nonce; + + mapping (address => uint) public tokenBalances; + mapping (address => bool) public isOwner; + mapping (address => address[]) public userList; + uint public required; + uint public nonce; struct Transaction { address destination;