Ironwood ZIPs and protocol spec followup#1336
Draft
daira wants to merge 7 commits into
Draft
Conversation
daira
force-pushed
the
ironwood-zips-and-spec-followup
branch
from
July 21, 2026 20:48
01614c5 to
e4b788a
Compare
Replace the flat per-pool field macros (`\nActionsOrchard`, `\flagsOrchard`,
`\enableSpendsOrchard`, `\sizeProofsOrchard`, `\proofsOrchard`, `\vActionsOrchard`,
and the Ironwood equivalents) with pool-parameterized `\nActionsField{...}`,
`\flagsField{...}`, `\enableSpendsField{...}`, etc.; add `\OrchardLike`; give
`\ProofAction` a pool argument; and rename `SpendDescriptionV5`/`OutputDescriptionV5`
to `...V5Onward`. Mechanical only -- no change to the rendered consensus rules --
including the corresponding uses in the spend/output/action encoding sections and
the history entries, plus the `\SaplingLikePoolIds` conditional fix.
Co-authored-by: Claude Opus 4.8/Fable 5 <noreply@anthropic.com>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
Add the version-for-pool macros (`\versionsForOrchardPool`, `\versionsForIronwoodPool`, `\versionsForSaplingPool`, and friends) and the prose using them: state that Orchard-pool Action transfers require a version 5 or 6 transaction and Ironwood-pool ones a version 6; add the per-transaction-version sighash-algorithm consensus rules and the ZIP 229 citations for the version 6 sighash and transaction ID; note that zcashd will not support NU6.3 (so Zebra is the only long-term-supported validator from activation); and randomize action order per pool. Co-authored-by: Claude Opus 4.8/Fable 5 <noreply@anthropic.com> Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
…ifying key Add `\expandedReceiver` and the `\enableCrossAddress`/`\disableCrossAddress` macros; introduce the `enableCrossAddress` flag in the Action Description, the `disableCrossAddress = 1 - enableCrossAddress` primary input, and the `OrchardCircuitVersion::PostNU6_3` verifying key; and superscript the Action proof by pool. The cross-address restriction itself is specified in ZIP 2006. Co-authored-by: Claude Opus 4.8/Fable 5 <noreply@anthropic.com> Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
Extend the transaction format section for version 6: add the Ironwood bundle to the format table (nActionsIronwood, vActionsIronwood, flagsIronwood, valueBalanceIronwood, anchorIronwood, sizeProofsIronwood, proofsIronwood, vSpendAuthSigsIronwood, bindingSigIronwood) with its field-presence footnote; add the version 6 format header and transaction ID (defined in ZIP 229); and record the added Ironwood fields in the "changes relative to Bitcoin" list. The Sapling spend/output description types are the shared V5Onward encodings. Co-authored-by: Claude Opus 4.8/Fable 5 <noreply@anthropic.com> Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
…d pool Add the version 6 / Ironwood-pool transaction consensus rules: the version group ID 0xD884B698; nActionsIronwood < 2^16; the split of the at-least-one-input and at-least-one-output conditions into a version-5 form and a version-6-onward form that accounts for the Ironwood flags; the Ironwood enable-flag rule; the coinbase rules (no Orchard-pool Actions, enableSpendsIronwood = 0) and the flagsIronwood reserved-bit rule; the flags rationale; and the proofsIronwood canonical-length rule. Co-authored-by: Claude Opus 4.8/Fable 5 <noreply@anthropic.com> Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
Rewrite ZIP 229's Consensus Rules section as full-detail before/after changes to protocol section 7.1.2 (transaction version, version group ID, action counts, the enable-flag conditions, the Ironwood binding-signature rule, and the coinbase and reserved-bit rules), matching the specification changes; and cross-reference from ZIP 213 that a coinbase transaction must not contain any Orchard-pool component. Co-authored-by: Claude Opus 4.8/Fable 5 <noreply@anthropic.com> Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
daira
force-pushed
the
ironwood-zips-and-spec-followup
branch
from
July 22, 2026 19:54
e4b788a to
eab59af
Compare
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
daira
commented
Jul 22, 2026
| same for all \actionTransfers in a \transaction, and are encoded once in the \transaction body | ||
| (\crossref{txnencoding}), not the $\type{ActionDescription}$ structure. | ||
| $\Proof{}$ is aggregated with other Action proofs and encoded in the $\proofsOrchard$ field.} | ||
| \pnote{The $\rt{\OrchardLikePoolId}$, $\enableSpendsField{\OrchardLike}$, and $\enableOutputsField{\OrchardLike}$ |
Collaborator
Author
There was a problem hiding this comment.
and enableCrossAddressOrchard/Ironwood for v6
daira
commented
Jul 22, 2026
| & \Longunderstack{$820 \mult$ \\$\!\nActionsField{Ironwood}\!$} & $\vActionsField{Ironwood}$ & \type{ActionDescription} \type{[$\nActionsField{Ironwood}$]} & | ||
| A sequence of \actionDescriptions{}, encoded per \crossref{actionencodingandconsensus}.\! \\ \hline | ||
|
|
||
| $\mathsection$ & $1$ & $\flagsField{Ironwood}$ & \type{byte} & |
daira
commented
Jul 22, 2026
Comment on lines
+327
to
+330
| The `enableCrossAddress` bit is specified in [^zip-2006]. Note that the reserved-bit rules above | ||
| leave bit 2 of `flagsOrchard` reserved as 0 (bits 2..7), while bit 2 of `flagsIronwood` is the | ||
| `enableCrossAddress` bit (reserved bits 3..7); the *Orchard pool*'s cross-address restriction is | ||
| enforced for its Actions from NU6.3 onward as specified in [^zip-2006]. |
Collaborator
Author
There was a problem hiding this comment.
This is inconsistent with the TODO resolution: bit 2 is never reserved after NU6.3.
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.
Follow-up to #1319, adding the NU6.3 / Ironwood transaction-format and consensus-rule changes to the protocol specification and the corresponding ZIPs. Opening as a draft for review; the commits are factored so each is a self-contained, reviewable change.
Protocol specification (
protocol.tex)\nActionsOrchard,\flagsOrchard,\enableSpendsOrchard,\sizeProofsOrchard,\proofsOrchard,\vActionsOrchard, and the Ironwood equivalents) with pool-parameterized\nActionsField{…},\flagsField{…}, etc.; add\OrchardLike; give\ProofActiona pool argument; and renameSpendDescriptionV5/OutputDescriptionV5to…V5Onward. Mechanical only — no change to the rendered consensus rules.enableCrossAddressflag and NU6.3 verifying key — theenableCrossAddressflag in the Action Description, thedisableCrossAddress = 1 − enableCrossAddressprimary input, theOrchardCircuitVersion::PostNU6_3verifying key, and the pool-superscripted Action proof. (The cross-address restriction itself is specified in ZIP 2006.)nActionsIronwood…bindingSigIronwood) with its field-presence footnote, the version 6 header and transaction ID (defined in ZIP 229), and the added-fields list.0xD884B698;nActionsIronwood < 2^16; the split of the at-least-one-input / at-least-one-output conditions into a version-5 form and a version-6-onward form that accounts for the Ironwood flags; the Ironwood enable-flag and binding-signature rules; the coinbase rules (no Orchard-pool Actions,enableSpendsIronwood = 0) and the reserved-bit rules; and theproofsIronwoodcanonical-length rule.ZIPs
Other
README.rst.Scope
The ZIP 2005 security-analysis refinements were merged separately (#1338) and do not affect the Specification-section changes here.