Skip to main content

Conway ledger era FAQs

Warning: Please note that due to ongoing development, some answers may change over time.

Last update: 2024-02-17

Based on ledger design cddl: node 8.8.0-pre

1. What are the new Conway certificates?

Certificate in CDDLDescription
reg_certRegisters stake credentials
unreg_certUnregisters stake credentials
vote_deleg_certDelegates votes
stake_vote_deleg_certDelegates to a stake pool and a DRep from the same certificate
stake_reg_deleg_certRegisters stake credentials and delegates to a stake pool
vote_reg_deleg_certRegisters stake credentials and delegates to a DRep
stake_vote_reg_deleg_certRegisters stake credentials, delegates to a pool, and to a DRep
auth_committee_hot_certAuthorizes the constitutional committee hot credential
resign_committee_cold_certResigns the constitutional committee cold credential
reg_drep_certRegisters DRep's credentials
unreg_drep_certUnregisters (retires) DRep's credentials
update_drep_certUpdates DRep's metadata anchor

2. Why are there two ways to register/unregister stake credentials now?

⚠ There are currently two ways to register/unregister stake credentials because the old stake_registration and stake_deregistration will be deprecated in the era following the Conway era. ⚠

The new version allows the ledger to check deposit amounts and return them instantly (rather than on epoch boundary), matching the other new certificates containing deposits.

3. Why do new certificates have a coin field?

This change has been made to enable the checking of deposit amounts at the ledger level. It also proves to be more useful in Voltaire, given that protocol parameters are likely to change more frequently than in past eras.

4. Certificate and transaction field witnesses and deposits

CertificateParametersRequired witnessesDeposit/refund
stake_registration(0, stake_credential)NoneNone
stake_deregistration(1, stake_credential)stake_credentialNone
stake_delegation(2, stake_credential, pool_keyhash)stake_credentialNone
pool_registration(3, pool_params)pool_keyNone
pool_retirement(4, pool_keyhash, epoch)pool_keyNone
reg_cert(7, stake_credential, coin)stake_credentialDeposit coin of amount keyDeposit
unreg_cert(8, stake_credential, coin)stake_credentialRefund keyDeposit of amount coin
vote_deleg_cert(9, stake_credential, drep)stake_credentialNone
stake_vote_deleg_cert(10, stake_credential, pool_keyhash, drep)stake_credentialNone
stake_reg_deleg_cert(11, stake_credential, pool_keyhash, coin)stake_credentialDeposit coin of amount keyDeposit
vote_reg_deleg_cert(12, stake_credential, drep, coin)stake_credentialDeposit coin of amount keyDeposit
stake_vote_reg_deleg_cert(13, stake_credential, pool_keyhash, drep, coin)stake_credentialDeposit coin of amount keyDeposit
auth_committee_hot_cert(14, committee_cold_credential, committee_hot_credential)committee_cold_credentialNone
resign_committee_cold_cert(15, committee_cold_credential, anchor / null)committee_cold_credentialNone
reg_drep_cert(16, drep_credential, coin, anchor / null)drep_credentialdrepDeposit
unreg_drep_cert(17, drep_credential, coin)drep_credentialRefund drepDeposit of amount coin
update_drep_cert(18, drep_credential, anchor / null)drep_credentialNone
voting_procedure (in Tx body)voting_procedures = { + voter => { + gov_action_id => voting_procedure } }drep_credential OR committee_hot_credential OR stake_pool_keyHashNone
proposal_procedure (in Tx body)proposal_procedure = [ deposit : coin, reward_account, gov_action, anchor]coinDeposit is returned at the epoch boundary to the reward_account that is specified in the proposal.
Current treasury value (in Tx body)coinnoneNone
Treasury donation (in Tx body)positive_coinnoneNone

5. Why isn't the script directly included in a new constitution proposal for the proposal policy?

The decision to provide only the script hash, rather than the entire script, within a new constitution proposal serves the purpose of reusing the mechanisms previously implemented in Babbage. For instance, it allows individuals to use reference scripts to provide the actual script for the proposal policy when proposing various governance actions. Creating another source for scripts would entail more work.

6. Regarding the proposal policy for a new CC constitution action: How does the proposal policy script impact the script integrity hash in the transaction body? Do I need to consider the cost model of the provided script?

The new constitution proposal contains a ScriptHash, also known as the proposal policy. There is nothing special that needs to be done during the proposal stage because the policy is simply being suggested. The significance comes into play when a new constitution with a script hash (proposal policy) is enacted. At that point, the constitution will require scripts and redeemers for every governance proposal, except for the new_constitution and no_confidence proposals. In these cases, it will function in a manner similar to other scripts.

7. If a voting proposal requires a script and a redeemer, which redeemer tag should I use?

This tag is yet to be implemented. The designated tag for such instances will be 5, with the index in the redeemer corresponding to the proposal procedure. Additionally, there will be tag 4 – specifically for voting procedures.

8. What will be the maximum number of protocol parameter changes that can be executed in a single governance action?

With numerous Plutus versions having distinct cost models, accommodating all of them may become impractical. Nevertheless, it's highly unlikely to exceed the maximum transaction size in the near future.

9. Can one delegate to DReps that do not exist?

There are no checks for this at the ledger level, neither for SPOs nor for DReps. At any point, the DRep and the SPO to whom you delegated can unregister, so there is no need to enforce their existence when delegating.

10. Is it possible to stake a DRep deposit when it is locked?

No, there is no mechanism to facilitate that action. The purpose of the deposit is to restrict the use of those funds.

11. What happens with DRep deposits when no stake credential is provided, and where is the deposit returned?

DRep deposits function similarly to stake credential deposits. They are refunded in the transaction that unregisters the DRep. Stake pool and proposal procedures are retired or expired on the epoch boundary, which is why their deposits are refunded into a reward account. However, DReps and stake credentials are unregistered immediately.

13. Does the new donation field function similarly to implicit outputs?

Donations function more like fees. They are collected in a pool and then transferred at the epoch boundary.

14. How does the 'current treasury value' function, and what happens if I set it to an incorrect value?

The 'current treasury value' is used for conveying the current treasury amount to Plutus scripts. If the treasury field is set incorrectly, the transaction will be rejected.

15. How does the process of CC resignation (resign_committee_cold_cert) work, and what happens if all CC members resign? Does this impact the quorum?

Resigned and expired constitutional committee members are automatically counted as if they have voted 'Abstain'.

Another crucial point to note is that whenever the number of active committee members (those who are neither expired nor resigned) falls below the committeeMinSize protocol parameter, the system enters a mode in which it is as though all committee members have cast a 'No' vote.

16. For parameter_change_action and treasury_withdrawals_action does the optionally supplied policy_hash require a witness from the script?

Yes. It is only optional, when there is no governance policy. When there is a governance policy we require that policy_hash to be present and equal to the one in the elected constitution.

17. Are the governance voting threshold Parameters set to be fixed at 2 decimal places?

No, they are rational numbers on the unit interval where both numerator and denominator are specified by 64bit unsigned integers. So, those thresholds can be very precise.

18. Do unwithdrawn staking rewards count towards one's voting power/ is counted in active/inactive voting stake amounts?

Yes, the amount in the reward account is counted towards active stake, which means it will also participate in the voting. This decision was to prevent people from constantly withdrawing rewards just so they can get rewards on that amount.

19. Do any locked deposits count towards voting stake?

The only deposits which count toward voting stake thresholds are deposits locked for governance actions.