# How to submit a vote as an SPO for Governance Actions

The following guide will walk you through how to submit a vote as an SPO for a Governance Action.

{% hint style="info" %}
Credits to <img src="https://earncoinpool.com/images/coin_v3.png" alt="" data-size="line"> [Earn Coin Pool](https://earncoinpool.com/) for documenting the procedure.
{% endhint %}

## Step 1 - Copy Governance Action ID

You will probably use resources like gov.tools, adastat.net or temp.vote to view Governance 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

<figure><img src="https://2549074837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8PjW7zFPfe4PgCsPtkZx%2Fuploads%2FsWXWB6CUsfonr8U4OZJj%2Fgovernance_id.png?alt=media&#x26;token=596f8e16-5c59-4782-99d2-d83b157dd54e" alt=""><figcaption></figcaption></figure>

In this example we copied Governance Action ID:

```
15f82a365bdee483a4b03873a40d3829cc88c048ff3703e11bd01dd9e035c916#0
```

{% hint style="success" %}
You must use the Legacy Governance Action ID (CIP-105)
{% endhint %}

<figure><img src="https://2549074837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8PjW7zFPfe4PgCsPtkZx%2Fuploads%2FuJdxrwc9esiEih4A8jVP%2FScreenshot%202025-08-22%20115259.png?alt=media&#x26;token=1aa38743-a997-464a-8548-63389a857b48" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
💡TIP:\
Optionally you can run governance state query with some `jq` filters to get information on the governance actions directly from the ledger. For this example, you can run:<br>

`cardano-cli conway query gov-state --mainnet |`\
`jq -r --arg govActionId "15f82a365bdee483a4b03873a40d3829cc88c048ff3703e11bd01dd9e035c916" '.proposals | to_entries[] | select(.value.actionId.txId | contains($govActionId)) | .value'`

{% endhint %}

## 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

{% hint style="success" %}
Please note we keep our keys in the $HOME/cold-keys folder for this example, please change path as needed
{% endhint %}

```
chmod u+rwx $HOME/cold-keys
```

Next vote by running the following command, but <mark style="color:red;">NOTE</mark> in this example we vote "YES" you can vote  `--yes`, `--no`, `--abstain`

{% hint style="warning" %}
Under `--governance-action-tx-id` insert your id from the [above step](#step-1-copy-governance-action-id). Note <mark style="color:red;">#0</mark> at the end. Remove the "#0" and the "0" is what goes in the next line: `--governance-action-index`\
\ <mark style="color:red;">15f82a365bdee483a4b03873a40d3829cc88c048ff3703e11bd01dd9e035c916#0</mark>
{% endhint %}

```
cd $NODE_HOME
cardano-cli conway governance vote create \
--yes \
--governance-action-tx-id "15f82a365bdee483a4b03873a40d3829cc88c048ff3703e11bd01dd9e035c916" \
--governance-action-index "0" \
--cold-verification-key-file $HOME/cold-keys/node.vkey \
--out-file voted
```

{% hint style="info" %}
Above we named the output file "voted" best practices might be to name it the governance action id
{% endhint %}

## 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!

{% hint style="success" %}
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>
{% endhint %}

{% hint style="danger" %}
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.
{% endhint %}

Additional Resources:

{% embed url="<https://developers.cardano.org/docs/get-started/cardano-cli/governance/submit-votes/>" %}

## Contributors&#x20;

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

![](https://img.cexplorer.io/a/5/7/2/1/pool12wpfng6cu7dz38yduaul3ngfm44xhv5xmech68m5fwe4wu77udd.png) [Apex Cardano Pool - Ticker: APEX](https://cexplorer.io/pool/pool12wpfng6cu7dz38yduaul3ngfm44xhv5xmech68m5fwe4wu77udd)

![](https://img.cexplorer.io/7/e/1/9/f/pool16cdtqyk0fvxzfkhjg3esjcuty4tnlpds5lj0lkmqmwdjyzaj7p8.png)  [Earn Coin Pool - Ticker: ECP](https://cexplorer.io/pool/pool16cdtqyk0fvxzfkhjg3esjcuty4tnlpds5lj0lkmqmwdjyzaj7p8)

![xSPO Alliance Logo](https://2549074837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8PjW7zFPfe4PgCsPtkZx%2Fuploads%2F0sqzqoHnqVXizi2RHABd%2FxSPO_NFT_64x64.png?alt=media\&token=1c1b130e-26df-4b1e-8e0e-e85fae1ee73e) [xSPO Alliance](http://xspo-alliance.org/discord)
