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

Parse Orchard data in Transaction Version 5 #1979

Closed
2 of 29 tasks
teor2345 opened this issue Apr 6, 2021 · 0 comments · Fixed by #2116
Closed
2 of 29 tasks

Parse Orchard data in Transaction Version 5 #1979

teor2345 opened this issue Apr 6, 2021 · 0 comments · Fixed by #2116
Assignees
Labels
A-consensus Area: Consensus rule updates A-rust Area: Updates to Rust code C-enhancement Category: This is an improvement NU-5 Network Upgrade: NU5 specific tasks
Milestone

Comments

@teor2345
Copy link
Contributor

teor2345 commented Apr 6, 2021

Is your feature request related to a problem?

Transaction version 5 contains Orchard data, which we need to parse:

Describe the solution you'd like

Implementation

Flags

Documentation

  • read the relevant consensus rules in the spec
  • read the relevant RFC section
  • summarise them in each struct and function's docs

implementation:

Testing:

  • Test round-trip serialization and deserialization for Arbitrary orchard::Flags

orchard module types

Implement serialization and deserialization if required:

  • Action
  • Halo2Proof
  • redpallas::Signature<Binding>

AuthorizedAction

Documentation

  • read the relevant RFC section
  • summarise it in each struct and function's docs

Implementation:

Testing:

ShieldedData

Documentation

  • read the relevant consensus rules in the spec
  • read the relevant RFC section
  • summarise them in each struct and function's docs

Implementation:

Testing:

  • Test round-trip serialization and deserialization for Arbitrary orchard::ShieldedData

Transaction

Implementation:

  • Implement serialization and deserialisation for the Transaction::V5 orchard fields using ShieldedData
  • implement orchard_nullifiers
    • return empty orchard nullifiers for V1, V2, V3, and V4 Transactions
    • use an exhaustive version match, so we don't accidentally return empty nullifiers for V6

Test round-trip serialization and deserialisation for:

  • Arbitrary transaction v5

Testing

High Priority

  • Test round-trip serialization and deserialization for:
    • Transaction v5 test vectors from zcashd (or test vectors that we create and share with zcashd)
    • Orchard-only, Orchard/Sapling, Orchard/Transparent, and Orchard/Sapling/Transparent test vectors

Medium Priority

Describe alternatives you've considered

This is a required change for NU5. Alternative designs were considered during the RFC process.

Additional context

In #1829 we parsed the sapling data in transaction version 5.

@teor2345 teor2345 added A-consensus Area: Consensus rule updates A-rust Area: Updates to Rust code C-enhancement Category: This is an improvement S-needs-triage Status: A bug report needs triage NU-5 Network Upgrade: NU5 specific tasks P-Medium labels Apr 6, 2021
@teor2345 teor2345 added this to the 2021 Sprint 8 milestone Apr 6, 2021
@mpguerra mpguerra removed the S-needs-triage Status: A bug report needs triage label Apr 13, 2021
@oxarbitrage oxarbitrage self-assigned this Apr 19, 2021
@mpguerra mpguerra modified the milestones: 2021 Sprint 8 , 2021 Sprint 9 May 3, 2021
@mpguerra mpguerra linked a pull request May 17, 2021 that will close this issue
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-consensus Area: Consensus rule updates A-rust Area: Updates to Rust code C-enhancement Category: This is an improvement NU-5 Network Upgrade: NU5 specific tasks
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants