When reviewing Gnosis Multisig wallet (https://github.com/gnosis/MultiSigWallet/blob/master/contracts/MultiSigWallet.sol#L184) I notice that the comment for submitTransaction
function says that Allows an owner. However, on the function declaration, it doesn't have ownerExists
requirement. So does this mean that the comment should be allows anyone to?
/// @dev Allows an owner to submit and confirm a transaction.
/// @param destination Transaction target address.
/// @param value Transaction ether value.
/// @param data Transaction data payload.
/// @return Returns transaction ID.
function submitTransaction(address destination, uint value, bytes data)
public
returns (uint transactionId)
{
transactionId = addTransaction(destination, value, data);
confirmTransaction(transactionId);
}
The same goes to the function executeTransaction
. The comment says Allows anyone, but it has ownerExists
on the function declaration.
/// @dev Allows anyone to execute a confirmed transaction.
/// @param transactionId Transaction ID.
function executeTransaction(uint transactionId)
public
ownerExists(msg.sender)
confirmed(transactionId, msg.sender)
notExecuted(transactionId)
{
if (isConfirmed(transactionId)) {
Transaction storage txn = transactions[transactionId];
txn.executed = true;
//if (external_call(txn.destination, txn.value, txn.data.length, txn.data))
if (txn.destination.call.value(txn.value)(txn.data))
Execution(transactionId);
else {
ExecutionFailure(transactionId);
txn.executed = false;
}
}
}
Since gnosis multisig contract seems to be the most secure and famous for holding a lot of funds. I doubt that this is a bug. but I wonder if my understanding is correct about ownerExists
requirement.