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

Sapling Nullifier #288

Closed
dconnolly opened this issue Mar 3, 2020 · 3 comments · Fixed by #568
Closed

Sapling Nullifier #288

dconnolly opened this issue Mar 3, 2020 · 3 comments · Fixed by #568
Labels
NU-1 Sapling Network Upgrade: Sapling specific tasks

Comments

@dconnolly
Copy link
Contributor

https://zips.z.cash/protocol/protocol.pdf#nullifierset

@dconnolly dconnolly linked a pull request Mar 28, 2020 that will close this issue
@dconnolly dconnolly added the NU-1 Sapling Network Upgrade: Sapling specific tasks label Apr 2, 2020
@dconnolly dconnolly removed a link to a pull request Apr 15, 2020
@dconnolly dconnolly added this to the Validate transactions. milestone May 28, 2020
@yaahc
Copy link
Contributor

yaahc commented Jun 29, 2020

Working on this next.

And to answer a question from the primary refinement issue:

One of these is a nullifier for Sprout, while the other is for Sapling – should these be the same type or different types?

I doubt this is comprehensive but from what I can tell there are two issues at play here.

  1. we don't want to duplicate logic that is shared between both types
  2. we don't want to accidentally mix up Sapling and Sprout nullifier sets.

To me the latter seems like the bigger concern. Also, I have some ideas for how we could deduplicate the underlying implementation logic while still having distinct types for type checking purposes ranging from attaching all the logic to traits to just using newtypes to differentiate between the different nullifier sets. Either way I'd like to start with two distinct types here and move to a shared one if needed based on gathered experience.

@yaahc
Copy link
Contributor

yaahc commented Jun 29, 2020

@ZcashFoundation/zebra-team should I place the nullifier types in transaction or should I create a nullifier module similar to how we have address, notes, and keys modules for sapling/sprout types.

I'm leaning towards new module

@hdevalence
Copy link
Contributor

New module sounds good to me. It's always easier to re-export from submodules than to cut one big module into smaller ones.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
NU-1 Sapling Network Upgrade: Sapling specific tasks
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants