Ever since Dev Ojha joined the Zcash ecosystem (through Valar Group), protocol development in this network has been accelerating at an unprecedented pace. More recently, alongside Shielded Labs and the Zcash Foundation, they have proposed the Ironwood upgrade, which is meant to replace the Orchard shielded pool.
Fast paced breaking protocol changes are now part of the reality in Zcash. Heliax has strong technical know-how to intervene in the development of Zcash. This post focuses on the protocol front.
Transaction format changes
The changes proposed are two-fold.
Memos
Zcash transactions have traditionally contained ciphertexts for incoming notes that encrypt (through AEAD) the note plaintext, as well as a memo. Most transactions in the network do not contain personal memos, but still pay the 512 byte storage cost.
To cut down on bandwidth, some mainstream wallets choose not to download the memo in txs, but this forces the wallets to check the validity of the decrypted ciphertext through the note’s commitment (rather than the AEAD tag).
Given this, a no-brainer proposal is to drop memos from incoming note ciphertexts, or at the very least to modularize this ciphertext into purely note components, and a dedicated memo ciphertext (which can be optionally fetched).
Fuzzy message detection
FMD flags could be included alongside new note commitments, in order to accelerate client syncing. Flags don’t come for free (depending on the false positive rate, they can be 300 bytes or so IIRC).
The trade-off between memos (which are largely useless) and FMD flags is clear, though: flags allow a third-party service to trial decrypt (with a false positive rate) notes on behalf of users, so they have to perform less work.
When compared to Project Tachyon, this approach doesn’t depend on Private Information Retrieval (PIR). It’s a more simple k-anonymity protocol. However, due to the storage requirements of the FMD flags, and no clear validation logic (to avoid bogus ciphertexts), it is a more invasive/controversial proposal.