An Ethereum L2 ZK rollup for privacy preserving and regulatory compliant transactions.
Here are some highlights:
- 🚀 Fast - runs in under 3 seconds on an iPhone
- 🪄 Tiny - UTXO proofs are under 2.8KB
- ✅ EVM - proofs are compatible with Ethereum
For a detailed description of our architecture, please download our whitepaper or visit our docs.
Module | Path | Desc |
---|---|---|
Ethereum Contracts | eth | Ethereum smart contracts to verify state transitions and proofs |
Contracts | pkg/prover | Rust interface to Ethereum smart contracts |
RPC | pkg/rpc | RPC common utilities shared across all RPC services |
Smirk | pkg/smirk | Sparse merkle tree |
ZK-Circuits | pkg/zk-circuits | Halo2 + KZG ZK circuits for proving UTXO, merkle and state transitions |
ZK-Primitives | pkg/zk-primitives | ZK primitives used across multiple modules |
cargo test
Note: these tests can take a while to run on your laptop (e.g. more than 20 minutes)
The ZK-Circuits and Ethereum Contracts have been audited by KALOS. All report findings have been fixed and resolved.
We use Git LFS for storing large files (e.g. srs params).
A one-time setup needs to be done for local development:
- Install
git lfs
following the instructions at https://git-lfs.com/ - Inside the
zk-rollup
root directory, run the following commands:
$ git lfs install
$ git lfs pull
We appreciate your interest in contributing to our open-source project. Your contributions help improve the project for everyone.
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].
We take security issues seriously. If you discover a security vulnerability, we appreciate your assistance in disclosing it to us in a responsible manner. Do not report security vulnerabilities through public issues or forums. Instead, send a full report to [email protected]. We do not have an official bug bounty program but will reward responsibly disclosed vulnerabilities at our discretion.
If you find a bug, please report it by opening an issue. Include as much detail as possible, including steps to reproduce the issue, the environment in which it occurs, and any relevant screenshots or code snippets.
We appreciate enhancements! To suggest a feature or enhancement, please open an issue with a detailed description of your proposal. Explain why it is needed and how it would benefit the project.
- Fork the repository
- Create a new branch (
git checkout -b feature/YourFeature
) - Make your changes
- Commit your changes (
git commit -m 'Add some feature'
) - Push to the branch (
git push origin feature/YourFeature
) - Open a pull request
By contributing, you agree that your contributions will be licensed under the same license as the project. For more details, see LICENSE.