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

Nullifier Set #289

Closed
dconnolly opened this issue Mar 3, 2020 · 4 comments
Closed

Nullifier Set #289

dconnolly opened this issue Mar 3, 2020 · 4 comments
Assignees

Comments

@dconnolly
Copy link
Contributor

Seems like this can be generic between Sprout and Sapling?

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

@dconnolly
Copy link
Contributor Author

Related to #287, #288

@yaahc
Copy link
Contributor

yaahc commented Jul 6, 2020

I'm unsure how to proceed on this issue. I've read everything I could find in the spec on nullifier sets but it never really describes how they should be implemented and what properties are important.

I get that nullifiers are derived from the spending key + the p (position?) of the note, and I get that this position is where the note commitment is in the merkel tree. My assumption is that the nullifier set is just a plain ole set, like a HashSet, that stores all of the nullifiers. But also the spec says that each treestate has a nullifier set associated with it, which makes me think that we need a set type like https://docs.rs/im/15.0.0/im/struct.HashSet.html that lets us store a reference to the current version of the hash set for each treestate (transaction?) without having to clone the entire HashSet each time.

I have no idea if I'm entirely off base or not, let me know if this sounds right or what I should be doing instead.

@dconnolly
Copy link
Contributor Author

This is mostly going to maintained in our state layer: #902

@dconnolly
Copy link
Contributor Author

Basically all handled by the state layer: zcash/zips#399

@dconnolly dconnolly mentioned this issue Mar 5, 2021
53 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants