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.
NOTE: Not compatible with current NodeJS LTS. Recommended NodeJS version is v6.17.1 (last LTS for v6).
# For Ubuntu/Debian you need to install libusb development headers
apt install -y libusb-1.0-0-dev
git clone https://github.com/gnosis/MultiSigWallet.git
cd MultiSigWallet
# Latest NodeJS (v12.13.0) does NOT appear to work correctly.
# You should use NVM and install Node v6.17.1 for best results: https://github.com/nvm-sh/nvm
# Tested by @Privex on 2019-Nov-06 with v6.17.1 with success
nvm install v6.17.1
# node-gyp is required for 'npm install' to work correctly
npm install node-gyp
npm install
npm test
npm run test-dapp
truffle migrate <account1,account2,...,accountN> <requiredConfirmations>
truffle migrate <account1,account2,...,accountN> <requiredConfirmations> <dailyLimit>
You can find binaries for OSX, Windows and Linux here
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.
All contracts are WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
You can specify a custom Ethereum Node endpoint by going to settings
page. Click on Ethereum Node
dropdown menu and select Custom configuration
, this would make the Ethereum node's field editable. Please write your new endpoint there. Remember, if Web3 Provider
is set to Default (Metamask, Mist, Parity)
, Multisig will use the Ethereum Node endpoint coming with the Web3 Provider, so in that case go to your injected Web3 Provider (Metamask for instance) and update/switch your Ethereum Node endpoint.
Make sure you're connected to the same network your Multisig/contract was created on, if you created it on Mainnet, you should then connect to Mainnet in order to let the system detect its type correctly.