ZcashFoundation / zebra

Zcash - Financial Privacy in Rust 🦓
https://zfnd.org/zebra/
Apache License 2.0
413 stars 106 forks source link

Network Sustainability Mechanism - ZIP 233 implementation #8930

Open mariopil opened 1 month ago

mariopil commented 1 month ago

Motivation

This PR implements the ZIP-233, described here.

Specifications & References

ZIP-233

Solution

A new transaction version (ZFuture) is introduced, and a new field, burn_amount, is added to the transaction according to the specification in ZIP-233.

This implementation uses the nsm-zebra branch of the librustzcash library, which was rebased on the 1410f1449100a417bfbc4f6c7167aa9808e38792 commit.

Tests

For testing purposes, a local testnet network was set up. It contained two nodes—a zebra and a zcashd one (with the ZIP-233 implemented, too, PR here). A transaction in a new format containing the burn_amount field was created and added to the block by zcashd. The zebra node synced with zcashd without any errors and accepted the block.

Follow-up Work

The next PR will contain an implementation of zips ZIP-234 and ZIP-235.

PR Author's Checklist

PR Reviewer's Checklist