A step-by-step guide with screenshots on deploying your own Gnosis Multsig Wallet.
by Caleb Lau
This article was first published in Medium on May 12, 2018.
One of the more sensible approach to take when storing huge amount of funds is to have multiple signatories securing access to the funds, so control does not fall under a single signatory which is a high risk from both a security and organisational point-of-view. With bank accounts, this is commonly done with joint accounts or having multiple authorised signatories. With Ethereum, this could be done by means of a multisignature wallet, which in essence is a smart contract stating “x out of y parties need to confirm before you are able to withdraw this amount”.
This article will walk through how you could deploy your own multisignature wallet, using the Gnosis Multisig Wallet and having it act as a Light Wallet.
A copy of the Gnosis Multisig Wallet could be obtained from the below Github link, available for OSX, Linux and Windows (the rest of the walkthrough will be done on Windows):
Installation and Setting Up
Once downloaded, extract and run the setup file, and allow installation to complete.
Open the Gnosis Multisig install, and first navigate to the Settings tab. A few settings are made available for us:
- Ethereum node — This determines which network we will be working on.
- Wallet factory contract — This points to the factory contract responsible for deploying our multisignature wallet. You should not need to change this.
- Web3 Provider — Three options are provided, so you could use a Ledger Wallet, or have Gnosis act as a Light Wallet, or connect to an Ethereum node with an exposed RPC endpoint (localhost or hosted environment).
For our walkthrough, we will use the below settings that uses a testnet:
- Ethereum node: Remote Rinkeby
- Wallet factory contract:
- Web3 provider: Light Wallet
If you switch to Light Wallet for the first time, you may be diverted and immediately greeted with a prompt to create an account if no prior accounts had been added. Feel free to click cancel as we will talk about address creation right after this.
Creating a Multisignature Wallet
Before creating a wallet, remember that a multisignature wallet is essentially a smart contract on the Ethereum network, so we will need an Ethereum address with some ethers in it to pay for gas costs. As we are using Rinkeby Testnet we could request for Rinkeby test ethers (https://faucet.rinkeby.io/). When we are deploying to Mainnet, we will need actual ethers.
Navigate to the Accounts tab, and Add an address. Once the address is created, fund the address with some ethers.
Add and Import buttons both on the top right corner.
Click Add to add a new account.
Alternatively an existing account could also be imported. Click Import, and select your Ethereum JSON file (e.g., a file which is generated when you create your wallet from MyCrypto), then enter its password. Similarly, this account should have some ethers to pay for deploying the contract.
Click Import to import an existing account from an Ethereum keystore file.
How many ethers are needed to deploy a Multisignature Wallet?
This usually will depend on the network as we may want to raise gas prices if the network is congested. 0.1ETH held by the deploying address should be more than sufficient to deploy the multisignature wallet with leftovers for a few transactions.
Once an account is added, we can proceed to deploy our multisignature wallet. Under the Wallets tab, we Add a wallet, and choose Create New Wallet as our option.
Enter the required attributes:
- Name — A name for you to identify the wallet.
We will name our wallet “Our First Multisignature Wallet”.
- Required Confirmations — The number of approvals needed from the owners (signatories) of the multisignature wallet (not to be confused with transaction confirmation).
We will leave this to 1 for now, and will increase this up to 2 on a later stage once we add in the remainder 2 owners, making it a 2 out of 3 multisignature wallet.
- Daily Limit (ETH) — A limit which could be withdrawn without the need of required confirmations as configured in point 2.
We will leave this to 0, as we want any withdrawal regardless of amount to require approval from the owners.
- Owners — These are the owner addresses acting as a signatory for changes to the wallet, notably withdrawals, confirmation changes, daily limits, and ownership changes.
We will add more owners later.
Names on the Gnosis Multisig Wallet
The names (i.e. wallet name, owner names) are stored locally and not on-chain on the Gnosis multisignature smart contract, so do not be surprised upon reinstalling and reinstating the multsignature wallet address after a computer reformat, the names are not there. On-chain, the smart contract expects only the owner addresses, confirmations/approvals required, and the daily limit figure.
And now we are ready to deploy! Click Deploy, and the next menu “Configure Gas” will show. We can leave the Gas Limit as is, but we may want to adjust the Gas price (GWei). A good estimate could be found on https://ethgasstation.info/. The TX fees simply reflects the maximum cost to deploying the wallet based on the gas limit * gas price in ETH.
Configuring gas before sending a transaction.
I will bump up the gas price a little since I am impatient, and click Send Transaction. Key in your password to unlock your wallet, and you should be greeted with a “Deployment transaction was sent” message on the top right corner.
And that didn’t take long. Once the transaction was confirmed, we can see the wallet showing up on the Wallets tab. If it is taking too long, or if you’re unsure of what your transaction status is, you can always check your address for the transaction on https://etherscan.io (or in this case, on rinkeby.etherscan.io) .
The confirmed transaction.
And how it looks like on the Gnosis Multisig Wallet.
Congratulations if you have made it this far! You have created a multisignature wallet with yourself as the owner. Let us proceed to add a couple more owners, and bump up the signatory confirmation requirement.
To add an owner, click on the blue Name of the wallet. This will show us more details of the wallet, and from there we can do more changes. Let us proceed to click Add on the Owners section.
Add button on the top right.
Add an owner.
We will add two owners in total, repeating this step twice. Similar to other transactions, you will be required to unlock your account to send a transaction, set gas price, etc.
We have three owners now! Yay!
Ownership and Required Confirmations
If we need more than 1 confirmation, any addition or removal of owners will need to be agreed by the same number of owners per the confirmation required. This article adds the owners first and only bumps up the required confirmations later for ease of setting up. Your situation may be different.
Once we have all owners in place, let’s increase the Required Confirmation to 2, making it a 2 out of 3 multisignature wallet. On the Wallets tab, click Edit on the Required Confirmation column, and increase it to 2.
Edit button next to “1” under the Required confirmations column.
Increase to 2, and send.
Once the transaction is mined, we should see the number reflected as such. An example of when a multisignature confirmation is needed if when a withdrawal request is raised, example:
Owner “My Account” raised a request to withdraw 1ETH —
This is shown under the Multisig transactions section.
In this case the owner “My Account” (address 0xf011e41…) raised the withdrawal request which constitutes to one confirmation, and I will require another address to click Confirm to allow for the release of funds.
This is what owner “Second Owner” would see —
Note instead of “Revoke confirmation”, a “Confirm” button shows.
And there you have it! You have successfully deployed a 2 out of 3 multisignature wallet on the Ethereum Rinkeby Network, using the Gnosis Multisig Wallet as a Light Wallet. There are more ways to use the Gnosis Multisig Wallet (e.g. with Ledger or a Remote Node) which I may cover on later articles. But in the meantime, do not be afraid to experiment or play around, and you’ll find deploying a multisignature wallet to be easy peasy lemon squeezy. 😉