
Production Contract Security — Part 2
Now that you have the basic idea of what a multisig is and how it can help you, let’s actually set one up. I’m going to walk you through setting one up on Rinkeby, but the process is similar on Homestead or any other supported chain.
Gnosis Safe
Gnosis Safe is probably the most popular and secure multisig on the wallet before. It has not been hacked to my knowledge and it’s what I use. Head over to https://gnosis-safe.io/app/welcome to begin. Next, connect your MetaMask wallet to Rinkeby
and connect the address that you want to use. Note that you will need Rinkeby test eth to deploy the safe to the chain — it is a smart contract after all.
If you need some Rinkeby eth, this is the best place I’ve found recently — https://rinkebyfaucet.com/
Once you have some eth and your Metamask connected, make sure that your wallet is connected AND you have selected the correct network in the networks list in the upper right hand corner.

Now that Gnosis knows what network to deploy the safe to and who is going to deploy it, choose the Create new Safe
option on the welcome page.

Once you elect to create a new safe, you will be presented with a wizard to walk you through the process.
- Verify network as Rinkeby
- Name your safe — this does not go on the blockchain. It’s just a convenience to you
- Owners and confirmations — This is where you can add owners of your safe and the required ratio of signatures in order for a transaction to be executed. We will just use the current connected web3 account as the owner and set the required confirmations as 1 since we are the only owner at this point. You can also add a more user friendly name association for your owner account if it helps you
- Once you have done the above, you will be presented with a summary and the option to deploy the safe to the blockchain. It should look something like this.

- Click
Create
and it should open up Metamask for you to sign and pay for the deployment. Once you confirm the transaction and it gets mined, you should now have a brand newGnosis Safe
to play around with. After the deployment is complete — make sure that you clickGet Started
to load the safe into the UI. The costs are pretty minimal, and I’m pretty sure that Gnosis uses theMinimal Proxy
design — I have an article on it HERE if you’re interested.

You should be able to look in the left nav bar and see your deployed gnosis safe, but sometimes caching or whatever can be an issue with gnosis. THIS article should help you if you’re in that boat.
Cool… Now What?
So, you have a multisig, what now? What can you do with it? Well, one thing that you can do with it out of the box is store your assets in it — just like you would with any other asset. The only thing is that now, you have the option of multiple people having a say on whether a transfer OUT of the wallet is valid — and you don’t run the risk of a single compromised account draining your personal or corporate funds. However, for that to work, we need to add another signer to the multisig because we only added a single signer when we set it up.
New to trading? Try crypto trading bots or copy trading
Adding another Signer(s)
Hardware Wallet
Before we get into adding another signing account, I’d like to back up and recommend that instead of a simple Metamask account signature that you integrate the use of a hardware Ledger Nano S — it’s simple, cheap, secure, and relatively easy to use. I’ve been using them since 2017 and never had a reason to switch. Buy a 3 pack and give them to your team to use — I would not add a signer that did not have a hardware wallet. So, with that being said, let’s continue.
Seed Phase Custody
I said I’d continue, but I lied. I want you to understand how important the role of a signer on this multisig is. Not only should every signer on your multisig have a hardware wallet, but they should be practicing security hygiene that ensures that their seed phrase backing the device does not get lost or stolen. This seed phrase is much more important than the device itself as it allows you to restore any hardware or software wallet and sign transactions. Here are some good suggestions that if used in the correct combination should let you sleep well at night. Make sure that every team member is held to this standard.
- Put your seed phrase in a safety deposit box at the bank
- AND
- Put your seed phrase on a pw protected usb stick at your bank
- Shard your key and give parts of it to people you trust to take care of it
- Be creative but never store it online or in an insecure physical location
Adding another signer — for real this time
Once you’re sure that your co-signer has secured their signing address, you can add them to the multisig. In order to do this, select your newly created multisig, scroll down and selectSettings
, scroll down to Owners
and select it. You should see something like this.

Select, Add new owner
and it will walk you through adding the new signer. The steps are
- Add human readable name & address
- Set required signatures — Let’s set the confirmations to 2/2 so all signers must sign for our testing purposes
You should have a dialog that looks like this

Notice how I added mark.cipherz.eth
? This is an example of an ENS(Ethereum Name Service) subdomain and it’s probably a good idea to assign subdomains to your signers if they are part of your organization. We will get into ENS and subdomains in a later article. For now, don’t worry about it and call your second signer whatever you want.
Click Submit
and sign the subsequent Metamask transaction. Note that you must be connected with the same account that you deployed the multisig with as you are modifying the onchain contract to include a signer and change the required minimum signatures. When it’s done you should see something like this.

If you go to the Owners
again, you will see the new signer added.

Take it for a test drive
So, we now have a functional multisig on Rinkeby with multiple signers. We will now do a simple test using it to securely store some Rinkeby eth and transfer it out to an address of our choice. This covers our Asset Risk
that we spoke about in the PREVIOUS ARTICLE. To begin, let’s transfer some Rinkeby eth to the multisig address and verify that it shows up in our balance. To get the deployed address, click the copy
icon next to the contract in the left pane.

Now that you have the multisig address, transfer some Rinkeby eth to it via a funded account. ie. the original deployment account if you want. I’ll wait…
Note that the copied address will have a rink:
prefix to it — this is a nice security precaution to force you to doublecheck the address.
You should now see a balance in your multisig. In this case, I transferred .5 eth as shown below.

Now, the moment you’ve been waiting for — executing a transaction requiring multiple signers…
Navigate to Assets -> Coins
and click the Send
button that appears on-hover over the eth balance.

Fill out the transfer information — you can send it to whomever or whatever you want, but I’m sending it back to myself as shown below.

Click Review and look over the transaction summary — once you’re ok with it, click Submit
and sign the transaction with metamask. Don’t forget to approve on your hardware wallet as well if you’re one of the elite. You should see a screen like the one below which indicates that 1 out of the required 2 has signed the transaction.

You can then copy the current url in the browser and send it to the person that needs to sign it. They will see a similar page but have the ability to confirm the transaction(notice that you have already signed and the option is greyed out now)

The last signer will have the option to execute the transaction, but if they are a cheapskate they may defer to another signer to execute it.

Once they have submitted and one signer executes(pays) for the transaction — you are done. See the executed transaction summary below and verify your balances to see that the eth was sent.

Conclusion
In this article, we setup a Gnosis Safe
, added another signer to it, and executed a transaction on the multisig contract itself utilizing both signers. This is simple but immensely powerful in the shark-infested waters of crypto. Being able to custody assets such as eth, erc20 tokens, and nfts(yes, you can store nfts) in a wallet with the flexibility of multiple signers is something that you and your project simply cannot live without. In the next article, we will take this one step further and have our gnosis safe own
another contract and use multiple signers to execute admin operations on it. Until then, revel in your knowledge and congratulations on a job well done!