AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Low 37 Bitcoin

feat(zcash): use bounded PCZT batches and compact responses

Public commit record

What the developer wrote

Authored by Adam Tucker

62/100 · Adequate
feat(zcash): use bounded PCZT batches and compact responses
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
The short version

What changed, and why it matters

This commit refactors how Keystone's Zcash batch signing feature handles large batches. It replaces an older message envelope with a new format that uses the upstream Zcash PCZT batch signer, adds a 512 KiB total size cap, raises the maximum PCZT count from 35 to 50, and returns only compact signatures instead of full signed PCZT data. It also updates several Zcash Rust dependencies from a fork to upstream releases and tightens some digest helpers to handle missing optional fields safely. The changes are framed as a feature improvement and hardening, not as a fix for a known active vulnerability.

Recommended action

Treat as a routine feature/hardening change. Reviewers should verify that the new 512 KiB bound is enforced before any heap allocation or parsing of untrusted batch data, that the compact signature response cannot be misinterpreted as a full transaction, and that the zero-fill fallbacks in `pczt_ext.rs` are only reachable on data that has already failed policy checks or is otherwise non-signable. No immediate security response is indicated by the commit materials alone.

Security signals we found

01

Adds explicit 512 KiB byte bound on batch request/response data in addition to a count bound

02

Switches batch response from full signed PCZT bytes to compact spend-authorization signatures, reducing data exposure

03

Rejects duplicate canonical PCZT payloads in a batch

04

Moves Zcash Rust dependencies from a third-party fork back to upstream releases

05

Makes sighash digest helpers infallible for missing optional PCZT fields (cmx, Sapling anchor) by zero-filling

06

Refactors batch registry parsing to use pinned upstream `BatchSignRequest`/`BatchSignResponse` wire format

07

Adds tests for oversized batches, empty request IDs, duplicate payloads, and signing without a checked batch

Risk score

Why this scored 37/100

Our methodology →
Potential impact 8/30
Exploitability 6/25
Stealth signal 5/15
Affected reach 7/15
Confidence 7/10
Evidence quality 4/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.