The Simplest Multisig Wallet — Part 1

No doubt you’ve heard of Ethereum. But unless you’re a crypto-currency nerd, you probably don’t know much about Ethereum Multisig Wallets. And since multisig wallets are one of the best uses for cryptos, it’s worth your time to learn a bit… In this article I’ll introduce you to a very simple multisig wallet: what it is, and how you can use it. Even if you don’t own any Ether, you can follow the screenshots to see how the multisig wallet works.

What is a Multisig Wallet

Simply, a multisig wallet is a wallet that can hold funds (or crypto tokens), and then only spend those funds when a specific number of “owners” approve of the transaction. Think of a multisig wallet as a joint bank account with multiple signers. In most cases any signer can write checks on a joint bank account. But some accounts are set up so that all the signatories need to sign each check. Similarly a multisig wallet can be configured so that any one of the owners can approve a transaction; or it can be configured so that in order for a transaction to go through all the owners need to provide an approval. It can also be configured to require something in-between. For example, a transaction might require approval from any 2 out of 3 owners.

What is a Multisig Approval

In an Ethereum multisig wallet the way that an owner approves of a multisig transaction is by “signing” the transaction with his private key. This might sound intimidating, but in reality that is what you do for every transaction from a normal Ethereum account. The only difference is that in a normal transaction after you sign the transaction it is automatically broadcast to the Ethereum network. In the case of a multisig wallet however the transaction needs to be saved until all the necessary signatures are collected. Don’t worry if this all seems like Greek to you — I’m going to walk you through every step…

An Example Multisig Wallet

For this example I’m going to take you through the process while I set up a multisig wallet with 2 owners, configured such that each transaction requires approval from both owners. This would be handy for example in a partnership where both partners want to be involved in every expenditure from the joint account. In this example the account owners will be me and my partner, Sal.

Get MetaMask

If you don’t already have the MetaMask extension installed on your browser, go and install it now. I won’t detail the steps for installing MetaMask, except to say go to https://metamask.io/ and follow the instructions. It really is pretty straightforward. And MetaMask is a great Ethereum tool for lots of things besides multisig wallets. So even if you’re just watching me perform the rest of the steps in this article — I recommend that you actually do this step yourself. In the screenshot you can see that MetaMask is unlocked in my browser.

MetaMask is installed and enabled in my browser

Introducing The Simple Multisig Wallet

There are a number of multisig wallets for Ethereum. But I especially like the Simple-Multisig-Wallet, (contract written by Christian Lundkvist; UI written by Pratyush Bhatt). To use this wallet start by pointing your browser to: https://riverdimes.io/wallet

Make sure that MetaMask is unlocked, and select the Ethereum account (in MetaMask) that you want to use. Click the New-Wallet button to create a new multisig wallet. You can give the wallet a name, such as “Radhika & Sal Joint Wallet.” Now you need to add owners (authorized signers). By default the first owner account is the current MetaMask account. In the screenshot below I added my Ethereum account (0x90f8b…) as the first owner. I also labeled that account “Radhika’s Account”

Next I add an owner account for my partner, Sal. The thing that makes the Simple Multisig Wallet so simple is that it doesn’t do everything for you. In particular, it doesn’t offer any bells and whistles to facilitate communications between the owners. So I just whip out my email application and ask Sal to send me his Ethereum address. There’s generally nothing private about an Ethereum address — it’s only the private key that needs to be safe-guarded.

Once Sal sends his Ethereum address (in an email), I copy-and-paste it into the address field; enter a label, “Sal’s Account;” and click the Add-Account button. I’m almost done. All that’s left is to select the threshold. The threshold indicates the number of signatures that are needed in order to approve a transaction. In the screenshot below you can see how the screen looks so far. Notice that cursor is pointing to the threshold dropdown — and you can see that I’ve selected a threshold of 2, meaning both owners are required to sign each wallet transaction:

The Threshold specifies how many Owner signatures are needed

The last step is to deploy the Simple-Multisig-Wallet contract to the Ethereum blockchain. When you click the ‘Deploy-This-Wallet’ button you’ll be presented with a dialog from MetaMask asking you to approve the transaction. note: This is the transaction that deploys the multisig contract — it is not a transaction from the multisig wallet.

MetaMask transaction to deploy the wallet contract

Wait for the transaction to complete. Once it completes it will look like this:

The wallet has been deployed

We just deployed a multisig wallet contract!

When you click the “View Wallet” button you’ll need to select the wallet from the dropdown list — But if this is the only wallet that you’ve deployed, then it’s the only entry in the list. Here’s how it looks:

The ‘View Wallet’ screen

One item that you’ll need to note is the wallet address — The other owners (Sal in my case) are going to need that. In the screenshot above my mouse pointer is pointing to it (0xe78a0f7…). In fact I’ve discovered that the easiest way to send all the pertinent information is to highlight all the wallet data and copy the information to an email, which you then send to Sal. A little later we’ll come back as Sal; and I’ll show you how that information is used. At a minimum you’ll want to send Sal a note like this: