How to Multisig on Cosmos

March 16, 2022

 

Multisignatory accounts (multisigs) are finicky to implement on the Cosmos Hub. We’ve got a step-by-step breakdown of how to implement the multisigs using CLI. The Keplr wallet is creating a UI for multisigs. There is other tooling available from third parties. In the meantime, until accurate and secure tooling is available, we’ve put together a short tutorial.

Multisigs transactions require multiple accounts to sign transactions before they can be finalized and broadcasted onto the chain. Multisig accounts can have any number of holders on the chain. It’s considered best practice to have an odd number of signatories if the multisig account needs a tie-breaking address, but this is not necessary. Multisigs are handy when you want to have a shared account with your friends to invest, create a small grant committee, or receive funds for an organization.

Multisig accounts are helpful to have, but are fairly nuanced to deploy on the Cosmos Hub. We recently established a multisig account for an airdrop on a Cosmos SDK chain, so we figured we would put together a tutorial for establishing a multisig account on Cosmos chains. Note here you’ll need to change gaiad to the binary for the respective chain.

To set up a 2-of-3 multisig, each member must supply their individual public key. In this example, the person who holds key 1 will have to import both key 2and key 3 to generate the multisig account public key.

After the new multisig public key k1k2k3 has been stored, its address will be used as a signer for transactions:

You can view multisig threshold, pubkey members, and respective weights by viewing the JSON of the key by using the –show-multisig flag:

All transactions can be signed by a multisig, not only blank ones. Add the –from and –generate flags only, and that will output a usable unsigned tx.

The file unsignedTx.json contains the unsigned transaction encoded in JSON. Key one can now sign the transaction with its own private key. They have to be the first to initiate the first transaction:

Once the signature is generated, key 1 transmits both unsignedTx.json and p1signature.json to k2 or k3, which in turn will generate their respective signature:

k1k2k3 is a 2-of-3 multisig key, therefore one additional signature is sufficient. Any of the key holders can now generate the multisig transaction by combining the required signature files:

Now you can send the  transaction to the node:

You’ve now got a multisig on the Cosmos Hub and the ability to send transactions on the chain.

The next Cosmos upgrade (Theta) is slated for Q1 of 2022 and will expand to include the groups and gov module in Q2 of 2022. In the Theta upgrade, the Cosmos Hub will include implementing interchain accounts. Interchain accounts will allow users to control addresses from one controller chain on other chains securely. Interchain accounts will unlock multisig functionality to increase its options across the Cosmos.

SHARE POST

Meet with us

Bring the Complete Staking Solution to Your Organization

Figment respects your privacy. By submitting this form, you are acknowledging that you have read and agree to our Privacy Policy, which details how we collect and use your information.