Skip to content

Comments

[ZIP 248]: Define a forward-compatible, extensible transaction format.#1156

Open
nuttycom wants to merge 19 commits intomainfrom
draft/extensible_tx_format
Open

[ZIP 248]: Define a forward-compatible, extensible transaction format.#1156
nuttycom wants to merge 19 commits intomainfrom
draft/extensible_tx_format

Conversation

@nuttycom
Copy link
Contributor

@nuttycom nuttycom commented Jan 11, 2026

Fixes #1163

@nuttycom nuttycom force-pushed the draft/extensible_tx_format branch 3 times, most recently from 04ea4cc to 3f5566b Compare January 20, 2026 06:03
Copy link
Contributor Author

@nuttycom nuttycom left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Flushing comments from ZIP editing.

@nuttycom nuttycom force-pushed the draft/extensible_tx_format branch 3 times, most recently from b26bc92 to c7a649b Compare January 26, 2026 17:32
@nuttycom nuttycom linked an issue Jan 29, 2026 that may be closed by this pull request
@nuttycom nuttycom force-pushed the draft/extensible_tx_format branch from 2d2dffa to 29eb5b5 Compare January 31, 2026 02:47
@daira daira changed the title [ZIP TBD]: Define a forward-compatible, extensible transaction format. [ZIP 248]: Define a forward-compatible, extensible transaction format. Feb 4, 2026
nuttycom and others added 5 commits February 5, 2026 14:24
…ment.

Specifies the V6 transaction digest algorithms:
- TxId digest with separate value_pool_deltas_digest and dynamic effects_bundles_digest
- Signature digest for transparent input signing with hash_type support
- Authorizing data commitment for witness data

Key design decisions:
- Value balances committed via top-level value_pool_deltas_digest (not per-bundle)
- effects_bundles_digest uses tagged concatenation (bundle_type_id || root_hash)
- Unknown bundle types supported by accepting their root hash externally

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…tion process.

Restructure the specification to begin with a comprehensive introduction to
protocol bundles, explaining effecting data, authorizing data, and the
transparent transaction value pool concepts. Define the bundle type
registration process that ZIPs must follow when introducing new bundle types.
Move the bundle type registry to appear before the transaction format
specification for better readability.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update PR URL to 1156 and fix email addresses
- Use conformance language (MAY/MUST NOT) for registry column descriptions
- Add constraint that map keys must be in increasing order
- Change "ordered by" to "in increasing order of" throughout
- Fix "transparent transaction value pool" terminology
- Change AssetUuid subscript notation to function notation
- Add registry update mechanism language
- Add "Defining ZIP" column to bundle type registry table
- Rephrase consensus rules section to clarify modifications to protocol spec
- Add clarifying text for fee bundle semantics (coinbase collects, others pay)
- Add mutual exclusion consensus rule for Sapling/Orchard bundle variants

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@nuttycom nuttycom force-pushed the draft/extensible_tx_format branch 5 times, most recently from a0020fe to 986b087 Compare February 6, 2026 03:57
@nuttycom nuttycom marked this pull request as ready for review February 10, 2026 21:38
with corresponding changes to the note decryption algorithms for incoming and
outgoing viewing keys [#zip-2005]_.

Implications for Wallets
Copy link
Collaborator

@daira daira Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should no longer refer to ZIP 230, and this section of ZIP 226 possibly should just be deleted altogether if the assumption is that ZSAs will activate in a later upgrade than the 0x03 note plaintext format change (and quantum recoverability).

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ZIP 248 needs to include an equivalent to the section in ZIP 230 that describes implications for wallets.

Comment on lines 383 to 384
The transaction format for v6 transactions is described in ZIP 230 [#zip-0230]_.
The ZSA-related changes in v6 include:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The ZSA-related changes in v6 include:
The transaction format for v6 transactions is described in ZIP 248 [#zip-0248]_.
The changes in v6 that will interact with ZSAs once the latter feature activates,
include:

sighash digest computation [#zip-0248]_;
* new note plaintext formats for both Sapling and Orchard outputs [#zip-0230-note-plaintexts]_,
with corresponding changes to the note decryption algorithms for incoming and
outgoing viewing keys [#zip-2005]_.
Copy link
Collaborator

@daira daira Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
outgoing viewing keys [#zip-2005]_.
outgoing viewing keys [#zip-2005]_. The new format for Orchard outputs reserves a
field for $\mathsf{AssetBase}$, which will be fixed to $\mathcal{V}^{\mathsf{Orchard}}$
prior to ZSA activation.

If this PR does not include the change to the Orchard 0x03 note plaintext format to include $\mathsf{AssetBase}$, omit this suggestion.

Comment on lines 475 to 477
.. [#zip-0230-note-plaintexts] `ZIP 230: Version 6 Transaction Format — Note Plaintexts <zip-0230.rst#note-plaintexts>`_
.. [#zip-0230-orchard-note-plaintext] `ZIP 230: Version 6 Transaction Format — Orchard Note Plaintext <zip-0230.rst#orchard-note-plaintext>`_
.. [#zip-0230-implications-for-wallets] `ZIP 230: Version 6 Transaction Format — Implications for Wallets <zip-0230.rst#implications-for-wallets>`_
Copy link
Collaborator

@daira daira Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
.. [#zip-0230-note-plaintexts] `ZIP 230: Version 6 Transaction Format — Note Plaintexts <zip-0230.rst#note-plaintexts>`_
.. [#zip-0230-orchard-note-plaintext] `ZIP 230: Version 6 Transaction Format — Orchard Note Plaintext <zip-0230.rst#orchard-note-plaintext>`_
.. [#zip-0230-implications-for-wallets] `ZIP 230: Version 6 Transaction Format — Implications for Wallets <zip-0230.rst#implications-for-wallets>`_

There will probably need to be references for the corresponding sections of ZIP 248.

Comment on lines +234 to +237
ZIP 248 [^zip-0248]. As with Sapling, the only change is that the note
plaintext in each Orchard action is shortened: the 512-byte memo field is
replaced by a 32-byte $\mathsf{K^{memo}}$, reducing `encCiphertext` from
580 bytes to 100 bytes.
Copy link
Collaborator

@daira daira Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will change in order to include $\mathsf{AssetBase}$, but probably in a separate PR.

zips/zip-0231.md Outdated
$\mathtt{nActionsOrchard} > 0$.
* For coinbase transactions, the `enableSpendsOrchard` bit MUST be set to $0$.

#### OrcharActionEffecting
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#### OrcharActionEffecting
#### OrchardActionEffecting

Comment on lines 86 to 104
Bundle Type Registration
========================

This ZIP registers the OrchardZSA bundle type in the V6 transaction bundle
type registry defined in ZIP 248 [#zip-0248]_:

+------------+----------------------+--------------------+------------------+-------------+
| BundleType | ``mValuePoolDeltas`` | ``mEffectBundles`` | ``mAuthBundles`` | Bundle kind |
+============+======================+====================+==================+=============+
| TBD |✅ |✅ |✅ | OrchardZSA |
+------------+----------------------+--------------------+------------------+-------------+

The OrchardZSA bundle has value pool deltas (transfers move value in and out of
the transparent transaction value pool), effecting data (the OrchardZSA actions
and burn information), and authorizing data (the proofs and binding signature).

A transaction MUST NOT contain both an Orchard bundle (type 3) and an OrchardZSA
bundle. The OrchardZSA bundle replaces the Orchard bundle for transactions that
transfer Custom Assets.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be a proposed update to ZIP 248, in the Specification section.

nuttycom and others added 5 commits February 18, 2026 20:07
- Register bundle type 4 (Transaction fee) in the V6 bundle registry
- Update consensus rules to use mValuePoolDeltas terminology
- Replace header_digest modification with value_pool_deltas_digest reference
- Add reference to extensible transaction format ZIP

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Register bundle type 5 (NSM field) in the V6 bundle registry
- Update consensus rules to use mValuePoolDeltas terminology
- Replace header_digest modification with value_pool_deltas_digest reference
- Add reference to extensible transaction format ZIP

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Register Memos, Sapling-post-ZIP 231, and Orchard-post-ZIP 231 bundle types
- Update encoding section to clarify it describes effecting data
- Replace Transaction sighash section with Transaction Digest referencing ZIP XXX
- Specify BLAKE2b-256 personalization strings for memo digest computation
- Add reference to extensible transaction format ZIP
- Fix zip-0230-note-plaintexts reference

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Register ZSA Issuance bundle type in the V6 bundle registry
- Update digest section to reference effects_bundles_digest and auth_bundles_digest
- Add reference to extensible transaction format ZIP
- Remove unused ZIP 244 and ZIP 246 references

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Register OrchardZSA bundle type in the V6 bundle registry
- Update digest section to reference effects_bundles_digest and auth_bundles_digest
- Add reference to extensible transaction format ZIP
- Remove unused ZIP 244 and ZIP 246 references

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@nuttycom nuttycom force-pushed the draft/extensible_tx_format branch from 986b087 to 346b40d Compare February 19, 2026 16:44
@nuttycom nuttycom requested review from arya2 and daira and removed request for daira February 19, 2026 21:34
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.

[ZIP 248]: Define a forward-compatible transaction format.

2 participants