EthStorage will launch a developer bounty program to incentivize everyone to apply their acquired zk knowledge to solve real-world problems related to zk fraud proof based on zkGo and zkWasm. Each prize accepts up to two teams, and each accepted team will be rewarded at least $1,000 USD, with a development period of approximately two weeks. Currently, there are two main grants as follows:
This track primarily focuses on benchmarking wasm performance on Risc0’s ZKVM and Delphinuslab’s zkWasm. The benchmark program required for this task is a Go Fibonacci program, designed to calculate the N-th Fibonacci number (N = 100,000 ). The specific target benchmark program is fib_go.go.
- Create a summary table detailing the time required for two specific operations—dry_run (simply running the wasm binary) and (optionally) generating a witness (producing the necessary witness to fill in the circuit)—on both zkVMs. Please note that the program's current size prevents it from being proven at once, necessitating chunking and continuation to achieve a full proof. This aspect is actively under development, and thus, we will defer benchmarking for full proof to a future iteration.
- Share insights and experience from using these tools and prepare a talk on this topic.
- Compile the wasm binary using zkGo.
- Utilize the
dry_run
option in zkWasm's command line. Investigate how to perform this action in Risc0. - Comprehensive documentation must accompany the implementation.
- Relevant resources are available in the Resources section.
- Please submit your repository containing all relevant code and documentation.
- 4 cores, 128 GB RAM. We can provide a test machine if needed.
- Application Deadline: November 30, 2023, at 24:00 (UTC+8).
- Submission Deadline: Submissions are expected within 2 weeks from the acceptance of your application.
- Please refer to the Contact section to reach us and apply.
- Video: What is zkGo and how to use it [CN]
- How to build op-program-client and do zkWasm dry_run
- Risc0’s wasm example
- zkWasm command line
This track is dedicated to enhancing zkGo and zkWasm optimization by incorporating a customized keccak256 circuit. Within our zkWasm-based zk fraud proof, keccak256
serves as a key component, currently implemented using Golang and compiled into wasm opcodes. However, this implementation is not zk-friendly and imposes significant overhead on zkWasm circuits. Our aim is to substitute Golang's keccak256
with its zkWasm host circuit.
- Evaluate the prover cost benchmark by comparing the performance of the
keccak256
wasm binary compiled via a Rust program against the utilization of zkWasm's native host circuit. Summarize the findings in a table detailing circuit rows, proving time, and related metrics. - Integrate zkWasm's
keccak256
host circuit with theop-program-client
. Provide a unit test ensuring identicalkeccak256
hash results between Golang and zkWasm host functions, demonstrating the correctness of the implementation. - Compare the time costs between two implementations of the op-program client (specifically, the smoke_test) for two operations—dry_run (executing the wasm binary) and (optionally) generating a witness (generating the necessary witness for the circuit)—on zkWasm.
- Utilize the
keccak256
Rust implementation from this repository. - Use zkWasm's host circuit in this pull request.
- Replace the
keccak256
function in Golang using go build hints. Here is an example. - Refer to this documentation for guidance on building the op-program client and executing the smoke_test.
- Other relevant resources can be accessed in the Resources section.
- Please submit your repository containing all relevant code and documentation.
- Application Deadline: November 30, 2023, at 24:00 (UTC+8).
- Submission Deadline: Submissions are expected within 2 weeks from the acceptance of your application.
- Please refer to the Contact section to reach us and apply.
- Video: What is zkGo and how to use it [CN]
- How to build op-program-client and do zkWasm dry_run
- zkWasm command line
The application process is straightforward. If you're interested in participating in this bounty program competition, kindly send an email to chenjunfeng@ethstorage.io with the subject line 'Your name: EthStorage Grant 1(or 2) Application'. In the email, describe your background and reasons for your interest in this program. Please include your WeChat account at the end of the email for contact purposes. The final selected candidates will be announced by December 2, 2023, at 24:00 (UTC+8).