A recent post on the Ethereum Foundation’s official blog gives an update on the integration of Zcash into Ethereum. The post is coauthored by Zcash’s Ariel Gabizon and the Ethereum Foundation’s Christian Reitwiessner. Members of Ethereum’s R&D team are collaborating with the Zcash Company on a research project attempting to combine the most powerful aspects of their respective blockchains.
Ethereum’s ability to allow the creation of complex and varied smart contracts enables a wide range of applications. Combining that with Zcash’s underlying cryptographic engine, zero-knowledge succinct non-interactive arguments of knowledge (also known as zk-SNARKs) to provide privacy and anonymity, creates an even broader field of potential applications.
This is the type of news that should get developers excited. Being able to program on Ethereum while utilizing Zcash’s zk-SNARKs should open up a world of possibilities for software engineers. According to the blog post, the Ethereum and Zcash teams are working on the following:
As part of the Zcash/Ethereum technical collaboration, Ariel Gabizon from Zcash visited Christian Reitwiessner from the Ethereum hub at Berlin a few weeks ago. The highlight of the visit is a proof of concept implementation of a zk-SNARK verifier written in Solidity, based on pre-compiled Ethereum contracts implemented for the Ethereum C++ client. This work complements Baby ZoE , where a zk-SNARK precompiled contract was written for Parity (the Ethereum Rust client). The updates we’ve made involved adding tiny cryptographic primitives (elliptic curve multiplication, addition and pairing) and implementing the rest in Solidity, all of which allows for a greater flexibility and enables using a variety of zk-SNARK constructions without requiring a hard fork.
The teams have successfully tested their new code on the Ethereum blockchain by verifying “a real privacy-preserving Zcash transaction” on the testnet.
This new functionality will allow the creation of shielded custom tokens on Ethereum’s network, which are useful in voting or blind auctions since they will allow participants to make bids without revealing the bid amount, themselves.
Zcash has been working toward a specific goal, called Project Alchemy. This project would enable a direct decentralized exchange between Ethereum and Zcash. With Ethereum focusing on programmability, and Zcash’s focus on privacy, applications that require both will greatly benefit from this collaboration. Regarding Project Alchemy, a Zcash blog post mentioned:
The core component we're focused on first is a cross-chain Order that will allow decentralized order execution. Here’s the basic outline of how it would work: Sellers will be able to publish an Ethereum contract called an Order, and anyone can fulfill it by sending out an appropriately formatted Zcash transaction. The funds the initiator wants to exchange will be essentially held in escrow by the smart contract while they wait for a buyer to match them. A buyer will be able to create a Zcash transaction that may contain the destination address, and the validity of this transaction will be verified by the Ethereum contract before the funds are released to complete the trade.
Both teams are hard at work and taking the necessary steps to integrate their two blockchains. There is still a fair amount of work to be done with implementing certain elements of Zcash into the programming language, Solidity. Even though an implementation of the required functionality has already been written, it still needs to be made more efficient before it can be used for practical applications.
Once these two blockchains can easily interact, the utility of both Ethereum and Zcash will be greatly increased. This will effect Ethereum positively, as well as the blockchain ecosystem as a whole. If you’re interested in reading about some of the more technical aspects of their collaboration, check out the full blog post here.