Skip to content

chore: minimize orchard fork + switch imt-tree to crates.io#13

Merged
czarcas7ic merged 8 commits into
mainfrom
adam/sean-comment-round-1
Apr 10, 2026
Merged

chore: minimize orchard fork + switch imt-tree to crates.io#13
czarcas7ic merged 8 commits into
mainfrom
adam/sean-comment-round-1

Conversation

@czarcas7ic

@czarcas7ic czarcas7ic commented Apr 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

Orchard fork minimization:

  • Moved mul_chip (MulChip + MulInstruction) and spend_authority gadgets out of orchard into voting-circuits/src/circuit/
  • Reverted orchard circuit.rs spend authority to upstream v0.11.0 inline block
  • Reverted dev profile tweaks in orchard/Cargo.toml to match upstream
  • Reverted 15 unused visibility widenings back to pub(crate)
  • Removed dead files: orchard/src/circuit/README.md, orchard/src/shared_primitives/
  • Added UPSTREAM.md documenting the remaining fork diff (visibility widenings + structural additions) needed to eliminate the fork entirely

Dependency cleanup:

  • Switched imt-tree dev-dep from floating branch = "main" git dep to published crates.io v0.1.0

Related PRs

Test plan

  • cargo test — 125 tests pass (121 unit + 4 integration)
  • Orchard fork diff reduced: mul_chip.rs and shared_primitives/ removed, dev profiles match upstream v0.11.0
  • UPSTREAM.md documents all remaining fork changes for upstreaming

Replace the floating `branch = "main"` git dependency on
vote-nullifier-pir with the now-published crates.io version.
Eliminates the URL-form mismatch that caused imt-tree to be
double-compiled in the iOS SDK build (P4/P6).
…ting-circuits

These types are voting-circuits helpers with no consumers inside
orchard itself. Moving them shrinks the fork diff vs upstream v0.11.0.
…-circuits

Revert orchard/src/circuit.rs back to the upstream inline
[alpha] SpendAuthG + ak_P block, and move the extracted
prove_spend_authority() function into voting-circuits where its only
consumers live (delegation and vote-proof circuits).
Revert [profile.dev] opt-level and [profile.release/bench] debug
settings to match upstream zcash/orchard v0.11.0.
…ate)

Revert visibility widenings that voting-circuits does not import:
T_Q, T_P, L_ORCHARD_SCALAR, L_VALUE, NullifierDerivingKey::{prf_nf,
to_bytes, from_bytes}, CommitIvkRandomness::{to_bytes, from_bytes},
Nullifier::dummy, Anchor::inner, value_commit_orchard, lebs2ip,
lebs2ip_field, i2lebsp. Also remove circuit/README.md which documented
voting-circuits gadgets, not orchard internals.
Comprehensive checklist of visibility widenings and structural
additions that need to be upstreamed to zcash/orchard before the
fork can be removed entirely.
Minimize orchard fork: move voting-only code out, revert unnecessary changes
chore: switch imt-tree to crates.io v0.1.0
@czarcas7ic czarcas7ic changed the title Sean review round 1: fork minimization + dep cleanup (P2/P4/P6) chore: minimize orchard fork + switch imt-tree to crates.io Apr 10, 2026
@czarcas7ic czarcas7ic marked this pull request as ready for review April 10, 2026 22:22
@czarcas7ic czarcas7ic merged commit d0b2ced into main Apr 10, 2026
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

Successfully merging this pull request may close these issues.

1 participant