Skip to content

Protocol Specification version 2026.6.4 - #1322

Merged
daira merged 15 commits into
zcash:mainfrom
daira:spec-2026.6.4
Jul 5, 2026
Merged

Protocol Specification version 2026.6.4#1322
daira merged 15 commits into
zcash:mainfrom
daira:spec-2026.6.4

Conversation

@daira

@daira daira commented Jul 5, 2026

Copy link
Copy Markdown
Collaborator

This is the pre-NU6.2 Zcash Protocol Specification release, version 2026.6.4, split out from the NU6.2 work so that it can be reviewed and merged first. The NU6.2 consensus changes (ZIP 257) will follow in a separate PR on top of this one.

It comprises the retrospective consensus bug fixes described in ZIP 256, together with a number of unrelated corrections and editorial improvements.

ZIP 256 (consensus bug fixes between NU6.1 and NU6.2)

  • Add a consensus rule in § 4.6 that rk MUST NOT be the identity point, retrospectively enforced as a soft fork.
  • In § 4.17, extend the non-negativity rule to the transparent and deferred chain value pool balances, and add a rule that the total supply MUST NOT exceed MAX_MONEY (ZIP 209).
  • Add a footnote in § 7.1.2 clarifying that valueBalanceSapling for a v4 transaction refers to the value as encoded, not the normalized value.
  • Add a non-normative note in § 7.5 on the invalid ephemeralKey conformance issue.

Other corrections and improvements

  • Correct a typo in the Orchard balance argument: it should use the Pallas group order r_P, not the Jubjub order r_J.
  • Factor out dk/ovk derivation into DeriveDkAndOvk^Orchard, so that ZIP 32 can use it without duplication.
  • Consistently use "discrete logarithm" rather than "discrete log".
  • Expand the Notes section, retitled "Shielded Pools and Notes", to describe the relation between shielded payment addresses, shielded pools, and notes.
  • Distinguish network upgrades, shielded protocols, and shielded pools typographically with semantic type markup.
  • Drop the blue highlighting for Overwinter and the brown for TODOs, so that those colours can be reused.
  • Update author affiliations, and how to report security-relevant issues.

Build tooling

  • Vendor the Raleway Tabular Lining Figures fonts (used for shielded-pool names) under protocol/texmf/, and point the build at them via TEXMFHOME. Newer TeX Live (e.g. 2025 under nix develop) ships the raleway package without the Raleway-TLF family or its italic Type1 metrics, so pool names silently fell back to the body font. Vendoring makes the spec build identically regardless of the ambient TeX Live's raleway packaging — which also unblocks moving production rendering to a nix build flow (#1298).

🤖 Generated with Claude Code

daira and others added 15 commits July 3, 2026 22:17
…discrete-logarithm terminology.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
(Jubjub) rather than r_P (Orchard).

Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…n for

TODOs, so that those colours can be reused.

Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
…pools

via semantic *type markup.

This is preparation for Ironwood: the main practical reason to make the
distinction is that the Orchard shielded protocol will be used for both
the Orchard and Ironwood shielded pools. It has also always been annoying
that "Sapling" named a Network Upgrade as well as a shielded protocol and
its pool.

Introduce a "concept -> typeface" indirection: low-level typeface macros
(\strongtype, \slantedtype, \mathsanstype, \mathsansitalictype, ...) and
semantic macros mapping each concept to one of them (\upgradetype,
\topprotocoltype, \subprotocoltype, \pooltype, \softwaretype,
\fieldnametype, ...), so the typeface for a concept is chosen in one
place. Rework \emph/\schoolbook to override the variant typefaces rather
than the previous \fakebold hack, and retire \mathsfit. Add the
\term<concept> wrappers and \ChainValuePoolBalance.

Redefine the existing top-level-protocol, Network Upgrade,
shielded-protocol, and pool name macros (Zcash; Overwinter ... NU6.1;
the Sprout, Sapling, and Orchard protocols and pools) to use the semantic
markup, and apply it throughout the existing text: upgrades bold,
protocols upright math sans, pools slanted.

Some of the references to shielded protocols become references to
corresponding pools, but not the ones that are entangled with subsequent
changes.

Note that the refactoring, in particular the switch from associating
notes, etc. with shielded protocols to associating them with shielded
pools, is applied also to the Change History. Since shielded protocols
were in one-to-one correspondence with shielded pools throughout this
history, I believe this isn't too much of a misrepresentation.

Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…, and

cover the relation between addresses, pools, and notes.

Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Also drop ZIP 256's proposed relocation of the canonical-encoding rules
from the description sections (4.3-4.6) to the encoding sections (7.2-7.5):
the constraint-bearing types are declared only in the description sections,
and so this would make things less clear, not more.

Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…s TeX Live versions

Newer TeX Live (e.g. 2025 under `nix develop`) ships the raleway package
without the Raleway-TLF (Tabular Lining Figures) family or its italic Type1
metrics, so the pool-name italic (\ralewayitalictype) silently fell back to the
body font. Vendor the needed Raleway TLF font files under protocol/texmf/ and
point the build at them via TEXMFHOME, registering the font map with
\pdfmapfile so pdfTeX embeds them. The spec now builds identically regardless
of the ambient TeX Live's raleway packaging.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
@daira
daira merged commit b7a8354 into zcash:main Jul 5, 2026
3 checks passed
@daira
daira deleted the spec-2026.6.4 branch July 5, 2026 05:33
@daira daira linked an issue Jul 5, 2026 that may be closed by this pull request
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.

Protocol spec version 2026.6.4

1 participant