Milestone #6 Submission
Dear Zcashers,
We are super excited to share that we have just pushed our first PR of the implementation of the ZSA protocol. This update includes most of the ZSA protocol (see the specifics below, as posted in the PR), which includes the issuance mechanism and the transfer mechanism. It does exclude the burn mechanism and the final version of the circuit for the transfer proof.
Hence with this update, we are submitting the implementation of the issuance, corresponding to milestone #6.
You can run an end-to-end test that will generate new custom assets and will transfer them (even if the proof is not fully correct or sound yet). Give it a try and let us know how it goes!
Please leave any comments on the PR so we can track everything.
In the coming weeks we will update this PR with another commit that will include the burn mechanism, and then follow with a finished circuit.
PR Text
Issuance in accordance with milestone #6 of the ZSA proposal and grant.
This PR should be reviewed as an implementation for milestone #6 of the ZSA milestone table. It should not be merged until the rest of the ZSA functionality is ready.
What’s included:
- Issuance data structures:
IssueBundle
andIssueAction
. - A builder embedded as part of
IssueBundle
. -
verify_issue_bundle()
for consensus verification. - Extensive unit tests for issuance.
- Extensive e2e tests for zsa transfer functionality.
tests/zsa.rs
Also included:
-
note_type
derivation. - value commitment changes and tests.
-
note_type
inside ofnote
. - builder changes for zsa.Included but not activated:
- Split note mechanism. It will be activated once the circuit is ready. This is done in order to preserve transfer functionality while the circuit is not ready.
Not included:
- The burning mechanism for transfer. (in progress, part of milestone 3)
- Circuit changes to support
note_type
, split notes, and all other new functionality. (in progress, part of milestone 3) - changes to note encryption to support
note_type
. Will require some changes to thezcash_note_encryption
crate. (in-progress)