Please describe your proposed solution.
zkFold’s overall product roadmap
zkWrapper
Creates a zk-wrapped version of a Plutus script. Allows the execution of significantly more complex smart contracts on-chain with only a moderate fee that does not depend on the original script's resource consumption. This product expands the capabilities of Plutus smart contracts. The developers can unleash their creativity, not restricted by execution prices and transaction size.
zkFold - Our core product. First as a validium rollup, later as a zk-rollup solution for Cardano.
Main features:
- lightning-fast transactions;
- extremely low fees;
- mainnet-level security;
- a lightweight data storage side-chain.
Data sidechain
As a part of the zkFold rollup solution, we develop a data availability layer in the form of a Cardano sidechain. Through its architecture and economical incentives, our sidechain will encourage efficient space usage: a part of the current state can be compressed to a single root hash of a Merkle tree if all relevant parties confirm the knowledge of this data.
zkWrapper: Plutus Smart Contracts Unleashed!
zkWrapper is a DApp developer tool. It takes any Untyped Plutus Core (UPLC) script as input and produces a zero-knowledge version of it with great scaling features. No ZKP expertise is required!
Wrapped scripts enjoy the following features:
- No script length limit
Normally, UPLC scripts are limited by the Cardano transaction size (currently, 16KB). Wrapped scripts have constant length.
- No CEK execution budget limit
Original script execution happens off-chain. The wrapper script only checks the proof of execution, which requires a fixed amount of ExUnits.
- No redeemer size limit
Redeemers are the input data to Plutus scripts. We supply short polynomial commitments to the zk-wrapped scripts instead of the actual data. This allows us to circumvent the Cardano transaction size limit.
- No datum size limit
Similarly to redeemers, polynomial commitments (or hashes) can be used in datums to reduce the overall transaction size. The difference is that datums usually also contain public data that is critical for determining the on-chain state of the smart contract. This public data cannot be hashed without changing the smart contract trust model (data availability).
- Private smart contracts become possible
Since the original script is not submitted on-chain, it can be kept private. It is up to the developers or users to disclose it.
How does zkWrapper work step-by-step?
- A smart contract transaction is constructed as if the user wants to submit a transaction with the original script.
- zkWrapper software executes the script (with the corresponding redeemer and script context) off-chain and generates zero-knowledge proof of correct execution.
- zkWrapper software constructs a new transaction replacing the original script with the wrapped one and the original redeemer with a new one that contains the following: the original redeemer’s hash and the proof of correct execution. The wrapped Plutus script checks the proof using the hash of the original script and the hash of its redeemer and context as public input.
- The final transaction can be signed and submitted normally. Under the standard cryptographic security assumptions, the final transaction is valid if and only if the original transaction is valid.
Visit the product’s webpage for more information: https://wrapper.zkfold.io/
How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?
zkFold aims to enhance Cardano blockchain scalability by building L1 (zkWrapper) and L2 (zk-rollup) solutions while providing a familiar experience to Plutus smart contract developers. zkWrapper is a necessary step towards such a zk-rollup: most of the code will be later reused in our core product.
zkWrapper enables developers to build smart contracts that were previously too difficult to implement and too expensive (such as multi-transaction computations). It has the potential to open up completely new smart contract use cases. In addition, some of the existing smart contracts can also benefit from this technology as a wrapped smart contract can potentially have more inputs and outputs than the original one.
How do you intend to measure the success of your project?
The ultimate measure of success for this proposal would be the adoption by the Cardano ecosystem, measured as the number and TVL of the DApps that use our products.
During the development, we will keep track of how we are delivering on every promised feature. We will be measuring the performance of our software on some reference examples making sure that it meets our standards.
Please describe your plans to share the outputs and results of your project?
The core protocol and software of zkWrapper will be open-source. We will advertise our solution through social media and our contacts within the Cardano ecosystem. We will participate in conferences, workshops, and other events to spread awareness about the project.