If you are launching a token or have a treasury to manage, and you would like to use multi-signature wallets to handle the tokens, you can do so in several ways. This is an overview of currently available tooling to manage your Cosmos SDK multisig wallets.
1. Using Cosmos native multisig wallets
Cosmos has built-in multi-signature wallets by default. Although the UX isn’t great, it’s tried and tested and has been used by numerous projects (ICF, Osmosis Foundation, etc) for several years.
One member of the multisig creates the wallet, which is derived from the public keys of all multisig members. Transactions are then created and signed off-chain, after which the fully signed TX is submitted and broadcasted to the chain. Once a multisig wallet has been created, members cannot be updated. In order to change membership, a new wallet has to be created and funds have to be transferred.
Command Line Interface
Using CLI, this process is a bit burdensome because the signed transaction’s JSON file needs to be passed around and manually shared with members. Full instructions can be found on the Cosmos Hub docs. Just replace the
gaiadbinary with the chain you’re managing the funds on.
There has been some work done on a general purpose Interchain user interface to manage multisig wallets. The tool is live here. The web interface fetches chain data and public RPC endpoints using the chain registry. Some of these RPC endpoints might not be available, in which case you’d need to manually input them in the config settings.
This tool allows you to create wallets and send or delegate tokens. The signed transactions are stored in a database so you don’t need to send over any files to members, just the transaction URL. Transactions can be signed using Keplr. The GitHub repository also contains a branch with a feature to create vesting accounts, but the work has been discontinued.
Osmosis forked this work here before it became multi-chain. They included the option to manually input a JSON file to sign any arbitrary transaction. Their tool is live here.
Please note that these two web interfaces have not been audited. Use at your own risk!
CLI Multisig Manager
Informal Systems has developed a multi-chain multisig manager that allows you to create and manage multiple transactions which are stored in an S3 bucket. The repo is available here.
2. Using the Cosmos SDK’s Group Module
The Group module is a relatively new feature built-in as a native Cosmos SDK module. Instead of transactions that need to be signed, members create proposals to execute transactions that need to be voted on, similar to how the Cosmos governance module works. The key advantage to the previous multisig method is the fact that all interactions happen on-chain, so there is no need for manually signing and transferring JSON files over to members, plus the status of a transaction is publicly available.
Additional relevant features:
- Dynamic membership & member weights
- On-chain proposal creation & voting
- Multiple token pools governed by various voting mechanisms, under one group
There is currently no web interface available, although Regen Network is currently developing one. There is a full tutorial on the Developer Portal. The source code is available here, and the specifications are here.
Please note this module has not been audited at this point. The module was released in SDK v0.46 late 2022 and has not seen much usage in the wild yet.
DAODAO is an open-source DAO tool written in CosmWasm that currently has a live implementation on Juno. This is a highly versatile web interface that allows you to create and manage multi-signature wallets, as well as token or NFT-based DAOs. This is a very user friendly way to manage funds, but in order to use it you either have to move your tokens to Juno or run the platform on your own CosmWasm enabled chain.