Note number of underscores in hash personalization strings.

Co-authored-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
Kris Nuttycombe 2021-02-02 13:22:02 -07:00 committed by GitHub
parent 4da60ce58b
commit 90e83ad754
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 9 deletions

View File

@ -148,6 +148,8 @@ The personalization field of this hash is set to::
"ZcashTxHash_" || CONSENSUS_BRANCH_ID "ZcashTxHash_" || CONSENSUS_BRANCH_ID
"ZcashTxHash_" has 1 underscore character.
As in ZIP 143 [#zip-0143]_, CONSENSUS_BRANCH_ID is the 4-byte little-endian encoding of As in ZIP 143 [#zip-0143]_, CONSENSUS_BRANCH_ID is the 4-byte little-endian encoding of
the consensus branch ID for the epoch of the block containing the transaction. Domain the consensus branch ID for the epoch of the block containing the transaction. Domain
separation of the transaction id hash across parallel consensus branches provides replay separation of the transaction id hash across parallel consensus branches provides replay
@ -302,7 +304,7 @@ in the hash::
The personalization field of this hash is set to:: The personalization field of this hash is set to::
"ZTxIdSOutC__Hash" "ZTxIdSOutC__Hash" (2 underscore characters)
T.4a.ii: sapling_outputs_memos_digest T.4a.ii: sapling_outputs_memos_digest
..................................... .....................................
@ -314,7 +316,7 @@ are included in the hash::
The personalization field of this hash is set to:: The personalization field of this hash is set to::
"ZTxIdSOutM__Hash" "ZTxIdSOutM__Hash" (2 underscore characters)
T.4a.iii: sapling_outputs_noncompact_digest T.4a.iii: sapling_outputs_noncompact_digest
........................................... ...........................................
@ -363,9 +365,11 @@ The personalization field of this hash is set to::
"ZcashTxHash_" || CONSENSUS_BRANCH_ID "ZcashTxHash_" || CONSENSUS_BRANCH_ID
This value must have the same personalization as the top hash of the transaction "ZcashTxHash_" has 1 underscore character.
identifier digest tree, in order to make it possible to sign the transaction id
in the case that there are no transparent inputs. This value has the same personalization as the top hash of the transaction
identifier digest tree, so that what is being signed in the case that there are
no transparent inputs is just the transaction id.
S.1: header_digest S.1: header_digest
`````````````````` ``````````````````
@ -501,6 +505,8 @@ The personalization field of this hash is set to::
"ZTxAuthHash_" || CONSENSUS_BRANCH_ID "ZTxAuthHash_" || CONSENSUS_BRANCH_ID
"ZTxAuthHash_" has 1 underscore character.
A.1: transparent_scripts_digest A.1: transparent_scripts_digest
``````````````````````````````` ```````````````````````````````
A BLAKE2b-256 hash of the field encoding of the Bitcoin script associated A BLAKE2b-256 hash of the field encoding of the Bitcoin script associated
@ -561,9 +567,9 @@ to the transaction data, including witnesses, that appear within the block.
As a consequence, we now need to add a new commitment to the block header. As a consequence, we now need to add a new commitment to the block header.
This commitment will be the root of a Merkle tree that has parallel structure This commitment will be the root of a Merkle tree that has parallel structure
to the tree committed to by ``hashMerkleRoot`` (a path through this merkle to the tree committed to by ``hashMerkleRoot`` (a path through this Merkle
tree to a transaction identifies the same transaction as that path reaches tree to a transaction identifies the same transaction as that path reaches
in the tree rooted at ``hashMerkleRoot``) but where the leaves are hashes in the tree rooted at ``hashMerkleRoot``), but where the leaves are hashes
produced according to the `Authorizing Data Commitment` part of this produced according to the `Authorizing Data Commitment` part of this
specification. specification.
@ -617,4 +623,3 @@ References
.. [#zip-0143] `ZIP 143: Transaction Signature Validation for Overwinter <zip-0143.rst>`_ .. [#zip-0143] `ZIP 143: Transaction Signature Validation for Overwinter <zip-0143.rst>`_
.. [#zip-0307] `ZIP 307: Light Client Protocol for Payment Detection <zip-0307.rst>`_ .. [#zip-0307] `ZIP 307: Light Client Protocol for Payment Detection <zip-0307.rst>`_
.. [#protocol_consensus] `Zcash Protocol Specification, Version 2020.1.15. Section 7.1: Transaction Encoding and Consensus <protocol/protocol.pdf#txnencodingandconsensus>`_ .. [#protocol_consensus] `Zcash Protocol Specification, Version 2020.1.15. Section 7.1: Transaction Encoding and Consensus <protocol/protocol.pdf#txnencodingandconsensus>`_

View File

@ -118,6 +118,8 @@ The personalization field of this hash is set to::
"ZcashTxHash_" || CONSENSUS_BRANCH_ID "ZcashTxHash_" || CONSENSUS_BRANCH_ID
"ZcashTxHash_" has 1 underscore character.
This value must have the same personalization as the top hash of the transaction This value must have the same personalization as the top hash of the transaction
identifier digest tree, in order to make it possible to sign the transaction id identifier digest tree, in order to make it possible to sign the transaction id
in the case that there are no transparent inputs. in the case that there are no transparent inputs.
@ -135,7 +137,7 @@ input being signed::
The personalization field of this hash is set to:: The personalization field of this hash is set to::
"Zcash__TzeInHash" "Zcash__TzeInHash" (2 underscore characters)
Authorizing Data Commitment Authorizing Data Commitment
--------------------------- ---------------------------