Skip to main content

Conway ledger era FAQs

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

Last update: 2023-10-25

Based on ledger design at commit: cd10d6b

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, 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)NonedrepDeposit
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)coinpayment_credentialNone
Treasury donation (in Tx body)positive_coinpayment_credentialNone

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.

  1. 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.