Rename valar-orchard back to orchard, bump to 0.12.1#19
Closed
p0mvn wants to merge 1 commit into
Closed
Conversation
Drops the crates.io publish rename from 2d66b14. Consuming workspaces (e.g. zcash_voting) can now go back to a single-orchard dependency graph via `[patch.crates-io] orchard = { git = ..., tag = "v0.12.1" }` without an orchard_compat byte-bridge layer for zcash_keys / librustzcash types. Changes: - orchard/Cargo.toml: name valar-orchard -> orchard; version 0.12.0 -> 0.12.1; drop valar-only description/documentation and the [lib] name = "orchard" override (redundant once [package] name = "orchard"); drop the book/ publish-exclude (we don't publish this fork to crates.io; `orchard` is taken upstream by zcash/orchard). - voting-circuits/Cargo.toml: version 0.2.0 -> 0.12.1 to align with the orchard fork version line; drop package = "valar-orchard" alias from the orchard path-dep. - voting-circuits/README.md: reword the valar-orchard section to point at the in-repo orchard/ crate consumed via git tag. The fork keeps corez (vs upstream core2) because core2 is yanked on crates.io and the swap doesn't affect git consumers. Verified: cargo check --all-features in orchard/ and cargo check --all-targets in voting-circuits/ both clean (pre-existing warnings only). Made-with: Cursor
Contributor
Author
|
Closing in favor of a cleaner fix in the
See follow-up PR on |
3 tasks
p0mvn
added a commit
that referenced
this pull request
Apr 25, 2026
…sors, local assign_constant) Catches voting-circuits up to the rest of the orchard 0.13 + valargroup PR #19 surface area. The previous "Drop vendored valar-orchard fork" commit only flipped the dependency edge over to orchard 0.13 via git; this commit ports the call sites to the public APIs that orchard 0.13 exposes (or, in one case, replicates locally) instead of poking at private fields: * `Nullifier(rho)` → `Nullifier::from_inner(rho)` `nf.0` → `nf.inner()` The `Nullifier` tuple field is no longer accessible from outside the orchard crate; the new public `from_inner` constructor and `inner` accessor are the supported way in. * `NoteValue::zero()` → `NoteValue::ZERO` `NoteValue::zero()` was crate-private in orchard 0.13.0 and stays that way. valargroup/orchard PR #19 stacks zcash/orchard #495 on top of the SpendAuthG branch, which retires `zero()` in favour of a `pub const ZERO: Self = NoteValue(0);` associated constant. All 9 zero-value sites in the delegation builder/circuit (plus the signed-note-commitment-integrity plan markdown) are migrated to the constant. * `orchard::circuit::gadget::assign_constant` is no longer re-exported by orchard 0.13 (it lives under module-private paths). Move our local copy into `crate::circuit::gadget::assign_constant`; the helper is generic halo2 plumbing (load a constant into a free advice cell so it's baked into the verifier key) with no orchard-specific dependencies, so it belongs here anyway. The README is updated to drop the "depends on valar-orchard" wording and explain the current pin: orchard 0.13 + valargroup/orchard PR #19, which carries cherry-picks of zcash/orchard #489 (SpendAuthG fixed-base multiplication) and zcash/orchard #495 (`NoteValue::ZERO`). The pin collapses back to the published crate once both upstream PRs land and an orchard 0.14 ships. Cargo.lock is regenerated against the orchard 0.13 git pin (lock now references commit 7fa213ae7057eb959e5aba4a4195d6ca2e26b252, the head of `valar/0.13-spend-auth-g` / valargroup/orchard PR #19). Verification: * `cargo build --tests --benches --all-features` — clean (only the three pre-existing dead-code warnings in vote_proof::authority_decrement test scaffolding). * No `NoteValue::zero(`, `_nf.0`, or `Nullifier(` constructor calls remain in `src/`. * Downstream consumers (zcash_voting, vote-sdk circuits + e2e-tests, zcash-swift-wallet-sdk libzcashlc) all `cargo check` clean against this voting-circuits + orchard combination. Made-with: Cursor
3 tasks
greg0x
added a commit
that referenced
this pull request
Apr 25, 2026
Now that valargroup/orchard PR #19 is merged, repoint from the migration branch valar/0.13-spend-auth-g to the merge commit on main. This retires the migration branch as a manifest dependency and gives a deterministic rev pin instead of a moving branch tip.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Undo the crates.io publish rename from
2d66b14. The orchard fork goes back to[package] name = "orchard"so consumer workspaces (e.g.zcash_voting) can have a single Orchard crate in their dep-graph again — the pattern that worked pre-0.12.Why revert the publish rename?
Keeping the fork as
valar-orchardon crates.io seemed nice for consumers, but it produces two distinctorchardnodes in any workspace that also pullszcash_keys/pczt/zcash_primitives(those transitively depend on the crates.ioorchardpackage). Cargo treatsorchardandvalar-orchardas separate crates regardless of tags or revs, which forces a byte-round-triporchard_compatbridge inzcash_voting. Going back to a single crate name lets[patch.crates-io] orchard = { git = …, tag = "voting-circuits-v0.12.1" }unify everything again.Because
orchardis a taken name on crates.io (upstreamzcash/orchard), the fork is now consumed via git tag only. Nocargo publishfor the fork.Changes
orchard/Cargo.toml:name = "valar-orchard"→orchardversion = "0.12.0"→0.12.1[lib] name = "orchard"(redundant once[package] name = "orchard").documentation = ".../valar-orchard",exclude = ["book"].voting-circuits/Cargo.toml:version = "0.2.0"→0.12.1(aligns with the orchard fork version line).package = "valar-orchard"alias from the orchard path-dep:orchard = { path = "../orchard", version = "0.12.1", features = ["circuit"] }.voting-circuits/README.md: reword the valar-orchard section to describe the in-repoorchard/crate consumed via git tag.corezstays (vs upstreamcore2):core2is yanked on crates.io andcorezis a drop-in; swap back isn't required for git consumers.Tags created (to be pushed alongside this PR merge):
orchard-v0.12.1voting-circuits-v0.12.1Test plan
cd orchard && cargo check --all-features— clean.cd voting-circuits && cargo check --all-targets— clean (pre-existing warnings only).zcash_votingwith[patch.crates-io] orchard = { path = "../voting-circuits/orchard" }andvoting-circuitsas a sibling path dep:cargo check --workspace --all-targets— clean.cargo treeinzcash_votingshows a singleorchard v0.12.1node; novalar-orchardor duplicateorchard.zcash_voting) flipped totag = "voting-circuits-v0.12.1"once this PR merges and tags are pushed.Follow-ups
valar-orchard 0.12.0andvoting-circuits 0.2.0on crates.io (they're now orphaned; no consumer should pick them up).valar-orchard 0.11.0crates.io artifact should also be yanked.Made with Cursor