This project implements a "multi signature wallet" which, through a Solidity smart contract that allows the creation of a wallet defining a number of owners addresses and a number of confirmations required by these owners to be able to execute a transaction. Only if the required number of owners confirm the pending transaction, it will be executed.
- Solidity
- Truffle
- Ganache-cli
- Unit/Integration tests
- Chai (expect)
- truffle-assertions (revert assertions)
- openzeppelin/test-helpers (time and block manipulation)
- eth-gas-reporter
- solidity-coverage (code coverage)
- coveralls (code coverage report)
- solhint (linter for Solidity)
- slither (vulnerability analyzer)
- Full contract documentation (NatSpec Format)
- Solidity coding conventions
- Create a Wallet with a list of owners an the amount of required confirmations.
- Submit a transaction.
- Confirm the pending transaction (by the amount of required owners).
- Revoke an approved transaction.
- Execute the confirmed transaction.
NOTE: For more information see code comments in
MultiSigWallet.sol
.
See migration file 2_contracts_migration.js
and test file multisigwallet.test.js
for more information.
- Deploy the contract with 3 owners addresses and 2 confirmation required to execute.
- Submit a transaction from one of the owners account.
- Confirm the pending transaction with two of the owners accounts.
- Execute a transaction from one of the owners account.