Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
ca733e4
modify build to use llvm specific optimise (#2)
weilzkm Jul 18, 2025
7068adb
chore: update deps to fix goat prague hardfork
felicityin Jul 21, 2025
85f09b8
fix: error TransferError::CreateCollision in revm
felicityin Aug 8, 2025
5fa8bf7
chore: upgrade ziren to v1.1.2
felicityin Aug 12, 2025
4a50bd9
chore: upgrade ziren to v1.1.3
felicityin Aug 18, 2025
9dd4c4a
fix serde
Sep 24, 2025
e3aa82b
fix: disable rpc_db.preload_accounts_and_storage()
felicityin Sep 27, 2025
5ca1536
chore: upgrade deps
felicityin Nov 24, 2025
2df2bde
perf: reduce guest cycles
felicityin Nov 25, 2025
27cf991
chore: upgrade alloy-primitives to v1.4.1
felicityin Nov 27, 2025
ff67963
perf: set the elf id only once
felicityin Dec 3, 2025
d3ea385
style: cargo clippy
felicityin Dec 3, 2025
1c232c4
chore: upgrade ziren to v1.2.3
felicityin Dec 9, 2025
eea6b5e
Merge pull request #4 from felicityin/update-deps
felicityin Dec 11, 2025
1fe76c9
feat: goat osaka hardfork (#6)
felicityin Dec 24, 2025
cf5f643
fix: goat system tx err
felicityin Dec 31, 2025
686bf9c
Merge pull request #8 from felicityin/fix-goat
felicityin Dec 31, 2025
cc6af1d
feat: continuously processing blocks (#13)
felicityin Mar 25, 2026
69950b4
chore: cache a smaller block (#18)
felicityin May 20, 2026
522fcde
chore: upgrade ziren to v1.2.7 (#19)
felicityin Jul 13, 2026
e36e285
chore: upgrade ziren to v2.0
eigmax Oct 10, 2026
6927087
feat: integrate the Ziren 2.0 EthProofs client into a durable Fleet w…
Oct 11, 2026
52128b1
fix: accept structured execution witness headers from live Geth
Oct 11, 2026
2c0245a
fix: preserve untouched storage roots and remove empty accounts
Oct 11, 2026
41317cd
fix: accept omitted authenticated empty storage in guest witnesses
Oct 11, 2026
fd9589c
merge: resolve main conflicts while retaining Ziren 2.0 Fleet worker
Oct 11, 2026
a3e6a4a
Revert "merge: resolve main conflicts while retaining Ziren 2.0 Fleet…
Oct 11, 2026
367bf8c
fix: use the reth ELF name in the host cycle-count test
Oct 11, 2026
d191669
feat: follow the latest Ethereum head without proving the backlog
Oct 11, 2026
4ac762e
fix: reconcile duplicate reports against published proof bytes
Oct 11, 2026
6a8a97f
Overlap latest-head witness preparation with serial proving
Oct 11, 2026
26ebf2a
Retry latest-head preparation while witness RPC catches up
Oct 11, 2026
a75cb33
Recover verified bytecode omitted from execution witnesses
Oct 11, 2026
85a0c17
Enable gzip responses for execution witness RPC
eigmax Oct 12, 2026
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
2,145 changes: 571 additions & 1,574 deletions Cargo.lock

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ provider = { path = "./crates/provider" }
zkm-build = { git = "https://github.com/ProjectZKM/Ziren" }
zkm-core-executor = { git = "https://github.com/ProjectZKM/Ziren" }
zkm-prover = { git = "https://github.com/ProjectZKM/Ziren" }
zkm-cuda = { git = "https://github.com/ProjectZKM/Ziren" }
zkm-sdk = { git = "https://github.com/ProjectZKM/Ziren" }

# reth
Expand Down
12 changes: 11 additions & 1 deletion bin/eth-proofs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ name = "eth-proofs"
edition = "2021"

[dependencies]
tokio.workspace = true
tokio = { workspace = true, features = ["signal"] }
url.workspace = true
tracing.workspace = true
serde_json.workspace = true
Expand All @@ -13,6 +13,11 @@ tracing-subscriber = "0.3.18"
dotenv = "0.15.0"
clap = { version = "4.5.7", features = ["derive", "env"] }
eyre = "0.6.12"
bincode = "1.3.3"
sha2 = "0.10.8"
hex = "0.4.3"
fs2 = "0.4.3"
libc = "0.2"
reqwest = { workspace = true, features = ["json"] }
reqwest-middleware = { version = "0.3.3", features = ["json"] }
reqwest-retry = "0.6.1"
Expand All @@ -28,6 +33,8 @@ provider.workspace = true

# Ziren
zkm-sdk.workspace = true
zkm-cuda.workspace = true
zkm-prover.workspace = true

# alloy
alloy-chains.workspace = true
Expand All @@ -41,3 +48,6 @@ zkm-build.workspace = true

[features]
test = []

[dev-dependencies]
tempfile = "3"
11 changes: 9 additions & 2 deletions bin/eth-proofs/build.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
use zkm_build::build_program;
use zkm_build::{build_program_with_args, BuildArgs};

fn main() {
build_program("../guest");
println!("cargo:rerun-if-env-changed=ETH_PROOFS_BUILD_ELF");
if let Ok(path) = std::env::var("ETH_PROOFS_BUILD_ELF") {
let path = std::fs::canonicalize(path).expect("ETH_PROOFS_BUILD_ELF must exist");
println!("cargo:rerun-if-changed={}", path.display());
println!("cargo:rustc-env=ZKM_ELF_reth={}", path.display());
} else {
build_program_with_args("../guest", BuildArgs { locked: true, ..Default::default() });
}
}
53 changes: 52 additions & 1 deletion bin/eth-proofs/src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ pub struct Args {

/// The WS rpc url used to fetch data about the block.
#[clap(long, env)]
pub ws_rpc_url: Url,
pub ws_rpc_url: Option<Url>,

/// The debug HTTP rpc url used to fetch data about the block trace.
#[clap(long, env)]
Expand All @@ -28,6 +28,29 @@ pub struct Args {
#[clap(long, default_value_t = 100)]
pub block_interval: u64,

/// Which residue class of `block_interval` this instance proves: blocks
/// with `number % block_interval == block_residue`. Two instances with
/// `--block-interval 2` and residues 0 and 1 split the chain between two
/// provers and prove two blocks at a time.
#[clap(long, default_value_t = 0)]
pub block_residue: u64,

/// How many prepared blocks (fetched + natively executed) may wait for the
/// prover. The fetch of block N+1 always overlaps the proof of block N;
/// this bounds how far ahead the fetcher runs.
#[clap(long, default_value_t = 1)]
pub prefetch_depth: usize,

/// Skip a block when it is more than this many blocks behind the newest
/// header seen (0 = never skip: prove every block the stream delivers).
#[clap(long, default_value_t = 0)]
pub max_lag: u64,

/// In local mode, select the latest eligible head before each preparation.
/// Prepare ahead of proving; retain only the newest completed witness.
#[clap(long)]
pub latest_block: bool,

/// ETH proofs endpoint.
#[clap(long, env)]
pub eth_proofs_endpoint: String,
Expand All @@ -44,6 +67,34 @@ pub struct Args {
#[clap(long, env)]
pub pager_duty_integration_key: Option<String>,

/// Direct local GPU server, set by Fleet for an integrated app worker.
#[clap(long, env = "FLEET_GPU_ENDPOINT")]
pub local_gpu_endpoint: Option<Url>,

/// Persistent local worker state. Required with --local-gpu-endpoint.
#[clap(long, env = "FLEET_APP_STORAGE_ROOT", requires = "local_gpu_endpoint")]
pub state_dir: Option<std::path::PathBuf>,

/// Use an existing production guest instead of the embedded ELF.
#[clap(long, env = "ETH_PROOFS_ELF_FILE")]
pub elf_file: Option<std::path::PathBuf>,

/// Reject a guest whose digest differs from this app's configured program.
#[clap(long, env = "FLEET_APP_ELF_ID")]
pub expected_elf_id: Option<String>,

/// First block for a new durable stream; restarts resume persisted progress.
#[clap(long)]
pub start_block: Option<u64>,

/// Witness preparation concurrency (1 or 2 in latest mode; GPU proving remains serial).
#[clap(long, default_value_t = 1)]
pub prepare_concurrency: usize,

/// Pause proving when this many completed reports await acknowledgment.
#[clap(long, default_value_t = 128)]
pub max_pending_reports: usize,

/// Moongate server endpoint.
#[clap(long, env)]
pub moongate_endpoint: Option<String>,
Expand Down
Loading