Mult-sig DAO Part 1 — How-to create a multi-sig wallet in the Osmosis Zone
The most readily available implementation for a decentralized autonomous organization implementation is the use of a K of N multi-signature wallet to control which initiatives seed funds are allocated to.
A multi-sig wallet is a wallet created through the combination of the public keys of N number of individual standard wallets. Where K represents the number of members which must each individually sign a transaction before it can be successfully broadcast to the chain and funds spent.
This post will walk through the steps to use the command line interface (CLI) of an Osmosis node to create a multi-sig wallet. Part two will be how to submit a governance proposal to have a community pool spend up for vote to fund the DAO wallet.
Prerequisites:
- Compile osmosisd from source or download pre-compiled binaries from github releases
- Initialize and start the daemon (osmosisd) to sync your node so you can submit transactions to the chain
Ann, Bob, and Chad have the grand idea for a visionary DAO in the Osmosis Zone. They plan to create a 2 of 3 multi-sig wallet then go through the informal off & on chain governance frameworks to request a spend from the Osmosis Community Pool. If it passes an on-chain vote the wallet will be seeded with capital so the DAO can see their vision implemented with expenditure transparency to the community whom will have oversight over future governance proposals for additional rounds of funding if justified.
First, each of the three members will create a “signing wallet” locally on their own computers to be their input for generating the DAO multi-sig.
The command is pretty self explanatory in that it adds a new key (aka wallet) to the users keyring.
Ann executes : osmosisd add keys ann_dao
Bob executes : osmosisd add keys bob_dao
Chad executes : osmosisd add keys chad_dao
The trio has decided that Chad will collect the other two members DAO signing wallet public keys (pubkey : output in above terminal images) so they DM Chad their pubkey’s so he can execute the next step which is to create the multi-signature wallet.
At the start of this step Chad only has his own key available to him on his key ring…
Show keys on your key ring : osmosisd keys list
…but now that Bob & Ann have DMed him their signing wallet pub keys he can run the follow commands to add their keys to his key ring and generate a multi-sig wallet from combining the three.
Adding Ann’s key :
osmosisd keys add ann_dao — pubkey osmopub1addwnpepq2x9ze7m5y05n0a40mgv820escsuqvdncm5exfhgcq8l6qg9fryk75dmsh4
Then Bob’s key :
osmosisd keys add bob_dao --pubkey osmopub1addwnpepqw2cwq9njnqu84r9wvddwp7en433elmkgu0gqvw56ajwn2jtucn62rznyya
List the keys available to confirm :
Create the multi-signature wallet:
osmosisd keys add abc_multi --multisig ann_dao,bob_dao,chad_dao --multisig-threshold 2
Lets break this command down:
- It starts with
osmosisd keys add abc_multi
to create a new key/wallet - Then comes
--multisig ann_dao,bob_dao,chad_dao
parameter which indicates the key/wallet being created is a multi-signature one and denotes which keys on the keyring to combine to to generate it - Last is the
--multisig-threshold 2
which defines how many of the keys used to create the multi-sig need to sign a transaction
Success! ✌️
In Part 2 we’ll cover the governance process and funding of a DAO through a community pool spend proposal.