/MultiSigWallet

Allows multiple parties to agree on transactions before execution.

Primary LanguageCSS

Ethereum Multisignature Wallet

Join the chat at https://gitter.im/gnosis/MultiSigWallet

The purpose of multisig wallets is to increase security by requiring multiple parties to agree on transactions before execution. Transactions can be executed only when confirmed by a predefined number of owners. A web user interface can be found here.

Features

  • Can hold Ether and all kind of tokens with multisig support
  • Easy to use offline signing (cold wallet) support
  • Integration with web3 wallets (Metamask, Mist, Parity, etc)
  • Transaction data and log decoding, makes transactions more readable
  • Interacting with any contracts with UI support
  • Hardware wallet support (Ledger Wallet)
  • Optional email notifications when an event is triggered or you are required to sign a transaction

Reviewers

The following people have reviewed the code at the time of the linked commit:

Being used by

Install

git clone https://github.com/gnosis/MultiSigWallet.git
cd MultiSigWallet
npm install

Test

Run contract tests:

npm test

Run interface tests:

npm run test-dapp

Deploy

Make sure to edit migrations/migrations.config.js to configure the parameters for a deployed multisig wallet.

The relevant parameters are:

  • owners: Addresses of multisig wallet owners
  • requiredConfirmations: Required number of confirmations to execute a multisig wallet transaction
  • hasDailyLimit: Boolean flag to determine whether to deploy a multisig wallet without a daily limit or a multisig wallet with a daily limit
  • dailyLimit: The maximum ETH an individual owner can withdraw in a day without a confimed multisig wallet transaction

Deploy multisig wallet:

Set hasDailyLimit = false in migrations/migrations.config.js.

npm run migrate -- --network=<network-name>

Deploy multisig wallet with daily limit:

Set hasDailyLimit = true and a desired dailyLimit in migrations/migrations.config.js.

npm run migrate -- --network=<network-name>

Limitations

This implementation does not allow the creation of smart contracts via multisignature transactions. Transactions to address 0 cannot be done. Any other transaction can be done.

Security

All contracts are WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Deployed instances with significant funds

License

GPL v3