Dataset selection
The lattice was assembled from the 9 IO gov_action1 IDs published on
IO Momentum.
Step 1 - start from IO's published gov_action IDs
The 9 IO proposal pages linked from https://momentum.cardano.iog.io/governance
publish CIP-129 governance action IDs. Those gov_action1... IDs are the
seed list.
# Example seed from the Consensus proposal page:
gov_action1w0shrfxqwv95kk0v4cn34wylz25a2cmqkq5jpc0e2yrahhqava3qqfu3vtv
Step 2 - decode gov_action IDs to txid and index
CIP-129 bech32 governance action IDs encode the governance action transaction id plus the action index. Decoding the 9 IO IDs shows one shared submission transaction with indices 0 through 8.
# CIP-129: https://cips.cardano.org/cip/CIP-0129
# decoded result for all 9 IO IDs:
txid=73e171a4c0730b4b59ecae271ab89f12a9d56360b02920e1f95107dbdc1d6762
indices=0,1,2,3,4,5,6,7,8
Step 3 - confirm titles via Koios proposal_list
Koios proposal_list confirmed that the shared submission transaction
contains 9 proposal rows, indices 0 through 8. The titles are Developer
Experience, Cardano Upgrades, Consensus, Cardano Maintenance,
L2 Scalability, Cardano High Assurance, Plutus, Blockfrost, and Pogun.
curl -sS "https://api.koios.rest/api/v1/proposal_list?limit=200&order=block_time.desc" \
| jq '[.[] | select(.proposal_tx_hash == "73e171a4c0730b4b59ecae271ab89f12a9d56360b02920e1f95107dbdc1d6762")]
| sort_by(.proposal_index)
| map({ix: .proposal_index, title: (.meta_json.body.title // .meta_url)})'
Step 4 - enumerate voting transactions via Koios vote_list
For each of the 9 gov_action1... IDs, vote_list returns the vote rows
that target that action. Across the 9 actions this produced 2,374 vote
rows and 1,687 unique vote transaction hashes.
curl -sS -G "https://api.koios.rest/api/v1/vote_list" \
--data-urlencode "proposal_id=eq.gov_action1w0shrfxqwv95kk0v4cn34wylz25a2cmqkq5jpc0e2yrahhqava3qqfu3vtv" \
--data-urlencode "select=vote_tx_hash,voter_role,vote,block_time"
Some vote transactions contain votes for other governance actions in the same body. The report queries below therefore filter back to the IO submission txid before counting tallies.
Step 5 - fetch CBOR via Koios tx_cbor
The final CBOR cache is the submission transaction plus the union of the
1,687 vote transaction hashes. CBOR was fetched in batches of 50 hashes
and saved as <txid>.cbor.
curl -sS -X POST https://api.koios.rest/api/v1/tx_cbor \
-H "Content-Type: application/json" \
-d '{"_tx_hashes":["73e171a4...","002df859...", "..."]}'
| source | count |
|---|---|
| submission tx | 1 |
| unique vote txs (union across 9 actions) | 1,687 |
| total in lattice | 1,688 |
| full enumeration | selections.txt (1,688 lines) |
Return to the presentation.