What changed, and why it matters
This commit only rewrites a code comment in the Zcash PCZT validation logic. It clarifies why the code checks that certain cryptographic keys are not reused across Orchard and Ironwood 'pools.' The actual validation behavior does not change, but the new comment suggests the previous mental model—worrying about cross-pool signature copying—was slightly off. The change itself is documentation-only, so it does not fix or introduce a runtime vulnerability.
No immediate action is required for this commit. Treat it as a documentation clarification. If the project previously relied on the old comment's threat model, reviewers should confirm the executable validation logic still matches the intended security policy and that no other code or tests were written assuming cross-pool sighash sharing.
Security signals we found
Comment clarifies defensive validation of distinct randomized validating keys (rk) across Orchard and Ironwood pools
Original comment implied a cross-pool signature-replay risk that the new comment says does not exist
No executable code change; purely documentation/comment update
Evidence from the diff
The diff updates the doc comment for validate_distinct_orchard_protocol_rks in rust/apps/zcash/src/pczt/mod.rs. The old comment claimed Orchard and Ironwood spend authorization signatures cover the same transaction-wide shielded sighash, making shared rk values dangerous because a signature could be copied between actions. The new comment says each pool has its own sighash, so cross-pool signature copying is not the real issue; instead, the union of Orchard and Ironwood rks is checked defensively because honest construction should not reuse an rk across pools. No executable code was modified.
Changed components
rust/apps/zcash/src/pczt/mod.rsvalidate_distinct_orchard_protocol_rks function commentInspect captured patch +3 / −3
diff --git a/rust/apps/zcash/src/pczt/mod.rs b/rust/apps/zcash/src/pczt/mod.rs
index f96eaad..203b569 100644
--- a/rust/apps/zcash/src/pczt/mod.rs
+++ b/rust/apps/zcash/src/pczt/mod.rs
@@ -50,9 +50,9 @@ pub(crate) fn validate_supported_pczt(pczt: &Pczt) -> Result<(), ZcashError> {
/// Ensures every Orchard protocol action has a distinct randomized validating key.
///
-/// Orchard and Ironwood spend authorization signatures cover the same transaction-wide
-/// shielded sighash. If two actions share an `rk`, a signature for either action can be
-/// copied to the other.
+/// Within each pool, spend authorization signatures cover the same transaction-wide
+/// shielded sighash. Orchard and Ironwood use different sighashes, but honest construction
+/// should not reuse an `rk` across either pool, so validate their union defensively.
#[cfg(feature = "cypherpunk")]
fn validate_distinct_orchard_protocol_rks(pczt: &Pczt) -> Result<(), ZcashError> {
let actions = pczt
Why this scored 40/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.