diff --git a/proto/utxorpc/v1beta/cardano/cardano.proto b/proto/utxorpc/v1beta/cardano/cardano.proto index 05c6a80..24e54fa 100644 --- a/proto/utxorpc/v1beta/cardano/cardano.proto +++ b/proto/utxorpc/v1beta/cardano/cardano.proto @@ -108,6 +108,7 @@ message Tx { AuxData auxiliary = 12; // Auxiliary data not directly tied to the validation process bytes hash = 13; // Hash of the transaction that serves as main identifier repeated GovernanceActionProposal proposals = 14; // List of governance actions proposed + repeated VoterVotes votes = 15; // List of voters and their corresponding votes cast in this transaction } // Define a governance action proposal @@ -136,6 +137,33 @@ message GovernanceActionId { uint32 governance_action_index = 2; } +// Valid vote choices for a governance action (CIP-1694). +// On-chain CBOR mapping: No=0, Yes=1, Abstain=2. +enum Vote { + VOTE_UNSPECIFIED = 0; + VOTE_NO = 1; + VOTE_YES = 2; + VOTE_ABSTAIN = 3; +} + +// A single cast vote on a governance action. +message VotingProcedure { + GovernanceActionId gov_action_id = 1; // ID of the governance action being voted on. + Vote vote = 2; // The vote cast. + optional Anchor anchor = 3; // Optional anchor for voter rationale. +} + +// Groups a voter with all votes they cast in the transaction. +// SPOs can only identify via pool key hash; DReps and CC members may use key or script hash. +message VoterVotes { + oneof voter { + StakeCredential constitutional_committee = 1; // Constitutional Committee member. + StakeCredential drep = 2; // Delegated Representative. + bytes spo = 3; // Stake Pool Operator (pool key hash). + } + repeated VotingProcedure votes = 4; // Votes cast by this voter. +} + message ParameterChangeAction { GovernanceActionId gov_action_id = 1; PParams protocol_param_update = 2; // The updates proposed