Date: 2026-07-25
RC18 collapses the former three-product build into two release products:
| Product | Contents |
|---|---|
Regular (full) |
Every supported chain, including Zcash shielded/Orchard |
| Bitcoin-only | Bitcoin only; all non-Bitcoin coins and Zcash privacy code removed |
There is no separate zcash-privacy artifact. Zcash privacy is part of the
regular firmware and cannot be disabled as a release choice. The internal
ZCASH_PRIVACY compile value remains only so bitcoin-only can compile the
privacy sources out.
The variable-time Pallas secret-scalar finding remains an explicit RC18 release blocker. It requires a reviewed constant-time implementation; it does not authorize removing Orchard from the regular product.
- Device, emulator, unit-test, SRAM, and tagged-release matrices contain only
fullandbitcoin-only. - An unflagged CMake build is the regular product and sets
BITCOIN_ONLY=0,ZCASH_PRIVACY=1, andAES_SMALL_TABLES. -DKK_BITCOIN_ONLY=ONsetsBITCOIN_ONLY=1andZCASH_PRIVACY=0.- The published emulator is the regular/full image.
- Release notes and reproducible-build instructions name only the regular and bitcoin-only artifacts.
Both ARM builds use the toolchain image pinned by manifest digest in CI and the
release workflow. Each release artifact set includes its exact builder digest
and source/workflow identity in PROVENANCE-<variant>.txt.
| Product | ARM build | Firmware tests | Board tests | Crypto tests | SRAM reserve | Largest frame | Reserve after frame |
|---|---|---|---|---|---|---|---|
Regular (full) |
Pass | 366/366 | 2/2 | 4/4 | 19,064 B | 7,664 B | 11,400 B |
| Bitcoin-only | Pass | 30/30 | 2/2 | 4/4 | 32,908 B | 7,664 B | 25,244 B |
The regular release compiles the Orchard privacy engine; bitcoin-only does not. The regular firmware suite includes 59 Zcash tests. Exact build and SRAM figures must be refreshed after the constant-time Pallas implementation lands. Both release gates remain mandatory.
The canonical full-image integration rehearsal used device-protocol
e31cddfe7f5c72c983d06a889ac7db649b9811df and python-keepkey
9ce1aeb480333176b3ed098066f51b22fd40a9d7. Its JUnit result was 592 tests:
560 passed, 32 intentionally skipped, 0 failed, and 0 errors. Both the
host-side and raw-device persistence rejection tests passed, and the
report-driven run captured 898 OLED screenshots. This evidence predates the
restoration of Orchard in the regular image and must not be used to approve the
final privacy-capable RC18 candidate.
Workflow YAML parsing, SRAM-budget JSON parsing, Python syntax compilation,
git diff --check, and the release-shape search for stale zcash-privacy
matrix entries also pass.