ZIP-244: Create generic transaction id merkle tree #2049
Labels
A-consensus
Area: Consensus rule updates
A-rust
Area: Updates to Rust code
C-enhancement
Category: This is an improvement
NU-5
Network Upgrade: NU5 specific tasks
Is your feature request related to a problem? Please describe.
ZIP-244 defines a new transaction digest algorithm currently planned to be applied from the NU5 network upgrade onward.
ZIP-244 creates non-malleable transaction identifiers that commit to all transaction data except for attestations to transaction validity. (That is, signatures and proofs.)
ZIP-244 also adds a transaction authorization hash, which is hash-chained to the block commitment (#1567) and placed in the block commitment fields.
Describe the solution you'd like
We should implement or integrate this new transaction digest algorithm in Zebra as per:
This will include:
Merkle tree
The transaction authorization hash uses a different merkle tree construction, so it is out of scope for this ticket.
The generic type should be bounded by a
TransactionMerkleTree
trait, which is implemented by the 3 hash types.There does not need to be a dependency on the implementation of these types, because we can just define the new types as:
Alternative Implementations
The ECC have implemented a version of this in Rust in the librustzcash library, we should be able to either port some of that code or learn from that code to implement the Zebra version.
The text was updated successfully, but these errors were encountered: