Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion ethereum_prover/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,15 @@ thiserror = "1"

# For local debugging: replace remote dependencies with local ones, init the submodule, and get convenient debugging experience.
# DO NOT use local dependencies outside of debugging.
# forward_system = { path = "../zksync-os/forward_system", features = ["no_print", "pectra"] }
# forward_system = { path = "../zksync-os/forward_system", features = ["no_print", "pectra" ] }
# oracle_provider = { path = "../zksync-os/oracle_provider" }
# callable_oracles = { path = "../zksync-os/callable_oracles" }
# crypto = { path = "../zksync-os/crypto" }
# zk_ee = { path = "../zksync-os/zk_ee" }
# basic_system = { path = "../zksync-os/basic_system" }
# basic_bootloader = { path = "../zksync-os/basic_bootloader" }
# zksync_os_runner = { path = "../zksync-os/zksync_os_runner" }
# system_hooks = { path = "../zksync-os/system_hooks", features = ["p256_precompile"] }

forward_system = { git = "https://github.com/matter-labs/zksync-os", branch = "popzxc/more-ethproofs-fusaka", features = ["no_print", "pectra"] }
oracle_provider = { git = "https://github.com/matter-labs/zksync-os", branch = "popzxc/more-ethproofs-fusaka" }
Expand All @@ -44,6 +45,7 @@ zk_ee = { git = "https://github.com/matter-labs/zksync-os", branch = "popzxc/mor
basic_system = { git = "https://github.com/matter-labs/zksync-os", branch = "popzxc/more-ethproofs-fusaka" }
basic_bootloader = { git = "https://github.com/matter-labs/zksync-os", branch = "popzxc/more-ethproofs-fusaka" }
zksync_os_runner = { git = "https://github.com/matter-labs/zksync-os", branch = "popzxc/more-ethproofs-fusaka" }
system_hooks = { git = "https://github.com/matter-labs/zksync-os", branch = "popzxc/more-ethproofs-fusaka", features = ["p256_precompile"] }

# execution_utils = { git = "https://github.com/matter-labs/zksync-airbender", branch = "dev", default-features = false, optional = true }
# risc_v_simulator = { git = "https://github.com/matter-labs/zksync-airbender", branch = "dev", features = ["delegation"], optional = true }
Expand Down
18 changes: 17 additions & 1 deletion ethereum_prover/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@

`ethereum_prover` is a pipeline-style binary that ingests Ethereum blocks and produces witnesses or GPU proofs, with optional submission to EthProofs.

## HW requirements

- The best CPU you can get (CPU often becomes a bottleneck).
- At least one NVIDIA RTX 5090 or better (32GB VRAM required).
- 64GB RAM (for a single GPU).

In case of multi-GPU setup, the prover will automatically detect and utilize all the available suitable GPUs.

## Running

On a fresh Ubuntu machine (e.g. in `vast.ai`), you might need to run the [`ubuntu_setup` script](../scripts/ubuntu_setup.sh).
Expand All @@ -29,7 +37,8 @@ transaction receipts fetched from L1).
### Build Notes

The project unconditionally builds the GPU prover, because keeping it behind the feature flag would complicate the development.
To build the project without CUDA drivers installed, set `ZKSYNC_USE_CUDA_STUBS` environment variable to `true`.
To build the project without CUDA drivers installed, set `ZKSYNC_USE_CUDA_STUBS` environment variable to `true`. Do not do that
in any kind of environment where the built binary can actually be run.

`RUST_MIN_STACK` is required since the code might have compile issue with default value.

Expand Down Expand Up @@ -86,6 +95,13 @@ Reusable configs live in `ethereum_prover/configs/`:
- GPU tests are opt-in: `RUN_GPU_TESTS=1 cargo nextest run -p ethereum_prover --test gpu_prover_fixture`
- Prefer unit tests for new behavior; add integration tests in `ethereum_prover/tests/` only when needed.

## Observability

Optional Sentry integration is supported. Currently, it will only generate alerts for failed witness generations or proofs.
Exported Prometheus metrics can be seen in [metrics.rs](src/metrics.rs).

Sample Grafana dashboard for exported metrics is available in the [infra](../infra/) folder.

## License

[MIT](../LICENSE-MIT) or [Apache 2.0](../LICENSE-APACHE) at your option.