Evolution SDK
Governance

Voting

Cast governance votes on proposals

Voting

DReps, Constitutional Committee members, and Stake Pool Operators can vote on governance actions. Evolution SDK's vote operation submits voting procedures in a transaction.

Casting a Vote

Build a VotingProcedures object with a voter, the governance action to vote on, and your vote (yes/no/abstain):

import { , , , , ,  } from "@evolution-sdk/evolution"

const  = .()
  .({
    : "https://cardano-preprod.blockfrost.io/api/v0",
    : ..!
  })
  .({ : ..!, : 0 })

// 1. Create a voter (DRep identified by key hash, script hash, or built-in)
declare const : . // from DRep.fromKeyHash() or DRep.fromScriptHash()
const  = new .({  })

// 2. Identify the governance action to vote on (from chain query or governance explorer)
declare const : .
const  = new .({
  : ,
  : 0n,
})

// 3. Create a voting procedure — yes(), no(), or abstain()
const  = new .({
  : .(),
  : null, // optional metadata URL + hash
})

// 4. Combine into VotingProcedures and submit
const  = .(, , )

const  = await .().({  }).()
const  = await .()
await .()

Vote Options

FunctionMeaning
VotingProcedures.yes()Vote in favor
VotingProcedures.no()Vote against
VotingProcedures.abstain()Explicitly abstain

Voter Types

VoterCredential TypeScript-Controlled?
DRepKey hash or script hashYes
Constitutional CommitteeHot credential (key or script)Yes
Stake Pool OperatorPool key hashNo (key-hash only)

Script-Controlled Voting

For DReps or Committee members with script credentials, provide a redeemer:

import { , , ,  } from "@evolution-sdk/evolution"

const  = .()
  .({
    : "https://cardano-preprod.blockfrost.io/api/v0",
    : ..!
  })
  .({ : ..!, : 0 })

declare const : . // built with singleVote() as shown above
declare const : any // compiled Plutus voting script (from Aiken build or Blueprint codegen)

const  = await 
  .()
  .({
    ,
    : .(0n, []), // Vote purpose validator
    : "drep-vote"
  })
  .({ :  })
  .()

const  = await .()
await .()

The builder automatically detects script-controlled voters and will fail if a redeemer is required but not provided.

Next Steps

On this page