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:
Grant 1
Summary
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.
Objective
- 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.
Details
- 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.
Hardware Requirements
- 4 cores, 128 GB RAM. We can provide a test machine if needed.
Timeline & Contact
- Application Deadline: Dec 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.
Resources for Grant 1
Grant 2
Summary
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.
Objective
- 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 the op-program-client
. Provide a unit test ensuring identical keccak256
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.
Details
- 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.
Timeline & Contact
- Application Deadline: Dec 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.
Resources for Grant 2