In early 2023, the Zcash Foundation commissioned the authors to write a systemization of knowledge paper on the topic of privacy-preserving blackchain programmability solutions, in order to inform discussions amongst the Zcash community about adding programmability to Zcash. This project is to be delivered in three phases:
In this write-up, corresponding to the milestone 1 deliverable, we establish a structural outline consisting of four main components:
In the final write-up for this project, an additional section will be included discussing conclusions on protocol design, and recommendations for useful implementation paradigms.
To provide a formal basis for defining notions of privacy and security, we start by describing a uniform underlying general model which we will use to interpret the properties and behaviors of network protocols.
One fundamental idea which is important in many areas of analysis is that of identity in a distributed protocol. For our purposes, there will be two related notions of identity:
Here, keypairs provide an algorithm-level notion of identity allowing private communication and authentication, and which usually can be created inexpensively by random sampling. Nodes provide a protocol-level notion of identity, and are the abstraction which generates and makes use of keypairs.