Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal to disallow v4 transactions and move all Sprout funds to the ZSF in NU7 #825

Open
daira opened this issue May 2, 2024 · 1 comment
Milestone

Comments

@daira
Copy link
Collaborator

daira commented May 2, 2024

In NU6 we will very likely be adding a new transaction version, v6. This is likely to mean that three transaction versions will be allowed simultaneously: v4, v5, and v6. That is complicated but not really so bad.

In NU7, it is proposed to reorganise transaction fields to support "action groups". This may or may not require another transaction version, v7, but it will increase the number of options for the transaction format regardless. In addition there will be a new revision of the Orchard shielded protocol to support ZSAs, with an associated circuit change. I think it is not yet decided whether the old Orchard Action circuit will still be used in v5/v6 transactions after NU7 activation, but in any case proofs of that circuit must still be verifiable.

Having effectively four transaction versions (v4 to v6 and the action groups change), and five zk circuits (Sprout JoinSplit, Sapling Spend, Sapling Output, Orchard Action, OrchardZSA Action) in the field at once is too much. I'm good at remembering protocol details and I don't think I'll be able to effectively keep track of the whole protocol at this point, even with the help of my ADHD meds 😛

So, assuming that NU6 and NU7 remain roughly as planned, I propose that in NU7, we:

  • disallow v4 transactions, i.e. only v5, v6 and possibly v7 will be supported;
  • at the NU7 activation height, burn all remaining Sprout funds and add their total amount (i.e. the Sprout chain value pool balance at that point) to the Zcash Sustainability Fund.

This assumes that, out of the ZSF-related specification changes, at least ZIP 233 will have activated in NU6.

Note that the Sprout chain value pool balance will necessarily be nonnegative because ZIP 209 requires that as a consensus rule.

(As with all network upgrades, a rollback is possible undoing the activation, at which point it is technically possible for additional Sprout funds to be spent before any reactivation. Therefore, a validating node must keep the last Sprout treestate until it is no longer possible to roll back that far, i.e. 100 blocks after activation for Zebra. It is expected that all zcashd nodes will have halted.)

@daira daira changed the title Proposal to deprecate v4 transactions and move all Sprout funds to the ZSF in NU7 Proposal to disallow v4 transactions and move all Sprout funds to the ZSF in NU7 May 2, 2024
@daira
Copy link
Collaborator Author

daira commented May 4, 2024

This is proposed for NU7, so it should block the NU7 target until it is decided whether or not it will be included.

@daira daira added this to the NU7 milestone May 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant