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

NU5 Tracking: The Spec #1856

Closed
53 tasks done
dconnolly opened this issue Mar 5, 2021 · 22 comments
Closed
53 tasks done

NU5 Tracking: The Spec #1856

dconnolly opened this issue Mar 5, 2021 · 22 comments
Labels
Epic Zenhub Label. Denotes a theme of work under which related issues will be grouped

Comments

@dconnolly
Copy link
Contributor

dconnolly commented Mar 5, 2021

This epic will track the tasks that need to happen somewhere in code in order to implement Zcash Orchard and the other NU5 ZIPs in Zebra, as defined by the Zcash Specification.

This may include pieces of code contributed to the https://github.com/zcash/orchard crate or https://github.com/zcash/halo2 crate, by the zebrad team or the zcashd or whomever, but they need to happen by someone.

This tracking issue contains segments for the whole spec that includes Orchard changes for now. A checkbox means that that part of the specification describes something to implement.

A checked box or strikethrough means that we:

  • have implemented that item
  • are tracking that item in another Epic, or
  • have otherwise resolved that item.

Our mandatory Canopy checkpoint significantly reduces the number of features that we have to implement.

Leaf nodes are marked by – and correspond to implementable items. They should be followed by issue references that track the status of that issue, or a short explanation. Some pieces of the spec that pertain to sending or receiving money or blockchain scanning are noted here, but not linked to issues, as we are not doing that work for Zebra for NU5 activation.

Also remember that consensus ZIPs are part of the spec

@dconnolly dconnolly added the Epic Zenhub Label. Denotes a theme of work under which related issues will be grouped label Mar 5, 2021
@teor2345
Copy link
Contributor

teor2345 commented Mar 8, 2021

@dconnolly @mpguerra where's the ticket that tracks: "Pre-NU5 spec sections still active in Canopy or NU5, which Zebra hasn't implemented yet" ?

@mpguerra
Copy link
Contributor

mpguerra commented Mar 9, 2021

@dconnolly @mpguerra where's the ticket that tracks: "Pre-NU5 spec sections still active in Canopy or NU5, which Zebra hasn't implemented yet" ?

this is now #1872

@mpguerra
Copy link
Contributor

mpguerra commented Mar 9, 2021

@dconnolly I don't see any changes for NU5 in 5.4.1.5. CRHivk Hash Function, but I see them in 5.4.1.6 instead.

If that's correct, I will move the work in 5.4.1.5 into #1872 for the Pre-NU5 spec work

@mpguerra
Copy link
Contributor

@dconnolly I started adding #1864 to some of the spec sections, can you please review these?
Also, do we need to create an "Orchard Key Agreement and KDF" issue similar to #271 and/or an issue to "Implement Orchared shared secret key derivation" similar to #301 ?

@mpguerra
Copy link
Contributor

For "4.1.6. Signature" do we need to create an issue for Pallas signatures?

@mpguerra
Copy link
Contributor

For "4.1.10 Group Hash" are we going to pull in as a dependency?

@mpguerra
Copy link
Contributor

For "4.7.2. Sending Notes (Sapling and Orchard)", do we need to create an new issue to implement Orchard note encryption and decryption similar to #181 and #269?

@dconnolly
Copy link
Contributor Author

For "4.7.2. Sending Notes (Sapling and Orchard)", do we need to create an new issue to implement Orchard note encryption and decryption similar to #181 and #269?

We need to do this eventually for when we are sending money via Orchard but not for 'just' Zebra's NU5 chain validation. So yes we need to create the ticket but it does not have to be completed yet.

@dconnolly
Copy link
Contributor Author

For "4.1.10 Group Hash" are we going to pull in as a dependency?

I think this is completed in #1864, under the hood it uses the pallas_curves dependency

@mpguerra
Copy link
Contributor

Do we need to create an issue for " 4.9. Merkle Path Validity" also?

@dconnolly
Copy link
Contributor Author

For "4.1.6. Signature" do we need to create an issue for Pallas signatures?

Yes I think so. I am stubbing out similar types to RedJubjub in that branch #1864 just to have the types, but I not sure yet if we just want to port redjubjub to Pallas, or great a generic RedDSA variant, or what, do I'm delaying the decision 🙈

@dconnolly
Copy link
Contributor Author

@dconnolly I don't see any changes for NU5 in 5.4.1.5. CRHivk Hash Function, but I see them in 5.4.1.6 instead.

If that's correct, I will move the work in 5.4.1.5 into #1872 for the Pre-NU5 spec work

I think that is correct, yes

@str4d
Copy link
Contributor

str4d commented Mar 12, 2021

For "4.1.6. Signature" do we need to create an issue for Pallas signatures?

Yes I think so. I am stubbing out similar types to RedJubjub in that branch #1864 just to have the types, but I not sure yet if we just want to port redjubjub to Pallas, or great a generic RedDSA variant, or what, do I'm delaying the decision 🙈

As a reminder, I have already created a (semi-)generic reddsa from the redjubjub crate; it is what I'm using in the orchard crate. It's currently just a branch; I haven't published it yet because I want to discuss with you how you'd like to collaborate on maintenance going forward (since it's basically identical to redjubjub, and redjubjub could just be a wrapper around it).

@mpguerra
Copy link
Contributor

Do we need to create an issue for "4.14. Balance and Binding Signature" ?

@mpguerra
Copy link
Contributor

Do we need to create an issue for "5.4.9.3. Halo 2" similar to #305?

@teor2345
Copy link
Contributor

Do we need to create an issue for "4.14. Balance and Binding Signature" ?

Pool balance is #1895, but we still need to create (or find) tickets for the rest.

@teor2345
Copy link
Contributor

There are a significant number of transaction consensus rules in 7.1 that aren't covered by ZIP-225 or the v5 transaction RFC.

I'd like to track those changes in separate tickets, because the v5 transaction RFC is already quite large, and we need to finish it off soon.

@daira
Copy link
Contributor

daira commented Mar 18, 2021

Note that some of the section numbers in the spec changed as a result of inserting section 4.1.3 Pseudo Random Permutations. Also 4.7.2 (sending notes) was split into separate Sapling and Orchard sections.

This was referenced Mar 23, 2021
@mpguerra
Copy link
Contributor

Updated section "5.6.4 Unified and Orchard Encodings" with "5.6.4.1 Unified Payment Addresses"

@mpguerra
Copy link
Contributor

Added #2064 to section "5.4.1.10 PoseidonHash Function" and Epic

@mpguerra
Copy link
Contributor

mpguerra commented May 4, 2021

@dconnolly: Is "4.14. Balance and Binding Signature (Orchard)" fully covered by ZIP-209/#1895 ? If so, we can cross it out from this list

@mpguerra
Copy link
Contributor

Looks like we are done here 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Epic Zenhub Label. Denotes a theme of work under which related issues will be grouped
Projects
None yet
Development

No branches or pull requests

5 participants