You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ZIP-212 specifies that coinbase transaction with Sapling or Orchard outputs must be decryptable with an all-zero outgoing viewing key, and that
[Canopy onward] Any Sapling or Orchard output of a coinbase transaction decrypted to a note plaintext
according to the preceding rule MUST have note plaintext lead byte equal to 0x02 . (This applies even during
the “grace period” specified in [ZIP-212].)
Waiting for our own implementation of the decryption and implementing it there
Since the grace period has long passed, this doesn't seem to be urgent (maybe not even necessary?), but I'm not completely sure.
Specifications
[Heartwood onward] All Sapling and Orchard outputs in coinbase transactions MUST decrypt to a note
plaintext , i.e. the procedure in § 4.19.3 ‘Decryption using a Full Viewing Key ( Sapling and Orchard )’ on p. 67
does not return ⊥, using a sequence of 32 zero bytes as the outgoing viewing key . (This implies that before
Canopy activation, Sapling outputs of a coinbase transaction MUST have note plaintext lead byte equal to
0x01 .)
[Canopy onward] Any Sapling or Orchard output of a coinbase transaction decrypted to a note plaintext
according to the preceding rule MUST have note plaintext lead byte equal to 0x02 . (This applies even during
the “grace period” specified in [ZIP-212].)
The fastest way to fix this issue would be to set the mandatory Zebra checkpoint after the grace period. That way, we never use the incorrect consensus rules from librustzcash.
Motivation
ZIP-212 specifies that coinbase transaction with Sapling or Orchard outputs must be decryptable with an all-zero outgoing viewing key, and that
We'll use
librustzcash
to implement the decryption in #2362. However, it always allows the "grace period" (some 30K blocks after Canopy activation where the lead byte can be 0x01) and there currently isn't a way to work around that withlibrustzcash
as is.Work around the issue, either by
librustzcash
to support itlibrustzcash
to support itSince the grace period has long passed, this doesn't seem to be urgent (maybe not even necessary?), but I'm not completely sure.
Specifications
https://zips.z.cash/protocol/protocol.pdf#txnencodingandconsensus
Alternatives
librustzcash
APIRelated Work
The text was updated successfully, but these errors were encountered: