Skip to main content

Governance

Evolution SDK supports Cardano's Conway-era governance system (CIP-1694). Register as a Delegated Representative (DRep), vote on governance actions, submit proposals, and manage Constitutional Committee credentials — all through the transaction builder.

Governance Roles

RoleDescriptionOperations
DRepDelegated Representative who votes on behalf of delegatorsRegister, update, deregister, vote
Committee MemberConstitutional Committee memberAuthorize hot key, resign
Stake Pool OperatorPool operators vote on specific governance actionsVote (key-hash only)
ADA HolderDelegate voting power to a DRepDelegate to DRep

Quick Example

import { Credential, preprod, Client } from "@evolution-sdk/evolution"

const client = Client.make(preprod)
.withBlockfrost({
baseUrl: "https://cardano-preprod.blockfrost.io/api/v0",
projectId: process.env.BLOCKFROST_API_KEY!
})
.withSeed({ mnemonic: process.env.WALLET_MNEMONIC!, accountIndex: 0 })

declare const drepCredential: Credential.Credential

const tx = await client.newTx().registerDRep({ drepCredential }).build()

const signed = await tx.sign()
await signed.submit()

Script-Controlled Governance

All governance operations support script-controlled credentials. Provide a redeemer when the credential is a script hash:

import { Credential, Data, preprod, Client } from "@evolution-sdk/evolution"

const client = Client.make(preprod)
.withBlockfrost({
baseUrl: "https://cardano-preprod.blockfrost.io/api/v0",
projectId: process.env.BLOCKFROST_API_KEY!
})
.withSeed({ mnemonic: process.env.WALLET_MNEMONIC!, accountIndex: 0 })

declare const scriptDrepCredential: Credential.Credential
declare const governanceScript: any

const tx = await client
.newTx()
.registerDRep({
drepCredential: scriptDrepCredential,
redeemer: Data.constr(0n, [])
})
.attachScript({ script: governanceScript })
.build()

const signed = await tx.sign()
await signed.submit()

Next Steps