How to submit a vote as an SPO for Governance Actions
UPDATE: 9/10/2024
The following guide will walk you through how to submit a vote as an SPO for a Governance Action.
Minimum CLI version required: 9.2.1.0
Step 1 - Copy Governance Action ID
You will probably use resources like gov.tools to view Goverance Actions and read about them. Once you are ready to vote on one of those actions as an SPO, you can copy the Governance id

In this example we copied Governance Action ID:
15f82a365bdee483a4b03873a40d3829cc88c048ff3703e11bd01dd9e035c916#0
Step 2 - Vote with SPO Key Air Gapped Machine
⚠️ON AIR GAPPED MACHINE
With the Governance Action ID noted and copied move to your Air Gapped Machine.
First unlock your cold keys if locked
Please note we keep our keys in the $HOME/cold-keys folder for this example, please change path as needed
chmod u+rwx $HOME/cold-keys
Next vote by running the following command, but NOTE in this example we vote "NO" you can vote --yes
, --no
, --abstain
Under --governance-action-tx-id
insert your id from the above step. Note #0 at the end. Remove the "#0" and the "0" is what goes in the next line: --governance-action-index
15f82a365bdee483a4b03873a40d3829cc88c048ff3703e11bd01dd9e035c916#0
cd $NODE_HOME
cardano-cli conway governance vote create \
--no \
--governance-action-tx-id "15f82a365bdee483a4b03873a40d3829cc88c048ff3703e11bd01dd9e035c916" \
--governance-action-index "0" \
--cold-verification-key-file $HOME/cold-keys/node.vkey \
--out-file voted
Step 3 - Copy voted file to Relay
Now we will take the "voted" file and copy to a warm machine to build the transaction. In this sample we will copy all our files to $NODE_HOME
directory.
Step 4 - Find UTxO and change tx-in
We will find a UTxO (preferably with only ADA) to use to submit the transaction. Assuming you have a payment.addr file, run the following command. Otherwise swap $(cat payment.addr)
with your payment address
cd $NODE_HOME
cardano-cli conway query utxo \
--address $(cat payment.addr) \
--mainnet
Step 5 - Build Transaction with the new UTxO
Replace utxo on the --tx-in
line with your selected utxo. Also if you don't have payment.addr file, swap $(cat payment.addr)
with your payment address in the --change-address
line
cd $NODE_HOME
cardano-cli conway transaction build \
--mainnet \
--tx-in ec8c53495d26989a924f01d36a73f82952d4efac79b8ed534aca99fc111d9e5d#0 \
--change-address $(cat payment.addr) \
--vote-file voted \
--witness-override 2 \
--out-file vote-tx.raw
Step 6 - Copy vote-tx.raw file to Air Gapped Machine
Copy your vote-tx.raw file over to you air gapped machine to sign. In this sample we will copy all our files to $NODE_HOME
directory.
Step 7 - Sign with SPO Cold Key
⚠️ON AIR GAPPED MACHINE
cd $NODE_HOME
cardano-cli conway transaction sign \
--tx-body-file vote-tx.raw \
--signing-key-file $HOME/cold-keys/node.skey \
--signing-key-file payment.skey \
--out-file vote-tx.signed
Re-lock your cold keys if you lock them
chmod a-rwx $HOME/cold-keys
Step 8 - Copy vote-tx.signed file to Relay
Copy the "vote-tx.signed" file to a warm machine to submit the transaction. In this sample we will copy all our files to $NODE_HOME
directory
Step 9 - Submit the Transaction
cd $NODE_HOME
cardano-cli conway transaction submit \
--tx-file vote-tx.signed \
--mainnet
Congratulations you did it!
You can check your vote on cardanoscan.io by going to the governance action and clicking the votes tab at the bottom. For this sample: https://cardanoscan.io/govAction/gov_action1zhuz5djmmmjg8f9s8pe6grfc98xg3szglums8cgm6qwancp4eytqqmpu0pr?tab=votes
If you are getting errors, please double check paths. This guide was done using the typical paths and file name from the coincashew original guide.
Additional Resources:
Contributors
Thanks to the following pools for helping to put together these guides. Please consider delegating to their pools to support them. Are you a pool? Consider buying them a coffee
Last updated