not approved
zkFold: zk-rollups on Cardano. Phase 1: zkWrapper
Current Project Status
Unfunded
Amount
Received
₳0
Amount
Requested
₳665,000
Percentage
Received
0.00%
Solution

Our Phase 1 product is called zkWrapper. 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!

Problem

Cardano’s expansive scalability roadmap is missing transaction rollups. We have a 4-phase plan to bring zk-rollups to Cardano for massive throughput increase and fee reductions.

Feasibility
Value for money
Impact / Alignment

Cardano Mixer

1 member

zkFold: zk-rollups on Cardano. Phase 1: zkWrapper

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?

  1. A smart contract transaction is constructed as if the user wants to submit a transaction with the original script.
  2. zkWrapper software executes the script (with the corresponding redeemer and script context) off-chain and generates zero-knowledge proof of correct execution.
  3. 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.
  4. 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.

What is your capability to deliver your project with high levels of trust and accountability?

  1. On our team, we have smart contract developers and ZKP researchers that have previously delivered complex production-grade blockchain projects to market.
  2. The prototyping for this project was done as a part of the Emurgo BUILD Hackathon. The results are presented on this webpage: <https://wrapper.zkfold.io/>.
  3. The project is led by the founder of ENCOINS, the upcoming privacy solution on Cardano, which is currently on the testnet. That project was in part funded by the Project Catalyst Fund6. We have completed the work within the scope of the Fund6 proposal (awaiting the protocol audit).

What are the main goals for the project and how will you validate if your approach is feasible?

Our main goal with this project is to contribute to Cardano’s scalability potential.

We have designed an early unoptimized prototype of the arithmetic circuit used in the ZKP algorithm during the Hackathon as well as the Witness Generation Tool. It gave us the sense that our solution (zkWrapper) is indeed feasible. We have also discovered a way to reduce the computations in comparison to our early prototype by order of magnitude which should make the approach suitable for use in real production-grade DApps on Cardano.

zkWrapper will be implemented as a backend server component. We also plan to provide its functionality as an API service.

Please provide a detailed breakdown of your project’s milestones and each of the main tasks or activities to reach the milestone plus the expected timeline for the delivery.

Milestone 1: Arithmetic circuit design & ZKP witness generation tool

2 month

We will need to finish the R&D of the core protocol and write the documentation. Our developers will do a rework of our early prototypes of the arithmetic circuit and the witness generation tool.

Milestone 2: ZK prover backend

2 month

We will implement the proving algorithm. It is the most computationally intensive part and will likely require a few iterations and optimizations to achieve the best performance.

Milestone 3: On-chain verification script and off-chain transaction processing tool

1 month

We will implement the protocol flow described earlier: processing the original transaction, generating the proof, and constructing the final transaction to be validated in the on-chain verification script.

Milestone 4: Finalizing the server component and creating an API service.

1 month

We will work on making the server component production ready as well as setting up the API service that can be used instead.

Please describe the deliverables, outputs and intended outcomes of each milestone.

Milestone 1: Protocol documentation. The code of the arithmetic circuit and witness generation tool.

Milestone 2: End-to-end demo that accepts a UPLC program and produces the proof of correct execution.

Milestone 3: The on-chain and off-chain code for wrapped script transactions.

Milestone 4: zkWrapper as an open-source backend app and as an API service.

Please provide a detailed budget breakdown of the proposed work and resources.

For this proposal, we need at least three full-time developers, two ZKP experts, and a project manager.

Additional ZKP research: 160 hours

Protocol design and documentation: 320 hours

Project management: 240 hours

Backend development:

  • Arithmetic circuit: 320 hours
  • Witness generation tool: 320 hours
  • ZK prover: 480 hours
  • On-chain code: 160 hours
  • Off-chain code: 320 hours
  • Server component: 160 hours
  • API service: 160 hours

Total hours: 2640

Total cost: 190 000 $

Who is in the project team and what are their roles?

Vladimir Sinyakov,

Founder and CTO,

<https://www.linkedin.com/in/vladimir-sinyakov/>

Founder and protocol architect of ENCOINS. Ph.D. in Computational Mathematics. Prior experience includes five years of postdoc in applied mathematics (Control Theory), publishing in top journals in the field.

Stanislav Marycev,

Co-founder, Business development.

<https://www.linkedin.com/in/stanislav-marycev/>

Cardano Blockchain Certified Associate (CBCA). Blockchain technology and smart contracts certified, PMP and agile professional with 12+ years of experience in worldwide IT projects.

Ilya Eriklintsev,

ZKP researcher,

<https://www.linkedin.com/in/ilya-eriklintsev-3a296852/>

Techlead at vSelf, an SSI solution on NEAR blockchain. More than six years of experience in the blockchain industry. Former researcher in Computational Fluid Dynamics.

Vladimir Kukharenko,

Developer

<https://www.linkedin.com/in/vladimir-kukharenko-vovunku/>

Participated in a blockchain infra project on Polkadot. Worked on developing a blockchain from scratch and an API for it as a part of a formally verified blockchain project. Two years of experience in the blockchain industry. Researcher in formal verification and formal methods.

Philip DiSarro,

Developer,

<https://www.linkedin.com/in/philip-disarro-068b56161/>

Currently the lead smart contract developer at Ikigai Technologies, a consultant and lecturer for Emurgo, and a founder of Anastasia Labs. Previous experience in the Cardano ecosystem: WingRiders, Agora, Plutarch.

Daniel Firth,

Developer,

<https://www.linkedin.com/in/locallycompact/>

Founder/CEO at Homotopic.Tech, a statically typed functional programming consultancy. Previously Smart Contract Architect at Orbis Labs. More than twelve years of experience with Haskell.

Sergey Ivannikov

Developer

Experienced as a senior software engineer in various IT companies. Former researcher at ETH Zurich in Computational Fluid Dynamics.

Tony Makdissy

Developer

<https://www.linkedin.com/in/tony-makdissy>

International Collegiate Programming Contest (ICPC) World Finalist

International Physics Olympiad World Finalist

Master AIRE in Life Sciences

How does the cost of the project represent value for money for the Cardano ecosystem?

The project has a six months timeline. Our team consists mainly of experienced developers and researchers. With the current average salary for experienced blockchain developers at 120 000-150 000 $/year, we offer to deliver this innovative product in line with the market average.

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    3m 24s
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    4m 3s
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    3m 48s
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    2m 16s
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    3m 14s
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    3m 19s
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    4m 59s
    Darlington Kofa
0:00
/
~0:00