diff --git a/zip-0227.html b/zip-0227.html index 86a06c336..bcd47cb5a 100644 --- a/zip-0227.html +++ b/zip-0227.html @@ -658,7 +658,7 @@ T.5b: issuanceValidatingKey (32 bytes)

The personalization field of this hash is set to:

"ZTxIdSAIssueHash"
-

In case the transaction has no issuance components, ''issue_actions_digest'' is:

+

In case the transaction has no issuance components, ''issuance_digest'' is:

BLAKE2b-256("ZTxIdSAIssueHash", [])

T.5a: issue_actions_digest

A BLAKE2b-256 hash of Issue Action information for all Issuance Actions belonging to the transaction. For each Action, the following elements are included in the hash:

@@ -676,6 +676,8 @@ T.5a.i.5: rseed (field encoding bytes)

The personalization field of this hash is set to:

"ZTxIdIAcNoteHash"
+

In case the transaction has no Issue Notes, ''issue_notes_digest'' is:

+
BLAKE2b-256("ZTxIdIAcNoteHash", [])
T.5a.i.1: recipient

This is the raw encoding of an Orchard shielded payment address as defined in the protocol specification 21.

diff --git a/zip-0227.rst b/zip-0227.rst index 89e837f4a..95708a8f3 100644 --- a/zip-0227.rst +++ b/zip-0227.rst @@ -406,7 +406,7 @@ The personalization field of this hash is set to:: "ZTxIdSAIssueHash" -In case the transaction has no issuance components, ''issue_actions_digest'' is:: +In case the transaction has no issuance components, ''issuance_digest'' is:: BLAKE2b-256("ZTxIdSAIssueHash", []) @@ -436,6 +436,10 @@ The personalization field of this hash is set to:: "ZTxIdIAcNoteHash" +In case the transaction has no Issue Notes, ''issue_notes_digest'' is:: + + BLAKE2b-256("ZTxIdIAcNoteHash", []) + T.5a.i.1: recipient ................... This is the raw encoding of an Orchard shielded payment address as defined in the protocol specification [#protocol-orchardpaymentaddrencoding]_. diff --git a/zip-0230.html b/zip-0230.html index dc1547dcd..0453fb38e 100644 --- a/zip-0230.html +++ b/zip-0230.html @@ -324,6 +324,8 @@
  • The field anchorSapling is present if and only if \(\mathtt{nSpendsSapling} > 0\!\) .
  • +
  • The elements of vSpendProofsSapling and vSpendAuthSigsSapling have a 1:1 correspondence to the elements of vSpendsSapling and MUST be ordered such that the proof or signature at a given index corresponds to the SpendDescriptionV6 at the same index.
  • +
  • The elements of vOutputProofsSapling have a 1:1 correspondence to the elements of vOutputsSapling and MUST be ordered such that the proof at a given index corresponds to the OutputDescriptionV6 at the same index.
  • The fields flagsOrchard, valueBalanceOrchard, anchorOrchard, sizeProofsOrchardZSA, proofsOrchardZSA, and bindingSigOrchard are present if and only if \(\mathtt{nActionsOrchard} > 0\!\) . If valueBalanceOrchard is not present, then @@ -331,9 +333,10 @@ is defined to be \(0\!\) .
  • -
  • The elements of vSpendProofsSapling and vSpendAuthSigsSapling have a 1:1 correspondence to the elements of vSpendsSapling and MUST be ordered such that the proof or signature at a given index corresponds to the SpendDescriptionV6 at the same index.
  • -
  • The elements of vOutputProofsSapling have a 1:1 correspondence to the elements of vOutputsSapling and MUST be ordered such that the proof at a given index corresponds to the OutputDescriptionV6 at the same index.
  • The proofs aggregated in proofsOrchardZSA, and the elements of vSpendAuthSigsOrchard, each have a 1:1 correspondence to the elements of vActionsOrchard and MUST be ordered such that the proof or signature at a given index corresponds to the OrchardZsaAction at the same index.
  • +
  • The fields ik and issueAuthSig are present if and only if + \(\mathtt{nIssueActions} > 0\!\) + .
  • For coinbase transactions, the enableSpendsOrchard and enableZSAs bits MUST be set to \(0\!\) .
  • @@ -569,7 +572,7 @@ -

    The encodings of each of these elements are defined in ZIP 227 7.

    +

    The encodings of each of these elements are defined in ZIP 227 7. Note that we allow the number of notes (represented by nNotes) to be zero. This allows for issuers to create Issuance Actions to only finalize an issued Asset, without needing them to simultaneously issue more of that Asset.

    Reference implementation

    diff --git a/zip-0230.rst b/zip-0230.rst index e807d6140..8ed76751c 100644 --- a/zip-0230.rst +++ b/zip-0230.rst @@ -195,11 +195,6 @@ Transaction Format * The field ``anchorSapling`` is present if and only if :math:`\mathtt{nSpendsSapling} > 0\!`. -* The fields ``flagsOrchard``, ``valueBalanceOrchard``, ``anchorOrchard``, - ``sizeProofsOrchardZSA``, ``proofsOrchardZSA``, and ``bindingSigOrchard`` are present if and - only if :math:`\mathtt{nActionsOrchard} > 0\!`. If ``valueBalanceOrchard`` is not present, - then :math:`\mathsf{v^{balanceOrchard}}` is defined to be :math:`0\!`. - * The elements of ``vSpendProofsSapling`` and ``vSpendAuthSigsSapling`` have a 1:1 correspondence to the elements of ``vSpendsSapling`` and MUST be ordered such that the proof or signature at a given index corresponds to the ``SpendDescriptionV6`` at the @@ -209,11 +204,18 @@ Transaction Format ``vOutputsSapling`` and MUST be ordered such that the proof at a given index corresponds to the ``OutputDescriptionV6`` at the same index. +* The fields ``flagsOrchard``, ``valueBalanceOrchard``, ``anchorOrchard``, + ``sizeProofsOrchardZSA``, ``proofsOrchardZSA``, and ``bindingSigOrchard`` are present if and + only if :math:`\mathtt{nActionsOrchard} > 0\!`. If ``valueBalanceOrchard`` is not present, + then :math:`\mathsf{v^{balanceOrchard}}` is defined to be :math:`0\!`. + * The proofs aggregated in ``proofsOrchardZSA``, and the elements of ``vSpendAuthSigsOrchard``, each have a 1:1 correspondence to the elements of ``vActionsOrchard`` and MUST be ordered such that the proof or signature at a given index corresponds to the ``OrchardZsaAction`` at the same index. +* The fields ``ik`` and ``issueAuthSig`` are present if and only if :math:`\mathtt{nIssueActions} > 0\!`. + * For coinbase transactions, the ``enableSpendsOrchard`` and ``enableZSAs`` bits MUST be set to :math:`0\!`. The encodings of ``tx_in``, and ``tx_out`` are as in a version 4 transaction (i.e. @@ -332,6 +334,8 @@ An issuance action, ``IssueAction``, is the instance of issuing a specific Custo +-----------------------------+--------------------------+-------------------------------------------+---------------------------------------------------------------------+ The encodings of each of these elements are defined in ZIP 227 [#zip-0227]_. +Note that we allow the number of notes (represented by ``nNotes``) to be zero. +This allows for issuers to create Issuance Actions to only finalize an issued Asset, without needing them to simultaneously issue more of that Asset. Reference implementation ========================