TL;DR Initial open source release of zkChannels and zeekoe node available for Tezos on testnet!
We are proud to announce the open source release of our zkChannels protocol library and the zeekoe node that implements the protocol for Tezos. For background, zkChannels is a layer 2 protocol that enables anonymous and scalable payments between a customer and a merchant. The customer has the ability to make payments anonymously as long as they have an open channel with sufficient balance. Moreover, the customer remains indistinguishable from any other customer with a channel open with the same merchant.
The zkChannels design is suitable for any situation where customers want to make payments without their identity being linked to the transaction. In such scenarios, the purchased service or good is something that can be provided digitally and anonymously online. Such use cases include paying for access to a VPN service and purchasing digital content.
As part of this open source release, we include the following components for executing on testnet:
zkChannels smart contract. The smart contract code in SmartPy encodes on-chain logic for customers/merchants to open, fund, and close a zkChannel on Tezos. The contract code includes scenario tests in SmartPy as well as unit and functional tests.
zkChannels-crypto library. A Rust-based library that implements the underlying cryptography, including zero-knowledge proof techniques, for the core protocol. The library includes a suite of unit tests for each component in addition to functional and integration tests. Lastly, we include an implementation of Pointcheval Sanders signatures and efficient protocols to this library. This suite provides short, randomizable signatures and zero knowledge proofs that may be used to construct basic anonymous credential schemes.
zeekoe node. A Rust-based node that integrates the zkChannels library and provides channel management functionality, a secure networking layer for asynchronous communication between the customer and merchant, and a database for managing the channel state and merchant revocation information. To enforce correct protocol execution within zeekoe, we built a session type library in Rust called Dialectic, which may be of independent interest to any developers implementing networked protocols. Specifically, the crate provides a generic wrapper around any type of asynchronous channel that adds compile-time guarantees that a specified session protocol will not be violated by any code using the channel. Dialectic is ideal for building networked services that need to ensure high levels of availability and complex protocol correctness properties.
With this initial open source release, we would like to invite the community to join us in testing the zeekoe node and to provide feedback over the coming days and weeks. Our initial release is intended for testnet only and is not suitable for real money yet.
We will continue to improve the zeekoe node by expanding functionality and testing, and by providing more comprehensive documentation. If you are interested in building on top of zkChannels and zeekoe, send us an email at firstname.lastname@example.org to receive future updates.