Web-based O1js prover interface

Web-based O1js prover interface

Easiest installation of the proof feature onto existing applications powered by O1js

The problem Web-based O1js prover interface solves

O1js, or any proof system in general, is a bit tricky for developers to use, especially on the client side. And while some previous approaches have allowed users to create zk proofs within the browser environment, those past solutions did not necessarily interact with the distributed ledger, which ruled out diverse on-chain possibilities.

Web-based O1js prover interface aims to solve this problem by combining the good things from different solutions. By having a O1js-powered proof system at its core, the prover web interface enables a seamless web-based on-chain proof functionality that can be installed in any web application.

As soon as the user feeds the input to the interface, it turns on the O1js proof generate pipeline to create a proof offline and submit the execution receipt to Mina which then verifies the result.

Challenges I ran into

There were largely two different types of challenges we had to deal with.

One, interacting with the ledger (Mina), especially the test network, wasn't as smooth as we might have expected. Transactions often hovered without getting finalized and since we were dealing with a contract, zkApp in this context, we needed to deploy repeatedly to debug some errors. That contract-deploy transaction also aggravated the situation.

=> We handled this by having most of the work done and tested on the local blockchain.

We also had a few unexpected hiccups while passing the data in and out of web worker. The data needed to be serialized in a way that the web worker understands.

=> So we managed to test iteratively each property of data to see if can be properly serialized/deserialized end-to-end.

Technologies used

Cheer Project

Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.

Discussion