Multi-sig DAO Part 3 — How to make a transaction with a multi-sig wallet

Nostradamus411
3 min readNov 4, 2021

--

Boom! 💥 ️Ann, Bob, and Chad have gotten their Osmosis Ministry of Meme Magic DAO funded by executing on a well planned, presented, and persuasively campaigned for governance proposal. The new DAO has held it’s first competition and is ready to award the winner with their prize of 420 uOSMO’s.

🧿 Osmosis Ministry of Meme Magic DAO 🧙‍♂️️

The winner of the contest has provided their Osmosis wallet where they would like their prize to be sent:

osmo17jusve93442aj97ndgzjsramgjym0e2xaqkslg

Chad will first generate an unsigned transaction with a CLI command in this formatosmosisd tx bank send from_multi_sig_addr to_winner_addr ###denom --chain-id achain-# --generate-only > output_file.jsonwhich would look like the below based on the wallets we’re using for this series:

osmosisd tx bank send osmo1vl3v86sl8ly7apsjs2myx6nd3dg3d0ngnw9pkr osmo17jusve93442aj97ndgzjsramgjym0e2xaqkslg 420uosmo --chain-id osmosis-1 --generate-only > unsigned_multi_tx.json

This will create an unsigned_multi_tx.jsonfile in the directory where Chad ran the command from, and the contents of the file will look like this:

Chad will share the unsigned_multi_tx.json with Ann and Bob for them to sign, remember this is a 2 of 3 multi-sig so at least two of the members must authorize of the transactions before it can be broadcast to the network.

Ann will generate her signature with the following command:

osmosisd tx sign unsigned_multi_tx.json --from ann_dao --multisig osmo1vl3v86sl8ly7apsjs2myx6nd3dg3d0ngnw9pkr --chain-id osmosis
-1 > ann_sign.json

The contents of ann_sign.jsonlook like this:

Bob and Chad run the same command on their machines as well since the winner was by unanimous decision all three are signing the transaction. Chad collects the json signatures from Ann and Bob in addition to his own and is now ready to generate a signed version of the transaction using the provided signatures.

osmosisd tx multisign unsigned_multi_tx.json abc_dao ann_sign.json bob_sign.json chad_sign.json > signed_tx.json

Note that abc_dao is the name of the multi-sig wallet key. The signed_tx.json contents look like this:

All three have signed.
Magical Memes 🥂

Now for the FINAL step of broadcasting the signed transaction to the network so the amazing meme prize can be paid out. This command is short and simple:

osmosisd tx broadcast signed_tx.json

The output to the screen from the command provides us with the txhash we can verify on an explorer.

Let’s confirm…SUCCESS…a hefty award of 420uosmo has been delivered!

Until next time ✌

The most powerful tech stack in the cryptosphere! ⚛️🧪🧿

--

--