Please describe your proposed solution
zkFold Symbolic is the new smart contract language for Cardano, enabling straightforward development of ZK smart contracts. Unlike in traditional smart contracts, in ZK smart contracts, the contract runs off-chain, followed by the production of a zero-knowledge proof. The proof is then verified on-chain in a constant, predictable number of operations, thus enabling the blockchain to handle truly complex contracts and make the most from the data and computation limits imposed on the transactions.
On Cardano, there exists a diverse set of languages to develop on-chain code. These languages and frameworks include Aiken, Plutarch, PlutusTx, Scalus, plu-ts, OpShin, and others. Ultimately, the code written in those languages is compiled to Untyped Plutus Core, the low-level language that is executed on Cardano nodes.
In this proposal, we want to bring this functionality to other Cardano on-chain languages through a UPLC Converter. So, what is a UPLC Converter, and why is it needed?
- It is a translator from UPLC to zero knowledge circuits;
- It gives access to almost all features and advantages of zkFold Symbolic in other Cardano on-chain languages;
- With proper integration support from the developers of those on-chain languages, the users (smart contract developers) will barely notice any difference in their development process;
- It makes the development of ZK smart contracts even simpler!
The UPLC Converter consists of the following components:
- The UPLC → zero knowledge circuit transpiler.
- A CLI tool to be used with the host language toolset. It provides a set of APIs to produce all necessary on-chain code artifacts (zero knowledge circuits, Plutus verifier scripts, and ZK prover info),
We have gathered support from many prominent Cardano language developers.