From 2386371566c735584a726f62490703222ee35b9a Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 15:46:00 -0300 Subject: [PATCH 01/99] Adjust crates to make ZisK guest compile --- cmd/ethrex/Cargo.toml | 7 +++- crates/blockchain/Cargo.toml | 14 ++++--- crates/blockchain/error.rs | 2 +- crates/common/Cargo.toml | 11 ++++-- crates/common/common.rs | 3 ++ crates/common/errors.rs | 9 +++++ crates/common/types/block.rs | 7 ++-- crates/common/types/transaction.rs | 45 ++++++++++++++++------ crates/l2/common/Cargo.toml | 14 ++++++- crates/l2/common/src/utils.rs | 42 +++++++++++++++++--- crates/l2/monitor/widget/rich_accounts.rs | 2 +- crates/l2/networking/rpc/l2/transaction.rs | 7 ++-- crates/l2/networking/rpc/utils.rs | 4 +- crates/l2/sequencer/setup.rs | 3 +- crates/l2/tests/state_reconstruct.rs | 2 +- crates/l2/tests/tests.rs | 38 ++++++++++-------- crates/networking/rpc/utils.rs | 4 +- crates/vm/Cargo.toml | 10 +++-- crates/vm/levm/Cargo.toml | 15 +++++--- crates/vm/levm/src/constants.rs | 11 +++--- crates/vm/levm/src/precompiles.rs | 4 +- crates/vm/levm/src/utils.rs | 26 ++++++++----- 22 files changed, 195 insertions(+), 85 deletions(-) create mode 100644 crates/common/errors.rs diff --git a/cmd/ethrex/Cargo.toml b/cmd/ethrex/Cargo.toml index 958313131dc..dc08b663e9a 100644 --- a/cmd/ethrex/Cargo.toml +++ b/cmd/ethrex/Cargo.toml @@ -73,8 +73,13 @@ path = "./lib.rs" [features] debug = ["ethrex-vm/debug"] -default = ["rocksdb", "c-kzg", "metrics", "jemalloc", "dev"] +default = ["rocksdb", "c-kzg", "secp256k1", "metrics", "jemalloc", "dev"] dev = ["dep:ethrex-dev"] +secp256k1 = [ + "ethrex-common/secp256k1", + "ethrex-vm/secp256k1", + "ethrex-blockchain/secp256k1", +] c-kzg = [ "ethrex-vm/c-kzg", "ethrex-common/c-kzg", diff --git a/crates/blockchain/Cargo.toml b/crates/blockchain/Cargo.toml index 2e859496882..a50798855b7 100644 --- a/crates/blockchain/Cargo.toml +++ b/crates/blockchain/Cargo.toml @@ -9,11 +9,11 @@ documentation.workspace = true [dependencies] ethrex-rlp.workspace = true -ethrex-common.workspace = true +ethrex-common = { workspace = true, default-features = false } ethrex-storage.workspace = true ethrex-trie.workspace = true -ethrex-vm.workspace = true -secp256k1.workspace = true +ethrex-vm = { workspace = true, default-features = false } +ethrex-metrics = { path = "./metrics", default-features = false } thiserror.workspace = true sha3.workspace = true @@ -24,8 +24,6 @@ rustc-hash.workspace = true tokio = { workspace = true, features = ["time", "rt"] } tokio-util.workspace = true -ethrex-metrics = { path = "./metrics", default-features = false } - [dev-dependencies] serde_json.workspace = true hex = "0.4.3" @@ -35,9 +33,13 @@ tokio = { workspace = true, features = ["full"] } path = "./blockchain.rs" [features] -default = [] +default = ["secp256k1"] +secp256k1 = ["ethrex-common/secp256k1", "ethrex-vm/secp256k1"] c-kzg = ["ethrex-common/c-kzg", "ethrex-vm/c-kzg"] metrics = ["ethrex-metrics/transactions"] +sp1 = ["ethrex-common/sp1", "ethrex-vm/sp1"] +risc0 = ["ethrex-common/risc0", "ethrex-vm/risc0", "c-kzg"] +zisk = ["ethrex-common/zisk", "ethrex-vm/zisk"] [lints.clippy] unwrap_used = "deny" diff --git a/crates/blockchain/error.rs b/crates/blockchain/error.rs index e8769235d4f..8681c828aa9 100644 --- a/crates/blockchain/error.rs +++ b/crates/blockchain/error.rs @@ -131,7 +131,7 @@ pub enum MempoolError { #[error("Requested pooled transaction was not received")] RequestedPooledTxNotFound, #[error("Transaction sender is invalid {0}")] - InvalidTxSender(#[from] secp256k1::Error), + InvalidTxSender(#[from] ethrex_common::Error), #[error("Attempted to replace a pooled transaction with an underpriced transaction")] UnderpricedReplacement, } diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index b333a592d46..68542e821e0 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -21,7 +21,6 @@ thiserror.workspace = true sha2.workspace = true kzg-rs.workspace = true sha3.workspace = true -secp256k1.workspace = true once_cell = "1.20.2" libc = "0.2" crc32fast.workspace = true @@ -33,13 +32,19 @@ url.workspace = true rkyv.workspace = true rustc-hash.workspace = true +secp256k1 = { workspace = true, optional = true } +k256 = { workspace = true, optional = true } + [dev-dependencies] hex-literal.workspace = true [features] -default = [] +default = ["secp256k1"] c-kzg = ["ethrex-crypto/c-kzg"] -risc0 = ["ethrex-crypto/risc0"] +secp256k1 = ["dep:secp256k1"] +risc0 = ["ethrex-crypto/risc0", "dep:k256"] +zisk = ["dep:k256"] +sp1 = ["dep:k256"] [lib] path = "./common.rs" diff --git a/crates/common/common.rs b/crates/common/common.rs index e35696f772f..9d6b550f293 100644 --- a/crates/common/common.rs +++ b/crates/common/common.rs @@ -5,9 +5,12 @@ pub mod types; pub use bytes::Bytes; pub mod base64; pub use ethrex_trie::{TrieLogger, TrieWitness}; +pub mod errors; pub mod evm; pub mod fd_limit; pub mod genesis_utils; pub mod rkyv_utils; pub mod tracing; pub mod utils; + +pub use errors::Error; diff --git a/crates/common/errors.rs b/crates/common/errors.rs new file mode 100644 index 00000000000..e3a9abad106 --- /dev/null +++ b/crates/common/errors.rs @@ -0,0 +1,9 @@ +#[derive(thiserror::Error, Debug)] +pub enum Error { + #[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] + #[error("secp256k1 error: {0}")] + Secp256k1(#[from] secp256k1::Error), + #[cfg(any(feature = "zisk", feature = "risc0", feature = "sp1"))] + #[error("k256 error: {0}")] + K256(#[from] k256::ecdsa::Error), +} diff --git a/crates/common/types/block.rs b/crates/common/types/block.rs index 2348d13f028..883a22cc201 100644 --- a/crates/common/types/block.rs +++ b/crates/common/types/block.rs @@ -2,6 +2,7 @@ use super::{ BASE_FEE_MAX_CHANGE_DENOMINATOR, ChainConfig, Fork, ForkBlobSchedule, GAS_LIMIT_ADJUSTMENT_FACTOR, GAS_LIMIT_MINIMUM, INITIAL_BASE_FEE, }; +use crate::errors::Error; use crate::utils::keccak; use crate::{ Address, H256, U256, @@ -250,15 +251,13 @@ impl BlockBody { } } - pub fn get_transactions_with_sender( - &self, - ) -> Result, secp256k1::Error> { + pub fn get_transactions_with_sender(&self) -> Result, Error> { // Recovering addresses is computationally expensive. // Computing them in parallel greatly reduces execution time. self.transactions .par_iter() .map(|tx| Ok((tx, tx.sender()?))) - .collect::, secp256k1::Error>>() + .collect::, Error>>() } } diff --git a/crates/common/types/transaction.rs b/crates/common/types/transaction.rs index c3bc9243944..4b6be4d2456 100644 --- a/crates/common/types/transaction.rs +++ b/crates/common/types/transaction.rs @@ -1,14 +1,12 @@ use std::{cmp::min, fmt::Display}; -use crate::utils::keccak; +use crate::{errors::Error, utils::keccak}; use bytes::Bytes; use ethereum_types::{Address, H256, Signature, U256}; pub use mempool::MempoolTransaction; use rkyv::{Archive, Deserialize as RDeserialize, Serialize as RSerialize}; -use secp256k1::{Message, ecdsa::RecoveryId}; use serde::{Serialize, ser::SerializeStruct}; pub use serde_impl::{AccessListEntry, GenericTransaction, GenericTransactionError}; -use sha3::{Digest, Keccak256}; use ethrex_rlp::{ constants::RLP_NULL, @@ -934,7 +932,7 @@ impl RLPDecode for PrivilegedL2Transaction { } impl Transaction { - pub fn sender(&self) -> Result { + pub fn sender(&self) -> Result { match self { Transaction::LegacyTransaction(tx) => { let signature_y_parity = match self.chain_id() { @@ -968,6 +966,7 @@ impl Transaction { sig[32..64].copy_from_slice(&tx.s.to_big_endian()); sig[64] = signature_y_parity as u8; recover_address_from_message(Signature::from_slice(&sig), &Bytes::from(buf)) + .map_err(Error::from) } Transaction::EIP2930Transaction(tx) => { let mut buf = vec![self.tx_type() as u8]; @@ -986,6 +985,7 @@ impl Transaction { sig[32..64].copy_from_slice(&tx.signature_s.to_big_endian()); sig[64] = tx.signature_y_parity as u8; recover_address_from_message(Signature::from_slice(&sig), &Bytes::from(buf)) + .map_err(Error::from) } Transaction::EIP1559Transaction(tx) => { let mut buf = vec![self.tx_type() as u8]; @@ -1005,6 +1005,7 @@ impl Transaction { sig[32..64].copy_from_slice(&tx.signature_s.to_big_endian()); sig[64] = tx.signature_y_parity as u8; recover_address_from_message(Signature::from_slice(&sig), &Bytes::from(buf)) + .map_err(Error::from) } Transaction::EIP4844Transaction(tx) => { let mut buf = vec![self.tx_type() as u8]; @@ -1026,6 +1027,7 @@ impl Transaction { sig[32..64].copy_from_slice(&tx.signature_s.to_big_endian()); sig[64] = tx.signature_y_parity as u8; recover_address_from_message(Signature::from_slice(&sig), &Bytes::from(buf)) + .map_err(Error::from) } Transaction::EIP7702Transaction(tx) => { let mut buf = vec![self.tx_type() as u8]; @@ -1046,6 +1048,7 @@ impl Transaction { sig[32..64].copy_from_slice(&tx.signature_s.to_big_endian()); sig[64] = tx.signature_y_parity as u8; recover_address_from_message(Signature::from_slice(&sig), &Bytes::from(buf)) + .map_err(Error::from) } Transaction::PrivilegedL2Transaction(tx) => Ok(tx.from), } @@ -1261,32 +1264,52 @@ impl Transaction { } } +#[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] pub fn recover_address_from_message( signature: Signature, message: &Bytes, ) -> Result { + use sha2::Digest; // Hash message - let payload: [u8; 32] = Keccak256::new_with_prefix(message.as_ref()) - .finalize() - .into(); + let payload: [u8; 32] = sha3::Keccak256::digest(message).into(); recover_address(signature, H256::from_slice(&payload)) } +#[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] pub fn recover_address(signature: Signature, payload: H256) -> Result { + use sha2::Digest; // Create signature let signature_bytes = signature.to_fixed_bytes(); let signature = secp256k1::ecdsa::RecoverableSignature::from_compact( &signature_bytes[..64], - RecoveryId::try_from(signature_bytes[64] as i32)?, // cannot fail + secp256k1::ecdsa::RecoveryId::try_from(signature_bytes[64] as i32)?, // cannot fail )?; // Recover public key - let public = secp256k1::SECP256K1 - .recover_ecdsa(&Message::from_digest(payload.to_fixed_bytes()), &signature)?; + let public = secp256k1::SECP256K1.recover_ecdsa( + &secp256k1::Message::from_digest(payload.to_fixed_bytes()), + &signature, + )?; // Hash public key to obtain address - let hash = Keccak256::new_with_prefix(&public.serialize_uncompressed()[1..]).finalize(); + let hash = sha3::Keccak256::digest(&public.serialize_uncompressed()[1..]); Ok(Address::from_slice(&hash[12..])) } +#[cfg(any(feature = "zisk", feature = "risc0", feature = "sp1"))] +pub fn recover_address_from_message( + _signature: Signature, + _message: &Bytes, +) -> Result { + todo!() +} + +#[cfg(any(feature = "zisk", feature = "risc0", feature = "sp1"))] +pub fn recover_address( + _signature: Signature, + _payload: H256, +) -> Result { + todo!() +} + fn derive_legacy_chain_id(v: U256) -> Option { let v = v.as_u64(); //TODO: Could panic if v is bigger than Max u64 if v == 27 || v == 28 { diff --git a/crates/l2/common/Cargo.toml b/crates/l2/common/Cargo.toml index c0d2b8a9c4b..203aa94bd5d 100644 --- a/crates/l2/common/Cargo.toml +++ b/crates/l2/common/Cargo.toml @@ -18,7 +18,6 @@ thiserror.workspace = true serde.workspace = true lambdaworks-crypto.workspace = true sha3.workspace = true -secp256k1.workspace = true hex.workspace = true serde_with.workspace = true # We do not need to enable the "unaligned" feature here since we are just using @@ -26,6 +25,9 @@ serde_with.workspace = true # inside a guest program rkyv.workspace = true +secp256k1 = { workspace = true, optional = true } +k256 = { workspace = true, optional = true } + [lints.clippy] unwrap_used = "deny" expect_used = "deny" @@ -34,3 +36,13 @@ as_conversions = "deny" unnecessary_cast = "warn" panic = "deny" redundant_clone = "warn" + +[features] +default = ["secp256k1"] + +secp256k1 = ["dep:secp256k1"] +k256 = ["dep:k256"] + +sp1 = ["k256"] +risc0 = ["k256"] +zisk = ["k256"] diff --git a/crates/l2/common/src/utils.rs b/crates/l2/common/src/utils.rs index 96568d84aeb..b8940a70de5 100644 --- a/crates/l2/common/src/utils.rs +++ b/crates/l2/common/src/utils.rs @@ -1,12 +1,14 @@ -use ethrex_common::Address; -use ethrex_common::utils::keccak; -use secp256k1::SecretKey; +#[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] +pub fn get_address_from_secret_key( + secret_key_bytes: &[u8], +) -> Result { + let secret_key = secp256k1::SecretKey::from_slice(secret_key_bytes) + .map_err(|e| format!("Failed to parse secret key from slice: {e}"))?; -pub fn get_address_from_secret_key(secret_key: &SecretKey) -> Result { let public_key = secret_key .public_key(secp256k1::SECP256K1) .serialize_uncompressed(); - let hash = keccak(&public_key[1..]); + let hash = ethrex_common::utils::keccak(&public_key[1..]); // Get the last 20 bytes of the hash let address_bytes: [u8; 20] = hash @@ -16,5 +18,33 @@ pub fn get_address_from_secret_key(secret_key: &SecretKey) -> Result Result { + use k256::elliptic_curve::sec1::ToEncodedPoint; + + let secret_key = k256::SecretKey::from_slice(secret_key_bytes) + .map_err(|e| format!("Failed to parse secret key from slice: {e}"))?; + + let public_key = secret_key.public_key().to_encoded_point(false); + let hash = ethrex_common::utils::keccak( + public_key + .as_bytes() + .get(1..) + .ok_or(String::from("failed to slice public key"))?, + ); + + // Get the last 20 bytes of the hash + let address_bytes: [u8; 20] = hash + .as_ref() + .get(12..32) + .ok_or("Failed to get_address_from_secret_key: error slicing address_bytes".to_owned())? + .try_into() + .map_err(|err| format!("Failed to get_address_from_secret_key: {err}"))?; + + Ok(ethrex_common::Address::from(address_bytes)) } diff --git a/crates/l2/monitor/widget/rich_accounts.rs b/crates/l2/monitor/widget/rich_accounts.rs index 5818791ceca..9c210bc0787 100644 --- a/crates/l2/monitor/widget/rich_accounts.rs +++ b/crates/l2/monitor/widget/rich_accounts.rs @@ -59,7 +59,7 @@ impl RichAccountsTable { for pk in private_keys.iter() { let secret_key = SecretKey::from_slice(&parse_hex(pk)?) .map_err(|e| MonitorError::DecodingError(format!("Invalid private key: {e}")))?; - let address = get_address_from_secret_key(&secret_key).map_err(|e| { + let address = get_address_from_secret_key(&secret_key.secret_bytes()).map_err(|e| { MonitorError::DecodingError(format!("Failed to get address from private key: {e}")) })?; let get_balance = rollup_client diff --git a/crates/l2/networking/rpc/l2/transaction.rs b/crates/l2/networking/rpc/l2/transaction.rs index 29d96a99328..b44a6776ff7 100644 --- a/crates/l2/networking/rpc/l2/transaction.rs +++ b/crates/l2/networking/rpc/l2/transaction.rs @@ -121,9 +121,10 @@ impl RpcHandler for SponsoredTx { )); } } - let sponsor_address = get_address_from_secret_key(&context.sponsor_pk).map_err(|_| { - RpcErr::InvalidEthrexL2Message("Ethrex L2 Rpc method not enabled".to_string()) - })?; + let sponsor_address = get_address_from_secret_key(&context.sponsor_pk.secret_bytes()) + .map_err(|_| { + RpcErr::InvalidEthrexL2Message("Ethrex L2 Rpc method not enabled".to_string()) + })?; let latest_block_number = context .l1_ctx .storage diff --git a/crates/l2/networking/rpc/utils.rs b/crates/l2/networking/rpc/utils.rs index 67d28534a91..527f36003fd 100644 --- a/crates/l2/networking/rpc/utils.rs +++ b/crates/l2/networking/rpc/utils.rs @@ -37,8 +37,8 @@ impl From for RpcErr { } } -impl From for RpcErr { - fn from(error: secp256k1::Error) -> Self { +impl From for RpcErr { + fn from(error: ethrex_common::Error) -> Self { Self::L1RpcErr(error.into()) } } diff --git a/crates/l2/sequencer/setup.rs b/crates/l2/sequencer/setup.rs index caecd5e9708..f71acd8874d 100644 --- a/crates/l2/sequencer/setup.rs +++ b/crates/l2/sequencer/setup.rs @@ -72,7 +72,8 @@ pub async fn register_tdx_key( eth_client, TxType::EIP1559, tdx_address, - get_address_from_secret_key(private_key).map_err(ProofCoordinatorError::InternalError)?, + get_address_from_secret_key(&private_key.secret_bytes()) + .map_err(ProofCoordinatorError::InternalError)?, calldata.into(), Overrides { max_fee_per_gas: Some(gas_price), diff --git a/crates/l2/tests/state_reconstruct.rs b/crates/l2/tests/state_reconstruct.rs index cb566e55793..eed2e449f8d 100644 --- a/crates/l2/tests/state_reconstruct.rs +++ b/crates/l2/tests/state_reconstruct.rs @@ -47,7 +47,7 @@ async fn test_state_reconstruct() { .unwrap_or(pk) .parse::() .unwrap(); - get_address_from_secret_key(&secret_key).unwrap() + get_address_from_secret_key(&secret_key.secret_bytes()).unwrap() }) .collect::>(); diff --git a/crates/l2/tests/tests.rs b/crates/l2/tests/tests.rs index 05cf9e7a175..462d7f893bc 100644 --- a/crates/l2/tests/tests.rs +++ b/crates/l2/tests/tests.rs @@ -922,8 +922,8 @@ async fn test_forced_withdrawal( ) -> Result { let native_token_is_eth = native_token_l1_address == Address::zero(); println!("forced_withdrawal: Testing forced withdrawal"); - let rich_address = - get_address_from_secret_key(&rich_wallet_private_key).expect("Failed to get address"); + let rich_address = get_address_from_secret_key(&rich_wallet_private_key.secret_bytes()) + .expect("Failed to get address"); let l1_initial_native_balance = if native_token_is_eth { l1_client .get_balance(rich_address, BlockIdentifier::Tag(BlockTag::Latest)) @@ -1114,7 +1114,7 @@ async fn test_deposit( let native_token_is_eth = native_token_l1_address == Address::zero(); println!("test_deposit: Fetching initial balances on L1 and L2"); - let rich_wallet_address = get_address_from_secret_key(rich_wallet_private_key) + let rich_wallet_address = get_address_from_secret_key(&rich_wallet_private_key.secret_bytes()) .expect("Failed to get address from l1 rich wallet pk"); let deposit_value = std::env::var("INTEGRATION_TEST_DEPOSIT_VALUE") @@ -1342,8 +1342,10 @@ async fn test_transfer( returnerer_private_key: SecretKey, ) -> Result { println!("test_transfer: Transferring funds on L2"); - let transferer_address = get_address_from_secret_key(&transferer_private_key).unwrap(); - let returner_address = get_address_from_secret_key(&returnerer_private_key).unwrap(); + let transferer_address = + get_address_from_secret_key(&transferer_private_key.secret_bytes()).unwrap(); + let returner_address = + get_address_from_secret_key(&returnerer_private_key.secret_bytes()).unwrap(); println!( "test_transfer: Performing transfer from {transferer_address:#x} to {returner_address:#x}" @@ -1389,8 +1391,10 @@ async fn test_transfer_with_privileged_tx( receiver_private_key: SecretKey, ) -> Result { println!("transfer_with_ptx: Transferring funds on L2 through a deposit"); - let transferer_address = get_address_from_secret_key(&transferer_private_key).unwrap(); - let receiver_address = get_address_from_secret_key(&receiver_private_key).unwrap(); + let transferer_address = + get_address_from_secret_key(&transferer_private_key.secret_bytes()).unwrap(); + let receiver_address = + get_address_from_secret_key(&receiver_private_key.secret_bytes()).unwrap(); println!("transfer_with_ptx: Fetching receiver's initial balance on L2"); @@ -1446,7 +1450,8 @@ async fn test_gas_burning( rich_wallet_private_key: SecretKey, ) -> Result { println!("test_gas_burning: Transferring funds on L2 through a deposit"); - let rich_address = get_address_from_secret_key(&rich_wallet_private_key).unwrap(); + let rich_address = + get_address_from_secret_key(&rich_wallet_private_key.secret_bytes()).unwrap(); let l2_gas_limit = 2_000_000; let l1_extra_gas_limit = 400_000; @@ -1484,8 +1489,10 @@ async fn test_privileged_tx_not_enough_balance( println!( "ptx_not_enough_balance: Starting test for privileged transaction with insufficient balance" ); - let rich_address = get_address_from_secret_key(&rich_wallet_private_key).unwrap(); - let receiver_address = get_address_from_secret_key(&receiver_private_key).unwrap(); + let rich_address = + get_address_from_secret_key(&rich_wallet_private_key.secret_bytes()).unwrap(); + let receiver_address = + get_address_from_secret_key(&receiver_private_key.secret_bytes()).unwrap(); println!("ptx_not_enough_balance: Fetching initial balances on L1 and L2"); @@ -1546,7 +1553,8 @@ async fn perform_transfer( transfer_value: U256, test: &str, ) -> Result { - let transferer_address = get_address_from_secret_key(transferer_private_key).unwrap(); + let transferer_address = + get_address_from_secret_key(&transferer_private_key.secret_bytes()).unwrap(); let transferer_initial_l2_balance = l2_client .get_balance(transferer_address, BlockIdentifier::Tag(BlockTag::Latest)) @@ -1625,7 +1633,7 @@ async fn test_n_withdraws( ) -> Result<(), Box> { let native_token_is_eth = native_token_l1_address == Address::zero(); println!("test_n_withdraws: Withdrawing funds from L2 to L1"); - let withdrawer_address = get_address_from_secret_key(withdrawer_private_key)?; + let withdrawer_address = get_address_from_secret_key(&withdrawer_private_key.secret_bytes())?; let withdraw_value = std::env::var("INTEGRATION_TEST_WITHDRAW_VALUE") .map(|value| U256::from_dec_str(&value).expect("Invalid withdraw value")) .unwrap_or(U256::from(100000000000000000000u128)); @@ -2059,8 +2067,8 @@ async fn test_call_to_contract_with_deposit( caller_private_key: &SecretKey, test: &str, ) -> Result<()> { - let caller_address = - get_address_from_secret_key(caller_private_key).expect("Failed to get address"); + let caller_address = get_address_from_secret_key(&caller_private_key.secret_bytes()) + .expect("Failed to get address"); println!("{test}: Checking balances before call"); @@ -2388,7 +2396,7 @@ async fn get_rich_accounts_balance( for pk in private_keys.iter() { let secret_key = parse_private_key(pk)?; - let address = get_address_from_secret_key(&secret_key)?; + let address = get_address_from_secret_key(&secret_key.secret_bytes())?; let get_balance = l2_client .get_balance(address, BlockIdentifier::Tag(BlockTag::Latest)) .await?; diff --git a/crates/networking/rpc/utils.rs b/crates/networking/rpc/utils.rs index ec39d9efd90..7e95440061f 100644 --- a/crates/networking/rpc/utils.rs +++ b/crates/networking/rpc/utils.rs @@ -161,8 +161,8 @@ impl From for RpcErr { } } -impl From for RpcErr { - fn from(err: secp256k1::Error) -> Self { +impl From for RpcErr { + fn from(err: ethrex_common::Error) -> Self { Self::Internal(format!("Cryptography error: {err}")) } } diff --git a/crates/vm/Cargo.toml b/crates/vm/Cargo.toml index 9ae87fdb635..33817360a70 100644 --- a/crates/vm/Cargo.toml +++ b/crates/vm/Cargo.toml @@ -6,7 +6,7 @@ authors.workspace = true documentation.workspace = true [dependencies] -ethrex-common.workspace = true +ethrex-common = { workspace = true, default-features = false } ethrex-levm = { path = "./levm", default-features = false } ethrex-trie.workspace = true ethrex-rlp.workspace = true @@ -30,12 +30,14 @@ ethereum-types.workspace = true path = "./lib.rs" [features] -default = [] +default = ["secp256k1"] +secp256k1 = ["ethrex-levm/secp256k1", "ethrex-common/secp256k1"] c-kzg = ["ethrex-levm/c-kzg", "ethrex-common/c-kzg"] -sp1 = ["ethrex-levm/sp1"] -risc0 = ["ethrex-levm/risc0", "c-kzg"] +sp1 = ["ethrex-levm/sp1", "ethrex-common/sp1"] +risc0 = ["ethrex-levm/risc0", "ethrex-common/risc0", "c-kzg"] +zisk = ["ethrex-levm/zisk", "ethrex-common/zisk"] debug = ["ethrex-levm/debug"] diff --git a/crates/vm/levm/Cargo.toml b/crates/vm/levm/Cargo.toml index b2fdf9a43b1..3ed5dce04ba 100644 --- a/crates/vm/levm/Cargo.toml +++ b/crates/vm/levm/Cargo.toml @@ -7,7 +7,7 @@ documentation.workspace = true [dependencies] lazy_static.workspace = true -ethrex-common.workspace = true +ethrex-common = { workspace = true, default-features = false } ethrex-crypto.workspace = true ethrex-rlp.workspace = true derive_more = { version = "1.0.0", features = ["full"] } @@ -20,7 +20,6 @@ serde_json.workspace = true sha3 = "0.10.8" datatest-stable = "0.2.9" walkdir = "2.5.0" -secp256k1.workspace = true p256 = { version = "0.13.2", features = [ "ecdsa", "arithmetic", @@ -41,9 +40,11 @@ ark-bn254 = "0.5.0" ark-ec = "0.5.0" ark-ff = "0.5.0" strum = { version = "0.27.1", features = ["derive"] } -k256 = "0.13.4" substrate-bn = { version = "0.6.0", optional = true } +secp256k1 = { workspace = true, optional = true } +k256 = { workspace = true, optional = true } + bitvec = { version = "1.0.1", features = ["alloc"] } rustc-hash.workspace = true @@ -54,12 +55,14 @@ colored = "2.1.0" spinoff = "0.8.0" [features] -default = [] +default = ["secp256k1", "dep:k256"] +secp256k1 = ["dep:secp256k1"] c-kzg = ["ethrex-common/c-kzg", "ethrex-crypto/c-kzg"] ethereum_foundation_tests = [] debug = [] -sp1 = ["dep:substrate-bn"] -risc0 = ["dep:substrate-bn", "c-kzg"] +sp1 = ["dep:substrate-bn", "dep:k256"] +risc0 = ["dep:substrate-bn", "dep:k256", "c-kzg"] +zisk = ["dep:substrate-bn", "dep:k256"] [lints.rust] unsafe_code = "warn" diff --git a/crates/vm/levm/src/constants.rs b/crates/vm/levm/src/constants.rs index 6c0eafac08b..4a212f6b2b9 100644 --- a/crates/vm/levm/src/constants.rs +++ b/crates/vm/levm/src/constants.rs @@ -3,7 +3,6 @@ use p256::{ FieldElement as P256FieldElement, NistP256, elliptic_curve::{Curve, bigint::U256 as P256Uint, ff::PrimeField}, }; -use std::sync::LazyLock; pub const WORD_SIZE_IN_BYTES_USIZE: usize = 32; pub const WORD_SIZE_IN_BYTES_U64: u64 = 32; @@ -71,10 +70,12 @@ pub const VALID_BLOB_PREFIXES: [u8; 2] = [0x01, 0x02]; pub const LAST_AVAILABLE_BLOCK_LIMIT: U256 = U256([256, 0, 0, 0]); // EIP7702 - EOA Load Code -pub static SECP256K1_ORDER: LazyLock = - LazyLock::new(|| U256::from_big_endian(&secp256k1::constants::CURVE_ORDER)); -pub static SECP256K1_ORDER_OVER2: LazyLock = - LazyLock::new(|| *SECP256K1_ORDER / U256::from(2)); +#[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] +pub static SECP256K1_ORDER: std::sync::LazyLock = + std::sync::LazyLock::new(|| U256::from_big_endian(&secp256k1::constants::CURVE_ORDER)); +#[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] +pub static SECP256K1_ORDER_OVER2: std::sync::LazyLock = + std::sync::LazyLock::new(|| *SECP256K1_ORDER / U256::from(2)); pub const MAGIC: u8 = 0x05; pub const SET_CODE_DELEGATION_BYTES: [u8; 3] = [0xef, 0x01, 0x00]; // Set the code of authority to be 0xef0100 || address. This is a delegation designation. diff --git a/crates/vm/levm/src/precompiles.rs b/crates/vm/levm/src/precompiles.rs index 3bb885d6edf..da15fd4e01a 100644 --- a/crates/vm/levm/src/precompiles.rs +++ b/crates/vm/levm/src/precompiles.rs @@ -374,7 +374,7 @@ pub(crate) fn fill_with_zeros(calldata: &Bytes, target_len: usize) -> Bytes { padded_calldata.into() } -#[cfg(all(not(feature = "sp1"), not(feature = "risc0")))] +#[cfg(all(not(feature = "sp1"), not(feature = "risc0"), not(feature = "zisk")))] pub fn ecrecover(calldata: &Bytes, gas_remaining: &mut u64, _fork: Fork) -> Result { use sha3::Keccak256; @@ -442,7 +442,7 @@ pub fn ecrecover(calldata: &Bytes, gas_remaining: &mut u64, _fork: Fork) -> Resu /// [64..128): r||s (64 bytes) /// /// Returns the recovered address. -#[cfg(any(feature = "sp1", feature = "risc0"))] +#[cfg(any(feature = "sp1", feature = "risc0", feature = "zisk"))] pub fn ecrecover(calldata: &Bytes, gas_remaining: &mut u64, _fork: Fork) -> Result { use ethrex_common::utils::keccak; use k256::ecdsa::{RecoveryId, Signature, VerifyingKey}; diff --git a/crates/vm/levm/src/utils.rs b/crates/vm/levm/src/utils.rs index c6709341e2c..dfd4aa4ba9d 100644 --- a/crates/vm/levm/src/utils.rs +++ b/crates/vm/levm/src/utils.rs @@ -23,13 +23,6 @@ use ethrex_common::{ utils::{keccak, u256_to_big_endian}, }; use ethrex_common::{types::TxKind, utils::u256_from_big_endian_const}; -use ethrex_rlp; -use ethrex_rlp::encode::RLPEncode; -use secp256k1::{ - Message, - ecdsa::{RecoverableSignature, RecoveryId}, -}; -use sha3::{Digest, Keccak256}; use std::collections::{BTreeMap, HashMap}; pub type Storage = HashMap; @@ -349,9 +342,21 @@ pub fn get_authorized_address_from_code(code: &Bytes) -> Result Result, VMError> { + todo!() +} + +#[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] pub fn eip7702_recover_address( auth_tuple: &AuthorizationTuple, ) -> Result, VMError> { + use ethrex_rlp::encode::RLPEncode; + use sha2::Digest; + use sha3::Keccak256; + if auth_tuple.s_signature > *SECP256K1_ORDER_OVER2 || U256::zero() >= auth_tuple.s_signature { return Ok(None); } @@ -369,7 +374,7 @@ pub fn eip7702_recover_address( hasher.update(rlp_buf); let bytes = &mut hasher.finalize(); - let Ok(message) = Message::from_digest_slice(bytes) else { + let Ok(message) = secp256k1::Message::from_digest_slice(bytes) else { return Ok(None); }; @@ -379,13 +384,14 @@ pub fn eip7702_recover_address( ] .concat(); - let Ok(recovery_id) = RecoveryId::try_from( + let Ok(recovery_id) = secp256k1::ecdsa::RecoveryId::try_from( TryInto::::try_into(auth_tuple.y_parity).map_err(|_| InternalError::TypeConversion)?, ) else { return Ok(None); }; - let Ok(signature) = RecoverableSignature::from_compact(&bytes, recovery_id) else { + let Ok(signature) = secp256k1::ecdsa::RecoverableSignature::from_compact(&bytes, recovery_id) + else { return Ok(None); }; From 32b6a0e47f2611ecfb78442cb70e5846309d6c08 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 15:46:28 -0300 Subject: [PATCH 02/99] Add ZisK guest --- .../src/guest_program/src/zisk/Cargo.lock | 3351 +++++++++++++++++ .../src/guest_program/src/zisk/Cargo.toml | 25 + .../src/guest_program/src/zisk/src/main.rs | 28 + 3 files changed, 3404 insertions(+) create mode 100644 crates/l2/prover/src/guest_program/src/zisk/Cargo.lock create mode 100644 crates/l2/prover/src/guest_program/src/zisk/Cargo.toml create mode 100644 crates/l2/prover/src/guest_program/src/zisk/src/main.rs diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock new file mode 100644 index 00000000000..afdc3bd7ef2 --- /dev/null +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock @@ -0,0 +1,3351 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" +dependencies = [ + "windows-sys 0.60.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.60.2", +] + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-std", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "arrayvec", + "digest", + "educe", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.108", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff", + "ark-serialize", + "ark-std", + "educe", + "fnv", + "hashbrown 0.15.5", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive", + "ark-std", + "arrayvec", + "digest", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bls12_381" +version = "0.8.0" +source = "git+https://github.com/lambdaclass/bls12_381?branch=expose-fp-struct#219174187bd78154cec35b0809799fc2c991a579" +dependencies = [ + "digest", + "ff", + "group", + "pairing", + "rand_core", + "subtle", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "bytecheck" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0caa33a2c0edca0419d15ac723dff03f1956f7978329b1e3b5fdaaaed9d3ca8b" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "rancor", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89385e82b5d1821d2219e0b095efa2cc1f246cbf99080f3be46a1a85c0d392d9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +dependencies = [ + "serde", +] + +[[package]] +name = "camino" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" + +[[package]] +name = "cc" +version = "1.2.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37521ac7aabe3d13122dc382493e20c9416f299d2ccd5b3a5340a2570cdeb0f3" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "chrono" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + +[[package]] +name = "clap" +version = "4.5.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "clap_lex" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" + +[[package]] +name = "colorchoice" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const_format" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.108", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "datatest-stable" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "833306ca7eec4d95844e65f0d7502db43888c5c1006c6c517e8cf51a27d15431" +dependencies = [ + "camino", + "fancy-regex", + "libtest-mimic", + "walkdir", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "syn 2.0.108", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest", + "ff", + "generic-array", + "group", + "pem-rfc7468", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "escape8259" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5692dd7b5a1978a5aeb0ce83b7655c58ca8efdcb79d21036ea249da95afec2c6" + +[[package]] +name = "ethbloom" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c321610643004cf908ec0f5f2aa0d8f1f8e14b540562a2887a1111ff1ecbf7b" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-rlp", + "impl-serde", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ab15ed80916029f878e0267c3a9f92b67df55e79af370bf66199059ae2b4ee3" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-rlp", + "impl-serde", + "primitive-types", + "uint", +] + +[[package]] +name = "ethrex-blockchain" +version = "5.0.0" +dependencies = [ + "bytes", + "ethrex-common", + "ethrex-metrics", + "ethrex-rlp", + "ethrex-storage", + "ethrex-trie", + "ethrex-vm", + "hex", + "rustc-hash", + "sha3", + "thiserror", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "ethrex-common" +version = "5.0.0" +dependencies = [ + "bytes", + "crc32fast", + "ethereum-types", + "ethrex-crypto", + "ethrex-rlp", + "ethrex-trie", + "hex", + "k256", + "kzg-rs", + "lazy_static", + "libc", + "once_cell", + "rayon", + "rkyv", + "rustc-hash", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror", + "tinyvec", + "tracing", + "url", +] + +[[package]] +name = "ethrex-crypto" +version = "5.0.0" +dependencies = [ + "kzg-rs", + "thiserror", +] + +[[package]] +name = "ethrex-l2-common" +version = "5.0.0" +dependencies = [ + "bytes", + "ethereum-types", + "ethrex-common", + "ethrex-rlp", + "ethrex-storage", + "ethrex-trie", + "ethrex-vm", + "hex", + "k256", + "lambdaworks-crypto", + "rkyv", + "serde", + "serde_with", + "sha3", + "thiserror", +] + +[[package]] +name = "ethrex-levm" +version = "5.0.0" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff", + "bitvec", + "bls12_381", + "bytes", + "datatest-stable", + "derive_more", + "ethrex-common", + "ethrex-crypto", + "ethrex-rlp", + "k256", + "lambdaworks-math", + "lazy_static", + "malachite", + "p256", + "ripemd", + "rustc-hash", + "serde", + "serde_json", + "sha2", + "sha3", + "strum", + "substrate-bn", + "thiserror", + "walkdir", +] + +[[package]] +name = "ethrex-metrics" +version = "5.0.0" +dependencies = [ + "ethrex-common", + "serde", + "serde_json", + "thiserror", + "tracing-subscriber", +] + +[[package]] +name = "ethrex-rlp" +version = "5.0.0" +dependencies = [ + "bytes", + "ethereum-types", + "hex", + "lazy_static", + "snap", + "thiserror", + "tinyvec", +] + +[[package]] +name = "ethrex-storage" +version = "5.0.0" +dependencies = [ + "anyhow", + "async-trait", + "bincode", + "bytes", + "ethereum-types", + "ethrex-common", + "ethrex-rlp", + "ethrex-trie", + "hex", + "qfilter", + "rayon", + "rustc-hash", + "serde", + "serde_json", + "sha3", + "thiserror", + "tracing", +] + +[[package]] +name = "ethrex-threadpool" +version = "0.1.0" +dependencies = [ + "crossbeam", +] + +[[package]] +name = "ethrex-trie" +version = "5.0.0" +dependencies = [ + "anyhow", + "bytes", + "crossbeam", + "digest", + "ethereum-types", + "ethrex-rlp", + "ethrex-threadpool", + "hex", + "lazy_static", + "serde", + "serde_json", + "sha3", + "smallvec", + "thiserror", + "tracing", +] + +[[package]] +name = "ethrex-vm" +version = "5.0.0" +dependencies = [ + "bincode", + "bytes", + "derive_more", + "dyn-clone", + "ethereum-types", + "ethrex-common", + "ethrex-levm", + "ethrex-rlp", + "ethrex-trie", + "hex", + "lazy_static", + "rkyv", + "serde", + "sha3", + "thiserror", + "tracing", +] + +[[package]] +name = "fancy-regex" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e24cb5a94bcae1e5408b0effca5cd7172ea3c5755049c5f3af4cd283a165298" +dependencies = [ + "bit-set", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "bitvec", + "byteorder", + "ff_derive", + "rand_core", + "subtle", +] + +[[package]] +name = "ff_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" +dependencies = [ + "addchain", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-macro", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "generic-array" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + +[[package]] +name = "guest_program" +version = "5.0.0" +dependencies = [ + "bytes", + "ethrex-blockchain", + "ethrex-common", + "ethrex-crypto", + "ethrex-l2-common", + "ethrex-rlp", + "ethrex-storage", + "ethrex-trie", + "ethrex-vm", + "hex", + "rkyv", + "serde", + "serde_json", + "serde_with", + "thiserror", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-codec" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d40b9d5e17727407e55028eafc22b2dc68781786e6d7eb8a21103f5058e3a14" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54ed8ad1f3877f7e775b8cbf30ed1bd3209a95401817f19a0eb4402d13f8cf90" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a143eada6a1ec4aefa5049037a26a6d597bfd64f8c026d07b77133e02b7dd0b" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +dependencies = [ + "equivalent", + "hashbrown 0.16.0", + "serde", + "serde_core", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-elliptic-curves.git?tag=patch-k256-0.13.4-zisk-0.13.0#bdfa69f4094d4a7f25d30341127bec885beed57b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", + "signature", + "ziskos", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "kzg-rs" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9201effeea3fcc93b587904ae2df9ce97e433184b9d6d299e9ebc9830a546636" +dependencies = [ + "ff", + "hex", + "serde_arrays", + "sha2", + "sp1_bls12_381", + "spin", +] + +[[package]] +name = "lambdaworks-crypto" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ec4b462bbec171e1af821f3d9fff72e17de93b3d1022f29aa70fec8262c1cee" +dependencies = [ + "lambdaworks-math", + "serde", + "sha2", + "sha3", +] + +[[package]] +name = "lambdaworks-math" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "708d148956bcdc21ae5c432b4e20bbaa26fd68d5376a3a6c461f41095abea0ba" +dependencies = [ + "rayon", + "serde", + "serde_json", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] + +[[package]] +name = "lib-c" +version = "0.13.0" +source = "git+https://github.com/0xPolygonHermez/zisk.git?tag=v0.13.0#ea1ed4c518992a170fc59ec19f1228eb4829a9e1" + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libtest-mimic" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5297962ef19edda4ce33aaa484386e0a5b3d7f2f4e037cbeee00503ef6b29d33" +dependencies = [ + "anstream", + "anstyle", + "clap", + "escape8259", +] + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "malachite" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec410515e231332b14cd986a475d1c3323bcfa4c7efc038bfa1d5b410b1c57e4" +dependencies = [ + "malachite-base", + "malachite-nz", + "malachite-q", +] + +[[package]] +name = "malachite-base" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c738d3789301e957a8f7519318fcbb1b92bb95863b28f6938ae5a05be6259f34" +dependencies = [ + "hashbrown 0.15.5", + "itertools 0.14.0", + "libm", + "ryu", +] + +[[package]] +name = "malachite-nz" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1707c9a1fa36ce21749b35972bfad17bbf34cf5a7c96897c0491da321e387d3b" +dependencies = [ + "itertools 0.14.0", + "libm", + "malachite-base", + "wide", +] + +[[package]] +name = "malachite-q" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d764801aa4e96bbb69b389dcd03b50075345131cd63ca2e380bca71cc37a3675" +dependencies = [ + "itertools 0.14.0", + "malachite-base", + "malachite-nz", +] + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "munge" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e17401f259eba956ca16491461b6e8f72913a0a114e39736ce404410f915a0c" +dependencies = [ + "munge_macro", +] + +[[package]] +name = "munge_macro" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4568f25ccbd45ab5d5603dc34318c1ec56b117531781260002151b8530a9f931" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "p3-baby-bear" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" +dependencies = [ + "num-bigint 0.4.6", + "p3-field", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" +dependencies = [ + "itertools 0.12.1", + "num-bigint 0.4.6", + "num-traits", + "p3-util", + "rand", + "serde", +] + +[[package]] +name = "p3-matrix" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" + +[[package]] +name = "p3-mds" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" +dependencies = [ + "itertools 0.12.1", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rand", +] + +[[package]] +name = "p3-poseidon2" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" +dependencies = [ + "gcd", + "p3-field", + "p3-mds", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "serde", +] + +[[package]] +name = "p3-util" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" +dependencies = [ + "serde", +] + +[[package]] +name = "pairing" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" +dependencies = [ + "group", +] + +[[package]] +name = "parity-scale-codec" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "primitive-types" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "ptr_meta" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9a0cf95a1196af61d4f1cbdab967179516d9a4a4312af1f31948f8f6224a79" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "qfilter" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "746341cd2357c9a4df2d951522b4a8dd1ef553e543119899ad7bf87e938c8fbe" +dependencies = [ + "xxhash-rust", +] + +[[package]] +name = "quote" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rancor" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a063ea72381527c2a0561da9c80000ef822bdd7c3241b1cc1b12100e3df081ee" +dependencies = [ + "ptr_meta", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "rend" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cadadef317c2f20755a64d7fdc48f9e7178ee6b0e1f7fce33fa60f1d68a276e6" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest", +] + +[[package]] +name = "rkyv" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35a640b26f007713818e9a9b65d34da1cf58538207b052916a83d80e43f3ffa4" +dependencies = [ + "bytecheck", + "bytes", + "hashbrown 0.15.5", + "indexmap 2.12.0", + "munge", + "ptr_meta", + "rancor", + "rend", + "rkyv_derive", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd83f5f173ff41e00337d97f6572e416d022ef8a19f371817259ae960324c482" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "rlp" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa24e92bb2a83198bb76d661a71df9f7076b8c420b8696e4d3d97d50d94479e3" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "safe_arch" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1317c3bf3e7df961da95b0a56a172a02abead31276215a0497241a7624b487ce" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_arrays" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94a16b99c5ea4fe3daccd14853ad260ec00ea043b2708d1fd1da3106dcd8d9df" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_with" +version = "3.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" +dependencies = [ + "base64", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.12.0", + "schemars 0.9.0", + "schemars 1.0.5", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-hashes.git?branch=zisk-patch-sha2%2Fv0.10.9#6b70e479ca16f1fa8c2db77fdc872b5f2aad2d03" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", + "ziskos", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-hashes.git?branch=zisk-patch-sha3%2Fv0.10.8#c404b04f733ab18bf0d0f5540249e6120519cc3e" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "snap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" + +[[package]] +name = "sp1-lib" +version = "5.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fce8ad0f153443d09d398eccb650a0b2dcbf829470e394e4bf60ec4379c7af93" +dependencies = [ + "bincode", + "serde", + "sp1-primitives", +] + +[[package]] +name = "sp1-primitives" +version = "5.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0244dee3a7a0f88cf71c3edf518f4fc97794ae870a107cbe7c810ac3fbf879cb" +dependencies = [ + "bincode", + "blake3", + "cfg-if", + "hex", + "lazy_static", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "serde", + "sha2", +] + +[[package]] +name = "sp1_bls12_381" +version = "0.8.0-sp1-5.0.0" +source = "git+https://github.com/han0110/bls12_381.git?branch=zisk-patch%2Fv0.8.0-upgrade-sp1-lib#22ea7cde224b60114a0408c3b7bab2902f53922e" +dependencies = [ + "cfg-if", + "ff", + "group", + "pairing", + "rand_core", + "sp1-lib", + "subtle", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "substrate-bn" +version = "0.6.0" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-bn.git?tag=patch-0.6.0-zisk-0.13.0#3c8e959c901285124e5bd9a92cb4a5a64333a9c1" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand", + "rustc-hex", + "ziskos", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "pin-project-lite", +] + +[[package]] +name = "tokio-util" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "futures-util", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap 2.12.0", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "uint" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "1.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.108", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wide" +version = "0.7.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xxhash-rust" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "ziskos" +version = "0.13.0" +source = "git+https://github.com/0xPolygonHermez/zisk.git?tag=v0.13.0#ea1ed4c518992a170fc59ec19f1228eb4829a9e1" +dependencies = [ + "cfg-if", + "getrandom", + "lazy_static", + "lib-c", + "num-bigint 0.4.6", + "num-traits", + "rand", + "static_assertions", + "tiny-keccak", +] + +[[package]] +name = "zkvm-zisk-program" +version = "0.1.0" +dependencies = [ + "guest_program", + "rkyv", + "sha2", + "ziskos", +] diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml new file mode 100644 index 00000000000..6957303f6b3 --- /dev/null +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml @@ -0,0 +1,25 @@ +[package] +version = "0.1.0" +name = "zkvm-zisk-program" +edition = "2024" + +[workspace] + +[dependencies] +ziskos = { git = "https://github.com/0xPolygonHermez/zisk.git", tag = "v0.13.0" } +guest_program = { path = "../../", default-features = false, features = [ + "zisk", +] } + +sha2 = "0.10.9" +rkyv = "0.8.10" + +[patch.crates-io] +sha2 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", branch = "zisk-patch-sha2/v0.10.9" } +sha3 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", branch = "zisk-patch-sha3/v0.10.8" } +k256 = { git = "https://github.com/0xPolygonHermez/zisk-patch-elliptic-curves.git", tag = "patch-k256-0.13.4-zisk-0.13.0" } +substrate-bn = { git = "https://github.com/0xPolygonHermez/zisk-patch-bn.git", tag = "patch-0.6.0-zisk-0.13.0" } +sp1_bls12_381 = { git = "https://github.com/han0110/bls12_381.git", branch = "zisk-patch/v0.8.0-upgrade-sp1-lib" } + +[features] +l2 = ["guest_program/l2"] diff --git a/crates/l2/prover/src/guest_program/src/zisk/src/main.rs b/crates/l2/prover/src/guest_program/src/zisk/src/main.rs new file mode 100644 index 00000000000..b16fc1d2a41 --- /dev/null +++ b/crates/l2/prover/src/guest_program/src/zisk/src/main.rs @@ -0,0 +1,28 @@ +#![no_main] + +use guest_program::{execution::execution_program, input::ProgramInput}; +use rkyv::rancor::Error; +use sha2::{Digest, Sha256}; + +ziskos::entrypoint!(main); + +pub fn main() { + println!("start reading input"); + let input = ziskos::read_input(); + let input = rkyv::from_bytes::(&input).unwrap(); + println!("finish reading input"); + + println!("start execution"); + let output = execution_program(input).unwrap(); + println!("finish execution"); + + println!("start hashing output"); + let output = Sha256::digest(output.encode()); + println!("finish hashing output"); + + println!("start revealing output"); + output.chunks_exact(4).enumerate().for_each(|(idx, bytes)| { + ziskos::set_output(idx, u32::from_le_bytes(bytes.try_into().unwrap())) + }); + println!("finish revealing output"); +} From 9eacacfc8e83457de38e4efe7249735e50ffc81f Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 15:46:36 -0300 Subject: [PATCH 03/99] Fix clippy warnings --- .../prover/src/guest_program/src/execution.rs | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/crates/l2/prover/src/guest_program/src/execution.rs b/crates/l2/prover/src/guest_program/src/execution.rs index 9622beff371..688eab5cb00 100644 --- a/crates/l2/prover/src/guest_program/src/execution.rs +++ b/crates/l2/prover/src/guest_program/src/execution.rs @@ -18,20 +18,21 @@ use ethrex_common::{ }; #[cfg(feature = "l2")] use ethrex_l2_common::l1_messages::L1Message; +use ethrex_l2_common::privileged_transactions::get_block_privileged_transactions; use ethrex_vm::{Evm, EvmError, GuestProgramStateWrapper, VmDatabase}; -use std::collections::{BTreeMap, HashMap}; +#[cfg(feature = "l2")] +use std::collections::BTreeMap; +use std::collections::HashMap; #[cfg(feature = "l2")] use ethrex_common::types::{ BlobsBundleError, Commitment, PrivilegedL2Transaction, Proof, Receipt, blob_from_bytes, kzg_commitment_to_versioned_hash, }; +#[cfg(feature = "l2")] use ethrex_l2_common::{ l1_messages::get_block_l1_messages, - privileged_transactions::{ - PrivilegedTransactionError, compute_privileged_transactions_hash, - get_block_privileged_transactions, - }, + privileged_transactions::{PrivilegedTransactionError, compute_privileged_transactions_hash}, state_diff::{StateDiff, StateDiffError, prepare_state_diff}, }; @@ -199,6 +200,8 @@ pub fn stateless_validation_l2( // Check state diffs are valid let blob_versioned_hash = if !validium { + use std::collections::BTreeMap; + use bytes::Bytes; use ethrex_common::types::Code; @@ -249,6 +252,8 @@ pub fn stateless_validation_l2( }) } +// receipts, account_updates, and last_block_header are only used in L2 +#[cfg_attr(not(feature = "l2"), expect(dead_code))] struct StatelessResult { receipts: Vec>, initial_state_hash: H256, @@ -273,7 +278,7 @@ fn execute_stateless( blocks: &[Block], execution_witness: ExecutionWitness, elasticity_multiplier: u64, - fee_configs: Option>, + _fee_configs: Option>, ) -> Result { let guest_program_state: GuestProgramState = execution_witness .try_into() @@ -293,7 +298,7 @@ fn execute_stateless( #[cfg(feature = "l2")] let parent_block_header_clone = guest_program_state.parent_block_header.clone(); #[cfg(feature = "l2")] - let fee_configs = fee_configs.ok_or_else(|| StatelessExecutionError::FeeConfigNotFound)?; + let fee_configs = _fee_configs.ok_or_else(|| StatelessExecutionError::FeeConfigNotFound)?; let mut wrapped_db = GuestProgramStateWrapper::new(guest_program_state); let chain_config = wrapped_db.get_chain_config().map_err(|_| { @@ -334,7 +339,7 @@ fn execute_stateless( let mut acc_receipts = Vec::new(); let mut non_privileged_count = 0; - for (i, block) in blocks.iter().enumerate() { + for (_i, block) in blocks.iter().enumerate() { // Validate the block validate_block( block, @@ -349,7 +354,7 @@ fn execute_stateless( let mut vm = Evm::new_for_l2( wrapped_db.clone(), fee_configs - .get(i) + .get(_i) .cloned() .ok_or_else(|| StatelessExecutionError::FeeConfigNotFound)?, )?; From 80bf07406d211e1fd53507f8237e13df95227ee8 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 15:47:01 -0300 Subject: [PATCH 04/99] Add ZisK backend --- Cargo.lock | 3 +- Cargo.toml | 5 +- crates/l2/prover/Cargo.toml | 3 +- crates/l2/prover/src/backend/mod.rs | 3 + crates/l2/prover/src/backend/zisk.rs | 61 +++++++++++++++++++ crates/l2/prover/src/guest_program/Cargo.toml | 15 ++++- crates/l2/prover/src/guest_program/build.rs | 61 +++++++++++++++++++ crates/l2/prover/src/guest_program/src/lib.rs | 8 +++ 8 files changed, 154 insertions(+), 5 deletions(-) create mode 100644 crates/l2/prover/src/backend/zisk.rs diff --git a/Cargo.lock b/Cargo.lock index 06f830f89e9..8317f253a9f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3352,7 +3352,6 @@ dependencies = [ "ethrex-vm", "hex", "rustc-hash 2.1.1", - "secp256k1", "serde_json", "sha3", "thiserror 2.0.17", @@ -3373,6 +3372,7 @@ dependencies = [ "ethrex-trie", "hex", "hex-literal", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", "kzg-rs", "lazy_static", "libc", @@ -3500,6 +3500,7 @@ dependencies = [ "ethrex-trie", "ethrex-vm", "hex", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", "lambdaworks-crypto 0.11.0", "rkyv", "secp256k1", diff --git a/Cargo.toml b/Cargo.toml index 0a00799c305..f876bd80247 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,8 +49,8 @@ inherits = "release" debug = 2 [workspace.dependencies] -ethrex-blockchain = { path = "./crates/blockchain" } -ethrex-common = { path = "./crates/common" } +ethrex-blockchain = { path = "./crates/blockchain", default-features = false } +ethrex-common = { path = "./crates/common", default-features = false } ethrex-config = { path = "./crates/common/config" } ethrex-p2p = { path = "./crates/networking/p2p" } ethrex-rpc = { path = "./crates/networking/rpc" } @@ -118,6 +118,7 @@ tempfile = "3.8" uuid = { version = "1.18.1", features = ["v4"] } tower-http = { version = "0.6.2", features = ["cors"] } indexmap = { version = "2.11.4" } +k256 = "0.13.4" rocksdb = "0.24.0" diff --git a/crates/l2/prover/Cargo.toml b/crates/l2/prover/Cargo.toml index 8772d296d19..7576412968e 100644 --- a/crates/l2/prover/Cargo.toml +++ b/crates/l2/prover/Cargo.toml @@ -35,7 +35,7 @@ ethrex-l2 = { path = "../", default-features = false } ethrex-l2-common = { workspace = true } ethrex-sdk.workspace = true -guest_program = { path = "./src/guest_program", default-features = false } +guest_program = { path = "./src/guest_program" } risc0-zkvm = { version = "=3.0.3", optional = true, features = ["getrandom"] } risc0-zkp = { version = "=3.0.2", optional = true } @@ -57,6 +57,7 @@ default = ["l2"] # prover backends risc0 = ["guest_program/risc0", "dep:risc0-zkvm", "dep:risc0-zkp"] sp1 = ["guest_program/sp1", "dep:sp1-sdk", "dep:sp1-prover"] +zisk = ["guest_program/zisk-guest"] profiling = ["sp1-sdk?/profiling"] gpu = ["risc0-zkvm?/cuda", "sp1-sdk?/cuda"] diff --git a/crates/l2/prover/src/backend/mod.rs b/crates/l2/prover/src/backend/mod.rs index dd464edbbc2..e2c69fd87d8 100644 --- a/crates/l2/prover/src/backend/mod.rs +++ b/crates/l2/prover/src/backend/mod.rs @@ -12,6 +12,9 @@ pub mod risc0; #[cfg(feature = "sp1")] pub mod sp1; +#[cfg(feature = "zisk")] +pub mod zisk; + #[derive(Default, Debug, Deserialize, Serialize, Copy, Clone, ValueEnum)] pub enum Backend { #[default] diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs new file mode 100644 index 00000000000..7c6d9842ccc --- /dev/null +++ b/crates/l2/prover/src/backend/zisk.rs @@ -0,0 +1,61 @@ +use std::process::Command; + +use ethrex_l2_common::prover::{BatchProof, ProofFormat}; +use guest_program::input::ProgramInput; + +use crate::backend::ProveOutput; + +pub fn execute(input: ProgramInput) -> Result<(), Box> { + let input_bytes = rkyv::to_bytes::(&input)?; + + let input_path = "zisk_input.bin"; + + std::fs::write(input_path, input_bytes.as_slice())?; + + let mut cmd = Command::new("ziskemu"); + + let start = std::time::Instant::now(); + let output = cmd + .arg("--elf") + .arg("../guest_program/src/zisk/target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program") + .arg("--inputs") + .arg(input_path) + .arg("--output") + .arg("zisk_output.bin") + .arg("--stats") // Enable stats in order to get total steps. + .output()?; + let duration = start.elapsed(); + + if !output.status.success() { + return Err(format!( + "ZisK execution failed: {}", + String::from_utf8_lossy(&output.stderr) + ) + .into()); + } + + println!( + "ZisK guest program executed in {:.2?} seconds", + duration.as_secs_f64() + ); + + Ok(()) +} + +pub fn prove( + _input: ProgramInput, + _format: ProofFormat, +) -> Result> { + Err("prove is not implemented for ZisK backend".into()) +} + +pub fn verify(_output: &ProveOutput) -> Result<(), Box> { + Err("verify is not implemented for ZisK backend".into()) +} + +pub fn to_batch_proof( + _proof: ProveOutput, + _format: ProofFormat, +) -> Result> { + Err("to_batch_proof is not implemented for ZisK backend".into()) +} diff --git a/crates/l2/prover/src/guest_program/Cargo.toml b/crates/l2/prover/src/guest_program/Cargo.toml index 763fd6d1303..78b30b95f5c 100644 --- a/crates/l2/prover/src/guest_program/Cargo.toml +++ b/crates/l2/prover/src/guest_program/Cargo.toml @@ -33,11 +33,24 @@ sp1-sdk = { version = "=5.0.8", optional = true } methods = ["src/risc0"] [features] -default = [] +default = ["secp256k1"] risc0 = ["dep:risc0-build", "dep:risc0-zkvm"] sp1 = ["dep:sp1-build", "dep:sp1-sdk"] +zisk-guest = [] +zisk = [ + "ethrex-common/zisk", + "ethrex-blockchain/zisk", + "ethrex-vm/zisk", + "ethrex-l2-common/zisk", +] l2 = [] c-kzg = ["ethrex-vm/c-kzg", "ethrex-common/c-kzg"] +secp256k1 = [ + "ethrex-common/secp256k1", + "ethrex-blockchain/secp256k1", + "ethrex-vm/secp256k1", + "ethrex-l2-common/secp256k1", +] [lib] path = "./src/lib.rs" diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index 785513119ac..042f0593281 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -6,6 +6,9 @@ fn main() { #[cfg(all(not(clippy), feature = "sp1"))] build_sp1_program(); + + #[cfg(all(not(clippy), feature = "zisk-guest"))] + build_zisk_program(); } #[cfg(all(not(clippy), feature = "risc0"))] @@ -87,3 +90,61 @@ fn build_sp1_program() { ) .expect("could not write SP1 vk-u32 to file"); } + +#[cfg(all(not(clippy), feature = "zisk-guest"))] +fn build_zisk_program() { + let mut command = std::process::Command::new("cargo"); + + command + .env("RUSTC", rustc_path("zisk")) + .args([ + "+zisk", + "build", + "--release", + "--target", + "riscv64ima-zisk-zkvm-elf", + ]) + .stdout(std::process::Stdio::inherit()) + .stderr(std::process::Stdio::inherit()) + .current_dir("./src/zisk"); + + println!("{command:?}"); + + let start = std::time::Instant::now(); + + let status = command + .status() + .expect("Failed to execute zisk build command"); + + let duration = start.elapsed(); + + println!( + "ZisK guest program built in {:.2?} seconds", + duration.as_secs_f64() + ); + + if !status.success() { + panic!("Failed to build guest program with zisk toolchain"); + } +} + +#[cfg(all(not(clippy), feature = "zisk-guest"))] +/// Returns the path to `rustc` executable of the given toolchain. +/// +/// Taken from https://github.com/eth-act/ere/blob/master/crates/compile-utils/src/rust.rs#L166 +pub fn rustc_path(toolchain: &str) -> std::path::PathBuf { + let mut cmd = std::process::Command::new("rustc"); + let output = cmd + .env("RUSTUP_TOOLCHAIN", toolchain) + .args(["--print", "sysroot"]) + .output() + .expect("Failed to execute rustc command"); + + if !output.status.success() { + panic!("Failed to get sysroot for toolchain {}", toolchain); + } + + std::path::PathBuf::from(String::from_utf8_lossy(&output.stdout).trim()) + .join("bin") + .join("rustc") +} diff --git a/crates/l2/prover/src/guest_program/src/lib.rs b/crates/l2/prover/src/guest_program/src/lib.rs index b4015f95abe..30ffaf4ddb8 100644 --- a/crates/l2/prover/src/guest_program/src/lib.rs +++ b/crates/l2/prover/src/guest_program/src/lib.rs @@ -16,3 +16,11 @@ pub static ZKVM_RISC0_PROGRAM_VK: &str = include_str!(concat!("./risc0/out/riscv // To avoid compilation errors, we override it with an empty slice. #[cfg(any(clippy, not(feature = "risc0")))] pub const ZKVM_RISC0_PROGRAM_VK: &str = ""; + +#[cfg(all(not(clippy), feature = "zisk"))] +pub static ZKVM_ZISK_PROGRAM_ELF: &[u8] = + include_bytes!("./zisk/target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program"); +// If we're running clippy, the file isn't generated. +// To avoid compilation errors, we override it with an empty slice. +#[cfg(any(clippy, not(feature = "zisk")))] +pub const ZKVM_ZISK_PROGRAM_ELF: &[u8] = &[]; From 38e7840244c37a5c99c4a88204491583b560b7d1 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 15:51:56 -0300 Subject: [PATCH 05/99] Update backend lib --- crates/l2/prover/src/backend/mod.rs | 6 ++++++ crates/l2/prover/src/lib.rs | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/crates/l2/prover/src/backend/mod.rs b/crates/l2/prover/src/backend/mod.rs index e2c69fd87d8..756be0a89ee 100644 --- a/crates/l2/prover/src/backend/mod.rs +++ b/crates/l2/prover/src/backend/mod.rs @@ -23,6 +23,8 @@ pub enum Backend { SP1, #[cfg(feature = "risc0")] RISC0, + #[cfg(feature = "zisk")] + ZisK, } // Needed for Clap @@ -36,6 +38,8 @@ impl FromStr for Backend { "sp1" => Ok(Backend::SP1), #[cfg(feature = "risc0")] "risc0" => Ok(Backend::RISC0), + #[cfg(feature = "zisk")] + "zisk" => Ok(Backend::ZisK), _ => Err(Self::Err::from("Invalid backend")), } } @@ -47,4 +51,6 @@ pub enum ProveOutput { SP1(sp1::ProveOutput), #[cfg(feature = "risc0")] RISC0(risc0_zkvm::Receipt), + #[cfg(feature = "zisk")] + ZisK(ProgramOutput), } diff --git a/crates/l2/prover/src/lib.rs b/crates/l2/prover/src/lib.rs index fdff0da194d..bce84e481e7 100644 --- a/crates/l2/prover/src/lib.rs +++ b/crates/l2/prover/src/lib.rs @@ -22,6 +22,8 @@ pub fn execute(backend: Backend, input: ProgramInput) -> Result<(), Box backend::sp1::execute(input), #[cfg(feature = "risc0")] Backend::RISC0 => backend::risc0::execute(input), + #[cfg(feature = "zisk")] + Backend::ZisK => backend::zisk::execute(input), } } @@ -37,6 +39,8 @@ pub fn prove( Backend::SP1 => backend::sp1::prove(input, format).map(ProveOutput::SP1), #[cfg(feature = "risc0")] Backend::RISC0 => backend::risc0::prove(input, format).map(ProveOutput::RISC0), + #[cfg(feature = "zisk")] + Backend::ZisK => backend::zisk::prove(input, format).map(ProveOutput::ZisK), } } @@ -50,5 +54,7 @@ pub fn to_batch_proof( ProveOutput::SP1(proof) => backend::sp1::to_batch_proof(proof, format), #[cfg(feature = "risc0")] ProveOutput::RISC0(receipt) => backend::risc0::to_batch_proof(receipt, format), + #[cfg(feature = "zisk")] + ProveOutput::ZisK(proof) => backend::zisk::to_batch_proof(proof, format), } } From 229e03d789d8d746ae18c0a6b0d63ccad13bac7f Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 15:54:52 -0300 Subject: [PATCH 06/99] Fix --- crates/l2/prover/src/backend/zisk.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 7c6d9842ccc..2a331beb434 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -1,9 +1,7 @@ use std::process::Command; use ethrex_l2_common::prover::{BatchProof, ProofFormat}; -use guest_program::input::ProgramInput; - -use crate::backend::ProveOutput; +use guest_program::{input::ProgramInput, output::ProgramOutput}; pub fn execute(input: ProgramInput) -> Result<(), Box> { let input_bytes = rkyv::to_bytes::(&input)?; @@ -45,16 +43,16 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { pub fn prove( _input: ProgramInput, _format: ProofFormat, -) -> Result> { +) -> Result> { Err("prove is not implemented for ZisK backend".into()) } -pub fn verify(_output: &ProveOutput) -> Result<(), Box> { +pub fn verify(_output: &ProgramOutput) -> Result<(), Box> { Err("verify is not implemented for ZisK backend".into()) } pub fn to_batch_proof( - _proof: ProveOutput, + _proof: ProgramOutput, _format: ProofFormat, ) -> Result> { Err("to_batch_proof is not implemented for ZisK backend".into()) From 87029e9dc961dd4faea876782c0774a3c3ed04fe Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 16:00:53 -0300 Subject: [PATCH 07/99] Fix --- crates/l2/prover/src/guest_program/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/l2/prover/src/guest_program/src/lib.rs b/crates/l2/prover/src/guest_program/src/lib.rs index 30ffaf4ddb8..f27f143b545 100644 --- a/crates/l2/prover/src/guest_program/src/lib.rs +++ b/crates/l2/prover/src/guest_program/src/lib.rs @@ -17,10 +17,10 @@ pub static ZKVM_RISC0_PROGRAM_VK: &str = include_str!(concat!("./risc0/out/riscv #[cfg(any(clippy, not(feature = "risc0")))] pub const ZKVM_RISC0_PROGRAM_VK: &str = ""; -#[cfg(all(not(clippy), feature = "zisk"))] +#[cfg(all(not(clippy), feature = "zisk-guest"))] pub static ZKVM_ZISK_PROGRAM_ELF: &[u8] = include_bytes!("./zisk/target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program"); // If we're running clippy, the file isn't generated. // To avoid compilation errors, we override it with an empty slice. -#[cfg(any(clippy, not(feature = "zisk")))] +#[cfg(any(clippy, not(feature = "zisk-guest")))] pub const ZKVM_ZISK_PROGRAM_ELF: &[u8] = &[]; From 32fdb2e9580fa14d0251ff0420bb7eed1a918cf8 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 16:07:05 -0300 Subject: [PATCH 08/99] Fix --- crates/l2/prover/src/backend/zisk.rs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 2a331beb434..698aa6e5733 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -3,23 +3,30 @@ use std::process::Command; use ethrex_l2_common::prover::{BatchProof, ProofFormat}; use guest_program::{input::ProgramInput, output::ProgramOutput}; +const INPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_input.bin"); + +const OUTPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_output.bin"); + +const ELF_PATH: &str = concat!( + env!("CARGO_MANIFEST_DIR"), + "/src/guest_program/src/zisk/target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program" +); + pub fn execute(input: ProgramInput) -> Result<(), Box> { let input_bytes = rkyv::to_bytes::(&input)?; - let input_path = "zisk_input.bin"; - - std::fs::write(input_path, input_bytes.as_slice())?; + std::fs::write(INPUT_PATH, input_bytes.as_slice())?; let mut cmd = Command::new("ziskemu"); let start = std::time::Instant::now(); let output = cmd .arg("--elf") - .arg("../guest_program/src/zisk/target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program") + .arg(ELF_PATH) .arg("--inputs") - .arg(input_path) + .arg(INPUT_PATH) .arg("--output") - .arg("zisk_output.bin") + .arg(OUTPUT_PATH) .arg("--stats") // Enable stats in order to get total steps. .output()?; let duration = start.elapsed(); From 3b8fb7474ed46f618d45b60e999d48b664b09b3a Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 16:10:35 -0300 Subject: [PATCH 09/99] Add stdin & stderr --- crates/l2/prover/src/backend/zisk.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 698aa6e5733..6f5d7f0966d 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -1,4 +1,4 @@ -use std::process::Command; +use std::process::{Command, Stdio}; use ethrex_l2_common::prover::{BatchProof, ProofFormat}; use guest_program::{input::ProgramInput, output::ProgramOutput}; @@ -27,7 +27,9 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { .arg(INPUT_PATH) .arg("--output") .arg(OUTPUT_PATH) - .arg("--stats") // Enable stats in order to get total steps. + .arg("--stats") + .stdin(Stdio::inherit()) + .stderr(Stdio::piped()) .output()?; let duration = start.elapsed(); From 99ab059404c75bb9f1a46fb1785f512926b9cae2 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 16:15:05 -0300 Subject: [PATCH 10/99] Enable rkyv unaligned feature --- crates/l2/prover/src/guest_program/src/zisk/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml index 6957303f6b3..876469b4327 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml @@ -12,7 +12,7 @@ guest_program = { path = "../../", default-features = false, features = [ ] } sha2 = "0.10.9" -rkyv = "0.8.10" +rkyv = { version = "0.8.10", features = ["std", "unaligned"] } [patch.crates-io] sha2 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", branch = "zisk-patch-sha2/v0.10.9" } From 209b7e9dcfbe2c98fd4d852d5ca0e0b6c793a010 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 16:16:03 -0300 Subject: [PATCH 11/99] Fix --- crates/l2/prover/src/backend/zisk.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 6f5d7f0966d..11fc839a0e5 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -29,7 +29,7 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { .arg(OUTPUT_PATH) .arg("--stats") .stdin(Stdio::inherit()) - .stderr(Stdio::piped()) + .stderr(Stdio::inherit()) .output()?; let duration = start.elapsed(); From b5232efea2c13dca016832368348b3b926111ab7 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 16:25:15 -0300 Subject: [PATCH 12/99] Debug --- crates/l2/prover/src/backend/zisk.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 11fc839a0e5..1541e3f0b91 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -15,6 +15,8 @@ const ELF_PATH: &str = concat!( pub fn execute(input: ProgramInput) -> Result<(), Box> { let input_bytes = rkyv::to_bytes::(&input)?; + dbg!(&input_bytes); + std::fs::write(INPUT_PATH, input_bytes.as_slice())?; let mut cmd = Command::new("ziskemu"); From 4d751404c43ec9fa0888f7f9be82f5387978a7a9 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 16:27:13 -0300 Subject: [PATCH 13/99] Fix debug --- crates/l2/prover/src/backend/zisk.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 1541e3f0b91..92f03dc4fe9 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -15,7 +15,7 @@ const ELF_PATH: &str = concat!( pub fn execute(input: ProgramInput) -> Result<(), Box> { let input_bytes = rkyv::to_bytes::(&input)?; - dbg!(&input_bytes); + dbg!(INPUT_PATH); std::fs::write(INPUT_PATH, input_bytes.as_slice())?; From 8306a3b41162bc3e2f4556a8c6bac6af500ff5ca Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 17:08:31 -0300 Subject: [PATCH 14/99] Implement recover_address with k256 --- crates/common/types/transaction.rs | 54 +++++++++++++++++++----------- 1 file changed, 34 insertions(+), 20 deletions(-) diff --git a/crates/common/types/transaction.rs b/crates/common/types/transaction.rs index 4b6be4d2456..4ce536ed372 100644 --- a/crates/common/types/transaction.rs +++ b/crates/common/types/transaction.rs @@ -966,7 +966,6 @@ impl Transaction { sig[32..64].copy_from_slice(&tx.s.to_big_endian()); sig[64] = signature_y_parity as u8; recover_address_from_message(Signature::from_slice(&sig), &Bytes::from(buf)) - .map_err(Error::from) } Transaction::EIP2930Transaction(tx) => { let mut buf = vec![self.tx_type() as u8]; @@ -985,7 +984,6 @@ impl Transaction { sig[32..64].copy_from_slice(&tx.signature_s.to_big_endian()); sig[64] = tx.signature_y_parity as u8; recover_address_from_message(Signature::from_slice(&sig), &Bytes::from(buf)) - .map_err(Error::from) } Transaction::EIP1559Transaction(tx) => { let mut buf = vec![self.tx_type() as u8]; @@ -1005,7 +1003,6 @@ impl Transaction { sig[32..64].copy_from_slice(&tx.signature_s.to_big_endian()); sig[64] = tx.signature_y_parity as u8; recover_address_from_message(Signature::from_slice(&sig), &Bytes::from(buf)) - .map_err(Error::from) } Transaction::EIP4844Transaction(tx) => { let mut buf = vec![self.tx_type() as u8]; @@ -1027,7 +1024,6 @@ impl Transaction { sig[32..64].copy_from_slice(&tx.signature_s.to_big_endian()); sig[64] = tx.signature_y_parity as u8; recover_address_from_message(Signature::from_slice(&sig), &Bytes::from(buf)) - .map_err(Error::from) } Transaction::EIP7702Transaction(tx) => { let mut buf = vec![self.tx_type() as u8]; @@ -1048,7 +1044,6 @@ impl Transaction { sig[32..64].copy_from_slice(&tx.signature_s.to_big_endian()); sig[64] = tx.signature_y_parity as u8; recover_address_from_message(Signature::from_slice(&sig), &Bytes::from(buf)) - .map_err(Error::from) } Transaction::PrivilegedL2Transaction(tx) => Ok(tx.from), } @@ -1264,15 +1259,14 @@ impl Transaction { } } -#[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] pub fn recover_address_from_message( signature: Signature, message: &Bytes, -) -> Result { +) -> Result { use sha2::Digest; // Hash message let payload: [u8; 32] = sha3::Keccak256::digest(message).into(); - recover_address(signature, H256::from_slice(&payload)) + recover_address(signature, H256::from_slice(&payload)).map_err(Error::from) } #[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] @@ -1295,19 +1289,39 @@ pub fn recover_address(signature: Signature, payload: H256) -> Result Result { - todo!() -} +pub fn recover_address(signature: Signature, payload: H256) -> Result { + use sha2::Digest; + use sha3::Keccak256; -#[cfg(any(feature = "zisk", feature = "risc0", feature = "sp1"))] -pub fn recover_address( - _signature: Signature, - _payload: H256, -) -> Result { - todo!() + // Create signature + let signature_bytes = signature.to_fixed_bytes(); + + let mut signature = k256::ecdsa::Signature::from_slice(&signature_bytes[..64])?; + + let mut recovery_id_byte = signature_bytes[64]; + + if let Some(low_s) = signature.normalize_s() { + signature = low_s; + recovery_id_byte ^= 1; + } + + let recovery_id = k256::ecdsa::RecoveryId::from_byte(recovery_id_byte).ok_or( + k256::ecdsa::Error::from_source("Failed to parse recovery id"), + )?; + + // Recover public key + let public = + k256::ecdsa::VerifyingKey::recover_from_msg(payload.as_bytes(), &signature, recovery_id)?; + + let uncompressed = public.to_encoded_point(false); + + let mut uncompressed = uncompressed.to_bytes(); + + let xy = &mut uncompressed[1..65]; + + let hash = Keccak256::digest(xy); + + Ok(Address::from_slice(&hash[12..])) } fn derive_legacy_chain_id(v: U256) -> Option { From 603e0c7c4341e1042faba10a6b6a4ecacd699b42 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 17:08:38 -0300 Subject: [PATCH 15/99] Remove dbg --- crates/l2/prover/src/backend/zisk.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 92f03dc4fe9..11fc839a0e5 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -15,8 +15,6 @@ const ELF_PATH: &str = concat!( pub fn execute(input: ProgramInput) -> Result<(), Box> { let input_bytes = rkyv::to_bytes::(&input)?; - dbg!(INPUT_PATH); - std::fs::write(INPUT_PATH, input_bytes.as_slice())?; let mut cmd = Command::new("ziskemu"); From 712d527a7a55a29013694dfe7a9daf98aacb55e3 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 17:41:20 -0300 Subject: [PATCH 16/99] Fix recover_address with k256 --- crates/common/types/transaction.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/crates/common/types/transaction.rs b/crates/common/types/transaction.rs index 4ce536ed372..767cb6ecfe7 100644 --- a/crates/common/types/transaction.rs +++ b/crates/common/types/transaction.rs @@ -1310,8 +1310,11 @@ pub fn recover_address(signature: Signature, payload: H256) -> Result Date: Mon, 3 Nov 2025 17:56:38 -0300 Subject: [PATCH 17/99] Update RISC0 guest Cargo.lock --- .../src/guest_program/src/risc0/Cargo.lock | 50 +------------------ 1 file changed, 1 insertion(+), 49 deletions(-) diff --git a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock index de832d2d06c..a066a2e4905 100644 --- a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock @@ -420,22 +420,6 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" -[[package]] -name = "bitcoin-io" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" - -[[package]] -name = "bitcoin_hashes" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" -dependencies = [ - "bitcoin-io", - "hex-conservative", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -1194,7 +1178,6 @@ dependencies = [ "ethrex-vm", "hex", "rustc-hash", - "secp256k1", "sha3", "thiserror", "tokio", @@ -1213,6 +1196,7 @@ dependencies = [ "ethrex-rlp", "ethrex-trie", "hex", + "k256", "kzg-rs", "lazy_static", "libc", @@ -1220,7 +1204,6 @@ dependencies = [ "rayon", "rkyv", "rustc-hash", - "secp256k1", "serde", "serde_json", "sha2", @@ -1254,7 +1237,6 @@ dependencies = [ "hex", "lambdaworks-crypto", "rkyv", - "secp256k1", "serde", "serde_with", "sha3", @@ -1283,7 +1265,6 @@ dependencies = [ "p256", "ripemd", "rustc-hash", - "secp256k1", "serde", "serde_json", "sha2", @@ -1663,15 +1644,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "hex-conservative" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" -dependencies = [ - "arrayvec", -] - [[package]] name = "hex-literal" version = "0.4.1" @@ -3169,26 +3141,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "secp256k1" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" -dependencies = [ - "bitcoin_hashes", - "rand 0.8.5", - "secp256k1-sys", -] - -[[package]] -name = "secp256k1-sys" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" -dependencies = [ - "cc", -] - [[package]] name = "semver" version = "1.0.26" From 76d351bccb8996641bc4ec9462cc6b436b1b7b71 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 18:06:35 -0300 Subject: [PATCH 18/99] Fix risc0 --- crates/l2/prover/src/guest_program/src/risc0/Cargo.lock | 1 + crates/l2/prover/src/guest_program/src/risc0/Cargo.toml | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock index a066a2e4905..4d7e8bd5b7f 100644 --- a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock @@ -1235,6 +1235,7 @@ dependencies = [ "ethrex-trie", "ethrex-vm", "hex", + "k256", "lambdaworks-crypto", "rkyv", "serde", diff --git a/crates/l2/prover/src/guest_program/src/risc0/Cargo.toml b/crates/l2/prover/src/guest_program/src/risc0/Cargo.toml index b415257e4b7..3368dae1d45 100644 --- a/crates/l2/prover/src/guest_program/src/risc0/Cargo.toml +++ b/crates/l2/prover/src/guest_program/src/risc0/Cargo.toml @@ -28,8 +28,12 @@ ethrex-rlp = { path = "../../../../../../common/rlp" } ethrex-vm = { path = "../../../../../../vm", default-features = false, features = [ "risc0", ] } -ethrex-blockchain = { path = "../../../../../../blockchain", default-features = false } -ethrex-l2-common = { path = "../../../../../common", default-features = false } +ethrex-blockchain = { path = "../../../../../../blockchain", default-features = false, features = [ + "risc0", +] } +ethrex-l2-common = { path = "../../../../../common", default-features = false, features = [ + "risc0", +] } [patch.crates-io] sha2 = { git = "https://github.com/risc0/RustCrypto-hashes", tag = "sha2-v0.10.8-risczero.0" } From 94ebc1320c10fd19fb7e2e7fc660670949134338 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 3 Nov 2025 18:06:54 -0300 Subject: [PATCH 19/99] remove zisk input file after execution --- crates/l2/prover/src/backend/zisk.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 11fc839a0e5..440a8456c45 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -46,6 +46,8 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { duration.as_secs_f64() ); + std::fs::remove_file(INPUT_PATH)?; + Ok(()) } From 7607676198483653db7f29bed8f1e6cb74819156 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Tue, 4 Nov 2025 11:43:41 -0300 Subject: [PATCH 20/99] Write zisk elf before executing --- crates/l2/prover/src/backend/zisk.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 440a8456c45..30be3f9d33d 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -1,18 +1,18 @@ use std::process::{Command, Stdio}; use ethrex_l2_common::prover::{BatchProof, ProofFormat}; -use guest_program::{input::ProgramInput, output::ProgramOutput}; +use guest_program::{ZKVM_ZISK_PROGRAM_ELF, input::ProgramInput, output::ProgramOutput}; const INPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_input.bin"); const OUTPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_output.bin"); -const ELF_PATH: &str = concat!( - env!("CARGO_MANIFEST_DIR"), - "/src/guest_program/src/zisk/target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program" -); +const ELF_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_elf"); pub fn execute(input: ProgramInput) -> Result<(), Box> { + // We write the ELF to a temp file because ziskemu currently only accepts ELF files from disk + std::fs::write(ELF_PATH, ZKVM_ZISK_PROGRAM_ELF)?; + let input_bytes = rkyv::to_bytes::(&input)?; std::fs::write(INPUT_PATH, input_bytes.as_slice())?; From d01f83210110fbe084e557fe262dd81d351ab7d4 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Wed, 12 Nov 2025 18:41:45 -0300 Subject: [PATCH 21/99] commit prove impl attempt --- crates/l2/prover/src/backend/zisk.rs | 63 +++++++++++++++++++++++++--- 1 file changed, 57 insertions(+), 6 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 30be3f9d33d..5b44f07ee95 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -10,11 +10,16 @@ const OUTPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_output.bin" const ELF_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_elf"); pub fn execute(input: ProgramInput) -> Result<(), Box> { - // We write the ELF to a temp file because ziskemu currently only accepts ELF files from disk - std::fs::write(ELF_PATH, ZKVM_ZISK_PROGRAM_ELF)?; + // We write the ELF to a temp file because ziskemu currently only accepts + // ELF files from disk + if !std::path::Path::new(ELF_PATH).exists() { + std::fs::write(ELF_PATH, ZKVM_ZISK_PROGRAM_ELF)?; + } let input_bytes = rkyv::to_bytes::(&input)?; + // We write the input to a temp file because ziskemu currently only accepts + // input files from disk std::fs::write(INPUT_PATH, input_bytes.as_slice())?; let mut cmd = Command::new("ziskemu"); @@ -27,12 +32,13 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { .arg(INPUT_PATH) .arg("--output") .arg(OUTPUT_PATH) - .arg("--stats") .stdin(Stdio::inherit()) .stderr(Stdio::inherit()) .output()?; let duration = start.elapsed(); + std::fs::remove_file(INPUT_PATH)?; + if !output.status.success() { return Err(format!( "ZisK execution failed: {}", @@ -46,8 +52,6 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { duration.as_secs_f64() ); - std::fs::remove_file(INPUT_PATH)?; - Ok(()) } @@ -55,7 +59,54 @@ pub fn prove( _input: ProgramInput, _format: ProofFormat, ) -> Result> { - Err("prove is not implemented for ZisK backend".into()) + // We write the ELF to a temp file because cargo-zisk prove currently only + // accepts ELF files from disk + if !std::path::Path::new(ELF_PATH).exists() { + std::fs::write(ELF_PATH, ZKVM_ZISK_PROGRAM_ELF)?; + } + + let input_bytes = rkyv::to_bytes::(&input)?; + + // We write the input to a temp file because cargo-zisk prove currently only + // accepts input files from disk + std::fs::write(INPUT_PATH, input_bytes.as_slice())?; + + let mut cmd = Command::new("cargo-zisk"); + + let start = std::time::Instant::now(); + let output = cmd + .arg("prove") + .arg("--elf") + .arg(ELF_PATH) + .arg("--input") + .arg(INPUT_PATH) + .arg("--output") + .arg(OUTPUT_PATH) + .arg("--unlock-mapped-memory") + .arg("--proving-key") + .arg("--final-snark") + .stdin(Stdio::inherit()) + .stderr(Stdio::inherit()) + .output()?; + let duration = start.elapsed(); + + if !output.status.success() { + return Err(format!( + "ZisK proof generation failed: {}", + String::from_utf8_lossy(&output.stderr) + ) + .into()); + } + + println!( + "ZisK proof generated in {:.2?} seconds", + duration.as_secs_f64() + ); + + let output_bytes = std::fs::read(OUTPUT_PATH)?; + let output: ProgramOutput = rkyv::from_bytes(&output_bytes)?; + std::fs::remove_file(OUTPUT_PATH)?; + Ok(output) } pub fn verify(_output: &ProgramOutput) -> Result<(), Box> { From bb1b04ecd3ad61bd37a689e77d6405950537da57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Fri, 14 Nov 2025 17:08:50 -0300 Subject: [PATCH 22/99] fix prove output --- crates/l2/prover/src/backend/mod.rs | 2 +- crates/l2/prover/src/backend/zisk.rs | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/crates/l2/prover/src/backend/mod.rs b/crates/l2/prover/src/backend/mod.rs index 756be0a89ee..0c64b661e68 100644 --- a/crates/l2/prover/src/backend/mod.rs +++ b/crates/l2/prover/src/backend/mod.rs @@ -52,5 +52,5 @@ pub enum ProveOutput { #[cfg(feature = "risc0")] RISC0(risc0_zkvm::Receipt), #[cfg(feature = "zisk")] - ZisK(ProgramOutput), + ZisK(zisk::ProveOutput), } diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 5b44f07ee95..9645c84f535 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -9,6 +9,8 @@ const OUTPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_output.bin" const ELF_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_elf"); +pub struct ProveOutput(pub Vec); + pub fn execute(input: ProgramInput) -> Result<(), Box> { // We write the ELF to a temp file because ziskemu currently only accepts // ELF files from disk @@ -56,9 +58,9 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { } pub fn prove( - _input: ProgramInput, - _format: ProofFormat, -) -> Result> { + input: ProgramInput, + format: ProofFormat, +) -> Result> { // We write the ELF to a temp file because cargo-zisk prove currently only // accepts ELF files from disk if !std::path::Path::new(ELF_PATH).exists() { @@ -103,8 +105,8 @@ pub fn prove( duration.as_secs_f64() ); - let output_bytes = std::fs::read(OUTPUT_PATH)?; - let output: ProgramOutput = rkyv::from_bytes(&output_bytes)?; + let proof_bytes = std::fs::read(OUTPUT_PATH)?; + let output = ProveOutput(proof_bytes); std::fs::remove_file(OUTPUT_PATH)?; Ok(output) } @@ -114,8 +116,8 @@ pub fn verify(_output: &ProgramOutput) -> Result<(), Box> } pub fn to_batch_proof( - _proof: ProgramOutput, - _format: ProofFormat, + proof: ProveOutput, + format: ProofFormat, ) -> Result> { Err("to_batch_proof is not implemented for ZisK backend".into()) } From 5658f34df5f0fd8e0383a531e625d2b06599dd58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Fri, 14 Nov 2025 17:12:10 -0300 Subject: [PATCH 23/99] fix output arg --- crates/l2/prover/src/backend/zisk.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 9645c84f535..cd689c6b379 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -82,7 +82,7 @@ pub fn prove( .arg(ELF_PATH) .arg("--input") .arg(INPUT_PATH) - .arg("--output") + .arg("--output-dir") .arg(OUTPUT_PATH) .arg("--unlock-mapped-memory") .arg("--proving-key") From cf248252217761da4b0e936cf05f480fc5f64001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Mon, 17 Nov 2025 11:46:21 -0300 Subject: [PATCH 24/99] comment out --proving-key --- crates/l2/prover/src/backend/zisk.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index cd689c6b379..734fb37eb40 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -85,7 +85,7 @@ pub fn prove( .arg("--output-dir") .arg(OUTPUT_PATH) .arg("--unlock-mapped-memory") - .arg("--proving-key") + //.arg("--proving-key") .arg("--final-snark") .stdin(Stdio::inherit()) .stderr(Stdio::inherit()) From defafb05a283dca8af01d83fcf420ae4c837198c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Mon, 17 Nov 2025 11:51:04 -0300 Subject: [PATCH 25/99] fix output dir --- crates/l2/prover/src/backend/zisk.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 734fb37eb40..9dca8d88870 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -5,7 +5,7 @@ use guest_program::{ZKVM_ZISK_PROGRAM_ELF, input::ProgramInput, output::ProgramO const INPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_input.bin"); -const OUTPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_output.bin"); +const OUTPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_output/"); const ELF_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_elf"); From f3f4e2fc123260f609011f93b09b3bc14e8beec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Mon, 17 Nov 2025 12:20:11 -0300 Subject: [PATCH 26/99] add setup command --- crates/l2/prover/src/backend/zisk.rs | 2 +- crates/l2/prover/src/guest_program/build.rs | 28 +++++++++++++++++---- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 9dca8d88870..5147604e8a3 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -85,7 +85,7 @@ pub fn prove( .arg("--output-dir") .arg(OUTPUT_PATH) .arg("--unlock-mapped-memory") - //.arg("--proving-key") + .arg("--aggregate") .arg("--final-snark") .stdin(Stdio::inherit()) .stderr(Stdio::inherit()) diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index 042f0593281..691561be5f7 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -93,9 +93,10 @@ fn build_sp1_program() { #[cfg(all(not(clippy), feature = "zisk-guest"))] fn build_zisk_program() { - let mut command = std::process::Command::new("cargo"); + let mut build_command = std::process::Command::new("cargo"); + let mut setup_command = std::process::Command::new("cargo-zisk"); - command + build_command .env("RUSTC", rustc_path("zisk")) .args([ "+zisk", @@ -107,14 +108,28 @@ fn build_zisk_program() { .stdout(std::process::Stdio::inherit()) .stderr(std::process::Stdio::inherit()) .current_dir("./src/zisk"); + setup_command + .env("RUSTC", rustc_path("zisk")) + .args([ + "rom-setup", + "-e", + "target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program" + ]) + .stdout(std::process::Stdio::inherit()) + .stderr(std::process::Stdio::inherit()) + .current_dir("./src/zisk"); - println!("{command:?}"); + println!("{build_command:?}"); + println!("{setup_command:?}"); let start = std::time::Instant::now(); - let status = command + let build_status = build_command .status() .expect("Failed to execute zisk build command"); + let setup_status = setup_command + .status() + .expect("Failed to execute zisk setup command"); let duration = start.elapsed(); @@ -123,9 +138,12 @@ fn build_zisk_program() { duration.as_secs_f64() ); - if !status.success() { + if !build_status.success() { panic!("Failed to build guest program with zisk toolchain"); } + if !setup_status.success() { + panic!("Failed to setup compiled guest program with zisk toolchain"); + } } #[cfg(all(not(clippy), feature = "zisk-guest"))] From ac1ab5bd03cc6688d810a0052557eefc22cd16a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Mon, 17 Nov 2025 12:25:15 -0300 Subject: [PATCH 27/99] fix aggregation command --- crates/l2/prover/src/backend/zisk.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 5147604e8a3..7a45e6b29c8 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -85,7 +85,7 @@ pub fn prove( .arg("--output-dir") .arg(OUTPUT_PATH) .arg("--unlock-mapped-memory") - .arg("--aggregate") + .arg("--aggregation") .arg("--final-snark") .stdin(Stdio::inherit()) .stderr(Stdio::inherit()) From 675d9ff03c0ba52b1ec93fad89855cfb47dcc8d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Mon, 17 Nov 2025 13:02:47 -0300 Subject: [PATCH 28/99] temp: add dbg --- crates/l2/prover/src/backend/zisk.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 7a45e6b29c8..65804874cf4 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -23,6 +23,9 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { // We write the input to a temp file because ziskemu currently only accepts // input files from disk std::fs::write(INPUT_PATH, input_bytes.as_slice())?; + dbg!(INPUT_PATH); + dbg!(OUTPUT_PATH); + dbg!(ELF_PATH); let mut cmd = Command::new("ziskemu"); From 3bd1b5448b9848a8dc4c21d7b27837e91e67deec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Mon, 17 Nov 2025 13:17:29 -0300 Subject: [PATCH 29/99] remove input file before any early return --- crates/l2/prover/src/backend/zisk.rs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 65804874cf4..14d9741b7fe 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -30,7 +30,7 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { let mut cmd = Command::new("ziskemu"); let start = std::time::Instant::now(); - let output = cmd + let command = cmd .arg("--elf") .arg(ELF_PATH) .arg("--inputs") @@ -38,11 +38,14 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { .arg("--output") .arg(OUTPUT_PATH) .stdin(Stdio::inherit()) - .stderr(Stdio::inherit()) - .output()?; + .stderr(Stdio::inherit()); + let duration = start.elapsed(); + let output = command.output(); + // Remove input file before any early return std::fs::remove_file(INPUT_PATH)?; + let output = output?; if !output.status.success() { return Err(format!( @@ -79,7 +82,7 @@ pub fn prove( let mut cmd = Command::new("cargo-zisk"); let start = std::time::Instant::now(); - let output = cmd + let command = cmd .arg("prove") .arg("--elf") .arg(ELF_PATH) @@ -91,9 +94,14 @@ pub fn prove( .arg("--aggregation") .arg("--final-snark") .stdin(Stdio::inherit()) - .stderr(Stdio::inherit()) - .output()?; + .stderr(Stdio::inherit()); + let duration = start.elapsed(); + let output = command.output(); + + // Remove input file before any early return + std::fs::remove_file(INPUT_PATH)?; + let output = output?; if !output.status.success() { return Err(format!( From 0025cb6e516c37ef57e56f3e0278f570b08f3602 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Mon, 17 Nov 2025 15:46:06 -0300 Subject: [PATCH 30/99] overwrite file --- crates/l2/prover/src/backend/zisk.rs | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 14d9741b7fe..ab937e8704a 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -41,11 +41,7 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { .stderr(Stdio::inherit()); let duration = start.elapsed(); - let output = command.output(); - - // Remove input file before any early return - std::fs::remove_file(INPUT_PATH)?; - let output = output?; + let output = command.output()?; if !output.status.success() { return Err(format!( @@ -97,11 +93,7 @@ pub fn prove( .stderr(Stdio::inherit()); let duration = start.elapsed(); - let output = command.output(); - - // Remove input file before any early return - std::fs::remove_file(INPUT_PATH)?; - let output = output?; + let output = command.output()?; if !output.status.success() { return Err(format!( From 1f60ad2e2af9340ba8d0e2888e0ce6a82a2f0dc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Mon, 17 Nov 2025 16:34:04 -0300 Subject: [PATCH 31/99] implement eip7702_recover_address --- crates/l2/prover/src/guest_program/build.rs | 2 +- crates/vm/levm/src/utils.rs | 56 ++++++++++++++++++++- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index 691561be5f7..a61e8c80286 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -113,7 +113,7 @@ fn build_zisk_program() { .args([ "rom-setup", "-e", - "target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program" + "target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program", ]) .stdout(std::process::Stdio::inherit()) .stderr(std::process::Stdio::inherit()) diff --git a/crates/vm/levm/src/utils.rs b/crates/vm/levm/src/utils.rs index 34d462c1686..2d6e9fd2345 100644 --- a/crates/vm/levm/src/utils.rs +++ b/crates/vm/levm/src/utils.rs @@ -26,6 +26,7 @@ use ethrex_common::{ utils::{keccak, u256_to_big_endian}, }; use ethrex_common::{types::TxKind, utils::u256_from_big_endian_const}; +use k256::ecdsa::VerifyingKey; use std::collections::{BTreeMap, HashMap}; pub type Storage = HashMap; @@ -348,9 +349,60 @@ pub fn get_authorized_address_from_code(code: &Bytes) -> Result Result, VMError> { - todo!() + use ethrex_rlp::encode::RLPEncode; + use sha2::Digest; + use sha3::Keccak256; + + if auth_tuple.s_signature > *SECP256K1_ORDER_OVER2 || U256::zero() >= auth_tuple.s_signature { + return Ok(None); + } + if auth_tuple.r_signature > *SECP256K1_ORDER || U256::zero() >= auth_tuple.r_signature { + return Ok(None); + } + if auth_tuple.y_parity != U256::one() && auth_tuple.y_parity != U256::zero() { + return Ok(None); + } + + let rlp_buf = (auth_tuple.chain_id, auth_tuple.address, auth_tuple.nonce).encode_to_vec(); + + let mut digest = Keccak256::new(); + digest.update([MAGIC]); + digest.update(rlp_buf); + + let bytes = [ + auth_tuple.r_signature.to_big_endian(), + auth_tuple.s_signature.to_big_endian(), + ] + .concat(); + + let Ok(recovery_id) = k256::ecdsa::RecoveryId::try_from( + TryInto::::try_into(auth_tuple.y_parity).map_err(|_| InternalError::TypeConversion)?, + ) else { + return Ok(None); + }; + + let Ok(signature) = k256::ecdsa::Signature::from_slice(&bytes) else { + return Ok(None); + }; + + let Ok(authority) = VerifyingKey::recover_from_digest(digest, &signature, recovery_id) else { + return Ok(None); + }; + + let public_key = authority.to_encoded_point(false).to_bytes(); + let mut hasher = Keccak256::new(); + hasher.update(public_key.get(1..).ok_or(InternalError::Slicing)?); + let address_hash = hasher.finalize(); + + // Get the last 20 bytes of the hash -> Address + let authority_address_bytes: [u8; 20] = address_hash + .get(12..32) + .ok_or(InternalError::Slicing)? + .try_into() + .map_err(|_| InternalError::TypeConversion)?; + Ok(Some(Address::from_slice(&authority_address_bytes))) } #[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] From 9e834539a57603259157a90a3839b630b10cbd0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Mon, 17 Nov 2025 16:41:25 -0300 Subject: [PATCH 32/99] define constants --- crates/vm/levm/src/constants.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/vm/levm/src/constants.rs b/crates/vm/levm/src/constants.rs index 4a212f6b2b9..c3135cd0c61 100644 --- a/crates/vm/levm/src/constants.rs +++ b/crates/vm/levm/src/constants.rs @@ -1,4 +1,6 @@ use ethrex_common::{H256, U256}; +#[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] +use k256::elliptic_curve::bigint::Encoding; use p256::{ FieldElement as P256FieldElement, NistP256, elliptic_curve::{Curve, bigint::U256 as P256Uint, ff::PrimeField}, @@ -70,10 +72,8 @@ pub const VALID_BLOB_PREFIXES: [u8; 2] = [0x01, 0x02]; pub const LAST_AVAILABLE_BLOCK_LIMIT: U256 = U256([256, 0, 0, 0]); // EIP7702 - EOA Load Code -#[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] pub static SECP256K1_ORDER: std::sync::LazyLock = - std::sync::LazyLock::new(|| U256::from_big_endian(&secp256k1::constants::CURVE_ORDER)); -#[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] + std::sync::LazyLock::new(|| U256::from_big_endian(&k256::Secp256k1::ORDER.to_be_bytes())); pub static SECP256K1_ORDER_OVER2: std::sync::LazyLock = std::sync::LazyLock::new(|| *SECP256K1_ORDER / U256::from(2)); pub const MAGIC: u8 = 0x05; From 7dd86f9a6c9b155723f10f4b1fba7c177e768ee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Mon, 17 Nov 2025 16:56:32 -0300 Subject: [PATCH 33/99] import --- crates/vm/levm/src/constants.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/vm/levm/src/constants.rs b/crates/vm/levm/src/constants.rs index c3135cd0c61..037f3abfadc 100644 --- a/crates/vm/levm/src/constants.rs +++ b/crates/vm/levm/src/constants.rs @@ -1,5 +1,4 @@ use ethrex_common::{H256, U256}; -#[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] use k256::elliptic_curve::bigint::Encoding; use p256::{ FieldElement as P256FieldElement, NistP256, From 990ba8f0761c9de0193284ee1664159d9891689a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Mon, 17 Nov 2025 17:08:05 -0300 Subject: [PATCH 34/99] remove output arg from execution --- crates/l2/prover/src/backend/zisk.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index ab937e8704a..63e5ffad401 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -35,8 +35,6 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { .arg(ELF_PATH) .arg("--inputs") .arg(INPUT_PATH) - .arg("--output") - .arg(OUTPUT_PATH) .stdin(Stdio::inherit()) .stderr(Stdio::inherit()); From acc0c4421c656861e666cda831dc2121adf10073 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 11:18:23 -0300 Subject: [PATCH 35/99] rm dbg, fix path --- crates/l2/prover/src/backend/zisk.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 63e5ffad401..6c7fcbd2196 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -7,7 +7,7 @@ const INPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_input.bin"); const OUTPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_output/"); -const ELF_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_elf"); +const ELF_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zkvm-zisk-program"); pub struct ProveOutput(pub Vec); @@ -23,9 +23,6 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { // We write the input to a temp file because ziskemu currently only accepts // input files from disk std::fs::write(INPUT_PATH, input_bytes.as_slice())?; - dbg!(INPUT_PATH); - dbg!(OUTPUT_PATH); - dbg!(ELF_PATH); let mut cmd = Command::new("ziskemu"); From 1aa998ec32bc36cb99a71da97549f25415f6d25f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 11:31:52 -0300 Subject: [PATCH 36/99] enable tiny-keccak patch and ecpairing precomp --- crates/l2/prover/src/guest_program/src/zisk/Cargo.lock | 4 ++-- crates/l2/prover/src/guest_program/src/zisk/Cargo.toml | 1 + crates/vm/levm/src/precompiles.rs | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock index afdc3bd7ef2..d50f3d45708 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock @@ -2727,9 +2727,9 @@ dependencies = [ [[package]] name = "tiny-keccak" version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-tiny-keccak/?branch=zisk#a5cb98ca4d9d390b39b10c9e81a061fd830aea35" dependencies = [ + "cfg-if", "crunchy", ] diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml index 876469b4327..9f8059db5e4 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml @@ -20,6 +20,7 @@ sha3 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", branc k256 = { git = "https://github.com/0xPolygonHermez/zisk-patch-elliptic-curves.git", tag = "patch-k256-0.13.4-zisk-0.13.0" } substrate-bn = { git = "https://github.com/0xPolygonHermez/zisk-patch-bn.git", tag = "patch-0.6.0-zisk-0.13.0" } sp1_bls12_381 = { git = "https://github.com/han0110/bls12_381.git", branch = "zisk-patch/v0.8.0-upgrade-sp1-lib" } +tiny-keccak = { git = "https://github.com/0xPolygonHermez/zisk-patch-tiny-keccak/", branch = "zisk" } [features] l2 = ["guest_program/l2"] diff --git a/crates/vm/levm/src/precompiles.rs b/crates/vm/levm/src/precompiles.rs index da15fd4e01a..ea3c059514d 100644 --- a/crates/vm/levm/src/precompiles.rs +++ b/crates/vm/levm/src/precompiles.rs @@ -899,7 +899,7 @@ pub fn ecpairing(calldata: &Bytes, gas_remaining: &mut u64, _fork: Fork) -> Resu Ok(Bytes::from_owner(result)) } -#[cfg(any(feature = "sp1", feature = "risc0"))] +#[cfg(any(feature = "sp1", feature = "risc0", feature = "zisk"))] #[inline] pub fn pairing_check(batch: &[(G1, G2)]) -> Result { use substrate_bn::{AffineG1, AffineG2, Fq, Fq2, G1 as SubstrateG1, G2 as SubstrateG2, Group}; @@ -955,7 +955,7 @@ pub fn pairing_check(batch: &[(G1, G2)]) -> Result { Ok(result == substrate_bn::Gt::one()) } -#[cfg(all(not(feature = "sp1"), not(feature = "risc0")))] +#[cfg(all(not(feature = "sp1"), not(feature = "risc0"), not(feature = "zisk")))] #[inline] pub fn pairing_check(batch: &[(G1, G2)]) -> Result { use lambdaworks_math::errors::PairingError; From 8e590c7ce6ed895c552de36edf8e4ba58cb76905 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 11:48:52 -0300 Subject: [PATCH 37/99] refactor command --- crates/l2/prover/src/backend/zisk.rs | 44 +++++++++++++--------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 6c7fcbd2196..ae227be9daf 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -70,25 +70,28 @@ pub fn prove( // accepts input files from disk std::fs::write(INPUT_PATH, input_bytes.as_slice())?; - let mut cmd = Command::new("cargo-zisk"); - - let start = std::time::Instant::now(); - let command = cmd - .arg("prove") - .arg("--elf") - .arg(ELF_PATH) - .arg("--input") - .arg(INPUT_PATH) - .arg("--output-dir") - .arg(OUTPUT_PATH) - .arg("--unlock-mapped-memory") - .arg("--aggregation") - .arg("--final-snark") + let static_args = vec![ + "prove", + "--elf", + ELF_PATH, + "--input", + INPUT_PATH, + "--output-dir", + OUTPUT_PATH, + "--aggregation", + ]; + let conditional_groth16_arg = if format == ProofFormat::Groth16 { + vec!["--final-snark"] + } else { + vec![] + }; + + let output = Command::new("cargo-zisk") + .args(static_args) + .args(conditional_groth16_arg) .stdin(Stdio::inherit()) - .stderr(Stdio::inherit()); - - let duration = start.elapsed(); - let output = command.output()?; + .stderr(Stdio::inherit()) + .output()?; if !output.status.success() { return Err(format!( @@ -98,11 +101,6 @@ pub fn prove( .into()); } - println!( - "ZisK proof generated in {:.2?} seconds", - duration.as_secs_f64() - ); - let proof_bytes = std::fs::read(OUTPUT_PATH)?; let output = ProveOutput(proof_bytes); std::fs::remove_file(OUTPUT_PATH)?; From 4820fa008236ca2f0deba10f9101d493bfa12ae5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 11:52:56 -0300 Subject: [PATCH 38/99] fix --- crates/l2/prover/src/backend/zisk.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index ae227be9daf..bc0d8fc7e8d 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -80,7 +80,7 @@ pub fn prove( OUTPUT_PATH, "--aggregation", ]; - let conditional_groth16_arg = if format == ProofFormat::Groth16 { + let conditional_groth16_arg = if let ProofFormat::Groth16 = format { vec!["--final-snark"] } else { vec![] From bf4661a24ab77ad82d42a2d8c490ec8d2a26ddcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 12:34:55 -0300 Subject: [PATCH 39/99] fixes --- Cargo.lock | 1 + crates/common/types/transaction.rs | 4 +- .../prover/src/guest_program/src/execution.rs | 2 - .../src/guest_program/src/zisk/Cargo.lock | 51 +++++++++++-------- crates/vm/levm/Cargo.toml | 1 + crates/vm/levm/src/utils.rs | 12 +---- 6 files changed, 36 insertions(+), 35 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e38f4d86fee..a60f4c5d77f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3573,6 +3573,7 @@ dependencies = [ "serde", "serde_json", "sha2", + "sha3", "spinoff", "strum 0.27.2", "substrate-bn", diff --git a/crates/common/types/transaction.rs b/crates/common/types/transaction.rs index 2203abd3157..a1c44309614 100644 --- a/crates/common/types/transaction.rs +++ b/crates/common/types/transaction.rs @@ -1411,15 +1411,13 @@ pub fn recover_address_from_message( signature: Signature, message: &Bytes, ) -> Result { - use sha2::Digest; // Hash message let payload = keccak(message); - recover_address(signature, payload) + Ok(recover_address(signature, payload)?) } #[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] pub fn recover_address(signature: Signature, payload: H256) -> Result { - use sha2::Digest; // Create signature let signature_bytes = signature.to_fixed_bytes(); let signature = secp256k1::ecdsa::RecoverableSignature::from_compact( diff --git a/crates/l2/prover/src/guest_program/src/execution.rs b/crates/l2/prover/src/guest_program/src/execution.rs index bcf6109bdb7..99a8a78cad8 100644 --- a/crates/l2/prover/src/guest_program/src/execution.rs +++ b/crates/l2/prover/src/guest_program/src/execution.rs @@ -20,7 +20,6 @@ use ethrex_l2_common::l1_messages::L1Message; use ethrex_l2_common::privileged_transactions::get_block_privileged_transactions; use ethrex_rlp::encode::RLPEncode; use ethrex_vm::{Evm, EvmError, GuestProgramStateWrapper, VmDatabase}; -#[cfg(feature = "l2")] use std::collections::BTreeMap; use std::collections::HashMap; @@ -34,7 +33,6 @@ use ethrex_l2_common::{ l1_messages::get_block_l1_messages, privileged_transactions::{ PrivilegedTransactionError, compute_privileged_transactions_hash, - get_block_privileged_transactions, }, }; diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock index d50f3d45708..4ed6c19d781 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock @@ -864,10 +864,11 @@ dependencies = [ [[package]] name = "ethrex-blockchain" -version = "5.0.0" +version = "7.0.0" dependencies = [ "bytes", "ethrex-common", + "ethrex-crypto", "ethrex-metrics", "ethrex-rlp", "ethrex-storage", @@ -875,7 +876,6 @@ dependencies = [ "ethrex-vm", "hex", "rustc-hash", - "sha3", "thiserror", "tokio", "tokio-util", @@ -884,7 +884,7 @@ dependencies = [ [[package]] name = "ethrex-common" -version = "5.0.0" +version = "7.0.0" dependencies = [ "bytes", "crc32fast", @@ -913,19 +913,21 @@ dependencies = [ [[package]] name = "ethrex-crypto" -version = "5.0.0" +version = "7.0.0" dependencies = [ "kzg-rs", "thiserror", + "tiny-keccak", ] [[package]] name = "ethrex-l2-common" -version = "5.0.0" +version = "7.0.0" dependencies = [ "bytes", "ethereum-types", "ethrex-common", + "ethrex-crypto", "ethrex-rlp", "ethrex-storage", "ethrex-trie", @@ -942,7 +944,7 @@ dependencies = [ [[package]] name = "ethrex-levm" -version = "5.0.0" +version = "7.0.0" dependencies = [ "ark-bn254", "ark-ec", @@ -974,7 +976,7 @@ dependencies = [ [[package]] name = "ethrex-metrics" -version = "5.0.0" +version = "7.0.0" dependencies = [ "ethrex-common", "serde", @@ -985,7 +987,7 @@ dependencies = [ [[package]] name = "ethrex-rlp" -version = "5.0.0" +version = "7.0.0" dependencies = [ "bytes", "ethereum-types", @@ -998,7 +1000,7 @@ dependencies = [ [[package]] name = "ethrex-storage" -version = "5.0.0" +version = "7.0.0" dependencies = [ "anyhow", "async-trait", @@ -1006,6 +1008,7 @@ dependencies = [ "bytes", "ethereum-types", "ethrex-common", + "ethrex-crypto", "ethrex-rlp", "ethrex-trie", "hex", @@ -1014,7 +1017,6 @@ dependencies = [ "rustc-hash", "serde", "serde_json", - "sha3", "thiserror", "tracing", ] @@ -1028,20 +1030,22 @@ dependencies = [ [[package]] name = "ethrex-trie" -version = "5.0.0" +version = "7.0.0" dependencies = [ "anyhow", "bytes", "crossbeam", "digest", "ethereum-types", + "ethrex-crypto", "ethrex-rlp", "ethrex-threadpool", "hex", "lazy_static", + "rkyv", + "rustc-hash", "serde", "serde_json", - "sha3", "smallvec", "thiserror", "tracing", @@ -1049,7 +1053,7 @@ dependencies = [ [[package]] name = "ethrex-vm" -version = "5.0.0" +version = "7.0.0" dependencies = [ "bincode", "bytes", @@ -1057,14 +1061,13 @@ dependencies = [ "dyn-clone", "ethereum-types", "ethrex-common", + "ethrex-crypto", "ethrex-levm", "ethrex-rlp", "ethrex-trie", - "hex", "lazy_static", "rkyv", "serde", - "sha3", "thiserror", "tracing", ] @@ -1220,8 +1223,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi", + "wasm-bindgen", ] [[package]] @@ -1237,7 +1242,7 @@ dependencies = [ [[package]] name = "guest_program" -version = "5.0.0" +version = "7.0.0" dependencies = [ "bytes", "ethrex-blockchain", @@ -1580,11 +1585,13 @@ dependencies = [ [[package]] name = "lambdaworks-crypto" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ec4b462bbec171e1af821f3d9fff72e17de93b3d1022f29aa70fec8262c1cee" +checksum = "58b1a1c1102a5a7fbbda117b79fb3a01e033459c738a3c1642269603484fd1c1" dependencies = [ "lambdaworks-math", + "rand", + "rand_chacha", "serde", "sha2", "sha3", @@ -1592,10 +1599,14 @@ dependencies = [ [[package]] name = "lambdaworks-math" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "708d148956bcdc21ae5c432b4e20bbaa26fd68d5376a3a6c461f41095abea0ba" +checksum = "018a95aa873eb49896a858dee0d925c33f3978d073c64b08dd4f2c9b35a017c6" dependencies = [ + "getrandom", + "num-bigint 0.4.6", + "num-traits", + "rand", "rayon", "serde", "serde_json", diff --git a/crates/vm/levm/Cargo.toml b/crates/vm/levm/Cargo.toml index 6e231f5cd82..8c0ce9df318 100644 --- a/crates/vm/levm/Cargo.toml +++ b/crates/vm/levm/Cargo.toml @@ -25,6 +25,7 @@ p256 = { version = "0.13.2", features = [ "expose-field", ] } sha2 = "0.10.8" +sha3 = "0.10.8" ripemd = "0.1.3" malachite = "0.6.1" lambdaworks-math = "0.13.0" diff --git a/crates/vm/levm/src/utils.rs b/crates/vm/levm/src/utils.rs index a2503d3e557..8591629ea86 100644 --- a/crates/vm/levm/src/utils.rs +++ b/crates/vm/levm/src/utils.rs @@ -23,14 +23,8 @@ use ethrex_common::{ utils::{keccak, u256_to_big_endian}, }; use ethrex_common::{types::TxKind, utils::u256_from_big_endian_const}; -use k256::ecdsa::VerifyingKey; use ethrex_crypto::keccak::keccak_hash; use ethrex_rlp; -use ethrex_rlp::encode::RLPEncode; -use secp256k1::{ - Message, - ecdsa::{RecoverableSignature, RecoveryId}, -}; use std::collections::HashMap; pub type Storage = HashMap; @@ -298,7 +292,7 @@ pub fn eip7702_recover_address( return Ok(None); }; - let Ok(authority) = VerifyingKey::recover_from_digest(digest, &signature, recovery_id) else { + let Ok(authority) = k256::ecdsa::VerifyingKey::recover_from_digest(digest, &signature, recovery_id) else { return Ok(None); }; @@ -321,8 +315,6 @@ pub fn eip7702_recover_address( auth_tuple: &AuthorizationTuple, ) -> Result, VMError> { use ethrex_rlp::encode::RLPEncode; - use sha2::Digest; - use sha3::Keccak256; if auth_tuple.s_signature > *SECP256K1_ORDER_OVER2 || U256::zero() >= auth_tuple.s_signature { return Ok(None); @@ -339,7 +331,7 @@ pub fn eip7702_recover_address( (auth_tuple.chain_id, auth_tuple.address, auth_tuple.nonce).encode(&mut rlp_buf); let bytes = keccak_hash(&rlp_buf); - let message = Message::from_digest(bytes); + let message = secp256k1::Message::from_digest(bytes); let bytes = [ auth_tuple.r_signature.to_big_endian(), From 9ac525f091740dfd8984d200359bed41c00eb188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 15:46:41 -0300 Subject: [PATCH 40/99] debug --- crates/l2/prover/src/backend/zisk.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index bc0d8fc7e8d..4c512cd97cc 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -86,12 +86,13 @@ pub fn prove( vec![] }; - let output = Command::new("cargo-zisk") + let command = Command::new("cargo-zisk") .args(static_args) .args(conditional_groth16_arg) .stdin(Stdio::inherit()) - .stderr(Stdio::inherit()) - .output()?; + .stderr(Stdio::inherit()); + dbg!(&command); + let output = command.output()?; if !output.status.success() { return Err(format!( From c03e229c65656b404e966b9d190b7990abcb21fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 16:04:33 -0300 Subject: [PATCH 41/99] stdout --- crates/l2/prover/src/backend/zisk.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 4c512cd97cc..a6054f601f8 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -86,13 +86,12 @@ pub fn prove( vec![] }; - let command = Command::new("cargo-zisk") + let output = Command::new("cargo-zisk") .args(static_args) .args(conditional_groth16_arg) - .stdin(Stdio::inherit()) - .stderr(Stdio::inherit()); - dbg!(&command); - let output = command.output()?; + .stdin(Stdio::piped()) + .stderr(Stdio::piped()) + .output()?; if !output.status.success() { return Err(format!( From 1e0b9662104a5f90846db8d3322ca367e03d5082 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 16:12:39 -0300 Subject: [PATCH 42/99] debug --- crates/l2/prover/src/backend/zisk.rs | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index a6054f601f8..f83fa7cca3e 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -27,16 +27,14 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { let mut cmd = Command::new("ziskemu"); let start = std::time::Instant::now(); - let command = cmd + let output = cmd .arg("--elf") .arg(ELF_PATH) .arg("--inputs") .arg(INPUT_PATH) .stdin(Stdio::inherit()) - .stderr(Stdio::inherit()); - - let duration = start.elapsed(); - let output = command.output()?; + .stderr(Stdio::inherit()) + .output()?; if !output.status.success() { return Err(format!( @@ -46,11 +44,6 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { .into()); } - println!( - "ZisK guest program executed in {:.2?} seconds", - duration.as_secs_f64() - ); - Ok(()) } @@ -80,6 +73,7 @@ pub fn prove( OUTPUT_PATH, "--aggregation", ]; + dbg!(&static_args); let conditional_groth16_arg = if let ProofFormat::Groth16 = format { vec!["--final-snark"] } else { @@ -89,8 +83,8 @@ pub fn prove( let output = Command::new("cargo-zisk") .args(static_args) .args(conditional_groth16_arg) - .stdin(Stdio::piped()) - .stderr(Stdio::piped()) + .stdin(Stdio::inherit()) + .stderr(Stdio::inherit()) .output()?; if !output.status.success() { From f54c390a091545f2b1334c394aa0d6fd113057ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 16:27:05 -0300 Subject: [PATCH 43/99] try fix --- crates/l2/prover/src/backend/zisk.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index f83fa7cca3e..56ae2222c72 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -82,7 +82,7 @@ pub fn prove( let output = Command::new("cargo-zisk") .args(static_args) - .args(conditional_groth16_arg) + //.args(conditional_groth16_arg) .stdin(Stdio::inherit()) .stderr(Stdio::inherit()) .output()?; From 4c30e3624b619f9835003b417440c9ecfbcf726d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 16:34:21 -0300 Subject: [PATCH 44/99] stdout --- crates/l2/prover/src/backend/zisk.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 56ae2222c72..d7d7b4b72a0 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -14,9 +14,7 @@ pub struct ProveOutput(pub Vec); pub fn execute(input: ProgramInput) -> Result<(), Box> { // We write the ELF to a temp file because ziskemu currently only accepts // ELF files from disk - if !std::path::Path::new(ELF_PATH).exists() { - std::fs::write(ELF_PATH, ZKVM_ZISK_PROGRAM_ELF)?; - } + std::fs::write(ELF_PATH, ZKVM_ZISK_PROGRAM_ELF)?; let input_bytes = rkyv::to_bytes::(&input)?; @@ -53,9 +51,7 @@ pub fn prove( ) -> Result> { // We write the ELF to a temp file because cargo-zisk prove currently only // accepts ELF files from disk - if !std::path::Path::new(ELF_PATH).exists() { - std::fs::write(ELF_PATH, ZKVM_ZISK_PROGRAM_ELF)?; - } + std::fs::write(ELF_PATH, ZKVM_ZISK_PROGRAM_ELF)?; let input_bytes = rkyv::to_bytes::(&input)?; @@ -84,6 +80,7 @@ pub fn prove( .args(static_args) //.args(conditional_groth16_arg) .stdin(Stdio::inherit()) + .stdout(Stdio::inherit()) .stderr(Stdio::inherit()) .output()?; From d1f4738f8c32bccffed9cf991a183748a7954eac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 16:55:23 -0300 Subject: [PATCH 45/99] fixes --- crates/l2/prover/src/backend/zisk.rs | 59 ++++++++++++++++------------ 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index d7d7b4b72a0..eb4e729b103 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -5,31 +5,30 @@ use guest_program::{ZKVM_ZISK_PROGRAM_ELF, input::ProgramInput, output::ProgramO const INPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_input.bin"); -const OUTPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_output/"); +const OUTPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_output/vadcop_final_proof.compressed.bin"); const ELF_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zkvm-zisk-program"); pub struct ProveOutput(pub Vec); pub fn execute(input: ProgramInput) -> Result<(), Box> { - // We write the ELF to a temp file because ziskemu currently only accepts - // ELF files from disk - std::fs::write(ELF_PATH, ZKVM_ZISK_PROGRAM_ELF)?; + write_elf_file()?; let input_bytes = rkyv::to_bytes::(&input)?; - - // We write the input to a temp file because ziskemu currently only accepts - // input files from disk std::fs::write(INPUT_PATH, input_bytes.as_slice())?; - let mut cmd = Command::new("ziskemu"); - - let start = std::time::Instant::now(); - let output = cmd - .arg("--elf") - .arg(ELF_PATH) - .arg("--inputs") - .arg(INPUT_PATH) + let args = vec![ + "prove", + "--elf", + ELF_PATH, + "--input", + INPUT_PATH, + "--output-dir", + OUTPUT_PATH, + "--aggregation", + ]; + let output = Command::new("ziskemu") + .args(args) .stdin(Stdio::inherit()) .stderr(Stdio::inherit()) .output()?; @@ -49,14 +48,9 @@ pub fn prove( input: ProgramInput, format: ProofFormat, ) -> Result> { - // We write the ELF to a temp file because cargo-zisk prove currently only - // accepts ELF files from disk - std::fs::write(ELF_PATH, ZKVM_ZISK_PROGRAM_ELF)?; + write_elf_file()?; let input_bytes = rkyv::to_bytes::(&input)?; - - // We write the input to a temp file because cargo-zisk prove currently only - // accepts input files from disk std::fs::write(INPUT_PATH, input_bytes.as_slice())?; let static_args = vec![ @@ -69,7 +63,6 @@ pub fn prove( OUTPUT_PATH, "--aggregation", ]; - dbg!(&static_args); let conditional_groth16_arg = if let ProofFormat::Groth16 = format { vec!["--final-snark"] } else { @@ -78,9 +71,8 @@ pub fn prove( let output = Command::new("cargo-zisk") .args(static_args) - //.args(conditional_groth16_arg) + .args(conditional_groth16_arg) .stdin(Stdio::inherit()) - .stdout(Stdio::inherit()) .stderr(Stdio::inherit()) .output()?; @@ -94,7 +86,6 @@ pub fn prove( let proof_bytes = std::fs::read(OUTPUT_PATH)?; let output = ProveOutput(proof_bytes); - std::fs::remove_file(OUTPUT_PATH)?; Ok(output) } @@ -108,3 +99,21 @@ pub fn to_batch_proof( ) -> Result> { Err("to_batch_proof is not implemented for ZisK backend".into()) } + +fn write_elf_file() -> Result<(), Box> { + match std::fs::read(ELF_PATH) { + Ok(existing_content) => { + if existing_content != content { + std::fs::write(ELF_PATH, ZKVM_ZISK_PROGRAM_ELF)?; + } + } + Err(e) => { + if e.kind() == ErrorKind::NotFound { + std::fs::write(ELF_PATH, ZKVM_ZISK_PROGRAM_ELF)?; + } else { + return Err(e); + } + } + } + return Ok(()); +} From e7939ba836a595a3be65d3c0401d8994bd437a70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 17:04:45 -0300 Subject: [PATCH 46/99] fix --- crates/l2/prover/src/backend/zisk.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index eb4e729b103..907c51980f5 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -1,11 +1,17 @@ -use std::process::{Command, Stdio}; +use std::{ + io::ErrorKind, + process::{Command, Stdio}, +}; use ethrex_l2_common::prover::{BatchProof, ProofFormat}; use guest_program::{ZKVM_ZISK_PROGRAM_ELF, input::ProgramInput, output::ProgramOutput}; const INPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_input.bin"); -const OUTPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_output/vadcop_final_proof.compressed.bin"); +const OUTPUT_PATH: &str = concat!( + env!("CARGO_MANIFEST_DIR"), + "/zisk_output/vadcop_final_proof.compressed.bin" +); const ELF_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zkvm-zisk-program"); @@ -103,7 +109,7 @@ pub fn to_batch_proof( fn write_elf_file() -> Result<(), Box> { match std::fs::read(ELF_PATH) { Ok(existing_content) => { - if existing_content != content { + if existing_content != ZKVM_ZISK_PROGRAM_ELF { std::fs::write(ELF_PATH, ZKVM_ZISK_PROGRAM_ELF)?; } } @@ -111,7 +117,7 @@ fn write_elf_file() -> Result<(), Box> { if e.kind() == ErrorKind::NotFound { std::fs::write(ELF_PATH, ZKVM_ZISK_PROGRAM_ELF)?; } else { - return Err(e); + return Err(Box::new(e)); } } } From e115e38f6cf28e2f3cee7051ee6ed049ccac7f38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 17:11:33 -0300 Subject: [PATCH 47/99] stdout --- crates/l2/prover/src/backend/zisk.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 907c51980f5..a036d4d5b3a 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -79,6 +79,7 @@ pub fn prove( .args(static_args) .args(conditional_groth16_arg) .stdin(Stdio::inherit()) + .stdout(Stdio::inherit()) .stderr(Stdio::inherit()) .output()?; From f005126fc806e17494f621a24be15ec94d3b953a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 17:17:04 -0300 Subject: [PATCH 48/99] fix args of execute --- crates/l2/prover/src/backend/zisk.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index a036d4d5b3a..412f1092f01 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -24,14 +24,10 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { std::fs::write(INPUT_PATH, input_bytes.as_slice())?; let args = vec![ - "prove", "--elf", ELF_PATH, - "--input", + "--inputs", INPUT_PATH, - "--output-dir", - OUTPUT_PATH, - "--aggregation", ]; let output = Command::new("ziskemu") .args(args) @@ -79,7 +75,6 @@ pub fn prove( .args(static_args) .args(conditional_groth16_arg) .stdin(Stdio::inherit()) - .stdout(Stdio::inherit()) .stderr(Stdio::inherit()) .output()?; From b9850084225a29a464baeec0b40e4019813cc321 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 17:23:25 -0300 Subject: [PATCH 49/99] fix output path --- crates/l2/prover/src/backend/zisk.rs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 412f1092f01..2f9fba11aff 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -8,9 +8,10 @@ use guest_program::{ZKVM_ZISK_PROGRAM_ELF, input::ProgramInput, output::ProgramO const INPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_input.bin"); -const OUTPUT_PATH: &str = concat!( - env!("CARGO_MANIFEST_DIR"), - "/zisk_output/vadcop_final_proof.compressed.bin" +const OUTPUT_DIR_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_output"); +const OUTPUT_PROOF_PATH: &str = concat!( + OUTPUT_DIR_PATH + "/vadcop_final_proof.compressed.bin" ); const ELF_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zkvm-zisk-program"); @@ -23,12 +24,7 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { let input_bytes = rkyv::to_bytes::(&input)?; std::fs::write(INPUT_PATH, input_bytes.as_slice())?; - let args = vec![ - "--elf", - ELF_PATH, - "--inputs", - INPUT_PATH, - ]; + let args = vec!["--elf", ELF_PATH, "--inputs", INPUT_PATH]; let output = Command::new("ziskemu") .args(args) .stdin(Stdio::inherit()) @@ -62,7 +58,7 @@ pub fn prove( "--input", INPUT_PATH, "--output-dir", - OUTPUT_PATH, + OUTPUT_DIR_PATH, "--aggregation", ]; let conditional_groth16_arg = if let ProofFormat::Groth16 = format { @@ -86,7 +82,7 @@ pub fn prove( .into()); } - let proof_bytes = std::fs::read(OUTPUT_PATH)?; + let proof_bytes = std::fs::read(OUTPUT_PROOF_PATH)?; let output = ProveOutput(proof_bytes); Ok(output) } From eccf57a6ef05751c1b2104c7d353e7472dec5be7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 17:27:05 -0300 Subject: [PATCH 50/99] typo --- crates/l2/prover/src/backend/zisk.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 2f9fba11aff..5a014b234f4 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -9,10 +9,7 @@ use guest_program::{ZKVM_ZISK_PROGRAM_ELF, input::ProgramInput, output::ProgramO const INPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_input.bin"); const OUTPUT_DIR_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_output"); -const OUTPUT_PROOF_PATH: &str = concat!( - OUTPUT_DIR_PATH - "/vadcop_final_proof.compressed.bin" -); +const OUTPUT_PROOF_PATH: &str = concat!(OUTPUT_DIR_PATH, "/vadcop_final_proof.compressed.bin"); const ELF_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zkvm-zisk-program"); From db234eec7b1da30abcb23eada63cf73c6b3d475b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 18 Nov 2025 17:31:05 -0300 Subject: [PATCH 51/99] fix --- crates/l2/prover/src/backend/zisk.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 5a014b234f4..ab5424e0154 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -7,10 +7,7 @@ use ethrex_l2_common::prover::{BatchProof, ProofFormat}; use guest_program::{ZKVM_ZISK_PROGRAM_ELF, input::ProgramInput, output::ProgramOutput}; const INPUT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_input.bin"); - const OUTPUT_DIR_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zisk_output"); -const OUTPUT_PROOF_PATH: &str = concat!(OUTPUT_DIR_PATH, "/vadcop_final_proof.compressed.bin"); - const ELF_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/zkvm-zisk-program"); pub struct ProveOutput(pub Vec); @@ -79,7 +76,9 @@ pub fn prove( .into()); } - let proof_bytes = std::fs::read(OUTPUT_PROOF_PATH)?; + let proof_bytes = std::fs::read(format!( + "{OUTPUT_DIR_PATH}/vadcop_final_proof.compressed.bin" + ))?; let output = ProveOutput(proof_bytes); Ok(output) } From dbe3cbfe65486fc3284cd454a58bc01d17407bad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Wed, 19 Nov 2025 11:32:43 -0300 Subject: [PATCH 52/99] reset rustflags --- crates/l2/prover/src/guest_program/.cargo/config.toml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 crates/l2/prover/src/guest_program/.cargo/config.toml diff --git a/crates/l2/prover/src/guest_program/.cargo/config.toml b/crates/l2/prover/src/guest_program/.cargo/config.toml new file mode 100644 index 00000000000..a989f77e8bb --- /dev/null +++ b/crates/l2/prover/src/guest_program/.cargo/config.toml @@ -0,0 +1,3 @@ +[target.riscv64ima-zisk-zkvm-elf] +rustflags = [] + From 35f3a923488f5afc404a437972a3309ad2cc2952 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Wed, 19 Nov 2025 11:33:57 -0300 Subject: [PATCH 53/99] move override to workspace --- .cargo/config.toml | 4 ++++ crates/l2/prover/src/guest_program/.cargo/config.toml | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) delete mode 100644 crates/l2/prover/src/guest_program/.cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml index 934b5126f60..46bf38f6d5f 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -3,3 +3,7 @@ rustflags = [ "-Ctarget-cpu=x86-64-v3", "-Ctarget-feature=+avx2,+sse2,+ssse3,+sse4.1,+sse4.2,+bmi1,+lzcnt,+pclmulqdq", ] + +[target.riscv64ima-zisk-zkvm-elf] +rustflags = [] + diff --git a/crates/l2/prover/src/guest_program/.cargo/config.toml b/crates/l2/prover/src/guest_program/.cargo/config.toml deleted file mode 100644 index a989f77e8bb..00000000000 --- a/crates/l2/prover/src/guest_program/.cargo/config.toml +++ /dev/null @@ -1,3 +0,0 @@ -[target.riscv64ima-zisk-zkvm-elf] -rustflags = [] - From 3ab5ee72a0d54d7d77fd65f1936943801beaa939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Wed, 19 Nov 2025 11:34:48 -0300 Subject: [PATCH 54/99] remove config.toml --- .cargo/config.toml | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml deleted file mode 100644 index 46bf38f6d5f..00000000000 --- a/.cargo/config.toml +++ /dev/null @@ -1,9 +0,0 @@ -[target.x86_64-unknown-linux-gnu] -rustflags = [ - "-Ctarget-cpu=x86-64-v3", - "-Ctarget-feature=+avx2,+sse2,+ssse3,+sse4.1,+sse4.2,+bmi1,+lzcnt,+pclmulqdq", -] - -[target.riscv64ima-zisk-zkvm-elf] -rustflags = [] - From 6658a070384eb23f667d4f160222608cd016aabb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Wed, 19 Nov 2025 11:44:47 -0300 Subject: [PATCH 55/99] clean env flags --- crates/l2/prover/src/guest_program/build.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index 8e293984f06..7342186ce6e 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -109,6 +109,8 @@ fn build_zisk_program() { build_command .env("RUSTC", rustc_path("zisk")) + .env_remove("RUSTFLAGS") + .env_remove("CARGO_ENCODED_RUSTFLAGS"); .args([ "+zisk", "build", @@ -121,6 +123,8 @@ fn build_zisk_program() { .current_dir("./src/zisk"); setup_command .env("RUSTC", rustc_path("zisk")) + .env_remove("RUSTFLAGS") + .env_remove("CARGO_ENCODED_RUSTFLAGS"); .args([ "rom-setup", "-e", From 75512cfd1e7e60cc75264059d210d9b3d072c0c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Wed, 19 Nov 2025 11:46:45 -0300 Subject: [PATCH 56/99] fix --- crates/l2/prover/src/guest_program/build.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index 7342186ce6e..fb0497e1ac7 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -110,7 +110,7 @@ fn build_zisk_program() { build_command .env("RUSTC", rustc_path("zisk")) .env_remove("RUSTFLAGS") - .env_remove("CARGO_ENCODED_RUSTFLAGS"); + .env_remove("CARGO_ENCODED_RUSTFLAGS") .args([ "+zisk", "build", @@ -124,7 +124,7 @@ fn build_zisk_program() { setup_command .env("RUSTC", rustc_path("zisk")) .env_remove("RUSTFLAGS") - .env_remove("CARGO_ENCODED_RUSTFLAGS"); + .env_remove("CARGO_ENCODED_RUSTFLAGS") .args([ "rom-setup", "-e", From 8898620862edb3ddbe289b371795e9dc03138685 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Wed, 19 Nov 2025 13:19:48 -0300 Subject: [PATCH 57/99] Revert "remove config.toml" This reverts commit 3ab5ee72a0d54d7d77fd65f1936943801beaa939. --- .cargo/config.toml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 00000000000..46bf38f6d5f --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,9 @@ +[target.x86_64-unknown-linux-gnu] +rustflags = [ + "-Ctarget-cpu=x86-64-v3", + "-Ctarget-feature=+avx2,+sse2,+ssse3,+sse4.1,+sse4.2,+bmi1,+lzcnt,+pclmulqdq", +] + +[target.riscv64ima-zisk-zkvm-elf] +rustflags = [] + From 72db3bbd024938561b6df6d3f55fc56f8961e795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Wed, 19 Nov 2025 13:20:13 -0300 Subject: [PATCH 58/99] remove override --- .cargo/config.toml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 46bf38f6d5f..77a606c06be 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -4,6 +4,3 @@ rustflags = [ "-Ctarget-feature=+avx2,+sse2,+ssse3,+sse4.1,+sse4.2,+bmi1,+lzcnt,+pclmulqdq", ] -[target.riscv64ima-zisk-zkvm-elf] -rustflags = [] - From 6b5ab111b07845ce6dd0ddc4325879d1da0d3df1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Wed, 19 Nov 2025 18:12:03 -0300 Subject: [PATCH 59/99] clean all code --- Cargo.toml | 2 +- cmd/ethrex/Cargo.toml | 2 +- cmd/ethrex/l2/deployer.rs | 4 ++-- crates/blockchain/Cargo.toml | 2 +- crates/blockchain/error.rs | 2 +- crates/common/Cargo.toml | 9 +++++---- crates/common/common.rs | 2 +- crates/common/errors.rs | 2 +- crates/common/types/block.rs | 6 +++--- crates/common/types/transaction.rs | 10 +++++----- crates/l2/common/Cargo.toml | 11 ++++------- crates/l2/networking/rpc/utils.rs | 4 ++-- crates/l2/prover/Cargo.toml | 2 +- crates/l2/prover/src/guest_program/Cargo.toml | 3 +-- crates/l2/prover/src/guest_program/build.rs | 6 +++--- .../prover/src/guest_program/src/execution.rs | 19 ++++++++++--------- crates/l2/prover/src/guest_program/src/lib.rs | 12 ++++-------- crates/l2/tests/tests.rs | 10 ++++++---- crates/networking/rpc/utils.rs | 4 ++-- crates/vm/levm/Cargo.toml | 11 +++++------ crates/vm/levm/src/constants.rs | 7 ++++--- crates/vm/levm/src/utils.rs | 4 +++- 22 files changed, 66 insertions(+), 68 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 274f2e7175f..47596f10851 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,7 +55,7 @@ ethrex-config = { path = "./crates/common/config" } ethrex-p2p = { path = "./crates/networking/p2p" } ethrex-rpc = { path = "./crates/networking/rpc" } ethrex-storage = { path = "./crates/storage" } -ethrex-vm = { path = "./crates/vm", default-features = false } +ethrex-vm = { path = "./crates/vm" } ethrex-levm = { path = "./crates/vm/levm" } ethrex-trie = { path = "./crates/common/trie" } ethrex-rlp = { path = "./crates/common/rlp" } diff --git a/cmd/ethrex/Cargo.toml b/cmd/ethrex/Cargo.toml index 90632a12e87..4d9684b4e2a 100644 --- a/cmd/ethrex/Cargo.toml +++ b/cmd/ethrex/Cargo.toml @@ -80,8 +80,8 @@ debug = ["ethrex-vm/debug"] default = ["rocksdb", "c-kzg", "secp256k1", "metrics", "jemalloc", "dev"] dev = ["dep:ethrex-dev"] secp256k1 = [ - "ethrex-common/secp256k1", "ethrex-vm/secp256k1", + "ethrex-common/secp256k1", "ethrex-blockchain/secp256k1", ] c-kzg = [ diff --git a/cmd/ethrex/l2/deployer.rs b/cmd/ethrex/l2/deployer.rs index 8bf30c6e4e2..022ccb8f7ae 100644 --- a/cmd/ethrex/l2/deployer.rs +++ b/cmd/ethrex/l2/deployer.rs @@ -842,8 +842,8 @@ async fn initialize_contracts( info!("Risc0 vk read"); - let deployer_address = - get_address_from_secret_key(&opts.private_key).map_err(DeployerError::InternalError)?; + let deployer_address = get_address_from_secret_key(&opts.private_key.secret_bytes()) + .map_err(DeployerError::InternalError)?; info!("Initializing OnChainProposer"); diff --git a/crates/blockchain/Cargo.toml b/crates/blockchain/Cargo.toml index a37f167e689..1124a2ee5d7 100644 --- a/crates/blockchain/Cargo.toml +++ b/crates/blockchain/Cargo.toml @@ -13,7 +13,7 @@ ethrex-common = { workspace = true, default-features = false } ethrex-crypto.workspace = true ethrex-storage.workspace = true ethrex-trie.workspace = true -ethrex-vm = { workspace = true, default-features = false } +ethrex-vm.workspace = true ethrex-metrics = { path = "./metrics", default-features = false } thiserror.workspace = true diff --git a/crates/blockchain/error.rs b/crates/blockchain/error.rs index ec623923156..03eaf89b294 100644 --- a/crates/blockchain/error.rs +++ b/crates/blockchain/error.rs @@ -139,7 +139,7 @@ pub enum MempoolError { #[error("Requested pooled transaction was not received")] RequestedPooledTxNotFound, #[error("Transaction sender is invalid {0}")] - InvalidTxSender(#[from] ethrex_common::Error), + InvalidTxSender(#[from] ethrex_common::EcdsaError), #[error("Attempted to replace a pooled transaction with an underpriced transaction")] UnderpricedReplacement, } diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index 68542e821e0..87f02bb2d2d 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -31,9 +31,9 @@ rayon.workspace = true url.workspace = true rkyv.workspace = true rustc-hash.workspace = true +k256.workspace = true secp256k1 = { workspace = true, optional = true } -k256 = { workspace = true, optional = true } [dev-dependencies] hex-literal.workspace = true @@ -42,9 +42,10 @@ hex-literal.workspace = true default = ["secp256k1"] c-kzg = ["ethrex-crypto/c-kzg"] secp256k1 = ["dep:secp256k1"] -risc0 = ["ethrex-crypto/risc0", "dep:k256"] -zisk = ["dep:k256"] -sp1 = ["dep:k256"] + +risc0 = ["ethrex-crypto/risc0"] +sp1 = [] +zisk = [] [lib] path = "./common.rs" diff --git a/crates/common/common.rs b/crates/common/common.rs index 9d6b550f293..fa527eb1975 100644 --- a/crates/common/common.rs +++ b/crates/common/common.rs @@ -13,4 +13,4 @@ pub mod rkyv_utils; pub mod tracing; pub mod utils; -pub use errors::Error; +pub use errors::EcdsaError; diff --git a/crates/common/errors.rs b/crates/common/errors.rs index e3a9abad106..c49bb503db4 100644 --- a/crates/common/errors.rs +++ b/crates/common/errors.rs @@ -1,5 +1,5 @@ #[derive(thiserror::Error, Debug)] -pub enum Error { +pub enum EcdsaError { #[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] #[error("secp256k1 error: {0}")] Secp256k1(#[from] secp256k1::Error), diff --git a/crates/common/types/block.rs b/crates/common/types/block.rs index 2ffa7ceb49b..7d2c79eade3 100644 --- a/crates/common/types/block.rs +++ b/crates/common/types/block.rs @@ -2,7 +2,7 @@ use super::{ BASE_FEE_MAX_CHANGE_DENOMINATOR, ChainConfig, Fork, ForkBlobSchedule, GAS_LIMIT_ADJUSTMENT_FACTOR, GAS_LIMIT_MINIMUM, INITIAL_BASE_FEE, }; -use crate::errors::Error; +use crate::errors::EcdsaError; use crate::utils::keccak; use crate::{ Address, H256, U256, @@ -251,13 +251,13 @@ impl BlockBody { } } - pub fn get_transactions_with_sender(&self) -> Result, Error> { + pub fn get_transactions_with_sender(&self) -> Result, EcdsaError> { // Recovering addresses is computationally expensive. // Computing them in parallel greatly reduces execution time. self.transactions .par_iter() .map(|tx| Ok((tx, tx.sender()?))) - .collect::, Error>>() + .collect::, EcdsaError>>() } } diff --git a/crates/common/types/transaction.rs b/crates/common/types/transaction.rs index a1c44309614..78e19a05524 100644 --- a/crates/common/types/transaction.rs +++ b/crates/common/types/transaction.rs @@ -1,6 +1,6 @@ use std::{cmp::min, fmt::Display}; -use crate::{errors::Error, utils::keccak}; +use crate::{errors::EcdsaError, utils::keccak}; use bytes::Bytes; use ethereum_types::{Address, H256, Signature, U256}; use ethrex_crypto::keccak::keccak_hash; @@ -1046,7 +1046,7 @@ impl RLPDecode for FeeTokenTransaction { } impl Transaction { - pub fn sender(&self) -> Result { + pub fn sender(&self) -> Result { match self { Transaction::LegacyTransaction(tx) => { let signature_y_parity = match self.chain_id() { @@ -1410,10 +1410,10 @@ impl Transaction { pub fn recover_address_from_message( signature: Signature, message: &Bytes, -) -> Result { +) -> Result { // Hash message let payload = keccak(message); - Ok(recover_address(signature, payload)?) + recover_address(signature, payload).map_err(EcdsaError::from) } #[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] @@ -1422,7 +1422,7 @@ pub fn recover_address(signature: Signature, payload: H256) -> Result for RpcErr { } } -impl From for RpcErr { - fn from(error: ethrex_common::Error) -> Self { +impl From for RpcErr { + fn from(error: ethrex_common::EcdsaError) -> Self { Self::L1RpcErr(error.into()) } } diff --git a/crates/l2/prover/Cargo.toml b/crates/l2/prover/Cargo.toml index 52cce67b19a..c67efd64d38 100644 --- a/crates/l2/prover/Cargo.toml +++ b/crates/l2/prover/Cargo.toml @@ -62,7 +62,7 @@ risc0 = [ "ethrex-common/risc0", ] sp1 = ["guest_program/sp1", "dep:sp1-sdk", "dep:sp1-prover"] -zisk = ["guest_program/zisk-guest"] +zisk = ["guest_program/zisk"] profiling = ["sp1-sdk?/profiling"] gpu = ["risc0-zkvm?/cuda", "sp1-sdk?/cuda"] diff --git a/crates/l2/prover/src/guest_program/Cargo.toml b/crates/l2/prover/src/guest_program/Cargo.toml index 158232c3105..87e4446792c 100644 --- a/crates/l2/prover/src/guest_program/Cargo.toml +++ b/crates/l2/prover/src/guest_program/Cargo.toml @@ -36,7 +36,6 @@ methods = ["src/risc0"] default = ["secp256k1"] risc0 = ["dep:risc0-build", "dep:risc0-zkvm"] sp1 = ["dep:sp1-build", "dep:sp1-sdk"] -zisk-guest = [] zisk = [ "ethrex-common/zisk", "ethrex-blockchain/zisk", @@ -52,7 +51,7 @@ secp256k1 = [ "ethrex-l2-common/secp256k1", ] -# When this feature is enabled, the cycles used in the code inside the +# When this feature is enabled, the cycles used in the code inside the # report_cycles! macro will be reported to stdout when running inside SP1 zkVM. sp1-cycles = [] diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index fb0497e1ac7..b8bef81e4c7 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -7,7 +7,7 @@ fn main() { #[cfg(all(not(clippy), feature = "sp1"))] build_sp1_program(); - #[cfg(all(not(clippy), feature = "zisk-guest"))] + #[cfg(all(not(clippy), feature = "zisk"))] build_zisk_program(); } @@ -102,7 +102,7 @@ fn build_sp1_program() { .expect("could not write SP1 vk-u32 to file"); } -#[cfg(all(not(clippy), feature = "zisk-guest"))] +#[cfg(all(not(clippy), feature = "zisk"))] fn build_zisk_program() { let mut build_command = std::process::Command::new("cargo"); let mut setup_command = std::process::Command::new("cargo-zisk"); @@ -161,7 +161,7 @@ fn build_zisk_program() { } } -#[cfg(all(not(clippy), feature = "zisk-guest"))] +#[cfg(all(not(clippy), feature = "zisk"))] /// Returns the path to `rustc` executable of the given toolchain. /// /// Taken from https://github.com/eth-act/ere/blob/master/crates/compile-utils/src/rust.rs#L166 diff --git a/crates/l2/prover/src/guest_program/src/execution.rs b/crates/l2/prover/src/guest_program/src/execution.rs index 05d840d3e9a..fb65d115124 100644 --- a/crates/l2/prover/src/guest_program/src/execution.rs +++ b/crates/l2/prover/src/guest_program/src/execution.rs @@ -15,13 +15,17 @@ use ethrex_common::types::{ }; use ethrex_common::{Address, U256}; use ethrex_common::{H256, types::Block}; -#[cfg(feature = "l2")] -use ethrex_l2_common::l1_messages::L1Message; use ethrex_l2_common::privileged_transactions::get_block_privileged_transactions; use ethrex_rlp::encode::RLPEncode; use ethrex_vm::{Evm, EvmError, GuestProgramStateWrapper, VmDatabase}; +<<<<<<< Updated upstream use std::collections::{BTreeMap, HashMap}; +======= +use std::collections::HashMap; +>>>>>>> Stashed changes +#[cfg(not(feature = "l2"))] +use ethrex_common::types::ELASTICITY_MULTIPLIER; #[cfg(feature = "l2")] use ethrex_common::types::{ BlobsBundleError, Commitment, PrivilegedL2Transaction, Proof, Receipt, blob_from_bytes, @@ -29,10 +33,8 @@ use ethrex_common::types::{ }; #[cfg(feature = "l2")] use ethrex_l2_common::{ - l1_messages::get_block_l1_messages, - privileged_transactions::{ - PrivilegedTransactionError, compute_privileged_transactions_hash, - }, + l1_messages::{L1Message, get_block_l1_messages}, + privileged_transactions::{PrivilegedTransactionError, compute_privileged_transactions_hash}, }; #[derive(Debug, thiserror::Error)] @@ -333,7 +335,6 @@ pub fn stateless_validation_l2( }) } -// receipts, account_updates, and last_block_header are only used in L2 #[cfg_attr(not(feature = "l2"), expect(dead_code))] struct StatelessResult { receipts: Vec>, @@ -395,7 +396,7 @@ fn execute_stateless( let mut acc_receipts = Vec::new(); let mut non_privileged_count = 0; - for (_i, block) in blocks.iter().enumerate() { + for (i, block) in blocks.iter().enumerate() { // Validate the block validate_block( block, @@ -410,7 +411,7 @@ fn execute_stateless( let mut vm = Evm::new_for_l2( wrapped_db.clone(), fee_configs - .get(_i) + .get(i) .cloned() .ok_or_else(|| StatelessExecutionError::FeeConfigNotFound)?, )?; diff --git a/crates/l2/prover/src/guest_program/src/lib.rs b/crates/l2/prover/src/guest_program/src/lib.rs index fbd07a71feb..4716a66c394 100644 --- a/crates/l2/prover/src/guest_program/src/lib.rs +++ b/crates/l2/prover/src/guest_program/src/lib.rs @@ -3,26 +3,22 @@ pub mod input; pub mod methods; pub mod output; +// When running clippy, the ELFs are not built, so we define them empty. + #[cfg(all(not(clippy), feature = "sp1"))] pub static ZKVM_SP1_PROGRAM_ELF: &[u8] = include_bytes!("./sp1/out/riscv32im-succinct-zkvm-elf"); -// If we're running clippy, the file isn't generated. -// To avoid compilation errors, we override it with an empty slice. #[cfg(any(clippy, not(feature = "sp1")))] pub const ZKVM_SP1_PROGRAM_ELF: &[u8] = &[]; #[cfg(all(not(clippy), feature = "risc0"))] pub static ZKVM_RISC0_PROGRAM_VK: &str = include_str!(concat!("./risc0/out/riscv32im-risc0-vk")); -// If we're running clippy, the file isn't generated. -// To avoid compilation errors, we override it with an empty slice. #[cfg(any(clippy, not(feature = "risc0")))] pub const ZKVM_RISC0_PROGRAM_VK: &str = ""; -#[cfg(all(not(clippy), feature = "zisk-guest"))] +#[cfg(all(not(clippy), feature = "zisk"))] pub static ZKVM_ZISK_PROGRAM_ELF: &[u8] = include_bytes!("./zisk/target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program"); -// If we're running clippy, the file isn't generated. -// To avoid compilation errors, we override it with an empty slice. -#[cfg(any(clippy, not(feature = "zisk-guest")))] +#[cfg(any(clippy, not(feature = "zisk")))] pub const ZKVM_ZISK_PROGRAM_ELF: &[u8] = &[]; /// Report cycles used in a code block when running inside SP1 zkVM. diff --git a/crates/l2/tests/tests.rs b/crates/l2/tests/tests.rs index 28e76574fdc..d840d1d9706 100644 --- a/crates/l2/tests/tests.rs +++ b/crates/l2/tests/tests.rs @@ -909,8 +909,8 @@ async fn test_forced_withdrawal( rich_wallet_private_key: SecretKey, ) -> Result { println!("forced_withdrawal: Testing forced withdrawal"); - let rich_address = - get_address_from_secret_key(&rich_wallet_private_key).expect("Failed to get address"); + let rich_address = get_address_from_secret_key(&rich_wallet_private_key.secret_bytes()) + .expect("Failed to get address"); let l1_initial_balance = l1_client .get_balance(rich_address, BlockIdentifier::Tag(BlockTag::Latest)) .await?; @@ -2009,7 +2009,8 @@ async fn test_fee_token( recipient_private_key: SecretKey, ) -> Result { let test = "test_fee_token"; - let rich_wallet_address = get_address_from_secret_key(&rich_wallet_private_key).unwrap(); + let rich_wallet_address = + get_address_from_secret_key(&rich_wallet_private_key.secret_bytes()).unwrap(); let l1_client = l1_client(); println!("{test}: Rich wallet address: {rich_wallet_address:#x}"); @@ -2084,7 +2085,8 @@ async fn test_fee_token( println!("{test}: Sender balance before transfer: {sender_balance_before_transfer}"); println!("{test}: Sender fee balance before transfer: {sender_token_balance_before_transfer}"); - let recipient_address = get_address_from_secret_key(&recipient_private_key).unwrap(); + let recipient_address = + get_address_from_secret_key(&recipient_private_key.secret_bytes()).unwrap(); let recipient_balance_before_transfer = l2_client .get_balance(recipient_address, BlockIdentifier::Tag(BlockTag::Latest)) .await?; diff --git a/crates/networking/rpc/utils.rs b/crates/networking/rpc/utils.rs index ab362232459..726a03c7cc1 100644 --- a/crates/networking/rpc/utils.rs +++ b/crates/networking/rpc/utils.rs @@ -161,8 +161,8 @@ impl From for RpcErr { } } -impl From for RpcErr { - fn from(err: ethrex_common::Error) -> Self { +impl From for RpcErr { + fn from(err: ethrex_common::EcdsaError) -> Self { Self::Internal(format!("Cryptography error: {err}")) } } diff --git a/crates/vm/levm/Cargo.toml b/crates/vm/levm/Cargo.toml index 8c0ce9df318..0392ca7cd98 100644 --- a/crates/vm/levm/Cargo.toml +++ b/crates/vm/levm/Cargo.toml @@ -40,10 +40,9 @@ ark-bn254 = "0.5.0" ark-ec = "0.5.0" ark-ff = { version = "0.5.0", features = ["asm"] } strum = { version = "0.27.1", features = ["derive"] } +k256.workspace = true substrate-bn = { version = "0.6.0", optional = true } - secp256k1 = { workspace = true, optional = true } -k256 = { workspace = true, optional = true } bitvec = { version = "1.0.1", features = ["alloc"] } @@ -55,14 +54,14 @@ colored = "2.1.0" spinoff = "0.8.0" [features] -default = ["secp256k1", "dep:k256"] +default = ["secp256k1"] secp256k1 = ["dep:secp256k1"] c-kzg = ["ethrex-common/c-kzg", "ethrex-crypto/c-kzg"] ethereum_foundation_tests = [] debug = [] -sp1 = ["dep:substrate-bn", "dep:k256"] -risc0 = ["dep:substrate-bn", "dep:k256", "c-kzg"] -zisk = ["dep:substrate-bn", "dep:k256"] +sp1 = ["dep:substrate-bn"] +risc0 = ["dep:substrate-bn", "c-kzg"] +zisk = ["dep:substrate-bn"] [lints.rust] unsafe_code = "warn" diff --git a/crates/vm/levm/src/constants.rs b/crates/vm/levm/src/constants.rs index 037f3abfadc..7250bf4a8f9 100644 --- a/crates/vm/levm/src/constants.rs +++ b/crates/vm/levm/src/constants.rs @@ -4,6 +4,7 @@ use p256::{ FieldElement as P256FieldElement, NistP256, elliptic_curve::{Curve, bigint::U256 as P256Uint, ff::PrimeField}, }; +use std::sync::LazyLock; pub const WORD_SIZE_IN_BYTES_USIZE: usize = 32; pub const WORD_SIZE_IN_BYTES_U64: u64 = 32; @@ -71,10 +72,10 @@ pub const VALID_BLOB_PREFIXES: [u8; 2] = [0x01, 0x02]; pub const LAST_AVAILABLE_BLOCK_LIMIT: U256 = U256([256, 0, 0, 0]); // EIP7702 - EOA Load Code -pub static SECP256K1_ORDER: std::sync::LazyLock = - std::sync::LazyLock::new(|| U256::from_big_endian(&k256::Secp256k1::ORDER.to_be_bytes())); +pub static SECP256K1_ORDER: LazyLock = + LazyLock::new(|| U256::from_big_endian(&k256::Secp256k1::ORDER.to_be_bytes())); pub static SECP256K1_ORDER_OVER2: std::sync::LazyLock = - std::sync::LazyLock::new(|| *SECP256K1_ORDER / U256::from(2)); + LazyLock::new(|| *SECP256K1_ORDER / U256::from(2)); pub const MAGIC: u8 = 0x05; pub const SET_CODE_DELEGATION_BYTES: [u8; 3] = [0xef, 0x01, 0x00]; // Set the code of authority to be 0xef0100 || address. This is a delegation designation. diff --git a/crates/vm/levm/src/utils.rs b/crates/vm/levm/src/utils.rs index 8591629ea86..10d8c6a0954 100644 --- a/crates/vm/levm/src/utils.rs +++ b/crates/vm/levm/src/utils.rs @@ -292,7 +292,9 @@ pub fn eip7702_recover_address( return Ok(None); }; - let Ok(authority) = k256::ecdsa::VerifyingKey::recover_from_digest(digest, &signature, recovery_id) else { + let Ok(authority) = + k256::ecdsa::VerifyingKey::recover_from_digest(digest, &signature, recovery_id) + else { return Ok(None); }; From 58f244d7347fbd95c39e0e005459cc73095a2421 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Wed, 19 Nov 2025 18:12:31 -0300 Subject: [PATCH 60/99] fix conflict --- crates/l2/prover/src/guest_program/src/execution.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/crates/l2/prover/src/guest_program/src/execution.rs b/crates/l2/prover/src/guest_program/src/execution.rs index fb65d115124..1a09989f06e 100644 --- a/crates/l2/prover/src/guest_program/src/execution.rs +++ b/crates/l2/prover/src/guest_program/src/execution.rs @@ -18,11 +18,7 @@ use ethrex_common::{H256, types::Block}; use ethrex_l2_common::privileged_transactions::get_block_privileged_transactions; use ethrex_rlp::encode::RLPEncode; use ethrex_vm::{Evm, EvmError, GuestProgramStateWrapper, VmDatabase}; -<<<<<<< Updated upstream use std::collections::{BTreeMap, HashMap}; -======= -use std::collections::HashMap; ->>>>>>> Stashed changes #[cfg(not(feature = "l2"))] use ethrex_common::types::ELASTICITY_MULTIPLIER; From 603bc6d7b8437d807b0c60dfcdcf43ec118bd702 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Wed, 19 Nov 2025 18:44:02 -0300 Subject: [PATCH 61/99] fix secp256k1 feature --- Cargo.toml | 2 +- .../src/guest_program/src/zisk/Cargo.lock | 23 ++++++++++++++++++- crates/vm/levm/src/precompiles.rs | 14 +++++++++-- crates/vm/levm/src/utils.rs | 16 ++++++++++--- 4 files changed, 48 insertions(+), 7 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 47596f10851..274f2e7175f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,7 +55,7 @@ ethrex-config = { path = "./crates/common/config" } ethrex-p2p = { path = "./crates/networking/p2p" } ethrex-rpc = { path = "./crates/networking/rpc" } ethrex-storage = { path = "./crates/storage" } -ethrex-vm = { path = "./crates/vm" } +ethrex-vm = { path = "./crates/vm", default-features = false } ethrex-levm = { path = "./crates/vm/levm" } ethrex-trie = { path = "./crates/common/trie" } ethrex-rlp = { path = "./crates/common/rlp" } diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock index 4ed6c19d781..2bf0210b560 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock @@ -1012,6 +1012,7 @@ dependencies = [ "ethrex-rlp", "ethrex-trie", "hex", + "lru", "qfilter", "rayon", "rustc-hash", @@ -1141,6 +1142,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "form_urlencoded" version = "1.2.2" @@ -1274,7 +1281,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", - "foldhash", + "foldhash 0.1.5", ] [[package]] @@ -1282,6 +1289,11 @@ name = "hashbrown" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] [[package]] name = "heck" @@ -1662,6 +1674,15 @@ version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +[[package]] +name = "lru" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96051b46fc183dc9cd4a223960ef37b9af631b55191852a8274bfef064cda20f" +dependencies = [ + "hashbrown 0.16.0", +] + [[package]] name = "malachite" version = "0.6.1" diff --git a/crates/vm/levm/src/precompiles.rs b/crates/vm/levm/src/precompiles.rs index 495c402fd73..fb667addeee 100644 --- a/crates/vm/levm/src/precompiles.rs +++ b/crates/vm/levm/src/precompiles.rs @@ -374,7 +374,12 @@ pub(crate) fn fill_with_zeros(calldata: &Bytes, target_len: usize) -> Bytes { padded_calldata.into() } -#[cfg(all(not(feature = "sp1"), not(feature = "risc0"), not(feature = "zisk")))] +#[cfg(all( + not(feature = "sp1"), + not(feature = "risc0"), + not(feature = "zisk"), + feature = "secp256k1" +))] pub fn ecrecover(calldata: &Bytes, gas_remaining: &mut u64, _fork: Fork) -> Result { use crate::gas_cost::ECRECOVER_COST; @@ -440,7 +445,12 @@ pub fn ecrecover(calldata: &Bytes, gas_remaining: &mut u64, _fork: Fork) -> Resu /// [64..128): r||s (64 bytes) /// /// Returns the recovered address. -#[cfg(any(feature = "sp1", feature = "risc0", feature = "zisk"))] +#[cfg(any( + feature = "sp1", + feature = "risc0", + feature = "zisk", + not(feature = "secp256k1"), +))] pub fn ecrecover(calldata: &Bytes, gas_remaining: &mut u64, _fork: Fork) -> Result { use ethrex_common::utils::keccak; use k256::ecdsa::{RecoveryId, Signature, VerifyingKey}; diff --git a/crates/vm/levm/src/utils.rs b/crates/vm/levm/src/utils.rs index 10d8c6a0954..68679fd901f 100644 --- a/crates/vm/levm/src/utils.rs +++ b/crates/vm/levm/src/utils.rs @@ -23,7 +23,6 @@ use ethrex_common::{ utils::{keccak, u256_to_big_endian}, }; use ethrex_common::{types::TxKind, utils::u256_from_big_endian_const}; -use ethrex_crypto::keccak::keccak_hash; use ethrex_rlp; use std::collections::HashMap; pub type Storage = HashMap; @@ -252,7 +251,12 @@ pub fn get_authorized_address_from_code(code: &Bytes) -> Result Result, VMError> { @@ -312,10 +316,16 @@ pub fn eip7702_recover_address( Ok(Some(Address::from_slice(&authority_address_bytes))) } -#[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] +#[cfg(all( + not(feature = "zisk"), + not(feature = "risc0"), + not(feature = "sp1"), + feature = "secp256k1" +))] pub fn eip7702_recover_address( auth_tuple: &AuthorizationTuple, ) -> Result, VMError> { + use ethrex_crypto::keccak::keccak_hash; use ethrex_rlp::encode::RLPEncode; if auth_tuple.s_signature > *SECP256K1_ORDER_OVER2 || U256::zero() >= auth_tuple.s_signature { From 3116fd9824c07ecff1206c3eb5e1787a0de2cc27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Thu, 20 Nov 2025 11:49:55 -0300 Subject: [PATCH 62/99] fix recursive compilation --- crates/l2/common/src/utils.rs | 14 +- .../src/guest_program/src/sp1/Cargo.lock | 2 + .../src/guest_program/src/zisk/Cargo.lock | 209 ++++++------------ .../src/guest_program/src/zisk/Cargo.toml | 14 +- 4 files changed, 94 insertions(+), 145 deletions(-) diff --git a/crates/l2/common/src/utils.rs b/crates/l2/common/src/utils.rs index b8940a70de5..a7916331de7 100644 --- a/crates/l2/common/src/utils.rs +++ b/crates/l2/common/src/utils.rs @@ -1,4 +1,9 @@ -#[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] +#[cfg(all( + not(feature = "zisk"), + not(feature = "risc0"), + not(feature = "sp1"), + feature = "secp256k1" +))] pub fn get_address_from_secret_key( secret_key_bytes: &[u8], ) -> Result { @@ -21,7 +26,12 @@ pub fn get_address_from_secret_key( Ok(ethrex_common::Address::from(address_bytes)) } -#[cfg(any(feature = "zisk", feature = "risc0", feature = "sp1"))] +#[cfg(any( + feature = "zisk", + feature = "risc0", + feature = "sp1", + not(feature = "secp256k1") +))] pub fn get_address_from_secret_key( secret_key_bytes: &[u8], ) -> Result { diff --git a/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock b/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock index 4e065f12684..3d7e7ccd713 100644 --- a/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock @@ -996,6 +996,7 @@ dependencies = [ "ethrex-trie", "ethrex-vm", "hex", + "k256", "lambdaworks-crypto", "rkyv", "secp256k1", @@ -1031,6 +1032,7 @@ dependencies = [ "serde", "serde_json", "sha2", + "sha3", "strum", "substrate-bn", "thiserror", diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock index 2bf0210b560..36be16b7eb4 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock @@ -81,22 +81,22 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.60.2", + "windows-sys", ] [[package]] name = "anstyle-wincon" -version = "3.0.10" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.60.2", + "windows-sys", ] [[package]] @@ -164,7 +164,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -177,7 +177,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -216,7 +216,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -249,7 +249,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -379,7 +379,7 @@ checksum = "89385e82b5d1821d2219e0b095efa2cc1f246cbf99080f3be46a1a85c0d392d9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -396,9 +396,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" dependencies = [ "serde", ] @@ -411,9 +411,9 @@ checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" [[package]] name = "cc" -version = "1.2.44" +version = "1.2.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37521ac7aabe3d13122dc382493e20c9416f299d2ccd5b3a5340a2570cdeb0f3" +checksum = "b97463e1064cb1b1c1384ad0a0b9c8abd0988e2a91f52606c80ef14aadb63e36" dependencies = [ "find-msvc-tools", "shlex", @@ -439,9 +439,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.51" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" +checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" dependencies = [ "clap_builder", "clap_derive", @@ -449,9 +449,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.51" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" +checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" dependencies = [ "anstream", "anstyle", @@ -468,7 +468,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -653,7 +653,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -664,7 +664,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -718,7 +718,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", "unicode-xid", ] @@ -742,7 +742,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -774,7 +774,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -820,7 +820,7 @@ checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -1114,9 +1114,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" [[package]] name = "fixed-hash" @@ -1177,7 +1177,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -1483,7 +1483,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -1761,7 +1761,7 @@ checksum = "4568f25ccbd45ab5d5603dc34318c1ec56b117531781260002151b8530a9f931" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -1770,7 +1770,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.61.2", + "windows-sys", ] [[package]] @@ -1988,7 +1988,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2115,7 +2115,7 @@ checksum = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2129,9 +2129,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.41" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -2218,7 +2218,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2293,7 +2293,7 @@ checksum = "bd83f5f173ff41e00337d97f6572e416d022ef8a19f371817259ae960324c482" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2362,9 +2362,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.0.5" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1317c3bf3e7df961da95b0a56a172a02abead31276215a0497241a7624b487ce" +checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" dependencies = [ "dyn-clone", "ref-cast", @@ -2422,7 +2422,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2440,9 +2440,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.15.1" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" +checksum = "10574371d41b0d9b2cff89418eda27da52bcaff2cc8741db26382a77c29131f1" dependencies = [ "base64", "chrono", @@ -2450,7 +2450,7 @@ dependencies = [ "indexmap 1.9.3", "indexmap 2.12.0", "schemars 0.9.0", - "schemars 1.0.5", + "schemars 1.1.0", "serde_core", "serde_json", "serde_with_macros", @@ -2459,14 +2459,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.15.1" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955" +checksum = "08a72d8216842fdd57820dc78d840bef99248e35fb2554ff923319e60f2d686b" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2540,9 +2540,9 @@ checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" [[package]] name = "sp1-lib" -version = "5.2.2" +version = "5.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce8ad0f153443d09d398eccb650a0b2dcbf829470e394e4bf60ec4379c7af93" +checksum = "eb1a9935d58cb1dcd757a1b10d727090f5b718f1f03b512d48f0c1952e6ead00" dependencies = [ "bincode", "serde", @@ -2551,9 +2551,9 @@ dependencies = [ [[package]] name = "sp1-primitives" -version = "5.2.2" +version = "5.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0244dee3a7a0f88cf71c3edf518f4fc97794ae870a107cbe7c810ac3fbf879cb" +checksum = "a7d2a6187e394c30097ea7a975a4832f172918690dc89a979f0fad67422d3a8b" dependencies = [ "bincode", "blake3", @@ -2635,7 +2635,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2670,9 +2670,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.108" +version = "2.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" +checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" dependencies = [ "proc-macro2", "quote", @@ -2687,7 +2687,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2713,7 +2713,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -2863,7 +2863,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -3035,7 +3035,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", "wasm-bindgen-shared", ] @@ -3064,7 +3064,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys", ] [[package]] @@ -3088,7 +3088,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -3099,7 +3099,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -3126,15 +3126,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets", -] - [[package]] name = "windows-sys" version = "0.61.2" @@ -3144,71 +3135,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - -[[package]] -name = "windows_i686_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - [[package]] name = "winnow" version = "0.7.13" @@ -3258,7 +3184,7 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", "synstructure", ] @@ -3279,7 +3205,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -3299,7 +3225,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", "synstructure", ] @@ -3320,7 +3246,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -3353,7 +3279,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.110", ] [[package]] @@ -3376,6 +3302,9 @@ dependencies = [ name = "zkvm-zisk-program" version = "0.1.0" dependencies = [ + "ethrex-blockchain", + "ethrex-common", + "ethrex-vm", "guest_program", "rkyv", "sha2", diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml index 9f8059db5e4..7ff6a966b69 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml @@ -7,13 +7,21 @@ edition = "2024" [dependencies] ziskos = { git = "https://github.com/0xPolygonHermez/zisk.git", tag = "v0.13.0" } -guest_program = { path = "../../", default-features = false, features = [ - "zisk", -] } sha2 = "0.10.9" rkyv = { version = "0.8.10", features = ["std", "unaligned"] } +guest_program = { path = "../../", default-features = false } +ethrex-vm = { path = "../../../../../../vm", default-features = false, features = [ + "zisk", +] } +ethrex-common = { path = "../../../../../../common", default-features = false, features = [ + "zisk", +] } +ethrex-blockchain = { path = "../../../../../../blockchain", default-features = false, features = [ + "zisk", +] } + [patch.crates-io] sha2 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", branch = "zisk-patch-sha2/v0.10.9" } sha3 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", branch = "zisk-patch-sha3/v0.10.8" } From db7ef0849a60cd7b7ae752a2570a9b7851ff7433 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Thu, 20 Nov 2025 13:18:25 -0300 Subject: [PATCH 63/99] temp: verify proofs after proving --- crates/l2/prover/src/backend/zisk.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index ab5424e0154..93ce2760571 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -54,6 +54,7 @@ pub fn prove( "--output-dir", OUTPUT_DIR_PATH, "--aggregation", + "--verify-proofs", ]; let conditional_groth16_arg = if let ProofFormat::Groth16 = format { vec!["--final-snark"] From 5af5ff63b872a876fef80b39b6dc20a19dc6e434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Thu, 20 Nov 2025 13:50:09 -0300 Subject: [PATCH 64/99] Revert "temp: verify proofs after proving" This reverts commit db7ef0849a60cd7b7ae752a2570a9b7851ff7433. --- crates/l2/prover/src/backend/zisk.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 93ce2760571..ab5424e0154 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -54,7 +54,6 @@ pub fn prove( "--output-dir", OUTPUT_DIR_PATH, "--aggregation", - "--verify-proofs", ]; let conditional_groth16_arg = if let ProofFormat::Groth16 = format { vec!["--final-snark"] From 50937ebdab91d6f24d2e1e48cdacca897e00d8d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Thu, 20 Nov 2025 13:54:53 -0300 Subject: [PATCH 65/99] Update crates/l2/prover/src/backend/zisk.rs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- crates/l2/prover/src/backend/zisk.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index ab5424e0154..49c5140dd3e 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -84,14 +84,14 @@ pub fn prove( } pub fn verify(_output: &ProgramOutput) -> Result<(), Box> { - Err("verify is not implemented for ZisK backend".into()) + unimplemented!("verify is not implemented for ZisK backend") } pub fn to_batch_proof( proof: ProveOutput, format: ProofFormat, ) -> Result> { - Err("to_batch_proof is not implemented for ZisK backend".into()) + unimplemented!("to_batch_proof is not implemented for ZisK backend") } fn write_elf_file() -> Result<(), Box> { From 4d1f64dc03a42718f5645925d10ce8bedae1fff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Thu, 20 Nov 2025 13:55:03 -0300 Subject: [PATCH 66/99] Update crates/l2/prover/src/backend/zisk.rs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- crates/l2/prover/src/backend/zisk.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 49c5140dd3e..e8a29a1424a 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -109,5 +109,5 @@ fn write_elf_file() -> Result<(), Box> { } } } - return Ok(()); + Ok(()) } From a1eebb0188bc7056648678041e3fc6c83a996d08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Thu, 20 Nov 2025 15:34:16 -0300 Subject: [PATCH 67/99] fix --- crates/l2/tee/quote-gen/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/tee/quote-gen/src/main.rs b/crates/l2/tee/quote-gen/src/main.rs index ece7155f3a6..34f2f95015d 100644 --- a/crates/l2/tee/quote-gen/src/main.rs +++ b/crates/l2/tee/quote-gen/src/main.rs @@ -44,7 +44,7 @@ fn calculate_transition(input: ProgramInput) -> Result, String> { } fn get_quote(private_key: &SecretKey) -> Result { - let address = get_address_from_secret_key(private_key) + let address = get_address_from_secret_key(private_key.secret_bytes()) .map_err(|e| format!("Error deriving address: {e}"))?; let mut digest_slice = [0u8; 64]; digest_slice From caa4055c490cede775ce28664e7578513077d81f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Thu, 20 Nov 2025 16:07:47 -0300 Subject: [PATCH 68/99] fix --- crates/l2/tee/quote-gen/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/tee/quote-gen/src/main.rs b/crates/l2/tee/quote-gen/src/main.rs index 34f2f95015d..8c9567d2134 100644 --- a/crates/l2/tee/quote-gen/src/main.rs +++ b/crates/l2/tee/quote-gen/src/main.rs @@ -44,7 +44,7 @@ fn calculate_transition(input: ProgramInput) -> Result, String> { } fn get_quote(private_key: &SecretKey) -> Result { - let address = get_address_from_secret_key(private_key.secret_bytes()) + let address = get_address_from_secret_key(&private_key.secret_bytes()) .map_err(|e| format!("Error deriving address: {e}"))?; let mut digest_slice = [0u8; 64]; digest_slice From a613937ccd5a54ae031e6978afd79abc8746674c Mon Sep 17 00:00:00 2001 From: Ivan Litteri <67517699+ilitteri@users.noreply.github.com> Date: Thu, 20 Nov 2025 16:11:39 -0300 Subject: [PATCH 69/99] chore(l2): bump ZisK dep and precompile patches to 0.14.0 (#5396) --- Makefile | 1 + .../src/guest_program/src/risc0/Cargo.lock | 1 + .../src/guest_program/src/zisk/Cargo.lock | 59 +++++++++++++++---- .../src/guest_program/src/zisk/Cargo.toml | 10 ++-- crates/l2/tee/quote-gen/Cargo.lock | 3 + 5 files changed, 57 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index 94f186852b5..174e232a1d6 100644 --- a/Makefile +++ b/Makefile @@ -201,4 +201,5 @@ update-cargo-lock: ## 📦 Update Cargo.lock files cargo tree cargo tree --manifest-path crates/l2/prover/src/guest_program/src/sp1/Cargo.toml cargo tree --manifest-path crates/l2/prover/src/guest_program/src/risc0/Cargo.toml + cargo tree --manifest-path crates/l2/prover/src/guest_program/src/zisk/Cargo.toml cargo tree --manifest-path crates/l2/tee/quote-gen/Cargo.toml diff --git a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock index 76c83b907f9..268a54c6f3c 100644 --- a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock @@ -1241,6 +1241,7 @@ dependencies = [ "serde", "serde_json", "sha2", + "sha3", "strum", "substrate-bn", "thiserror", diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock index 36be16b7eb4..6ecb5fad784 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock @@ -285,6 +285,26 @@ dependencies = [ "serde", ] +[[package]] +name = "bincode" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" +dependencies = [ + "bincode_derive", + "serde", + "unty", +] + +[[package]] +name = "bincode_derive" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" +dependencies = [ + "virtue", +] + [[package]] name = "bit-set" version = "0.8.0" @@ -1004,7 +1024,7 @@ version = "7.0.0" dependencies = [ "anyhow", "async-trait", - "bincode", + "bincode 1.3.3", "bytes", "ethereum-types", "ethrex-common", @@ -1056,7 +1076,7 @@ dependencies = [ name = "ethrex-vm" version = "7.0.0" dependencies = [ - "bincode", + "bincode 1.3.3", "bytes", "derive_more", "dyn-clone", @@ -1561,7 +1581,7 @@ dependencies = [ [[package]] name = "k256" version = "0.13.4" -source = "git+https://github.com/0xPolygonHermez/zisk-patch-elliptic-curves.git?tag=patch-k256-0.13.4-zisk-0.13.0#bdfa69f4094d4a7f25d30341127bec885beed57b" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-elliptic-curves.git?tag=patch-k256-0.13.4-zisk-0.14.0#8d8e99470becdb05f8ebb649cdf2b5d99c0a3384" dependencies = [ "cfg-if", "ecdsa", @@ -1635,8 +1655,8 @@ dependencies = [ [[package]] name = "lib-c" -version = "0.13.0" -source = "git+https://github.com/0xPolygonHermez/zisk.git?tag=v0.13.0#ea1ed4c518992a170fc59ec19f1228eb4829a9e1" +version = "0.14.0" +source = "git+https://github.com/0xPolygonHermez/zisk.git?tag=v0.14.0#2f791ffd070d024ba350f054c349c8d6bd98d629" [[package]] name = "libc" @@ -2472,7 +2492,7 @@ dependencies = [ [[package]] name = "sha2" version = "0.10.9" -source = "git+https://github.com/0xPolygonHermez/zisk-patch-hashes.git?branch=zisk-patch-sha2%2Fv0.10.9#6b70e479ca16f1fa8c2db77fdc872b5f2aad2d03" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-hashes.git?tag=patch-sha2-0.10.9-zisk-0.14.0#2cfb8e0405dfc0beb31cd4f497f6db9a9fa56aae" dependencies = [ "cfg-if", "cpufeatures", @@ -2483,7 +2503,7 @@ dependencies = [ [[package]] name = "sha3" version = "0.10.8" -source = "git+https://github.com/0xPolygonHermez/zisk-patch-hashes.git?branch=zisk-patch-sha3%2Fv0.10.8#c404b04f733ab18bf0d0f5540249e6120519cc3e" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-hashes.git?tag=patch-sha3-0.10.8-zisk-0.14.0#c404b04f733ab18bf0d0f5540249e6120519cc3e" dependencies = [ "digest", "keccak", @@ -2544,7 +2564,7 @@ version = "5.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb1a9935d58cb1dcd757a1b10d727090f5b718f1f03b512d48f0c1952e6ead00" dependencies = [ - "bincode", + "bincode 1.3.3", "serde", "sp1-primitives", ] @@ -2555,7 +2575,7 @@ version = "5.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7d2a6187e394c30097ea7a975a4832f172918690dc89a979f0fad67422d3a8b" dependencies = [ - "bincode", + "bincode 1.3.3", "blake3", "cfg-if", "hex", @@ -2641,7 +2661,7 @@ dependencies = [ [[package]] name = "substrate-bn" version = "0.6.0" -source = "git+https://github.com/0xPolygonHermez/zisk-patch-bn.git?tag=patch-0.6.0-zisk-0.13.0#3c8e959c901285124e5bd9a92cb4a5a64333a9c1" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-bn.git?tag=patch-0.6.0-zisk-0.14.0#e2cc4d5991eebd337ba6173c512383a7b54d6ba2" dependencies = [ "byteorder", "crunchy", @@ -2941,6 +2961,12 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "unty" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" + [[package]] name = "url" version = "2.5.7" @@ -2987,6 +3013,12 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "virtue" +version = "0.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" + [[package]] name = "walkdir" version = "2.5.0" @@ -3284,16 +3316,19 @@ dependencies = [ [[package]] name = "ziskos" -version = "0.13.0" -source = "git+https://github.com/0xPolygonHermez/zisk.git?tag=v0.13.0#ea1ed4c518992a170fc59ec19f1228eb4829a9e1" +version = "0.14.0" +source = "git+https://github.com/0xPolygonHermez/zisk.git?tag=v0.14.0#2f791ffd070d024ba350f054c349c8d6bd98d629" dependencies = [ + "bincode 2.0.1", "cfg-if", "getrandom", "lazy_static", "lib-c", "num-bigint 0.4.6", + "num-integer", "num-traits", "rand", + "serde", "static_assertions", "tiny-keccak", ] diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml index 7ff6a966b69..25bf3d3a350 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml @@ -6,7 +6,7 @@ edition = "2024" [workspace] [dependencies] -ziskos = { git = "https://github.com/0xPolygonHermez/zisk.git", tag = "v0.13.0" } +ziskos = { git = "https://github.com/0xPolygonHermez/zisk.git", tag = "v0.14.0" } sha2 = "0.10.9" rkyv = { version = "0.8.10", features = ["std", "unaligned"] } @@ -23,10 +23,10 @@ ethrex-blockchain = { path = "../../../../../../blockchain", default-features = ] } [patch.crates-io] -sha2 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", branch = "zisk-patch-sha2/v0.10.9" } -sha3 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", branch = "zisk-patch-sha3/v0.10.8" } -k256 = { git = "https://github.com/0xPolygonHermez/zisk-patch-elliptic-curves.git", tag = "patch-k256-0.13.4-zisk-0.13.0" } -substrate-bn = { git = "https://github.com/0xPolygonHermez/zisk-patch-bn.git", tag = "patch-0.6.0-zisk-0.13.0" } +sha2 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha2-0.10.9-zisk-0.14.0" } +sha3 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha3-0.10.8-zisk-0.14.0" } +k256 = { git = "https://github.com/0xPolygonHermez/zisk-patch-elliptic-curves.git", tag = "patch-k256-0.13.4-zisk-0.14.0" } +substrate-bn = { git = "https://github.com/0xPolygonHermez/zisk-patch-bn.git", tag = "patch-0.6.0-zisk-0.14.0" } sp1_bls12_381 = { git = "https://github.com/han0110/bls12_381.git", branch = "zisk-patch/v0.8.0-upgrade-sp1-lib" } tiny-keccak = { git = "https://github.com/0xPolygonHermez/zisk-patch-tiny-keccak/", branch = "zisk" } diff --git a/crates/l2/tee/quote-gen/Cargo.lock b/crates/l2/tee/quote-gen/Cargo.lock index 6b7df14d3ba..49380eee071 100644 --- a/crates/l2/tee/quote-gen/Cargo.lock +++ b/crates/l2/tee/quote-gen/Cargo.lock @@ -2101,6 +2101,7 @@ dependencies = [ "ethrex-rlp", "ethrex-trie", "hex", + "k256", "kzg-rs", "lazy_static", "libc", @@ -2229,6 +2230,7 @@ dependencies = [ "ethrex-trie", "ethrex-vm", "hex", + "k256", "lambdaworks-crypto 0.13.0", "rkyv", "secp256k1", @@ -2293,6 +2295,7 @@ dependencies = [ "serde 1.0.228", "serde_json", "sha2", + "sha3", "strum 0.27.2", "thiserror 2.0.16", "walkdir", From 56a3545c1719dd72ac5fc75c40cd0e4990c4d763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Fri, 21 Nov 2025 14:08:31 -0300 Subject: [PATCH 70/99] fix features --- crates/common/errors.rs | 14 ++++++++++++-- crates/common/types/transaction.rs | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/crates/common/errors.rs b/crates/common/errors.rs index c49bb503db4..76b872db78c 100644 --- a/crates/common/errors.rs +++ b/crates/common/errors.rs @@ -1,9 +1,19 @@ #[derive(thiserror::Error, Debug)] pub enum EcdsaError { - #[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] + #[cfg(all( + not(feature = "zisk"), + not(feature = "risc0"), + not(feature = "sp1"), + feature = "secp256k1" + ))] #[error("secp256k1 error: {0}")] Secp256k1(#[from] secp256k1::Error), - #[cfg(any(feature = "zisk", feature = "risc0", feature = "sp1"))] + #[cfg(any( + feature = "zisk", + feature = "risc0", + feature = "sp1", + not(feature = "secp256k1") + ))] #[error("k256 error: {0}")] K256(#[from] k256::ecdsa::Error), } diff --git a/crates/common/types/transaction.rs b/crates/common/types/transaction.rs index 78e19a05524..d080b0d26cb 100644 --- a/crates/common/types/transaction.rs +++ b/crates/common/types/transaction.rs @@ -1416,7 +1416,12 @@ pub fn recover_address_from_message( recover_address(signature, payload).map_err(EcdsaError::from) } -#[cfg(all(not(feature = "zisk"), not(feature = "risc0"), not(feature = "sp1")))] +#[cfg(all( + not(feature = "zisk"), + not(feature = "risc0"), + not(feature = "sp1"), + feature = "secp256k1" +))] pub fn recover_address(signature: Signature, payload: H256) -> Result { // Create signature let signature_bytes = signature.to_fixed_bytes(); @@ -1434,7 +1439,12 @@ pub fn recover_address(signature: Signature, payload: H256) -> Result Result { use sha2::Digest; use sha3::Keccak256; From 33e3f80a37abd6390575f1884c71cdb4eaec3c8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Fri, 21 Nov 2025 14:46:00 -0300 Subject: [PATCH 71/99] add comment to constant secp --- crates/vm/levm/src/constants.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/crates/vm/levm/src/constants.rs b/crates/vm/levm/src/constants.rs index 7250bf4a8f9..2d022ac673d 100644 --- a/crates/vm/levm/src/constants.rs +++ b/crates/vm/levm/src/constants.rs @@ -72,8 +72,10 @@ pub const VALID_BLOB_PREFIXES: [u8; 2] = [0x01, 0x02]; pub const LAST_AVAILABLE_BLOCK_LIMIT: U256 = U256([256, 0, 0, 0]); // EIP7702 - EOA Load Code -pub static SECP256K1_ORDER: LazyLock = - LazyLock::new(|| U256::from_big_endian(&k256::Secp256k1::ORDER.to_be_bytes())); +pub static SECP256K1_ORDER: LazyLock = LazyLock::new(|| + // we use the k256 instead of the secp256k1 crate because the latter is optional + // while the former is not, this is to avoid a conditiona compilation attribute. + U256::from_big_endian(&k256::Secp256k1::ORDER.to_be_bytes())); pub static SECP256K1_ORDER_OVER2: std::sync::LazyLock = LazyLock::new(|| *SECP256K1_ORDER / U256::from(2)); pub const MAGIC: u8 = 0x05; From b409a16de2ba4ecaff9a318af202d3a0f0463816 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Fri, 21 Nov 2025 14:46:12 -0300 Subject: [PATCH 72/99] typo --- crates/vm/levm/src/constants.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/vm/levm/src/constants.rs b/crates/vm/levm/src/constants.rs index 2d022ac673d..8ecda23dd5f 100644 --- a/crates/vm/levm/src/constants.rs +++ b/crates/vm/levm/src/constants.rs @@ -73,7 +73,7 @@ pub const LAST_AVAILABLE_BLOCK_LIMIT: U256 = U256([256, 0, 0, 0]); // EIP7702 - EOA Load Code pub static SECP256K1_ORDER: LazyLock = LazyLock::new(|| - // we use the k256 instead of the secp256k1 crate because the latter is optional + // we use the k256 crate instead of the secp256k1 because the latter is optional // while the former is not, this is to avoid a conditiona compilation attribute. U256::from_big_endian(&k256::Secp256k1::ORDER.to_be_bytes())); pub static SECP256K1_ORDER_OVER2: std::sync::LazyLock = From bb456f146b330d6c547d926ae77055e0bcb25a79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Fri, 21 Nov 2025 14:46:24 -0300 Subject: [PATCH 73/99] typo --- crates/vm/levm/src/constants.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/vm/levm/src/constants.rs b/crates/vm/levm/src/constants.rs index 8ecda23dd5f..c73406e5169 100644 --- a/crates/vm/levm/src/constants.rs +++ b/crates/vm/levm/src/constants.rs @@ -74,7 +74,7 @@ pub const LAST_AVAILABLE_BLOCK_LIMIT: U256 = U256([256, 0, 0, 0]); // EIP7702 - EOA Load Code pub static SECP256K1_ORDER: LazyLock = LazyLock::new(|| // we use the k256 crate instead of the secp256k1 because the latter is optional - // while the former is not, this is to avoid a conditiona compilation attribute. + // while the former is not, this is to avoid a conditional compilation attribute. U256::from_big_endian(&k256::Secp256k1::ORDER.to_be_bytes())); pub static SECP256K1_ORDER_OVER2: std::sync::LazyLock = LazyLock::new(|| *SECP256K1_ORDER / U256::from(2)); From 94f4764366e6cc8ac61bc0f5dbdf45f2f6cf553b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Fri, 21 Nov 2025 14:47:59 -0300 Subject: [PATCH 74/99] fix sha2 version --- crates/l2/prover/src/guest_program/src/zisk/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml index 25bf3d3a350..3e6ae92df0d 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml @@ -23,7 +23,7 @@ ethrex-blockchain = { path = "../../../../../../blockchain", default-features = ] } [patch.crates-io] -sha2 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha2-0.10.9-zisk-0.14.0" } +sha2 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha2-0.10.8-zisk-0.14.0" } sha3 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha3-0.10.8-zisk-0.14.0" } k256 = { git = "https://github.com/0xPolygonHermez/zisk-patch-elliptic-curves.git", tag = "patch-k256-0.13.4-zisk-0.14.0" } substrate-bn = { git = "https://github.com/0xPolygonHermez/zisk-patch-bn.git", tag = "patch-0.6.0-zisk-0.14.0" } From 0d687f8f5250d76e1864d0519b7e38b1601b695c Mon Sep 17 00:00:00 2001 From: ilitteri Date: Fri, 21 Nov 2025 15:23:26 -0300 Subject: [PATCH 75/99] Bump sha2 version --- Cargo.toml | 2 +- crates/l2/prover/src/guest_program/src/risc0/Cargo.lock | 4 ++-- crates/l2/prover/src/guest_program/src/risc0/Cargo.toml | 2 +- crates/l2/prover/src/guest_program/src/sp1/Cargo.lock | 4 ++-- crates/l2/prover/src/guest_program/src/sp1/Cargo.toml | 2 +- crates/l2/prover/src/guest_program/src/zisk/Cargo.toml | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 274f2e7175f..c6e83275d46 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -85,7 +85,7 @@ hex = "0.4.3" hex-literal = "0.4.1" crc32fast = "1.4.2" lazy_static = "1.5.0" -sha2 = "0.10.8" +sha2 = "0.10.9" sha3 = "0.10.8" tokio-util = { version = "0.7.15", features = ["rt"] } jsonwebtoken = "9.3.0" diff --git a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock index 268a54c6f3c..03dc801dde6 100644 --- a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock @@ -3189,8 +3189,8 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" -source = "git+https://github.com/risc0/RustCrypto-hashes?tag=sha2-v0.10.8-risczero.0#244dc3b08788f7a4ccce14c66896ae3b4f24c166" +version = "0.10.9" +source = "git+https://github.com/risc0/RustCrypto-hashes?tag=sha2-v0.10.9-risczero.0#8631fabdea7bdffa97b11868e04e73491d8e5bcf" dependencies = [ "cfg-if", "cpufeatures", diff --git a/crates/l2/prover/src/guest_program/src/risc0/Cargo.toml b/crates/l2/prover/src/guest_program/src/risc0/Cargo.toml index e36d0bf955e..e262c0cea94 100644 --- a/crates/l2/prover/src/guest_program/src/risc0/Cargo.toml +++ b/crates/l2/prover/src/guest_program/src/risc0/Cargo.toml @@ -36,7 +36,7 @@ ethrex-l2-common = { path = "../../../../../common", default-features = false, f ] } [patch.crates-io] -sha2 = { git = "https://github.com/risc0/RustCrypto-hashes", tag = "sha2-v0.10.8-risczero.0" } +sha2 = { git = "https://github.com/risc0/RustCrypto-hashes", tag = "sha2-v0.10.9-risczero.0" } k256 = { git = "https://github.com/risc0/RustCrypto-elliptic-curves", tag = "k256/v0.13.4-risczero.1" } p256 = { git = "https://github.com/risc0/RustCrypto-elliptic-curves", tag = "p256/v0.13.2-risczero.1" } crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.5-risczero.0" } diff --git a/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock b/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock index 3d7e7ccd713..ce04031a544 100644 --- a/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock @@ -2605,8 +2605,8 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" -source = "git+https://github.com/sp1-patches/RustCrypto-hashes?tag=patch-sha2-0.10.8-sp1-4.0.0#1f224388fdede7cef649bce0d63876d1a9e3f515" +version = "0.10.9" +source = "git+https://github.com/sp1-patches/RustCrypto-hashes?tag=patch-sha2-0.10.9-sp1-4.0.0#0b1945eea7d9a776fd6e50ffd5fc51f0c5e6f155" dependencies = [ "cfg-if", "cpufeatures", diff --git a/crates/l2/prover/src/guest_program/src/sp1/Cargo.toml b/crates/l2/prover/src/guest_program/src/sp1/Cargo.toml index d5afb75eb32..3f8e4ac6950 100644 --- a/crates/l2/prover/src/guest_program/src/sp1/Cargo.toml +++ b/crates/l2/prover/src/guest_program/src/sp1/Cargo.toml @@ -21,7 +21,7 @@ ethrex-blockchain = { path = "../../../../../../blockchain", default-features = ethrex-l2-common = { path = "../../../../../common", default-features = false } [patch.crates-io] -sha2-v0-10-8 = { git = "https://github.com/sp1-patches/RustCrypto-hashes", package = "sha2", tag = "patch-sha2-0.10.8-sp1-4.0.0" } +sha2-v0-10-9 = { git = "https://github.com/sp1-patches/RustCrypto-hashes", package = "sha2", tag = "patch-sha2-0.10.9-sp1-4.0.0" } sha3-v0-10-8 = { git = "https://github.com/sp1-patches/RustCrypto-hashes", package = "sha3", tag = "patch-sha3-0.10.8-sp1-4.0.0" } crypto-bigint = { git = "https://github.com/sp1-patches/RustCrypto-bigint", tag = "patch-0.5.5-sp1-4.0.0" } tiny-keccak = { git = "https://github.com/sp1-patches/tiny-keccak", tag = "patch-2.0.2-sp1-4.0.0" } diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml index 3e6ae92df0d..db91debafcb 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml @@ -23,7 +23,7 @@ ethrex-blockchain = { path = "../../../../../../blockchain", default-features = ] } [patch.crates-io] -sha2 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha2-0.10.8-zisk-0.14.0" } +sha2 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha2-0.10.9crates/l2/prover/src/guest_program/src/zisk/Cargo.toml-zisk-0.14.0" } sha3 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha3-0.10.8-zisk-0.14.0" } k256 = { git = "https://github.com/0xPolygonHermez/zisk-patch-elliptic-curves.git", tag = "patch-k256-0.13.4-zisk-0.14.0" } substrate-bn = { git = "https://github.com/0xPolygonHermez/zisk-patch-bn.git", tag = "patch-0.6.0-zisk-0.14.0" } From 32909b30f1eddf5f0e2ec5abedc6935e0f141feb Mon Sep 17 00:00:00 2001 From: ilitteri Date: Fri, 21 Nov 2025 15:37:28 -0300 Subject: [PATCH 76/99] fix locks --- crates/l2/prover/src/guest_program/src/zisk/Cargo.lock | 1 - crates/l2/prover/src/guest_program/src/zisk/Cargo.toml | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock index 6ecb5fad784..d7e4584d4d4 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock @@ -3342,6 +3342,5 @@ dependencies = [ "ethrex-vm", "guest_program", "rkyv", - "sha2", "ziskos", ] diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml index db91debafcb..e571bce70de 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml @@ -8,7 +8,6 @@ edition = "2024" [dependencies] ziskos = { git = "https://github.com/0xPolygonHermez/zisk.git", tag = "v0.14.0" } -sha2 = "0.10.9" rkyv = { version = "0.8.10", features = ["std", "unaligned"] } guest_program = { path = "../../", default-features = false } @@ -23,7 +22,7 @@ ethrex-blockchain = { path = "../../../../../../blockchain", default-features = ] } [patch.crates-io] -sha2 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha2-0.10.9crates/l2/prover/src/guest_program/src/zisk/Cargo.toml-zisk-0.14.0" } +sha2 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha2-0.10.9-zisk-0.14.0" } sha3 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha3-0.10.8-zisk-0.14.0" } k256 = { git = "https://github.com/0xPolygonHermez/zisk-patch-elliptic-curves.git", tag = "patch-k256-0.13.4-zisk-0.14.0" } substrate-bn = { git = "https://github.com/0xPolygonHermez/zisk-patch-bn.git", tag = "patch-0.6.0-zisk-0.14.0" } From 1f288da5983106155db25d43ecdec8906bc3ec63 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Fri, 21 Nov 2025 15:41:43 -0300 Subject: [PATCH 77/99] fix zisk toml --- crates/l2/prover/src/guest_program/src/zisk/Cargo.lock | 1 + crates/l2/prover/src/guest_program/src/zisk/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock index d7e4584d4d4..6ecb5fad784 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock @@ -3342,5 +3342,6 @@ dependencies = [ "ethrex-vm", "guest_program", "rkyv", + "sha2", "ziskos", ] diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml index e571bce70de..d06e14cba64 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml @@ -7,7 +7,7 @@ edition = "2024" [dependencies] ziskos = { git = "https://github.com/0xPolygonHermez/zisk.git", tag = "v0.14.0" } - +sha2 = "0.10.9" rkyv = { version = "0.8.10", features = ["std", "unaligned"] } guest_program = { path = "../../", default-features = false } From 1c9ceba6b117172ce821dd4db42b27b3a310716f Mon Sep 17 00:00:00 2001 From: ilitteri Date: Fri, 21 Nov 2025 15:51:18 -0300 Subject: [PATCH 78/99] add --unlock-mapped-memory flag --- crates/l2/prover/src/backend/zisk.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index e8a29a1424a..1d18b0c50da 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -54,6 +54,7 @@ pub fn prove( "--output-dir", OUTPUT_DIR_PATH, "--aggregation", + "--unlock-mapped-memory", ]; let conditional_groth16_arg = if let ProofFormat::Groth16 = format { vec!["--final-snark"] From 8d3f660a1c0a5538fb70815fb19c7fd663abbd2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Mon, 24 Nov 2025 16:24:06 -0300 Subject: [PATCH 79/99] add openvm backend --- Cargo.lock | 2825 ++++++++++++- crates/common/Cargo.toml | 1 + crates/common/crypto/Cargo.toml | 4 + crates/common/crypto/kzg.rs | 51 +- crates/l2/prover/Cargo.toml | 15 +- crates/l2/prover/src/backend/mod.rs | 9 + crates/l2/prover/src/backend/openvm.rs | 57 + crates/l2/prover/src/guest_program/Cargo.toml | 8 + crates/l2/prover/src/guest_program/build.rs | 36 + .../src/guest_program/src/openvm/Cargo.lock | 3741 +++++++++++++++++ .../src/guest_program/src/openvm/Cargo.toml | 29 + .../src/guest_program/src/openvm/openvm.toml | 74 + .../guest_program/src/openvm/openvm_init.rs | 4 + .../src/guest_program/src/openvm/src/main.rs | 24 + crates/l2/prover/src/lib.rs | 6 + crates/vm/Cargo.toml | 1 + crates/vm/levm/Cargo.toml | 1 + 17 files changed, 6651 insertions(+), 235 deletions(-) create mode 100644 crates/l2/prover/src/backend/openvm.rs create mode 100644 crates/l2/prover/src/guest_program/src/openvm/Cargo.lock create mode 100644 crates/l2/prover/src/guest_program/src/openvm/Cargo.toml create mode 100644 crates/l2/prover/src/guest_program/src/openvm/openvm.toml create mode 100644 crates/l2/prover/src/guest_program/src/openvm/openvm_init.rs create mode 100644 crates/l2/prover/src/guest_program/src/openvm/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index d389d7365bb..92f017b13e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12,6 +12,54 @@ dependencies = [ "regex", ] +[[package]] +name = "abi_stable" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d6512d3eb05ffe5004c59c206de7f99c34951504056ce23fc953842f12c445" +dependencies = [ + "abi_stable_derive", + "abi_stable_shared", + "const_panic", + "core_extensions", + "crossbeam-channel 0.5.15", + "generational-arena", + "libloading 0.7.4", + "lock_api", + "parking_lot", + "paste", + "repr_offset", + "rustc_version 0.4.1", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "abi_stable_derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7178468b407a4ee10e881bc7a328a65e739f0863615cca4429d43916b05e898" +dependencies = [ + "abi_stable_shared", + "as_derive_utils", + "core_extensions", + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "syn 1.0.109", + "typed-arena", +] + +[[package]] +name = "abi_stable_shared" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b5df7688c123e63f4d4d649cba63f2967ba7f7861b1664fca3f77d3dad2b63" +dependencies = [ + "core_extensions", +] + [[package]] name = "addchain" version = "0.2.0" @@ -604,6 +652,18 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +[[package]] +name = "as_derive_utils" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff3c96645900a44cf11941c111bd08a6573b0e2f9f69bc9264b179d8fae753c4" +dependencies = [ + "core_extensions", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "ascii-canvas" version = "3.0.0" @@ -942,6 +1002,26 @@ dependencies = [ "serde", ] +[[package]] +name = "bincode" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" +dependencies = [ + "bincode_derive", + "serde", + "unty", +] + +[[package]] +name = "bincode_derive" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" +dependencies = [ + "virtue", +] + [[package]] name = "bindgen" version = "0.66.1" @@ -1035,6 +1115,30 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +[[package]] +name = "bitcode" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "648bd963d2e5d465377acecfb4b827f9f553b6bc97a8f61715779e9ed9e52b74" +dependencies = [ + "arrayvec", + "bitcode_derive", + "bytemuck", + "glam 0.30.9", + "serde", +] + +[[package]] +name = "bitcode_derive" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffebfc2d28a12b262c303cb3860ee77b91bd83b1f20f0bd2a9693008e2f55a9e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.110", +] + [[package]] name = "bitcoin-io" version = "0.1.3" @@ -1154,6 +1258,19 @@ dependencies = [ "subtle", ] +[[package]] +name = "bls12_381" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7bc6d6292be3a19e6379786dac800f551e5865a5bb51ebbe3064ab80433f403" +dependencies = [ + "ff 0.13.1", + "group 0.13.0", + "pairing 0.23.0", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "bls12_381" version = "0.8.0" @@ -1179,6 +1296,47 @@ dependencies = [ "zeroize", ] +[[package]] +name = "blstrs" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8a8ed6fefbeef4a8c7b460e4110e12c5e22a5b7cf32621aae6ad650c4dcf29" +dependencies = [ + "blst", + "byte-slice-cast", + "ff 0.13.1", + "group 0.13.0", + "pairing 0.23.0", + "rand_core 0.6.4", + "serde", + "subtle", +] + +[[package]] +name = "bon" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebeb9aaf9329dff6ceb65c689ca3db33dbf15f324909c60e4e5eef5701ce31b1" +dependencies = [ + "bon-macros", + "rustversion", +] + +[[package]] +name = "bon-macros" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e9d642a7e3a318e37c2c9427b5a6a48aa1ad55dcd986f3034ab2239045a645" +dependencies = [ + "darling 0.21.3", + "ident_case", + "prettyplease", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.110", +] + [[package]] name = "bonsai-sdk" version = "1.4.1" @@ -1295,6 +1453,12 @@ dependencies = [ "serde", ] +[[package]] +name = "bytesize" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f4369ba008f82b968b1acbe31715ec37bd45236fa0726605a36cc3060ea256" + [[package]] name = "bzip2" version = "0.4.4" @@ -1563,7 +1727,7 @@ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", - "libloading", + "libloading 0.8.9", ] [[package]] @@ -1802,6 +1966,15 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "const_panic" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e262cdaac42494e3ae34c43969f9cdeb7da178bdb4b66fa6a1ea2edb4c8ae652" +dependencies = [ + "typewit", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -1869,6 +2042,21 @@ dependencies = [ "libc", ] +[[package]] +name = "core_extensions" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42bb5e5d0269fd4f739ea6cedaf29c16d81c27a7ce7582008e90eb50dcd57003" +dependencies = [ + "core_extensions_proc_macros", +] + +[[package]] +name = "core_extensions_proc_macros" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "533d38ecd2709b7608fb8e18e4504deb99e9a72879e6aa66373a76d8dc4259ea" + [[package]] name = "cpp_demangle" version = "0.4.5" @@ -2140,6 +2328,22 @@ dependencies = [ "typenum", ] +[[package]] +name = "ctor" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67773048316103656a637612c4a62477603b777d91d9c62ff2290f9cde178fdb" +dependencies = [ + "ctor-proc-macro", + "dtor", +] + +[[package]] +name = "ctor-proc-macro" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2931af7e13dc045d8e9d26afccc6fa115d64e115c9c84b1166288b46f6782c2" + [[package]] name = "ctr" version = "0.9.2" @@ -2160,6 +2364,24 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "cuda-config" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee74643f7430213a1a78320f88649de309b20b80818325575e393f848f79f5d" +dependencies = [ + "glob", +] + +[[package]] +name = "cuda-runtime-sys" +version = "0.3.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d070b301187fee3c611e75a425cf12247b7c75c09729dbdef95cb9cb64e8c39" +dependencies = [ + "cuda-config", +] + [[package]] name = "cust" version = "0.3.2" @@ -2181,7 +2403,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "039f79662cb8f890cbf335e818cd522d6e3a53fe63f61d1aaaf859cd3d975f06" dependencies = [ "cust_derive", - "glam", + "glam 0.20.5", "mint", "vek", ] @@ -2288,6 +2510,7 @@ dependencies = [ "lock_api", "once_cell", "parking_lot_core", + "rayon", ] [[package]] @@ -2318,7 +2541,7 @@ checksum = "85078445a8dbd2e1bd21f04a816f352db8d333643f0c9b78ca7c3d1df71063e7" dependencies = [ "dashu-base", "dashu-int", - "num-modular", + "num-modular 0.6.1", "num-order", "rustversion", "static_assertions", @@ -2332,7 +2555,7 @@ checksum = "ee99d08031ca34a4d044efbbb21dff9b8c54bb9d8c82a189187c0651ffdb9fbf" dependencies = [ "cfg-if 1.0.4", "dashu-base", - "num-modular", + "num-modular 0.6.1", "num-order", "rustversion", "static_assertions", @@ -2363,7 +2586,7 @@ dependencies = [ "dashu-base", "dashu-float", "dashu-int", - "num-modular", + "num-modular 0.6.1", "num-order", "rustversion", ] @@ -2427,6 +2650,28 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive-new" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d150dea618e920167e5973d70ae6ece4385b7164e0d799fe7c122dd0a5d912ad" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.110", +] + +[[package]] +name = "derive-new" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cdc8d50f426189eef89dac62fabfa0abb27d5cc008f25bf4156a0203325becc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.110", +] + [[package]] name = "derive_arbitrary" version = "1.4.2" @@ -2686,6 +2931,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "dtor" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "404d02eeb088a82cfd873006cb713fe411306c7d182c344905e101fb1167d301" +dependencies = [ + "dtor-proc-macro", +] + +[[package]] +name = "dtor-proc-macro" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5" + [[package]] name = "dunce" version = "1.0.5" @@ -2805,6 +3065,12 @@ dependencies = [ "cfg-if 1.0.4", ] +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + [[package]] name = "enr" version = "0.10.0" @@ -2864,6 +3130,18 @@ dependencies = [ "syn 2.0.110", ] +[[package]] +name = "enum_dispatch" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.110", +] + [[package]] name = "env_filter" version = "0.1.4" @@ -3375,7 +3653,7 @@ dependencies = [ "ethrex-rlp", "ethrex-trie", "hex", - "hex-literal", + "hex-literal 0.4.1", "k256", "kzg-rs", "lazy_static", @@ -3412,6 +3690,7 @@ version = "7.0.0" dependencies = [ "c-kzg", "kzg-rs", + "openvm-kzg", "thiserror 2.0.17", "tiny-keccak", ] @@ -3442,7 +3721,7 @@ dependencies = [ "aligned-sdk", "anyhow", "axum 0.8.7", - "bincode", + "bincode 1.3.3", "bytes", "chrono", "clap", @@ -3553,7 +3832,7 @@ dependencies = [ "ark-ec", "ark-ff 0.5.0", "bitvec", - "bls12_381 0.8.0", + "bls12_381 0.8.0 (git+https://github.com/lambdaclass/bls12_381?branch=expose-fp-struct)", "bytes", "colored", "datatest-stable", @@ -3617,7 +3896,7 @@ dependencies = [ "ethrex-trie", "futures", "hex", - "hex-literal", + "hex-literal 0.4.1", "hmac", "indexmap 2.12.0", "lazy_static", @@ -3644,7 +3923,7 @@ name = "ethrex-prover" version = "7.0.0" dependencies = [ "anyhow", - "bincode", + "bincode 1.3.3", "bytes", "clap", "ethereum-types 0.15.1", @@ -3659,6 +3938,9 @@ dependencies = [ "guest_program", "hex", "kzg-rs", + "openvm-continuations", + "openvm-sdk", + "openvm-stark-sdk", "risc0-zkp", "risc0-zkvm", "rkyv", @@ -3682,7 +3964,7 @@ dependencies = [ "bytes", "ethereum-types 0.15.1", "hex", - "hex-literal", + "hex-literal 0.4.1", "lazy_static", "snap", "thiserror 2.0.17", @@ -3710,7 +3992,7 @@ dependencies = [ "ethrex-trie", "ethrex-vm", "hex", - "hex-literal", + "hex-literal 0.4.1", "jemalloc_pprof", "jsonwebtoken 9.3.1", "rand 0.8.5", @@ -3769,7 +4051,7 @@ version = "7.0.0" dependencies = [ "anyhow", "async-trait", - "bincode", + "bincode 1.3.3", "bytes", "ethereum-types 0.15.1", "ethrex-common", @@ -3777,7 +4059,7 @@ dependencies = [ "ethrex-rlp", "ethrex-trie", "hex", - "hex-literal", + "hex-literal 0.4.1", "lru 0.16.2", "qfilter", "rayon", @@ -3797,7 +4079,7 @@ version = "7.0.0" dependencies = [ "anyhow", "async-trait", - "bincode", + "bincode 1.3.3", "ethereum-types 0.15.1", "ethrex-common", "ethrex-l2-common", @@ -3835,7 +4117,7 @@ dependencies = [ "ethrex-threadpool", "hasher", "hex", - "hex-literal", + "hex-literal 0.4.1", "lazy_static", "proptest", "rand 0.8.5", @@ -3854,7 +4136,7 @@ dependencies = [ name = "ethrex-vm" version = "7.0.0" dependencies = [ - "bincode", + "bincode 1.3.3", "bytes", "derive_more 1.0.0", "dyn-clone", @@ -4293,6 +4575,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "304de19db7028420975a296ab0fcbbc8e69438c4ed254a1e41e2a7f37d5f0e0a" +[[package]] +name = "generational-arena" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877e94aff08e743b651baaea359664321055749b398adff8740a7399af7796e7" +dependencies = [ + "cfg-if 1.0.4", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -4341,6 +4632,18 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "getset" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf0fc11e47561d47397154977bc219f4cf809b2974facc3ccb3b89e2436f912" +dependencies = [ + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.110", +] + [[package]] name = "gimli" version = "0.31.1" @@ -4380,6 +4683,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "glam" +version = "0.30.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd47b05dddf0005d850e5644cae7f2b14ac3df487979dbfff3b56f20b1a6ae46" + [[package]] name = "glob" version = "0.3.3" @@ -4428,7 +4737,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff 0.13.1", + "rand 0.8.5", "rand_core 0.6.4", + "rand_xorshift 0.3.0", "subtle", ] @@ -4436,6 +4747,7 @@ dependencies = [ name = "guest_program" version = "7.0.0" dependencies = [ + "bincode 1.3.3", "bytes", "ethrex-blockchain", "ethrex-common", @@ -4446,6 +4758,8 @@ dependencies = [ "ethrex-trie", "ethrex-vm", "hex", + "openvm-build", + "openvm-sdk", "risc0-build", "risc0-zkvm", "rkyv", @@ -4516,37 +4830,198 @@ dependencies = [ ] [[package]] -name = "halo2_proofs" -version = "0.1.0" +name = "halo2-axiom" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e925780549adee8364c7f2b685c753f6f3df23bde520c67416e93bf615933760" +checksum = "0aee3f8178b78275038e5ea0e2577140056d2c4c87fccaf6777dc0a8eebe455a" dependencies = [ "blake2b_simd", - "ff 0.12.1", - "group 0.12.1", - "pasta_curves 0.4.1", + "crossbeam 0.8.4", + "ff 0.13.1", + "group 0.13.0", + "halo2curves-axiom 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.11.0", + "maybe-rayon", + "pairing 0.23.0", + "rand 0.8.5", "rand_core 0.6.4", "rayon", + "rustc-hash 1.1.0", + "sha3", + "tracing", ] [[package]] -name = "hash32" -version = "0.2.1" +name = "halo2-base" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +checksum = "678cf3adc0a39d7b4d9b82315a655201aa24a430dd1902b162c508047f56ac69" dependencies = [ - "byteorder", + "getset", + "halo2-axiom", + "itertools 0.11.0", + "log", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "poseidon-primitives", + "rand_chacha 0.3.1", + "rayon", + "rustc-hash 1.1.0", + "serde", + "serde_json", ] [[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.14.5" +name = "halo2-ecc" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c00681fdd1febaf552d8814e9f5a6a142d81a1514102190da07039588b366" +dependencies = [ + "halo2-base", + "itertools 0.11.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "rayon", + "serde", + "serde_json", + "test-case", +] + +[[package]] +name = "halo2_proofs" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e925780549adee8364c7f2b685c753f6f3df23bde520c67416e93bf615933760" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "pasta_curves 0.4.1", + "rand_core 0.6.4", + "rayon", +] + +[[package]] +name = "halo2curves" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b756596082144af6e57105a20403b7b80fe9dccd085700b74fae3af523b74dba" +dependencies = [ + "blake2", + "digest 0.10.7", + "ff 0.13.1", + "group 0.13.0", + "halo2derive", + "hex", + "lazy_static", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "pairing 0.23.0", + "paste", + "rand 0.8.5", + "rand_core 0.6.4", + "rayon", + "serde", + "serde_arrays 0.1.0", + "sha2", + "static_assertions", + "subtle", + "unroll", +] + +[[package]] +name = "halo2curves-axiom" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0cd39c0df23c8b72cb7158ccb106341b078d5019b5478b3bfdaf14e898177d3" +dependencies = [ + "blake2b_simd", + "digest 0.10.7", + "ff 0.13.1", + "group 0.13.0", + "hex", + "lazy_static", + "num-bigint 0.4.6", + "num-traits", + "pairing 0.23.0", + "pasta_curves 0.5.1", + "paste", + "rand 0.8.5", + "rand_core 0.6.4", + "rayon", + "serde", + "serde_arrays 0.1.0", + "sha2", + "static_assertions", + "subtle", + "unroll", +] + +[[package]] +name = "halo2curves-axiom" +version = "0.7.2" +source = "git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.2#3a65a710e27fe03711f6fb4fc0c4469ae351974a" +dependencies = [ + "blake2b_simd", + "digest 0.10.7", + "ff 0.13.1", + "group 0.13.0", + "hex", + "lazy_static", + "num-bigint 0.4.6", + "num-traits", + "pairing 0.23.0", + "pasta_curves 0.5.1", + "paste", + "rand 0.8.5", + "rand_core 0.6.4", + "rayon", + "serde", + "serde_arrays 0.1.0", + "sha2", + "static_assertions", + "subtle", + "unroll", +] + +[[package]] +name = "halo2derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb99e7492b4f5ff469d238db464131b86c2eaac814a78715acba369f64d2c76" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ @@ -4675,6 +5150,9 @@ name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] [[package]] name = "hex-conservative" @@ -4691,6 +5169,12 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" +[[package]] +name = "hex-literal" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e712f64ec3850b98572bffac52e2c6f282b29fe6c5fa6d42334b30be438d95c1" + [[package]] name = "hmac" version = "0.12.1" @@ -5494,7 +5978,7 @@ checksum = "9201effeea3fcc93b587904ae2df9ce97e433184b9d6d299e9ebc9830a546636" dependencies = [ "ff 0.13.1", "hex", - "serde_arrays", + "serde_arrays 0.2.0", "sha2", "sp1_bls12_381", "spin 0.9.8", @@ -5639,6 +6123,16 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if 1.0.4", + "winapi", +] + [[package]] name = "libloading" version = "0.8.9" @@ -5709,7 +6203,7 @@ dependencies = [ "async-stream", "async-trait", "base64 0.21.7", - "bincode", + "bincode 1.3.3", "bitflags 2.10.0", "bytes", "chrono", @@ -5904,6 +6398,12 @@ dependencies = [ "scopeguard", ] +[[package]] +name = "lockfree-object-pool" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" + [[package]] name = "log" version = "0.4.28" @@ -6118,6 +6618,16 @@ dependencies = [ "syn 2.0.110", ] +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if 1.0.4", + "rayon", +] + [[package]] name = "maybe-uninit" version = "2.0.0" @@ -6191,6 +6701,52 @@ dependencies = [ "paste", ] +[[package]] +name = "metrics" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3045b4193fbdc5b5681f32f11070da9be3609f189a79f3390706d42587f46bb5" +dependencies = [ + "ahash", + "portable-atomic", +] + +[[package]] +name = "metrics-tracing-context" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62a6a1f7141f1d9bc7a886b87536bbfc97752e08b369e1e0453a9acfab5f5da4" +dependencies = [ + "indexmap 2.12.0", + "itoa", + "lockfree-object-pool", + "metrics", + "metrics-util", + "once_cell", + "tracing", + "tracing-core", + "tracing-subscriber 0.3.20", +] + +[[package]] +name = "metrics-util" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4259040465c955f9f2f1a4a8a16dc46726169bca0f88e8fb2dbeced487c3e828" +dependencies = [ + "aho-corasick", + "crossbeam-epoch 0.9.18", + "crossbeam-utils 0.8.21", + "hashbrown 0.14.5", + "indexmap 2.12.0", + "metrics", + "num_cpus", + "ordered-float", + "quanta", + "radix_trie", + "sketches-ddsketch", +] + [[package]] name = "mime" version = "0.3.17" @@ -6321,6 +6877,15 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" +[[package]] +name = "nibble_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + [[package]] name = "nix" version = "0.30.1" @@ -6406,6 +6971,8 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", + "rand 0.8.5", + "serde", ] [[package]] @@ -6480,6 +7047,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-modular" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a5fe11d4135c3bcdf3a95b18b194afa9608a5f6ff034f5d857bc9a27fb0119" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", +] + [[package]] name = "num-modular" version = "0.6.1" @@ -6492,7 +7070,23 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6" dependencies = [ - "num-modular", + "num-modular 0.6.1", +] + +[[package]] +name = "num-prime" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e238432a7881ec7164503ccc516c014bf009be7984cde1ba56837862543bdec3" +dependencies = [ + "bitvec", + "either", + "lru 0.12.5", + "num-bigint 0.4.6", + "num-integer", + "num-modular 0.5.1", + "num-traits", + "rand 0.8.5", ] [[package]] @@ -6584,6 +7178,18 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" +[[package]] +name = "nums" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3c74f925fb8cfc49a8022f2afce48a0683b70f9e439885594e84c5edbf5b01" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "rand 0.8.5", +] + [[package]] name = "nvtx" version = "1.3.0" @@ -6725,27 +7331,1181 @@ dependencies = [ ] [[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - -[[package]] -name = "owo-colors" -version = "4.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c6901729fa79e91a0913333229e9ca5dc725089d1c363b2f4b4760709dc4a52" - -[[package]] -name = "p256" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +name = "openvm" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" dependencies = [ - "ecdsa", - "elliptic-curve", - "primeorder", - "sha2", + "bytemuck", + "num-bigint 0.4.6", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-platform 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-rv32im-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "serde", +] + +[[package]] +name = "openvm" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "bytemuck", + "num-bigint 0.4.6", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git)", + "openvm-platform 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-rv32im-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "serde", +] + +[[package]] +name = "openvm-algebra-circuit" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "blstrs", + "cfg-if 1.0.4", + "derive-new 0.6.0", + "derive_more 1.0.0", + "eyre", + "halo2curves-axiom 0.7.2 (git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.2)", + "num-bigint 0.4.6", + "num-traits", + "openvm-algebra-transpiler", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-cuda-backend", + "openvm-cuda-builder", + "openvm-cuda-common", + "openvm-instructions", + "openvm-mod-circuit-builder", + "openvm-rv32-adapters", + "openvm-rv32im-circuit", + "openvm-stark-backend", + "openvm-stark-sdk", + "rand 0.8.5", + "serde", + "serde_with", + "strum 0.26.3", +] + +[[package]] +name = "openvm-algebra-complex-macros" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "openvm-macros-common 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "quote", + "syn 2.0.110", +] + +[[package]] +name = "openvm-algebra-complex-macros" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "openvm-macros-common 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "quote", + "syn 2.0.110", +] + +[[package]] +name = "openvm-algebra-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "halo2curves-axiom 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.4.6", + "once_cell", + "openvm-algebra-complex-macros 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-algebra-moduli-macros 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-rv32im-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "serde-big-array", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-algebra-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "halo2curves-axiom 0.7.2 (git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.2)", + "num-bigint 0.4.6", + "once_cell", + "openvm-algebra-complex-macros 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-algebra-moduli-macros 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git)", + "openvm-rv32im-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "serde-big-array", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-algebra-moduli-macros" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "num-bigint 0.4.6", + "num-prime", + "openvm-macros-common 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "quote", + "syn 2.0.110", +] + +[[package]] +name = "openvm-algebra-moduli-macros" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "num-bigint 0.4.6", + "num-prime", + "openvm-macros-common 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "quote", + "syn 2.0.110", +] + +[[package]] +name = "openvm-algebra-transpiler" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "openvm-algebra-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-instructions", + "openvm-instructions-derive", + "openvm-stark-backend", + "openvm-transpiler", + "rrs-lib", + "strum 0.26.3", +] + +[[package]] +name = "openvm-bigint-circuit" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "cfg-if 1.0.4", + "derive-new 0.6.0", + "derive_more 1.0.0", + "openvm-bigint-transpiler", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-cuda-backend", + "openvm-cuda-builder", + "openvm-cuda-common", + "openvm-instructions", + "openvm-rv32-adapters", + "openvm-rv32im-circuit", + "openvm-rv32im-transpiler", + "openvm-stark-backend", + "openvm-stark-sdk", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "openvm-bigint-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "openvm-platform 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-bigint-transpiler" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "openvm-bigint-guest", + "openvm-instructions", + "openvm-instructions-derive", + "openvm-rv32im-transpiler", + "openvm-stark-backend", + "openvm-transpiler", + "rrs-lib", + "strum 0.26.3", +] + +[[package]] +name = "openvm-build" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "cargo_metadata 0.18.1", + "eyre", + "openvm-platform 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "serde", + "serde_json", +] + +[[package]] +name = "openvm-circuit" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "abi_stable", + "backtrace", + "cfg-if 1.0.4", + "dashmap", + "derivative", + "derive-new 0.6.0", + "derive_more 1.0.0", + "enum_dispatch", + "eyre", + "getset", + "itertools 0.14.0", + "libc", + "memmap2", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-cuda-backend", + "openvm-cuda-builder", + "openvm-cuda-common", + "openvm-instructions", + "openvm-poseidon2-air", + "openvm-stark-backend", + "openvm-stark-sdk", + "p3-baby-bear 0.1.0", + "p3-field 0.1.0", + "rand 0.8.5", + "rustc-hash 2.1.1", + "serde", + "serde-big-array", + "static_assertions", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "openvm-circuit-derive" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.110", +] + +[[package]] +name = "openvm-circuit-primitives" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "derive-new 0.6.0", + "itertools 0.14.0", + "num-bigint 0.4.6", + "num-traits", + "openvm-circuit-primitives-derive", + "openvm-cuda-backend", + "openvm-cuda-builder", + "openvm-cuda-common", + "openvm-stark-backend", + "rand 0.8.5", + "tracing", +] + +[[package]] +name = "openvm-circuit-primitives-derive" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "itertools 0.14.0", + "quote", + "syn 2.0.110", +] + +[[package]] +name = "openvm-continuations" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "derivative", + "openvm-circuit", + "openvm-native-compiler", + "openvm-native-recursion", + "openvm-stark-backend", + "openvm-stark-sdk", + "serde", + "static_assertions", +] + +[[package]] +name = "openvm-cuda-backend" +version = "1.2.1" +source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.2.1#dde6cdaf105cc57d1609fd49568c7bce0a066cc2" +dependencies = [ + "bincode 2.0.1", + "bincode_derive", + "derivative", + "derive-new 0.7.0", + "itertools 0.14.0", + "lazy_static", + "metrics", + "openvm-cuda-builder", + "openvm-cuda-common", + "openvm-stark-backend", + "openvm-stark-sdk", + "p3-baby-bear 0.1.0", + "p3-commit 0.1.0", + "p3-dft 0.1.0", + "p3-field 0.1.0", + "p3-fri 0.1.0", + "p3-matrix 0.1.0", + "p3-merkle-tree 0.1.0", + "p3-symmetric 0.1.0", + "p3-util 0.1.0", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "openvm-cuda-builder" +version = "1.2.1" +source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.2.1#dde6cdaf105cc57d1609fd49568c7bce0a066cc2" +dependencies = [ + "cc", + "glob", +] + +[[package]] +name = "openvm-cuda-common" +version = "1.2.1" +source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.2.1#dde6cdaf105cc57d1609fd49568c7bce0a066cc2" +dependencies = [ + "bytesize", + "ctor", + "lazy_static", + "metrics", + "openvm-cuda-builder", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "openvm-custom-insn" +version = "0.1.0" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.110", +] + +[[package]] +name = "openvm-custom-insn" +version = "0.1.0" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.110", +] + +[[package]] +name = "openvm-ecc-circuit" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "blstrs", + "cfg-if 1.0.4", + "derive-new 0.6.0", + "derive_more 1.0.0", + "halo2curves-axiom 0.7.2 (git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.2)", + "hex-literal 0.4.1", + "lazy_static", + "num-bigint 0.4.6", + "num-traits", + "once_cell", + "openvm-algebra-circuit", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-cuda-backend", + "openvm-cuda-common", + "openvm-ecc-transpiler", + "openvm-instructions", + "openvm-mod-circuit-builder", + "openvm-rv32-adapters", + "openvm-stark-backend", + "openvm-stark-sdk", + "rand 0.8.5", + "serde", + "serde_with", + "strum 0.26.3", +] + +[[package]] +name = "openvm-ecc-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "ecdsa", + "elliptic-curve", + "group 0.13.0", + "halo2curves-axiom 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell", + "openvm 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-algebra-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-ecc-sw-macros 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-rv32im-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "serde", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-ecc-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "ecdsa", + "elliptic-curve", + "group 0.13.0", + "halo2curves-axiom 0.7.2 (git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.2)", + "once_cell", + "openvm 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-algebra-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git)", + "openvm-ecc-sw-macros 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-rv32im-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "serde", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-ecc-sw-macros" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "openvm-macros-common 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "quote", + "syn 2.0.110", +] + +[[package]] +name = "openvm-ecc-sw-macros" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "openvm-macros-common 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "quote", + "syn 2.0.110", +] + +[[package]] +name = "openvm-ecc-transpiler" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "openvm-ecc-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-instructions", + "openvm-instructions-derive", + "openvm-stark-backend", + "openvm-transpiler", + "rrs-lib", + "strum 0.26.3", +] + +[[package]] +name = "openvm-instructions" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "backtrace", + "derive-new 0.6.0", + "itertools 0.14.0", + "num-bigint 0.4.6", + "num-traits", + "openvm-instructions-derive", + "openvm-stark-backend", + "serde", + "strum 0.26.3", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-instructions-derive" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "quote", + "syn 2.0.110", +] + +[[package]] +name = "openvm-keccak256-circuit" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "cfg-if 1.0.4", + "derive-new 0.6.0", + "derive_more 1.0.0", + "itertools 0.14.0", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-cuda-backend", + "openvm-cuda-builder", + "openvm-cuda-common", + "openvm-instructions", + "openvm-keccak256-transpiler", + "openvm-rv32im-circuit", + "openvm-stark-backend", + "openvm-stark-sdk", + "p3-keccak-air 0.1.0", + "rand 0.8.5", + "serde", + "strum 0.26.3", + "tiny-keccak", +] + +[[package]] +name = "openvm-keccak256-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "openvm-platform 1.4.1 (git+https://github.com/openvm-org/openvm.git)", +] + +[[package]] +name = "openvm-keccak256-transpiler" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "openvm-instructions", + "openvm-instructions-derive", + "openvm-keccak256-guest", + "openvm-stark-backend", + "openvm-transpiler", + "rrs-lib", + "strum 0.26.3", +] + +[[package]] +name = "openvm-kzg" +version = "0.2.0-alpha" +source = "git+https://github.com/axiom-crypto/openvm-kzg.git?rev=530a6ed413def5296b7e4967650ba4fc8fd92ea1#530a6ed413def5296b7e4967650ba4fc8fd92ea1" +dependencies = [ + "bls12_381 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hex", + "hex-literal 1.1.0", + "openvm-algebra-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-ecc-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-pairing", + "serde", + "serde-big-array", + "spin 0.10.0", +] + +[[package]] +name = "openvm-macros-common" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "syn 2.0.110", +] + +[[package]] +name = "openvm-macros-common" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "syn 2.0.110", +] + +[[package]] +name = "openvm-mod-circuit-builder" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "cuda-runtime-sys", + "itertools 0.14.0", + "num-bigint 0.4.6", + "num-traits", + "openvm-circuit", + "openvm-circuit-primitives", + "openvm-cuda-backend", + "openvm-cuda-builder", + "openvm-cuda-common", + "openvm-instructions", + "openvm-stark-backend", + "openvm-stark-sdk", + "rand 0.8.5", + "tracing", +] + +[[package]] +name = "openvm-native-circuit" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "cfg-if 1.0.4", + "derive-new 0.6.0", + "derive_more 1.0.0", + "eyre", + "itertools 0.14.0", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-cuda-backend", + "openvm-cuda-builder", + "openvm-cuda-common", + "openvm-instructions", + "openvm-native-compiler", + "openvm-poseidon2-air", + "openvm-rv32im-circuit", + "openvm-rv32im-transpiler", + "openvm-stark-backend", + "openvm-stark-sdk", + "p3-field 0.1.0", + "rand 0.8.5", + "serde", + "static_assertions", + "strum 0.26.3", +] + +[[package]] +name = "openvm-native-compiler" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "backtrace", + "itertools 0.14.0", + "num-bigint 0.4.6", + "num-integer", + "openvm-circuit", + "openvm-instructions", + "openvm-instructions-derive", + "openvm-native-compiler-derive", + "openvm-rv32im-transpiler", + "openvm-stark-backend", + "openvm-stark-sdk", + "serde", + "snark-verifier-sdk", + "strum 0.26.3", + "strum_macros 0.26.4", + "zkhash 0.2.0 (git+https://github.com/HorizenLabs/poseidon2.git?rev=bb476b9)", +] + +[[package]] +name = "openvm-native-compiler-derive" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "quote", + "syn 2.0.110", +] + +[[package]] +name = "openvm-native-recursion" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "cfg-if 1.0.4", + "itertools 0.14.0", + "lazy_static", + "once_cell", + "openvm-circuit", + "openvm-native-circuit", + "openvm-native-compiler", + "openvm-native-compiler-derive", + "openvm-stark-backend", + "openvm-stark-sdk", + "p3-dft 0.1.0", + "p3-fri 0.1.0", + "p3-merkle-tree 0.1.0", + "p3-symmetric 0.1.0", + "rand 0.8.5", + "serde", + "serde_json", + "serde_with", + "snark-verifier-sdk", + "tracing", +] + +[[package]] +name = "openvm-native-transpiler" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "openvm-instructions", + "openvm-transpiler", + "p3-field 0.1.0", +] + +[[package]] +name = "openvm-pairing" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "group 0.13.0", + "hex-literal 0.4.1", + "itertools 0.14.0", + "num-bigint 0.4.6", + "num-traits", + "openvm 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-algebra-complex-macros 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-algebra-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-algebra-moduli-macros 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-ecc-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-ecc-sw-macros 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-pairing-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-platform 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-rv32im-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "openvm-pairing-circuit" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "cfg-if 1.0.4", + "derive-new 0.6.0", + "derive_more 1.0.0", + "eyre", + "halo2curves-axiom 0.7.2 (git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.2)", + "num-bigint 0.4.6", + "num-traits", + "openvm-algebra-circuit", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-cuda-backend", + "openvm-ecc-circuit", + "openvm-ecc-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-instructions", + "openvm-mod-circuit-builder", + "openvm-pairing-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-pairing-transpiler", + "openvm-rv32im-circuit", + "openvm-stark-backend", + "openvm-stark-sdk", + "rand 0.8.5", + "serde", + "strum 0.26.3", +] + +[[package]] +name = "openvm-pairing-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "hex-literal 0.4.1", + "itertools 0.14.0", + "lazy_static", + "num-bigint 0.4.6", + "num-traits", + "openvm 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-algebra-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-algebra-moduli-macros 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-ecc-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "rand 0.8.5", + "serde", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-pairing-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "blstrs", + "halo2curves-axiom 0.7.2 (git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.2)", + "hex-literal 0.4.1", + "itertools 0.14.0", + "lazy_static", + "num-bigint 0.4.6", + "num-traits", + "openvm 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-algebra-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-algebra-moduli-macros 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git)", + "openvm-ecc-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "rand 0.8.5", + "serde", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-pairing-transpiler" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "openvm-instructions", + "openvm-pairing-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-stark-backend", + "openvm-transpiler", + "rrs-lib", + "strum 0.26.3", +] + +[[package]] +name = "openvm-platform" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "libm", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-rv32im-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", +] + +[[package]] +name = "openvm-platform" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "libm", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git)", + "openvm-rv32im-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git)", +] + +[[package]] +name = "openvm-poseidon2-air" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "derivative", + "lazy_static", + "openvm-cuda-builder", + "openvm-stark-backend", + "openvm-stark-sdk", + "p3-monty-31", + "p3-poseidon2 0.1.0", + "p3-poseidon2-air", + "p3-symmetric 0.1.0", + "rand 0.8.5", + "zkhash 0.2.0 (git+https://github.com/HorizenLabs/poseidon2.git?rev=bb476b9)", +] + +[[package]] +name = "openvm-rv32-adapters" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "derive-new 0.6.0", + "itertools 0.14.0", + "openvm-circuit", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-instructions", + "openvm-rv32im-circuit", + "openvm-stark-backend", + "openvm-stark-sdk", + "rand 0.8.5", +] + +[[package]] +name = "openvm-rv32im-circuit" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "cfg-if 1.0.4", + "derive-new 0.6.0", + "derive_more 1.0.0", + "eyre", + "num-bigint 0.4.6", + "num-integer", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-circuit-primitives-derive", + "openvm-cuda-backend", + "openvm-cuda-builder", + "openvm-cuda-common", + "openvm-instructions", + "openvm-rv32im-transpiler", + "openvm-stark-backend", + "openvm-stark-sdk", + "rand 0.8.5", + "serde", + "strum 0.26.3", +] + +[[package]] +name = "openvm-rv32im-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "p3-field 0.1.0", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-rv32im-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git)", + "p3-field 0.1.0", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-rv32im-transpiler" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "openvm-instructions", + "openvm-instructions-derive", + "openvm-rv32im-guest 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-stark-backend", + "openvm-transpiler", + "rrs-lib", + "serde", + "strum 0.26.3", + "tracing", +] + +[[package]] +name = "openvm-sdk" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "bitcode", + "bon", + "cfg-if 1.0.4", + "clap", + "derivative", + "derive_more 1.0.0", + "eyre", + "getset", + "hex", + "itertools 0.14.0", + "metrics", + "num-bigint 0.4.6", + "openvm 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-algebra-circuit", + "openvm-algebra-transpiler", + "openvm-bigint-circuit", + "openvm-bigint-transpiler", + "openvm-build", + "openvm-circuit", + "openvm-continuations", + "openvm-cuda-backend", + "openvm-ecc-circuit", + "openvm-ecc-transpiler", + "openvm-keccak256-circuit", + "openvm-keccak256-transpiler", + "openvm-native-circuit", + "openvm-native-compiler", + "openvm-native-recursion", + "openvm-native-transpiler", + "openvm-pairing-circuit", + "openvm-pairing-transpiler", + "openvm-rv32im-circuit", + "openvm-rv32im-transpiler", + "openvm-sha256-circuit", + "openvm-sha256-transpiler", + "openvm-stark-backend", + "openvm-stark-sdk", + "openvm-transpiler", + "p3-fri 0.1.0", + "rand 0.8.5", + "rrs-lib", + "serde", + "serde_json", + "serde_with", + "snark-verifier", + "snark-verifier-sdk", + "tempfile", + "thiserror 1.0.69", + "toml", + "tracing", +] + +[[package]] +name = "openvm-sha256-air" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "openvm-circuit-primitives", + "openvm-stark-backend", + "rand 0.8.5", + "sha2", +] + +[[package]] +name = "openvm-sha256-circuit" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "cfg-if 1.0.4", + "derive-new 0.6.0", + "derive_more 1.0.0", + "openvm-circuit", + "openvm-circuit-derive", + "openvm-circuit-primitives", + "openvm-cuda-backend", + "openvm-cuda-builder", + "openvm-cuda-common", + "openvm-instructions", + "openvm-rv32im-circuit", + "openvm-sha256-air", + "openvm-sha256-transpiler", + "openvm-stark-backend", + "openvm-stark-sdk", + "rand 0.8.5", + "serde", + "sha2", + "strum 0.26.3", +] + +[[package]] +name = "openvm-sha256-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "openvm-platform 1.4.1 (git+https://github.com/openvm-org/openvm.git)", +] + +[[package]] +name = "openvm-sha256-transpiler" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "openvm-instructions", + "openvm-instructions-derive", + "openvm-sha256-guest", + "openvm-stark-backend", + "openvm-transpiler", + "rrs-lib", + "strum 0.26.3", +] + +[[package]] +name = "openvm-stark-backend" +version = "1.2.1" +source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.2.1#dde6cdaf105cc57d1609fd49568c7bce0a066cc2" +dependencies = [ + "bitcode", + "cfg-if 1.0.4", + "derivative", + "derive-new 0.7.0", + "eyre", + "itertools 0.14.0", + "p3-air 0.1.0", + "p3-challenger 0.1.0", + "p3-commit 0.1.0", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-uni-stark 0.1.0", + "p3-util 0.1.0", + "rayon", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "thiserror 1.0.69", + "tikv-jemallocator", + "tracing", +] + +[[package]] +name = "openvm-stark-sdk" +version = "1.2.1" +source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.2.1#dde6cdaf105cc57d1609fd49568c7bce0a066cc2" +dependencies = [ + "dashmap", + "derivative", + "derive_more 1.0.0", + "ff 0.13.1", + "itertools 0.14.0", + "metrics", + "metrics-tracing-context", + "metrics-util", + "openvm-stark-backend", + "p3-baby-bear 0.1.0", + "p3-blake3", + "p3-bn254-fr 0.1.0", + "p3-dft 0.1.0", + "p3-fri 0.1.0", + "p3-goldilocks", + "p3-keccak", + "p3-koala-bear", + "p3-merkle-tree 0.1.0", + "p3-poseidon", + "p3-poseidon2 0.1.0", + "p3-symmetric 0.1.0", + "rand 0.8.5", + "serde", + "serde_json", + "static_assertions", + "toml", + "tracing", + "tracing-forest", + "tracing-subscriber 0.3.20", + "zkhash 0.2.0 (git+https://github.com/HorizenLabs/poseidon2.git?rev=bb476b9)", +] + +[[package]] +name = "openvm-transpiler" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git#91e34d521c16703a35ca7a6e52ed8adb605f2f58" +dependencies = [ + "elf", + "eyre", + "openvm-instructions", + "openvm-platform 1.4.1 (git+https://github.com/openvm-org/openvm.git)", + "openvm-stark-backend", + "rrs-lib", + "thiserror 1.0.69", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ordered-float" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "num-traits", +] + +[[package]] +name = "owo-colors" +version = "4.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c6901729fa79e91a0913333229e9ca5dc725089d1c363b2f4b4760709dc4a52" + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "p3-air" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "p3-field 0.1.0", + "p3-matrix 0.1.0", ] [[package]] @@ -6754,8 +8514,22 @@ version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05a97452c4b1cfa8626e69181d901fc8231d99ff7d87e9701a2e6b934606615" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.2.3-succinct", + "p3-matrix 0.2.3-succinct", +] + +[[package]] +name = "p3-baby-bear" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "p3-field 0.1.0", + "p3-mds 0.1.0", + "p3-monty-31", + "p3-poseidon2 0.1.0", + "p3-symmetric 0.1.0", + "rand 0.8.5", + "serde", ] [[package]] @@ -6765,10 +8539,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" dependencies = [ "num-bigint 0.4.6", - "p3-field", - "p3-mds", - "p3-poseidon2", - "p3-symmetric", + "p3-field 0.2.3-succinct", + "p3-mds 0.2.3-succinct", + "p3-poseidon2 0.2.3-succinct", + "p3-symmetric 0.2.3-succinct", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-blake3" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "blake3", + "p3-symmetric 0.1.0", + "p3-util 0.1.0", +] + +[[package]] +name = "p3-bn254-fr" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "ff 0.13.1", + "halo2curves", + "num-bigint 0.4.6", + "p3-field 0.1.0", + "p3-poseidon2 0.1.0", + "p3-symmetric 0.1.0", "rand 0.8.5", "serde", ] @@ -6781,27 +8580,53 @@ checksum = "c0dd4d095d254783098bd09fc5fdf33fd781a1be54608ab93cb3ed4bd723da54" dependencies = [ "ff 0.13.1", "num-bigint 0.4.6", - "p3-field", - "p3-poseidon2", - "p3-symmetric", + "p3-field 0.2.3-succinct", + "p3-poseidon2 0.2.3-succinct", + "p3-symmetric 0.2.3-succinct", "rand 0.8.5", "serde", ] +[[package]] +name = "p3-challenger" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "p3-field 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-symmetric 0.1.0", + "p3-util 0.1.0", + "tracing", +] + [[package]] name = "p3-challenger" version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5d18c223b7e0177f4ac91070fa3f6cc557d5ee3b279869924c3102fb1b20910" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-field 0.2.3-succinct", + "p3-maybe-rayon 0.2.3-succinct", + "p3-symmetric 0.2.3-succinct", + "p3-util 0.2.3-succinct", "serde", "tracing", ] +[[package]] +name = "p3-commit" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "itertools 0.14.0", + "p3-challenger 0.1.0", + "p3-dft 0.1.0", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-util 0.1.0", + "serde", +] + [[package]] name = "p3-commit" version = "0.2.3-succinct" @@ -6809,23 +8634,53 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b38fe979d53d4f1d64158c40b3cd9ea1bd6b7bc8f085e489165c542ef914ae28" dependencies = [ "itertools 0.12.1", - "p3-challenger", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-matrix 0.2.3-succinct", + "p3-util 0.2.3-succinct", "serde", ] +[[package]] +name = "p3-dft" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "itertools 0.14.0", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-util 0.1.0", + "tracing", +] + [[package]] name = "p3-dft" version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" dependencies = [ - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.2.3-succinct", + "p3-matrix 0.2.3-succinct", + "p3-maybe-rayon 0.2.3-succinct", + "p3-util 0.2.3-succinct", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "itertools 0.14.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "nums", + "p3-maybe-rayon 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", + "serde", "tracing", ] @@ -6838,9 +8693,28 @@ dependencies = [ "itertools 0.12.1", "num-bigint 0.4.6", "num-traits", - "p3-util", + "p3-util 0.2.3-succinct", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-fri" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "itertools 0.14.0", + "p3-challenger 0.1.0", + "p3-commit 0.1.0", + "p3-dft 0.1.0", + "p3-field 0.1.0", + "p3-interpolation 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-util 0.1.0", "rand 0.8.5", "serde", + "tracing", ] [[package]] @@ -6850,27 +8724,81 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0c274dab2dcd060cdea9ab3f8f7129f5fa5f08917d6092dc2b297a31d883aa0" dependencies = [ "itertools 0.12.1", - "p3-challenger", - "p3-commit", - "p3-dft", - "p3-field", - "p3-interpolation", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-challenger 0.2.3-succinct", + "p3-commit 0.2.3-succinct", + "p3-dft 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-interpolation 0.2.3-succinct", + "p3-matrix 0.2.3-succinct", + "p3-maybe-rayon 0.2.3-succinct", + "p3-util 0.2.3-succinct", "serde", "tracing", ] +[[package]] +name = "p3-goldilocks" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "num-bigint 0.4.6", + "p3-dft 0.1.0", + "p3-field 0.1.0", + "p3-mds 0.1.0", + "p3-poseidon", + "p3-poseidon2 0.1.0", + "p3-symmetric 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-interpolation" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-util 0.1.0", +] + [[package]] name = "p3-interpolation" version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed8de7333abb0ad0a17bb78726a43749cc7fcab4763f296894e8b2933841d4d8" dependencies = [ - "p3-field", - "p3-matrix", - "p3-util", + "p3-field 0.2.3-succinct", + "p3-matrix 0.2.3-succinct", + "p3-util 0.2.3-succinct", +] + +[[package]] +name = "p3-keccak" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "itertools 0.14.0", + "p3-field 0.1.0", + "p3-symmetric 0.1.0", + "p3-util 0.1.0", + "tiny-keccak", +] + +[[package]] +name = "p3-keccak-air" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "p3-air 0.1.0", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", + "tracing", ] [[package]] @@ -6879,12 +8807,41 @@ version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01c7ec21317c455d39588428e4ec85b96d663ff171ddf102a10e2ca54c942dea" dependencies = [ - "p3-air", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-air 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-matrix 0.2.3-succinct", + "p3-maybe-rayon 0.2.3-succinct", + "p3-util 0.2.3-succinct", + "tracing", +] + +[[package]] +name = "p3-koala-bear" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "p3-field 0.1.0", + "p3-mds 0.1.0", + "p3-monty-31", + "p3-poseidon2 0.1.0", + "p3-symmetric 0.1.0", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-matrix" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "itertools 0.14.0", + "p3-field 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", + "serde", "tracing", + "transpose", ] [[package]] @@ -6894,14 +8851,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" dependencies = [ "itertools 0.12.1", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.2.3-succinct", + "p3-maybe-rayon 0.2.3-succinct", + "p3-util 0.2.3-succinct", "rand 0.8.5", "serde", "tracing", ] +[[package]] +name = "p3-maybe-rayon" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "rayon", +] + [[package]] name = "p3-maybe-rayon" version = "0.2.3-succinct" @@ -6912,48 +8877,149 @@ dependencies = [ ] [[package]] -name = "p3-mds" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" +name = "p3-mds" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "itertools 0.14.0", + "p3-dft 0.1.0", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-symmetric 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", +] + +[[package]] +name = "p3-mds" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" +dependencies = [ + "itertools 0.12.1", + "p3-dft 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-matrix 0.2.3-succinct", + "p3-symmetric 0.2.3-succinct", + "p3-util 0.2.3-succinct", + "rand 0.8.5", +] + +[[package]] +name = "p3-merkle-tree" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "itertools 0.14.0", + "p3-commit 0.1.0", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-symmetric 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-merkle-tree" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f159e073afbee02c00d22390bf26ebb9ce03bbcd3e6dcd13c6a7a3811ab39608" +dependencies = [ + "itertools 0.12.1", + "p3-commit 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-matrix 0.2.3-succinct", + "p3-maybe-rayon 0.2.3-succinct", + "p3-symmetric 0.2.3-succinct", + "p3-util 0.2.3-succinct", + "serde", + "tracing", +] + +[[package]] +name = "p3-monty-31" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "itertools 0.14.0", + "num-bigint 0.4.6", + "p3-dft 0.1.0", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-mds 0.1.0", + "p3-poseidon2 0.1.0", + "p3-symmetric 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", + "serde", + "tracing", + "transpose", +] + +[[package]] +name = "p3-poseidon" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "p3-field 0.1.0", + "p3-mds 0.1.0", + "p3-symmetric 0.1.0", + "rand 0.8.5", +] + +[[package]] +name = "p3-poseidon2" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" dependencies = [ - "itertools 0.12.1", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-symmetric", - "p3-util", + "gcd", + "p3-field 0.1.0", + "p3-mds 0.1.0", + "p3-symmetric 0.1.0", "rand 0.8.5", ] [[package]] -name = "p3-merkle-tree" +name = "p3-poseidon2" version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f159e073afbee02c00d22390bf26ebb9ce03bbcd3e6dcd13c6a7a3811ab39608" +checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" dependencies = [ - "itertools 0.12.1", - "p3-commit", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "gcd", + "p3-field 0.2.3-succinct", + "p3-mds 0.2.3-succinct", + "p3-symmetric 0.2.3-succinct", + "rand 0.8.5", "serde", +] + +[[package]] +name = "p3-poseidon2-air" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "p3-air 0.1.0", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-poseidon2 0.1.0", + "p3-util 0.1.0", + "rand 0.8.5", + "tikv-jemallocator", "tracing", ] [[package]] -name = "p3-poseidon2" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" +name = "p3-symmetric" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" dependencies = [ - "gcd", - "p3-field", - "p3-mds", - "p3-symmetric", - "rand 0.8.5", + "itertools 0.14.0", + "p3-field 0.1.0", "serde", ] @@ -6964,8 +9030,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" dependencies = [ "itertools 0.12.1", - "p3-field", + "p3-field 0.2.3-succinct", + "serde", +] + +[[package]] +name = "p3-uni-stark" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "itertools 0.14.0", + "p3-air 0.1.0", + "p3-challenger 0.1.0", + "p3-commit 0.1.0", + "p3-dft 0.1.0", + "p3-field 0.1.0", + "p3-matrix 0.1.0", + "p3-maybe-rayon 0.1.0", + "p3-util 0.1.0", "serde", + "tracing", ] [[package]] @@ -6975,18 +9059,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a86f29c32bf46fa4acb6547d2065a711e146d4faca388b56d75718c60a0097d" dependencies = [ "itertools 0.12.1", - "p3-air", - "p3-challenger", - "p3-commit", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-air 0.2.3-succinct", + "p3-challenger 0.2.3-succinct", + "p3-commit 0.2.3-succinct", + "p3-dft 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-matrix 0.2.3-succinct", + "p3-maybe-rayon 0.2.3-succinct", + "p3-util 0.2.3-succinct", "serde", "tracing", ] +[[package]] +name = "p3-util" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "serde", +] + [[package]] name = "p3-util" version = "0.2.3-succinct" @@ -7420,6 +9512,21 @@ dependencies = [ "portable-atomic", ] +[[package]] +name = "poseidon-primitives" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4aaeda7a092e21165cc5f0cbc738e72a46f31c03c3cbd87b71ceae9d2d93bc" +dependencies = [ + "bitvec", + "ff 0.13.1", + "lazy_static", + "log", + "rand 0.8.5", + "rand_xorshift 0.3.0", + "thiserror 1.0.69", +] + [[package]] name = "postcard" version = "1.1.3" @@ -7543,6 +9650,28 @@ dependencies = [ "toml_edit 0.23.7", ] +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.110", +] + [[package]] name = "proc-macro2" version = "1.0.103" @@ -7631,7 +9760,7 @@ dependencies = [ "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", - "rand_xorshift", + "rand_xorshift 0.4.0", "regex-syntax", "rusty-fork", "tempfile", @@ -7782,6 +9911,21 @@ dependencies = [ "xxhash-rust", ] +[[package]] +name = "quanta" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3ab5a9d756f0d97bdc89019bd2e4ea098cf9cde50ee7564dde6b81ccc8f06c7" +dependencies = [ + "crossbeam-utils 0.8.21", + "libc", + "once_cell", + "raw-cpuid", + "wasi", + "web-sys", + "winapi", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -7873,6 +10017,16 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +[[package]] +name = "radix_trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +dependencies = [ + "endian-type", + "nibble_vec", +] + [[package]] name = "rancor" version = "0.1.1" @@ -7943,6 +10097,15 @@ dependencies = [ "serde", ] +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + [[package]] name = "rand_xorshift" version = "0.4.0" @@ -7985,6 +10148,15 @@ dependencies = [ "unicode-width 0.2.0", ] +[[package]] +name = "raw-cpuid" +version = "11.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" +dependencies = [ + "bitflags 2.10.0", +] + [[package]] name = "rawpointer" version = "0.2.1" @@ -8109,6 +10281,15 @@ dependencies = [ "bytecheck", ] +[[package]] +name = "repr_offset" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb1070755bd29dffc19d0971cab794e607839ba2ef4b69a9e6fbc8733c1b72ea" +dependencies = [ + "tstr", +] + [[package]] name = "reqwest" version = "0.11.27" @@ -8556,7 +10737,7 @@ dependencies = [ "digest 0.10.7", "ff 0.13.1", "hex", - "hex-literal", + "hex-literal 0.4.1", "metal", "ndarray", "parking_lot", @@ -8581,7 +10762,7 @@ checksum = "3fcce11648a9ff60b8e7af2f0ce7fbf8d25275ab6d414cc91b9da69ee75bc978" dependencies = [ "addr2line 0.24.2", "anyhow", - "bincode", + "bincode 1.3.3", "bonsai-sdk", "borsh", "bytemuck", @@ -9323,6 +11504,24 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_arrays" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38636132857f68ec3d5f3eb121166d2af33cb55174c4d5ff645db6165cbef0fd" +dependencies = [ + "serde", +] + [[package]] name = "serde_arrays" version = "0.2.0" @@ -9613,6 +11812,12 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fed904c7fb2856d868b92464fc8fa597fce366edea1a9cbfaa8cb5fe080bd6d" +[[package]] +name = "sketches-ddsketch" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85636c14b73d81f541e525f585c0a2109e6744e1565b5c1668e31c70c10ed65c" + [[package]] name = "slab" version = "0.4.11" @@ -9631,6 +11836,50 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" +[[package]] +name = "snark-verifier" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c426469de23e6a799d6755465df2aec9bec12e5a263c817394c28b833614da6" +dependencies = [ + "halo2-base", + "halo2-ecc", + "hex", + "itertools 0.11.0", + "lazy_static", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "pairing 0.23.0", + "rand 0.8.5", + "ruint", + "serde", + "sha3", +] + +[[package]] +name = "snark-verifier-sdk" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89cc442a507abb490f3c2f5e2a0be2626b1d9d9ea2137fb240c6ddf5a8377e24" +dependencies = [ + "bincode 1.3.3", + "ethereum-types 0.14.1", + "getset", + "halo2-base", + "hex", + "itertools 0.11.0", + "lazy_static", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "rand 0.8.5", + "rand_chacha 0.3.1", + "serde", + "serde_json", + "snark-verifier", +] + [[package]] name = "snowbridge-amcl" version = "1.0.2" @@ -9695,7 +11944,7 @@ version = "5.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "117e991e137c9121eac26b2fd06daaa8f9e7c118a167d9a977e0048ac2142fac" dependencies = [ - "bincode", + "bincode 1.3.3", "bytemuck", "clap", "elf", @@ -9709,10 +11958,10 @@ dependencies = [ "itertools 0.13.0", "nohash-hasher", "num", - "p3-baby-bear", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-baby-bear 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-maybe-rayon 0.2.3-succinct", + "p3-util 0.2.3-succinct", "rand 0.8.5", "range-set-blaze", "rrs-succinct", @@ -9738,7 +11987,7 @@ version = "5.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b70e76953d1c4d507136b373bc198df0271d011c9acaa9b1eb8614dd65a0e04" dependencies = [ - "bincode", + "bincode 1.3.3", "cbindgen", "cc", "cfg-if 1.0.4", @@ -9752,17 +12001,17 @@ dependencies = [ "num", "num_cpus", "p256", - "p3-air", - "p3-baby-bear", - "p3-challenger", - "p3-field", - "p3-keccak-air", - "p3-matrix", - "p3-maybe-rayon", - "p3-poseidon2", - "p3-symmetric", - "p3-uni-stark", - "p3-util", + "p3-air 0.2.3-succinct", + "p3-baby-bear 0.2.3-succinct", + "p3-challenger 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-keccak-air 0.2.3-succinct", + "p3-matrix 0.2.3-succinct", + "p3-maybe-rayon 0.2.3-succinct", + "p3-poseidon2 0.2.3-succinct", + "p3-symmetric 0.2.3-succinct", + "p3-uni-stark 0.2.3-succinct", + "p3-util 0.2.3-succinct", "pathdiff", "rand 0.8.5", "rayon", @@ -9794,7 +12043,7 @@ version = "5.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3d56209b50707201184746b749d3e791f3d33411539f508a563405de1fb8694" dependencies = [ - "bincode", + "bincode 1.3.3", "ctrlc", "prost 0.13.5", "serde", @@ -9819,7 +12068,7 @@ dependencies = [ "k256", "num", "p256", - "p3-field", + "p3-field 0.2.3-succinct", "serde", "snowbridge-amcl", "sp1-primitives", @@ -9843,7 +12092,7 @@ version = "5.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fce8ad0f153443d09d398eccb650a0b2dcbf829470e394e4bf60ec4379c7af93" dependencies = [ - "bincode", + "bincode 1.3.3", "serde", "sp1-primitives", ] @@ -9854,16 +12103,16 @@ version = "5.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0244dee3a7a0f88cf71c3edf518f4fc97794ae870a107cbe7c810ac3fbf879cb" dependencies = [ - "bincode", + "bincode 1.3.3", "blake3", "cfg-if 1.0.4", "hex", "lazy_static", "num-bigint 0.4.6", - "p3-baby-bear", - "p3-field", - "p3-poseidon2", - "p3-symmetric", + "p3-baby-bear 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-poseidon2 0.2.3-succinct", + "p3-symmetric 0.2.3-succinct", "serde", "sha2", ] @@ -9875,7 +12124,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5fa3bb2b42cd36c1045472900dcc348a61475774734a5d8cdd4acaf929396ff" dependencies = [ "anyhow", - "bincode", + "bincode 1.3.3", "clap", "dirs 5.0.1", "downloader", @@ -9886,14 +12135,14 @@ dependencies = [ "itertools 0.13.0", "lru 0.12.5", "num-bigint 0.4.6", - "p3-baby-bear", - "p3-bn254-fr", - "p3-challenger", - "p3-commit", - "p3-field", - "p3-matrix", - "p3-symmetric", - "p3-util", + "p3-baby-bear 0.2.3-succinct", + "p3-bn254-fr 0.2.3-succinct", + "p3-challenger 0.2.3-succinct", + "p3-commit 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-matrix 0.2.3-succinct", + "p3-symmetric 0.2.3-succinct", + "p3-util 0.2.3-succinct", "rayon", "serde", "serde_json", @@ -9922,18 +12171,18 @@ dependencies = [ "hashbrown 0.14.5", "itertools 0.13.0", "num-traits", - "p3-air", - "p3-baby-bear", - "p3-bn254-fr", - "p3-challenger", - "p3-commit", - "p3-dft", - "p3-field", - "p3-fri", - "p3-matrix", - "p3-symmetric", - "p3-uni-stark", - "p3-util", + "p3-air 0.2.3-succinct", + "p3-baby-bear 0.2.3-succinct", + "p3-bn254-fr 0.2.3-succinct", + "p3-challenger 0.2.3-succinct", + "p3-commit 0.2.3-succinct", + "p3-dft 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-fri 0.2.3-succinct", + "p3-matrix 0.2.3-succinct", + "p3-symmetric 0.2.3-succinct", + "p3-uni-stark 0.2.3-succinct", + "p3-util 0.2.3-succinct", "rand 0.8.5", "rayon", "serde", @@ -9956,10 +12205,10 @@ checksum = "5611ead360e9875f426c5add60ce8082bfee28302a5c7dbfa39cad02e9178f88" dependencies = [ "backtrace", "itertools 0.13.0", - "p3-baby-bear", - "p3-bn254-fr", - "p3-field", - "p3-symmetric", + "p3-baby-bear 0.2.3-succinct", + "p3-bn254-fr 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-symmetric 0.2.3-succinct", "serde", "sp1-core-machine", "sp1-primitives", @@ -9985,20 +12234,20 @@ dependencies = [ "hashbrown 0.14.5", "itertools 0.13.0", "num_cpus", - "p3-air", - "p3-baby-bear", - "p3-bn254-fr", - "p3-challenger", - "p3-commit", - "p3-dft", - "p3-field", - "p3-fri", - "p3-matrix", - "p3-maybe-rayon", - "p3-merkle-tree", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-air 0.2.3-succinct", + "p3-baby-bear 0.2.3-succinct", + "p3-bn254-fr 0.2.3-succinct", + "p3-challenger 0.2.3-succinct", + "p3-commit 0.2.3-succinct", + "p3-dft 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-fri 0.2.3-succinct", + "p3-matrix 0.2.3-succinct", + "p3-maybe-rayon 0.2.3-succinct", + "p3-merkle-tree 0.2.3-succinct", + "p3-poseidon2 0.2.3-succinct", + "p3-symmetric 0.2.3-succinct", + "p3-util 0.2.3-succinct", "pathdiff", "rand 0.8.5", "serde", @@ -10010,7 +12259,7 @@ dependencies = [ "thiserror 1.0.69", "tracing", "vec_map", - "zkhash", + "zkhash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -10030,15 +12279,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0f48c722ad9319b3bc02ac2e61f5a82f8b8584fcdab5fe60db0b2292972857" dependencies = [ "anyhow", - "bincode", + "bincode 1.3.3", "bindgen 0.70.1", "cc", "cfg-if 1.0.4", "hex", "num-bigint 0.4.6", - "p3-baby-bear", - "p3-field", - "p3-symmetric", + "p3-baby-bear 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-symmetric 0.2.3-succinct", "serde", "serde_json", "sha2", @@ -10059,7 +12308,7 @@ dependencies = [ "anyhow", "async-trait", "backoff", - "bincode", + "bincode 1.3.3", "cfg-if 1.0.4", "dirs 5.0.1", "eventsource-stream", @@ -10069,9 +12318,9 @@ dependencies = [ "indicatif", "itertools 0.13.0", "k256", - "p3-baby-bear", - "p3-field", - "p3-fri", + "p3-baby-bear 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-fri 0.2.3-succinct", "prost 0.13.5", "reqwest 0.12.24", "reqwest-middleware", @@ -10105,20 +12354,20 @@ dependencies = [ "itertools 0.13.0", "num-bigint 0.4.6", "num-traits", - "p3-air", - "p3-baby-bear", - "p3-challenger", - "p3-commit", - "p3-dft", - "p3-field", - "p3-fri", - "p3-matrix", - "p3-maybe-rayon", - "p3-merkle-tree", - "p3-poseidon2", - "p3-symmetric", - "p3-uni-stark", - "p3-util", + "p3-air 0.2.3-succinct", + "p3-baby-bear 0.2.3-succinct", + "p3-challenger 0.2.3-succinct", + "p3-commit 0.2.3-succinct", + "p3-dft 0.2.3-succinct", + "p3-field 0.2.3-succinct", + "p3-fri 0.2.3-succinct", + "p3-matrix 0.2.3-succinct", + "p3-maybe-rayon 0.2.3-succinct", + "p3-merkle-tree 0.2.3-succinct", + "p3-poseidon2 0.2.3-succinct", + "p3-symmetric 0.2.3-succinct", + "p3-uni-stark 0.2.3-succinct", + "p3-util 0.2.3-succinct", "rayon-scan", "serde", "sp1-derive", @@ -10185,6 +12434,12 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" + [[package]] name = "spinoff" version = "0.8.0" @@ -10244,6 +12499,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9091b6114800a5f2141aee1d1b9d6ca3592ac062dc5decb3764ec5895a47b4eb" +[[package]] +name = "strength_reduce" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" + [[package]] name = "string_cache" version = "0.8.9" @@ -10500,6 +12761,39 @@ dependencies = [ "winapi", ] +[[package]] +name = "test-case" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" +dependencies = [ + "test-case-macros", +] + +[[package]] +name = "test-case-core" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" +dependencies = [ + "cfg-if 1.0.4", + "proc-macro2", + "quote", + "syn 2.0.110", +] + +[[package]] +name = "test-case-macros" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.110", + "test-case-core", +] + [[package]] name = "thiserror" version = "1.0.69" @@ -11176,12 +13470,37 @@ dependencies = [ "tracing-log", ] +[[package]] +name = "transpose" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e" +dependencies = [ + "num-integer", + "strength_reduce", +] + [[package]] name = "try-lock" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tstr" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f8e0294f14baae476d0dd0a2d780b2e24d66e349a9de876f5126777a37bdba7" +dependencies = [ + "tstr_proc_macros", +] + +[[package]] +name = "tstr_proc_macros" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78122066b0cb818b8afd08f7ed22f7fdbc3e90815035726f0840d0d26c0747a" + [[package]] name = "tui-big-text" version = "0.7.3" @@ -11351,6 +13670,12 @@ dependencies = [ "syn 2.0.110", ] +[[package]] +name = "typewit" +version = "1.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8c1ae7cc0fdb8b842d65d127cb981574b0d2b249b74d1c7a2986863dc134f71" + [[package]] name = "ucd-trie" version = "0.1.7" @@ -11437,6 +13762,16 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "unroll" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ad948c1cb799b1a70f836077721a92a35ac177d4daddf4c20a633786d4cf618" +dependencies = [ + "quote", + "syn 1.0.109", +] + [[package]] name = "untrusted" version = "0.7.1" @@ -11449,6 +13784,12 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "unty" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" + [[package]] name = "url" version = "2.5.7" @@ -11579,6 +13920,12 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "virtue" +version = "0.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" + [[package]] name = "wait-timeout" version = "0.2.1" @@ -12412,6 +14759,32 @@ dependencies = [ "subtle", ] +[[package]] +name = "zkhash" +version = "0.2.0" +source = "git+https://github.com/HorizenLabs/poseidon2.git?rev=bb476b9#bb476b9ca38198cf5092487283c8b8c5d4317c4e" +dependencies = [ + "ark-ff 0.4.2", + "ark-std 0.4.0", + "bitvec", + "blake2", + "bls12_381 0.7.1", + "byteorder", + "cfg-if 1.0.4", + "group 0.12.1", + "group 0.13.0", + "halo2", + "hex", + "jubjub", + "lazy_static", + "pasta_curves 0.5.1", + "rand 0.8.5", + "serde", + "sha2", + "sha3", + "subtle", +] + [[package]] name = "zopfli" version = "0.8.3" diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index 87f02bb2d2d..bc415feb6b0 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -46,6 +46,7 @@ secp256k1 = ["dep:secp256k1"] risc0 = ["ethrex-crypto/risc0"] sp1 = [] zisk = [] +openvm = ["ethrex-crypto/openvm"] [lib] path = "./common.rs" diff --git a/crates/common/crypto/Cargo.toml b/crates/common/crypto/Cargo.toml index f4c9705832b..902ca7a9262 100644 --- a/crates/common/crypto/Cargo.toml +++ b/crates/common/crypto/Cargo.toml @@ -12,6 +12,7 @@ path = "./lib.rs" # TODO(#1102): Move to Lambdaworks in the future c-kzg = { version = "2.1.1", default-features = false, optional = true } kzg-rs.workspace = true +openvm-kzg = { git = "https://github.com/axiom-crypto/openvm-kzg.git", rev = "530a6ed413def5296b7e4967650ba4fc8fd92ea1", optional = true } # v1.4.1 thiserror.workspace = true #[target.'cfg(not(any(target_arch = "x86_64", target_arch = "aarch64")))'.dependencies] @@ -20,7 +21,10 @@ tiny-keccak = { version = "2.0.2", features = ["keccak"] } [features] default = [] c-kzg = ["c-kzg/std", "c-kzg/ethereum_kzg_settings"] +openvm-kzg = ["dep:openvm-kzg"] + risc0 = ["c-kzg/std", "c-kzg/ethereum_kzg_settings", "c-kzg/portable"] +openvm = ["openvm-kzg"] [lints] workspace = true diff --git a/crates/common/crypto/kzg.rs b/crates/common/crypto/kzg.rs index 08608803a42..27a25a010f2 100644 --- a/crates/common/crypto/kzg.rs +++ b/crates/common/crypto/kzg.rs @@ -41,9 +41,14 @@ pub enum KzgError { CKzg(#[from] c_kzg::Error), #[error("kzg-rs error: {0}")] KzgRs(kzg_rs::KzgError), + #[cfg(feature = "openvm-kzg")] + #[error("openvm-kzg error: {0}")] + OpenvmKzg(openvm_kzg::KzgError), #[cfg(not(feature = "c-kzg"))] #[error("{0} is not supported without c-kzg feature enabled")] NotSupportedWithoutCKZG(String), + #[error("unimplemented: {0}")] + Unimplemented(String), } impl From for KzgError { @@ -52,8 +57,14 @@ impl From for KzgError { } } -/// Verifies a KZG proof for blob committed data, using a Fiat-Shamir protocol -/// as defined by EIP-7594. +#[cfg(feature = "openvm-kzg")] +impl From for KzgError { + fn from(value: openvm_kzg::KzgError) -> Self { + KzgError::OpenvmKzg(value) + } +} + +/// Verifies a KZG proof for blob committed data as defined by EIP-7594. #[allow(unused_variables)] pub fn verify_cell_kzg_proof_batch( blobs: &[Blob], @@ -96,14 +107,13 @@ pub fn verify_cell_kzg_proof_batch( } } -/// Verifies a KZG proof for blob committed data, using a Fiat-Shamir protocol -/// as defined by c-kzg-4844. +/// Verifies a KZG proof for blob committed data, as defined by c-kzg-4844. pub fn verify_blob_kzg_proof( blob: Blob, commitment: Commitment, proof: Proof, ) -> Result { - #[cfg(not(feature = "c-kzg"))] + #[cfg(all(not(feature = "c-kzg"), not(feature = "openvm-kzg")))] { kzg_rs::KzgProof::verify_blob_kzg_proof( kzg_rs::Blob(blob), @@ -113,13 +123,23 @@ pub fn verify_blob_kzg_proof( ) .map_err(KzgError::from) } - #[cfg(feature = "c-kzg")] + #[cfg(all(not(feature = "c-kzg"), feature = "openvm-kzg"))] + { + Err(KzgError::Unimplemented( + "openvm-kzg doesn't implement verify_blob_kzg_proof".to_string(), + )) + } + #[cfg(all(feature = "c-kzg", not(feature = "openvm-kzg")))] { let c_kzg_settings = c_kzg::ethereum_kzg_settings(KZG_PRECOMPUTE); c_kzg_settings .verify_blob_kzg_proof(&blob.into(), &commitment.into(), &proof.into()) .map_err(KzgError::from) } + #[cfg(all(feature = "c-kzg", feature = "openvm-kzg"))] + { + compile_error!("you must enable only one of c-kzg or openvm-kzg feature flags") + } } #[cfg(feature = "c-kzg")] @@ -155,7 +175,7 @@ pub fn verify_kzg_proof( y: [u8; 32], proof_bytes: [u8; 48], ) -> Result { - #[cfg(not(feature = "c-kzg"))] + #[cfg(all(not(feature = "c-kzg"), not(feature = "openvm-kzg")))] { kzg_rs::KzgProof::verify_kzg_proof( &kzg_rs::Bytes48(commitment_bytes), @@ -166,7 +186,18 @@ pub fn verify_kzg_proof( ) .map_err(KzgError::from) } - #[cfg(feature = "c-kzg")] + #[cfg(all(not(feature = "c-kzg"), feature = "openvm-kzg"))] + { + openvm_kzg::KzgProof::verify_kzg_proof( + &openvm_kzg::Bytes48::from_slice(&commitment_bytes)?, + &openvm_kzg::Bytes32::from_slice(&z)?, + &openvm_kzg::Bytes32::from_slice(&y)?, + &openvm_kzg::Bytes48::from_slice(&proof_bytes)?, + &openvm_kzg::get_kzg_settings(), + ) + .map_err(KzgError::from) + } + #[cfg(all(feature = "c-kzg", not(feature = "openvm-kzg")))] { let c_kzg_settings = c_kzg::ethereum_kzg_settings(KZG_PRECOMPUTE); c_kzg_settings @@ -178,6 +209,10 @@ pub fn verify_kzg_proof( ) .map_err(KzgError::from) } + #[cfg(all(feature = "c-kzg", feature = "openvm-kzg"))] + { + compile_error!("you must enable only one of c-kzg or openvm-kzg feature flags") + } } #[cfg(feature = "c-kzg")] diff --git a/crates/l2/prover/Cargo.toml b/crates/l2/prover/Cargo.toml index c67efd64d38..742a8f62254 100644 --- a/crates/l2/prover/Cargo.toml +++ b/crates/l2/prover/Cargo.toml @@ -44,6 +44,13 @@ sp1-sdk = { version = "=5.0.8", optional = true } sp1-prover = { version = "=5.0.8", optional = true } sp1-recursion-gnark-ffi = { version = "=5.0.8", optional = true } +openvm-sdk = { git = "https://github.com/openvm-org/openvm.git", package = "openvm-sdk", optional = true, features = [ + "evm-prove", + "parallel", +] } +openvm-continuations = { git = "https://github.com/openvm-org/openvm.git", package = "openvm-continuations", optional = true } +openvm-stark-sdk = { git = "https://github.com/openvm-org/stark-backend.git", package = "openvm-stark-sdk", tag = "v1.2.1", optional = true } + [dev-dependencies] ethrex-storage.workspace = true @@ -63,9 +70,15 @@ risc0 = [ ] sp1 = ["guest_program/sp1", "dep:sp1-sdk", "dep:sp1-prover"] zisk = ["guest_program/zisk"] +openvm = [ + "guest_program/openvm", + "dep:openvm-sdk", + "dep:openvm-stark-sdk", + "dep:openvm-continuations", +] profiling = ["sp1-sdk?/profiling"] -gpu = ["risc0-zkvm?/cuda", "sp1-sdk?/cuda"] +gpu = ["risc0-zkvm?/cuda", "sp1-sdk?/cuda", "openvm-sdk?/cuda"] l2 = [ "guest_program/l2", "ethrex-l2/l2", diff --git a/crates/l2/prover/src/backend/mod.rs b/crates/l2/prover/src/backend/mod.rs index 0c64b661e68..13b21093a9f 100644 --- a/crates/l2/prover/src/backend/mod.rs +++ b/crates/l2/prover/src/backend/mod.rs @@ -15,6 +15,9 @@ pub mod sp1; #[cfg(feature = "zisk")] pub mod zisk; +#[cfg(feature = "openvm")] +pub mod openvm; + #[derive(Default, Debug, Deserialize, Serialize, Copy, Clone, ValueEnum)] pub enum Backend { #[default] @@ -25,6 +28,8 @@ pub enum Backend { RISC0, #[cfg(feature = "zisk")] ZisK, + #[cfg(feature = "openvm")] + OpenVM, } // Needed for Clap @@ -40,6 +45,8 @@ impl FromStr for Backend { "risc0" => Ok(Backend::RISC0), #[cfg(feature = "zisk")] "zisk" => Ok(Backend::ZisK), + #[cfg(feature = "openvm")] + "openvm" => Ok(Backend::OpenVM), _ => Err(Self::Err::from("Invalid backend")), } } @@ -53,4 +60,6 @@ pub enum ProveOutput { RISC0(risc0_zkvm::Receipt), #[cfg(feature = "zisk")] ZisK(zisk::ProveOutput), + #[cfg(feature = "openvm")] + OpenVM(openvm::ProveOutput), } diff --git a/crates/l2/prover/src/backend/openvm.rs b/crates/l2/prover/src/backend/openvm.rs new file mode 100644 index 00000000000..b17323a2ba8 --- /dev/null +++ b/crates/l2/prover/src/backend/openvm.rs @@ -0,0 +1,57 @@ +use crate::ProofFormat; +use guest_program::input::ProgramInput; +use openvm_continuations::verifier::internal::types::VmStarkProof; +use openvm_sdk::{Sdk, StdIn, types::EvmProof}; +use openvm_stark_sdk::config::baby_bear_poseidon2::BabyBearPoseidon2Config; +use rkyv::rancor::Error; + +static PROGRAM_ELF: &[u8] = + include_bytes!("../guest_program/src/openvm/out/riscv32im-openvm-zkvm-elf"); + +pub enum ProveOutput { + Compressed(VmStarkProof), + Groth16(EvmProof), +} + +pub fn execute(input: ProgramInput) -> Result<(), Box> { + let sdk = Sdk::standard(); + + let mut stdin = StdIn::default(); + let bytes = rkyv::to_bytes::(&input)?; + stdin.write_bytes(bytes.as_slice()); + + sdk.execute(PROGRAM_ELF, stdin.clone())?; + + Ok(()) +} + +pub fn prove( + input: ProgramInput, + format: ProofFormat, +) -> Result> { + let sdk = Sdk::standard(); + + let mut stdin = StdIn::default(); + let bytes = rkyv::to_bytes::(&input)?; + stdin.write_bytes(bytes.as_slice()); + + let proof = match format { + ProofFormat::Compressed => { + let (proof, _) = sdk.prove(PROGRAM_ELF, stdin.clone())?; + ProveOutput::Compressed(proof) + } + ProofFormat::Groth16 => { + let proof = sdk.prove_evm(PROGRAM_ELF, stdin.clone())?; + ProveOutput::Groth16(proof) + } + }; + + Ok(proof) +} + +pub fn to_batch_proof( + _proof: ProveOutput, + _format: ProofFormat, +) -> Result> { + unimplemented!("OpenVM to_batch_proof is not implemented yet"); +} diff --git a/crates/l2/prover/src/guest_program/Cargo.toml b/crates/l2/prover/src/guest_program/Cargo.toml index 87e4446792c..0c15f592502 100644 --- a/crates/l2/prover/src/guest_program/Cargo.toml +++ b/crates/l2/prover/src/guest_program/Cargo.toml @@ -28,6 +28,13 @@ risc0-build = { version = "=3.0.3", optional = true } risc0-zkvm = { version = "=3.0.3", optional = true, features = ["getrandom"] } sp1-build = { version = "=5.0.8", optional = true } sp1-sdk = { version = "=5.0.8", optional = true } +openvm-build = { git = "https://github.com/openvm-org/openvm.git", package = "openvm-build", optional = true } +openvm-sdk = { git = "https://github.com/openvm-org/openvm.git", package = "openvm-sdk", optional = true, features = [ + "evm-prove", + "parallel", +] } +bincode = "1.3" +serde.workspace = true [package.metadata.risc0] methods = ["src/risc0"] @@ -42,6 +49,7 @@ zisk = [ "ethrex-vm/zisk", "ethrex-l2-common/zisk", ] +openvm = ["dep:openvm-build", "dep:openvm-sdk"] l2 = [] c-kzg = ["ethrex-vm/c-kzg", "ethrex-common/c-kzg"] secp256k1 = [ diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index b8bef81e4c7..077ac7e93cc 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -9,6 +9,9 @@ fn main() { #[cfg(all(not(clippy), feature = "zisk"))] build_zisk_program(); + + #[cfg(all(not(clippy), feature = "openvm"))] + build_openvm_program(); } #[cfg(all(not(clippy), feature = "risc0"))] @@ -161,6 +164,39 @@ fn build_zisk_program() { } } +#[cfg(all(not(clippy), feature = "openvm"))] +fn build_openvm_program() { + use std::{ + fs, + path::Path, + process::{Command, Stdio}, + }; + + let status = Command::new("cargo") + .arg("openvm") + .arg("build") + .arg("--no-transpile") + .stdout(Stdio::inherit()) + .stderr(Stdio::inherit()) + .current_dir("./src/openvm") + .status() + .expect("failed to execute cargo openvm build"); + + if !status.success() { + panic!("cargo openvm build failed with exit status: {}", status); + } + + let elf_src = + Path::new("./src/openvm/target/riscv32im-risc0-zkvm-elf/release/zkvm-openvm-program"); + let elf_dst = Path::new("./src/openvm/out/riscv32im-openvm-zkvm-elf"); + + if let Some(parent) = elf_dst.parent() { + fs::create_dir_all(parent).expect("failed to create destination dir"); + } + + fs::copy(&elf_src, &elf_dst).expect("failed to copy zkvm-openvm-program"); +} + #[cfg(all(not(clippy), feature = "zisk"))] /// Returns the path to `rustc` executable of the given toolchain. /// diff --git a/crates/l2/prover/src/guest_program/src/openvm/Cargo.lock b/crates/l2/prover/src/guest_program/src/openvm/Cargo.lock new file mode 100644 index 00000000000..39c04bf5986 --- /dev/null +++ b/crates/l2/prover/src/guest_program/src/openvm/Cargo.lock @@ -0,0 +1,3741 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys", +] + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-std", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "arrayvec", + "digest", + "educe", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.111", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff", + "ark-serialize", + "ark-std", + "educe", + "fnv", + "hashbrown 0.15.5", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive", + "ark-std", + "arrayvec", + "digest", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bls12_381" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7bc6d6292be3a19e6379786dac800f551e5865a5bb51ebbe3064ab80433f403" +dependencies = [ + "ff", + "group", + "pairing", + "rand_core", + "subtle", +] + +[[package]] +name = "bls12_381" +version = "0.8.0" +source = "git+https://github.com/lambdaclass/bls12_381?branch=expose-fp-struct#219174187bd78154cec35b0809799fc2c991a579" +dependencies = [ + "digest", + "ff", + "group", + "pairing", + "rand_core", + "subtle", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "bytecheck" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0caa33a2c0edca0419d15ac723dff03f1956f7978329b1e3b5fdaaaed9d3ca8b" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "rancor", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89385e82b5d1821d2219e0b095efa2cc1f246cbf99080f3be46a1a85c0d392d9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +dependencies = [ + "serde", +] + +[[package]] +name = "camino" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" + +[[package]] +name = "cc" +version = "1.2.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd405d82c84ff7f35739f175f67d8b9fb7687a0e84ccdc78bd3568839827cf07" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "chrono" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + +[[package]] +name = "clap" +version = "4.5.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "clap_lex" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" + +[[package]] +name = "colorchoice" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const_format" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.111", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "datatest-stable" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "833306ca7eec4d95844e65f0d7502db43888c5c1006c6c517e8cf51a27d15431" +dependencies = [ + "camino", + "fancy-regex", + "libtest-mimic", + "walkdir", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "syn 2.0.111", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest", + "ff", + "generic-array", + "group", + "pem-rfc7468", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "escape8259" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5692dd7b5a1978a5aeb0ce83b7655c58ca8efdcb79d21036ea249da95afec2c6" + +[[package]] +name = "ethbloom" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c321610643004cf908ec0f5f2aa0d8f1f8e14b540562a2887a1111ff1ecbf7b" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-rlp", + "impl-serde", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ab15ed80916029f878e0267c3a9f92b67df55e79af370bf66199059ae2b4ee3" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-rlp", + "impl-serde", + "primitive-types", + "uint", +] + +[[package]] +name = "ethrex-blockchain" +version = "7.0.0" +dependencies = [ + "bytes", + "ethrex-common", + "ethrex-crypto", + "ethrex-metrics", + "ethrex-rlp", + "ethrex-storage", + "ethrex-trie", + "ethrex-vm", + "hex", + "rustc-hash", + "thiserror", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "ethrex-common" +version = "7.0.0" +dependencies = [ + "bytes", + "crc32fast", + "ethereum-types", + "ethrex-crypto", + "ethrex-rlp", + "ethrex-trie", + "hex", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "kzg-rs", + "lazy_static", + "libc", + "once_cell", + "rayon", + "rkyv", + "rustc-hash", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror", + "tinyvec", + "tracing", + "url", +] + +[[package]] +name = "ethrex-crypto" +version = "7.0.0" +dependencies = [ + "kzg-rs", + "openvm-kzg", + "thiserror", + "tiny-keccak", +] + +[[package]] +name = "ethrex-l2-common" +version = "7.0.0" +dependencies = [ + "bytes", + "ethereum-types", + "ethrex-common", + "ethrex-crypto", + "ethrex-rlp", + "ethrex-storage", + "ethrex-trie", + "ethrex-vm", + "hex", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lambdaworks-crypto", + "rkyv", + "serde", + "serde_with", + "sha3", + "thiserror", +] + +[[package]] +name = "ethrex-levm" +version = "7.0.0" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff", + "bitvec", + "bls12_381 0.8.0 (git+https://github.com/lambdaclass/bls12_381?branch=expose-fp-struct)", + "bytes", + "datatest-stable", + "derive_more", + "ethrex-common", + "ethrex-crypto", + "ethrex-rlp", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lambdaworks-math", + "lazy_static", + "malachite", + "p256", + "ripemd", + "rustc-hash", + "serde", + "serde_json", + "sha2", + "sha3", + "strum", + "thiserror", + "walkdir", +] + +[[package]] +name = "ethrex-metrics" +version = "7.0.0" +dependencies = [ + "ethrex-common", + "serde", + "serde_json", + "thiserror", + "tracing-subscriber", +] + +[[package]] +name = "ethrex-rlp" +version = "7.0.0" +dependencies = [ + "bytes", + "ethereum-types", + "hex", + "lazy_static", + "snap", + "thiserror", + "tinyvec", +] + +[[package]] +name = "ethrex-storage" +version = "7.0.0" +dependencies = [ + "anyhow", + "async-trait", + "bincode", + "bytes", + "ethereum-types", + "ethrex-common", + "ethrex-crypto", + "ethrex-rlp", + "ethrex-trie", + "hex", + "lru 0.16.2", + "qfilter", + "rayon", + "rustc-hash", + "serde", + "serde_json", + "thiserror", + "tracing", +] + +[[package]] +name = "ethrex-threadpool" +version = "0.1.0" +dependencies = [ + "crossbeam", +] + +[[package]] +name = "ethrex-trie" +version = "7.0.0" +dependencies = [ + "anyhow", + "bytes", + "crossbeam", + "digest", + "ethereum-types", + "ethrex-crypto", + "ethrex-rlp", + "ethrex-threadpool", + "hex", + "lazy_static", + "rkyv", + "rustc-hash", + "serde", + "serde_json", + "smallvec", + "thiserror", + "tracing", +] + +[[package]] +name = "ethrex-vm" +version = "7.0.0" +dependencies = [ + "bincode", + "bytes", + "derive_more", + "dyn-clone", + "ethereum-types", + "ethrex-common", + "ethrex-crypto", + "ethrex-levm", + "ethrex-rlp", + "ethrex-trie", + "lazy_static", + "rkyv", + "serde", + "thiserror", + "tracing", +] + +[[package]] +name = "fancy-regex" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e24cb5a94bcae1e5408b0effca5cd7172ea3c5755049c5f3af4cd283a165298" +dependencies = [ + "bit-set", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "bitvec", + "byteorder", + "ff_derive", + "rand_core", + "subtle", +] + +[[package]] +name = "ff_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" +dependencies = [ + "addchain", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-macro", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "generic-array" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + +[[package]] +name = "guest_program" +version = "7.0.0" +dependencies = [ + "bincode", + "bytes", + "ethrex-blockchain", + "ethrex-common", + "ethrex-crypto", + "ethrex-l2-common", + "ethrex-rlp", + "ethrex-storage", + "ethrex-trie", + "ethrex-vm", + "hex", + "rkyv", + "serde", + "serde_json", + "serde_with", + "thiserror", +] + +[[package]] +name = "halo2curves-axiom" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0cd39c0df23c8b72cb7158ccb106341b078d5019b5478b3bfdaf14e898177d3" +dependencies = [ + "blake2b_simd", + "digest", + "ff", + "group", + "hex", + "lazy_static", + "num-bigint 0.4.6", + "num-traits", + "pairing", + "pasta_curves", + "paste", + "rand", + "rand_core", + "rayon", + "serde", + "serde_arrays 0.1.0", + "sha2", + "static_assertions", + "subtle", + "unroll", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hex-literal" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e712f64ec3850b98572bffac52e2c6f282b29fe6c5fa6d42334b30be438d95c1" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-codec" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d40b9d5e17727407e55028eafc22b2dc68781786e6d7eb8a21103f5058e3a14" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54ed8ad1f3877f7e775b8cbf30ed1bd3209a95401817f19a0eb4402d13f8cf90" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a143eada6a1ec4aefa5049037a26a6d597bfd64f8c026d07b77133e02b7dd0b" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", + "signature", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "ecdsa", + "elliptic-curve", + "ff", + "hex-literal 0.4.1", + "num-bigint 0.4.6", + "openvm", + "openvm-algebra-guest", + "openvm-algebra-moduli-macros", + "openvm-ecc-guest", + "openvm-ecc-sw-macros", + "serde", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "kzg-rs" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9201effeea3fcc93b587904ae2df9ce97e433184b9d6d299e9ebc9830a546636" +dependencies = [ + "ff", + "hex", + "serde_arrays 0.2.0", + "sha2", + "sp1_bls12_381", + "spin 0.9.8", +] + +[[package]] +name = "lambdaworks-crypto" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58b1a1c1102a5a7fbbda117b79fb3a01e033459c738a3c1642269603484fd1c1" +dependencies = [ + "lambdaworks-math", + "rand", + "rand_chacha", + "serde", + "sha2", + "sha3", +] + +[[package]] +name = "lambdaworks-math" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "018a95aa873eb49896a858dee0d925c33f3978d073c64b08dd4f2c9b35a017c6" +dependencies = [ + "getrandom 0.2.16", + "num-bigint 0.4.6", + "num-traits", + "rand", + "rayon", + "serde", + "serde_json", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin 0.9.8", +] + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libtest-mimic" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5297962ef19edda4ce33aaa484386e0a5b3d7f2f4e037cbeee00503ef6b29d33" +dependencies = [ + "anstream", + "anstyle", + "clap", + "escape8259", +] + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown 0.15.5", +] + +[[package]] +name = "lru" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96051b46fc183dc9cd4a223960ef37b9af631b55191852a8274bfef064cda20f" +dependencies = [ + "hashbrown 0.16.1", +] + +[[package]] +name = "malachite" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec410515e231332b14cd986a475d1c3323bcfa4c7efc038bfa1d5b410b1c57e4" +dependencies = [ + "malachite-base", + "malachite-nz", + "malachite-q", +] + +[[package]] +name = "malachite-base" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c738d3789301e957a8f7519318fcbb1b92bb95863b28f6938ae5a05be6259f34" +dependencies = [ + "hashbrown 0.15.5", + "itertools 0.14.0", + "libm", + "ryu", +] + +[[package]] +name = "malachite-nz" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1707c9a1fa36ce21749b35972bfad17bbf34cf5a7c96897c0491da321e387d3b" +dependencies = [ + "itertools 0.14.0", + "libm", + "malachite-base", + "wide", +] + +[[package]] +name = "malachite-q" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d764801aa4e96bbb69b389dcd03b50075345131cd63ca2e380bca71cc37a3675" +dependencies = [ + "itertools 0.14.0", + "malachite-base", + "malachite-nz", +] + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "munge" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e17401f259eba956ca16491461b6e8f72913a0a114e39736ce404410f915a0c" +dependencies = [ + "munge_macro", +] + +[[package]] +name = "munge_macro" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4568f25ccbd45ab5d5603dc34318c1ec56b117531781260002151b8530a9f931" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", + "rand", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-modular" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a5fe11d4135c3bcdf3a95b18b194afa9608a5f6ff034f5d857bc9a27fb0119" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-prime" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e238432a7881ec7164503ccc516c014bf009be7984cde1ba56837862543bdec3" +dependencies = [ + "bitvec", + "either", + "lru 0.12.5", + "num-bigint 0.4.6", + "num-integer", + "num-modular", + "num-traits", + "rand", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "nums" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3c74f925fb8cfc49a8022f2afce48a0683b70f9e439885594e84c5edbf5b01" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "rand", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "openvm" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "bytemuck", + "getrandom 0.2.16", + "getrandom 0.3.4", + "num-bigint 0.4.6", + "openvm-custom-insn", + "openvm-platform", + "openvm-rv32im-guest", + "serde", +] + +[[package]] +name = "openvm-algebra-complex-macros" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "openvm-macros-common", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "openvm-algebra-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "halo2curves-axiom", + "num-bigint 0.4.6", + "once_cell", + "openvm-algebra-complex-macros", + "openvm-algebra-moduli-macros", + "openvm-custom-insn", + "openvm-rv32im-guest", + "serde-big-array", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-algebra-moduli-macros" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "num-bigint 0.4.6", + "num-prime", + "openvm-macros-common", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "openvm-custom-insn" +version = "0.1.0" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "openvm-ecc-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "ecdsa", + "elliptic-curve", + "group", + "halo2curves-axiom", + "once_cell", + "openvm", + "openvm-algebra-guest", + "openvm-custom-insn", + "openvm-ecc-sw-macros", + "openvm-rv32im-guest", + "serde", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-ecc-sw-macros" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "openvm-macros-common", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "openvm-keccak256" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "openvm-keccak256-guest", + "tiny-keccak", +] + +[[package]] +name = "openvm-keccak256-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "openvm-platform", +] + +[[package]] +name = "openvm-kzg" +version = "0.2.0-alpha" +source = "git+https://github.com/axiom-crypto/openvm-kzg.git?rev=530a6ed413def5296b7e4967650ba4fc8fd92ea1#530a6ed413def5296b7e4967650ba4fc8fd92ea1" +dependencies = [ + "bls12_381 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hex", + "hex-literal 1.1.0", + "openvm-algebra-guest", + "openvm-ecc-guest", + "openvm-pairing", + "serde", + "serde-big-array", + "spin 0.10.0", +] + +[[package]] +name = "openvm-macros-common" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "syn 2.0.111", +] + +[[package]] +name = "openvm-pairing" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "group", + "hex-literal 0.4.1", + "itertools 0.14.0", + "num-bigint 0.4.6", + "num-traits", + "openvm", + "openvm-algebra-complex-macros", + "openvm-algebra-guest", + "openvm-algebra-moduli-macros", + "openvm-custom-insn", + "openvm-ecc-guest", + "openvm-ecc-sw-macros", + "openvm-pairing-guest", + "openvm-platform", + "openvm-rv32im-guest", + "rand", + "serde", +] + +[[package]] +name = "openvm-pairing-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "hex-literal 0.4.1", + "itertools 0.14.0", + "lazy_static", + "num-bigint 0.4.6", + "num-traits", + "openvm", + "openvm-algebra-guest", + "openvm-algebra-moduli-macros", + "openvm-custom-insn", + "openvm-ecc-guest", + "rand", + "serde", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-platform" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "libm", + "openvm-custom-insn", + "openvm-rv32im-guest", +] + +[[package]] +name = "openvm-rv32im-guest" +version = "1.4.1" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "openvm-custom-insn", + "p3-field 0.1.0", + "strum_macros 0.26.4", +] + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "p3-baby-bear" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" +dependencies = [ + "num-bigint 0.4.6", + "p3-field 0.2.3-succinct", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" +dependencies = [ + "p3-field 0.2.3-succinct", + "p3-matrix", + "p3-maybe-rayon 0.2.3-succinct", + "p3-util 0.2.3-succinct", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "itertools 0.14.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "nums", + "p3-maybe-rayon 0.1.0", + "p3-util 0.1.0", + "rand", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" +dependencies = [ + "itertools 0.12.1", + "num-bigint 0.4.6", + "num-traits", + "p3-util 0.2.3-succinct", + "rand", + "serde", +] + +[[package]] +name = "p3-matrix" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" +dependencies = [ + "itertools 0.12.1", + "p3-field 0.2.3-succinct", + "p3-maybe-rayon 0.2.3-succinct", + "p3-util 0.2.3-succinct", + "rand", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" + +[[package]] +name = "p3-maybe-rayon" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" + +[[package]] +name = "p3-mds" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" +dependencies = [ + "itertools 0.12.1", + "p3-dft", + "p3-field 0.2.3-succinct", + "p3-matrix", + "p3-symmetric", + "p3-util 0.2.3-succinct", + "rand", +] + +[[package]] +name = "p3-poseidon2" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" +dependencies = [ + "gcd", + "p3-field 0.2.3-succinct", + "p3-mds", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" +dependencies = [ + "itertools 0.12.1", + "p3-field 0.2.3-succinct", + "serde", +] + +[[package]] +name = "p3-util" +version = "0.1.0" +source = "git+https://github.com/Plonky3/Plonky3.git?rev=539bbc84085efb609f4f62cb03cf49588388abdb#539bbc84085efb609f4f62cb03cf49588388abdb" +dependencies = [ + "serde", +] + +[[package]] +name = "p3-util" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" +dependencies = [ + "serde", +] + +[[package]] +name = "pairing" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" +dependencies = [ + "group", +] + +[[package]] +name = "parity-scale-codec" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "pasta_curves" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" +dependencies = [ + "blake2b_simd", + "ff", + "group", + "lazy_static", + "rand", + "static_assertions", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "primitive-types" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "ptr_meta" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9a0cf95a1196af61d4f1cbdab967179516d9a4a4312af1f31948f8f6224a79" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "qfilter" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "746341cd2357c9a4df2d951522b4a8dd1ef553e543119899ad7bf87e938c8fbe" +dependencies = [ + "xxhash-rust", +] + +[[package]] +name = "quote" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rancor" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a063ea72381527c2a0561da9c80000ef822bdd7c3241b1cc1b12100e3df081ee" +dependencies = [ + "ptr_meta", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "rend" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cadadef317c2f20755a64d7fdc48f9e7178ee6b0e1f7fce33fa60f1d68a276e6" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest", +] + +[[package]] +name = "rkyv" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35a640b26f007713818e9a9b65d34da1cf58538207b052916a83d80e43f3ffa4" +dependencies = [ + "bytecheck", + "bytes", + "hashbrown 0.15.5", + "indexmap 2.12.1", + "munge", + "ptr_meta", + "rancor", + "rend", + "rkyv_derive", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd83f5f173ff41e00337d97f6572e416d022ef8a19f371817259ae960324c482" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "rlp" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa24e92bb2a83198bb76d661a71df9f7076b8c420b8696e4d3d97d50d94479e3" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "safe_arch" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_arrays" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38636132857f68ec3d5f3eb121166d2af33cb55174c4d5ff645db6165cbef0fd" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_arrays" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94a16b99c5ea4fe3daccd14853ad260ec00ea043b2708d1fd1da3106dcd8d9df" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_with" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10574371d41b0d9b2cff89418eda27da52bcaff2cc8741db26382a77c29131f1" +dependencies = [ + "base64", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.12.1", + "schemars 0.9.0", + "schemars 1.1.0", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08a72d8216842fdd57820dc78d840bef99248e35fb2554ff923319e60f2d686b" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "snap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" + +[[package]] +name = "sp1-lib" +version = "5.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb1a9935d58cb1dcd757a1b10d727090f5b718f1f03b512d48f0c1952e6ead00" +dependencies = [ + "bincode", + "serde", + "sp1-primitives", +] + +[[package]] +name = "sp1-primitives" +version = "5.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7d2a6187e394c30097ea7a975a4832f172918690dc89a979f0fad67422d3a8b" +dependencies = [ + "bincode", + "blake3", + "cfg-if", + "hex", + "lazy_static", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-field 0.2.3-succinct", + "p3-poseidon2", + "p3-symmetric", + "serde", + "sha2", +] + +[[package]] +name = "sp1_bls12_381" +version = "0.8.0-sp1-5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac255e1704ebcdeec5e02f6a0ebc4d2e9e6b802161938330b6810c13a610c583" +dependencies = [ + "cfg-if", + "ff", + "group", + "pairing", + "rand_core", + "sp1-lib", + "subtle", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spin" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.111", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "pin-project-lite", +] + +[[package]] +name = "tokio-util" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "futures-util", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap 2.12.1", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "uint" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "unroll" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ad948c1cb799b1a70f836077721a92a35ac177d4daddf4c20a633786d4cf618" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "1.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.111", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wide" +version = "0.7.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "winnow" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xxhash-rust" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43fa6694ed34d6e57407afbccdeecfa268c470a7d2a5b0cf49ce9fcc345afb90" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c640b22cd9817fae95be82f0d2f90b11f7605f6c319d16705c459b27ac2cbc26" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "zkvm-openvm-program" +version = "0.1.0" +dependencies = [ + "ethrex-blockchain", + "ethrex-common", + "ethrex-vm", + "guest_program", + "k256 0.13.4 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm", + "openvm-algebra-guest", + "openvm-ecc-guest", + "openvm-keccak256", + "rkyv", +] diff --git a/crates/l2/prover/src/guest_program/src/openvm/Cargo.toml b/crates/l2/prover/src/guest_program/src/openvm/Cargo.toml new file mode 100644 index 00000000000..c0cd9c7c6c3 --- /dev/null +++ b/crates/l2/prover/src/guest_program/src/openvm/Cargo.toml @@ -0,0 +1,29 @@ +[package] +version = "0.1.0" +name = "zkvm-openvm-program" +edition = "2024" + +[workspace] + +[dependencies] +openvm = { git = "https://github.com/openvm-org/openvm.git", features = [ + "std", +], tag = "v1.4.1" } +openvm-keccak256 = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1" } +openvm-k256 = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", package = "k256" } +openvm-ecc-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1" } +openvm-algebra-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1" } +rkyv = "0.8.10" + +ethrex-vm = { path = "../../../../../../vm", default-features = false, features = [ + "openvm", +] } +ethrex-common = { path = "../../../../../../common", default-features = false, features = [ + "openvm", +] } +ethrex-blockchain = { path = "../../../../../../blockchain", default-features = false } + +guest_program = { path = "../..", default-features = false } + +[features] +l2 = ["guest_program/l2"] diff --git a/crates/l2/prover/src/guest_program/src/openvm/openvm.toml b/crates/l2/prover/src/guest_program/src/openvm/openvm.toml new file mode 100644 index 00000000000..090d66c9433 --- /dev/null +++ b/crates/l2/prover/src/guest_program/src/openvm/openvm.toml @@ -0,0 +1,74 @@ +[app_vm_config.rv32i] +[app_vm_config.rv32m] +range_tuple_checker_sizes = [256, 8192] +[app_vm_config.io] + +[app_vm_config.keccak] +[app_vm_config.sha256] +[app_vm_config.bigint] +range_tuple_checker_sizes = [256, 8192] + +[app_vm_config.modular] +supported_moduli = [ + # bn254 (alt bn128) + "21888242871839275222246405745257275088696311157297823662689037894645226208583", # coordinate field + "21888242871839275222246405745257275088548364400416034343698204186575808495617", # scalar field + # secp256k1 (k256) + "115792089237316195423570985008687907853269984665640564039457584007908834671663", # coordinate field + "115792089237316195423570985008687907852837564279074904382605163141518161494337", # scalar field + # secp256r1 (p256) + "115792089210356248762697446949407573530086143415290314195533631308867097853951", # coordinate + "115792089210356248762697446949407573529996955224135760342422259061068512044369", # scalar + # bls12_381 + "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787", # coordinate field + "52435875175126190479447740508185965837690552500527637822603658699938581184513", # scalar field +] + +[app_vm_config.fp2] +supported_moduli = [ + [ + "Bn254Fp2", + # bn254 (alt bn128) + "21888242871839275222246405745257275088696311157297823662689037894645226208583", + ], + # Bls12_381 + [ + "Bls12_381Fp2", + "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787", + ], +] + +# bn254 (alt bn128) +[[app_vm_config.ecc.supported_curves]] +struct_name = "Bn254G1Affine" +modulus = "21888242871839275222246405745257275088696311157297823662689037894645226208583" +scalar = "21888242871839275222246405745257275088548364400416034343698204186575808495617" +a = "0" +b = "3" + +# secp256k1 (k256) +[[app_vm_config.ecc.supported_curves]] +struct_name = "Secp256k1Point" +modulus = "115792089237316195423570985008687907853269984665640564039457584007908834671663" +scalar = "115792089237316195423570985008687907852837564279074904382605163141518161494337" +a = "0" +b = "7" + +# secp256r1 (p256) +[[app_vm_config.ecc.supported_curves]] +struct_name = "P256Point" +modulus = "115792089210356248762697446949407573530086143415290314195533631308867097853951" +scalar = "115792089210356248762697446949407573529996955224135760342422259061068512044369" +a = "115792089210356248762697446949407573530086143415290314195533631308867097853948" +b = "41058363725152142129326129780047268409114441015993725554835256314039467401291" + +# bls12_381 +[[app_vm_config.ecc.supported_curves]] +struct_name = "Bls12_381G1Affine" +modulus = "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787" +scalar = "52435875175126190479447740508185965837690552500527637822603658699938581184513" +a = "0" +b = "4" + +[app_vm_config.pairing] +supported_curves = ["Bn254", "Bls12_381"] diff --git a/crates/l2/prover/src/guest_program/src/openvm/openvm_init.rs b/crates/l2/prover/src/guest_program/src/openvm/openvm_init.rs new file mode 100644 index 00000000000..257afb31e05 --- /dev/null +++ b/crates/l2/prover/src/guest_program/src/openvm/openvm_init.rs @@ -0,0 +1,4 @@ +// This file is automatically generated by cargo openvm. Do not rename or edit. +openvm_algebra_guest::moduli_macros::moduli_init! { "21888242871839275222246405745257275088696311157297823662689037894645226208583", "21888242871839275222246405745257275088548364400416034343698204186575808495617", "115792089237316195423570985008687907853269984665640564039457584007908834671663", "115792089237316195423570985008687907852837564279074904382605163141518161494337", "115792089210356248762697446949407573530086143415290314195533631308867097853951", "115792089210356248762697446949407573529996955224135760342422259061068512044369", "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787", "52435875175126190479447740508185965837690552500527637822603658699938581184513" } +openvm_algebra_guest::complex_macros::complex_init! { "Bn254Fp2" { mod_idx = 0 }, "Bls12_381Fp2" { mod_idx = 6 } } +openvm_ecc_guest::sw_macros::sw_init! { "Bn254G1Affine", "Secp256k1Point", "P256Point", "Bls12_381G1Affine" } diff --git a/crates/l2/prover/src/guest_program/src/openvm/src/main.rs b/crates/l2/prover/src/guest_program/src/openvm/src/main.rs new file mode 100644 index 00000000000..cf035d35379 --- /dev/null +++ b/crates/l2/prover/src/guest_program/src/openvm/src/main.rs @@ -0,0 +1,24 @@ +use guest_program::{execution::execution_program, input::ProgramInput}; +use openvm_keccak256::keccak256; +use rkyv::rancor::Error; + +openvm::init!(); + +pub fn main() { + openvm::io::println("start reading input"); + let input = openvm::io::read_vec(); + let input = rkyv::from_bytes::(&input).unwrap(); + openvm::io::println("finish reading input"); + + openvm::io::println("start execution"); + let output = execution_program(input).unwrap(); + openvm::io::println("finish execution"); + + openvm::io::println("start hashing output"); + let output = keccak256(&output.encode()); + openvm::io::println("finish hashing output"); + + openvm::io::println("start revealing output"); + openvm::io::reveal_bytes32(output); + openvm::io::println("finish revealing output"); +} diff --git a/crates/l2/prover/src/lib.rs b/crates/l2/prover/src/lib.rs index bce84e481e7..c76ee586b0c 100644 --- a/crates/l2/prover/src/lib.rs +++ b/crates/l2/prover/src/lib.rs @@ -24,6 +24,8 @@ pub fn execute(backend: Backend, input: ProgramInput) -> Result<(), Box backend::risc0::execute(input), #[cfg(feature = "zisk")] Backend::ZisK => backend::zisk::execute(input), + #[cfg(feature = "openvm")] + Backend::OpenVM => backend::openvm::execute(input), } } @@ -41,6 +43,8 @@ pub fn prove( Backend::RISC0 => backend::risc0::prove(input, format).map(ProveOutput::RISC0), #[cfg(feature = "zisk")] Backend::ZisK => backend::zisk::prove(input, format).map(ProveOutput::ZisK), + #[cfg(feature = "openvm")] + Backend::OpenVM => backend::openvm::prove(input, format).map(ProveOutput::OpenVM), } } @@ -56,5 +60,7 @@ pub fn to_batch_proof( ProveOutput::RISC0(receipt) => backend::risc0::to_batch_proof(receipt, format), #[cfg(feature = "zisk")] ProveOutput::ZisK(proof) => backend::zisk::to_batch_proof(proof, format), + #[cfg(feature = "openvm")] + ProveOutput::OpenVM(proof) => backend::openvm::to_batch_proof(proof, format), } } diff --git a/crates/vm/Cargo.toml b/crates/vm/Cargo.toml index b357ff0018b..f85ab0dcf86 100644 --- a/crates/vm/Cargo.toml +++ b/crates/vm/Cargo.toml @@ -37,6 +37,7 @@ c-kzg = ["ethrex-levm/c-kzg", "ethrex-common/c-kzg"] sp1 = ["ethrex-levm/sp1", "ethrex-common/sp1"] risc0 = ["ethrex-levm/risc0", "ethrex-common/risc0", "c-kzg"] zisk = ["ethrex-levm/zisk", "ethrex-common/zisk"] +openvm = ["ethrex-levm/openvm", "ethrex-common/openvm"] debug = ["ethrex-levm/debug"] diff --git a/crates/vm/levm/Cargo.toml b/crates/vm/levm/Cargo.toml index 0392ca7cd98..3fff68be366 100644 --- a/crates/vm/levm/Cargo.toml +++ b/crates/vm/levm/Cargo.toml @@ -62,6 +62,7 @@ debug = [] sp1 = ["dep:substrate-bn"] risc0 = ["dep:substrate-bn", "c-kzg"] zisk = ["dep:substrate-bn"] +openvm = ["ethrex-common/openvm"] [lints.rust] unsafe_code = "warn" From cf960da8fe994d87c0b47b4c35c965f86f2a71d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Mon, 24 Nov 2025 18:56:29 -0300 Subject: [PATCH 80/99] add lint job for openvm --- .github/workflows/pr-main_l2_prover.yaml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr-main_l2_prover.yaml b/.github/workflows/pr-main_l2_prover.yaml index 56948e81ec7..fc43b492a96 100644 --- a/.github/workflows/pr-main_l2_prover.yaml +++ b/.github/workflows/pr-main_l2_prover.yaml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - backend: ["sp1", "risc0"] + backend: ["sp1", "risc0", "openvm"] steps: - name: Checkout sources uses: actions/checkout@v4 @@ -44,6 +44,15 @@ jobs: curl -L https://sp1.succinct.xyz | bash ~/.sp1/bin/sp1up --version 5.0.8 + - name: RISC-V OpenVM toolchain install + if: matrix.backend == 'openvm' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + rustup install nightly-2025-02-14 + rustup component add rust-src --toolchain nightly-2025-02-14 + cargo +1.86 install --locked --git https://github.com/openvm-org/openvm.git --tag v1.4.1 cargo-openvm + - name: Check ${{ matrix.backend }} backend run: | cargo check -r -p ethrex-prover -F ${{ matrix.backend }} From 332a62e96e75371f6ae4d7674c5218dc5e1177ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 25 Nov 2025 12:55:07 -0300 Subject: [PATCH 81/99] add zisk check and elf jobs --- .github/workflows/pr-main_l2_prover.yaml | 12 +++++++++++- .github/workflows/tag_release.yaml | 20 ++++++++++++++++++++ crates/l2/prover/src/guest_program/build.rs | 8 ++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr-main_l2_prover.yaml b/.github/workflows/pr-main_l2_prover.yaml index 56948e81ec7..d5d3b675186 100644 --- a/.github/workflows/pr-main_l2_prover.yaml +++ b/.github/workflows/pr-main_l2_prover.yaml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - backend: ["sp1", "risc0"] + backend: ["sp1", "risc0", "zisk"] steps: - name: Checkout sources uses: actions/checkout@v4 @@ -44,6 +44,16 @@ jobs: curl -L https://sp1.succinct.xyz | bash ~/.sp1/bin/sp1up --version 5.0.8 + - name: ZisK toolchain install + if: matrix.backend == 'zisk' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_RUNNER: 1 + run: | + sudo apt-get update + sudo apt-get install -y xz-utils jq curl build-essential qemu-system libomp-dev libgmp-dev nlohmann-json3-dev protobuf-compiler uuid-dev libgrpc++-dev libsecp256k1-dev libsodium-dev libpqxx-dev nasm libopenmpi-dev openmpi-bin openmpi-common libclang-dev clang gcc-riscv64-unknown-elf + curl https://raw.githubusercontent.com/0xPolygonHermez/zisk/main/ziskup/install.sh | bash + - name: Check ${{ matrix.backend }} backend run: | cargo check -r -p ethrex-prover -F ${{ matrix.backend }} diff --git a/.github/workflows/tag_release.yaml b/.github/workflows/tag_release.yaml index 1c24f867b36..8d02fa99515 100644 --- a/.github/workflows/tag_release.yaml +++ b/.github/workflows/tag_release.yaml @@ -159,6 +159,7 @@ jobs: zkvm: - sp1 - risc0 + - zisk runs-on: ubuntu-latest steps: - name: Checkout code @@ -185,6 +186,17 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} uses: ./.github/actions/install-risc0 + - name: Install ZisK + if: ${{ matrix.zkvm == 'zisk' }} + env: + SHELL: /bin/bash + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_RUNNER: 1 + run: | + sudo apt-get update + sudo apt-get install -y xz-utils jq curl build-essential qemu-system libomp-dev libgmp-dev nlohmann-json3-dev protobuf-compiler uuid-dev libgrpc++-dev libsecp256k1-dev libsodium-dev libpqxx-dev nasm libopenmpi-dev openmpi-bin openmpi-common libclang-dev clang gcc-riscv64-unknown-elf + curl https://raw.githubusercontent.com/0xPolygonHermez/zisk/main/ziskup/install.sh | bash + - name: Build ethrex elf - ${{ matrix.zkvm }} run: | cargo build --release --package guest_program --features ${{ matrix.zkvm }} @@ -196,6 +208,8 @@ jobs: elif [ "${{ matrix.zkvm }}" = "risc0" ]; then mv crates/l2/prover/src/guest_program/src/${{ matrix.zkvm }}/out/riscv32im-risc0-elf ethrex-riscv32im-${{ matrix.zkvm }}-elf-${{ github.ref_name}} mv crates/l2/prover/src/guest_program/src/${{ matrix.zkvm }}/out/riscv32im-risc0-vk ${{ matrix.zkvm }}_verification_keys/ethrex-riscv32im-${{ matrix.zkvm }}-vk-${{ github.ref_name}} + elif [ "${{ matrix.zkvm }}" = "zisk" ]; then + mv crates/l2/prover/src/guest_program/src/${{ matrix.zkvm }}/out/riscv64ima-zisk-elf ethrex-riscv64ima-${{ matrix.zkvm }}-elf-${{ github.ref_name}} fi - name: Upload ethrex guest elf artifact - ${{ matrix.zkvm }} @@ -241,6 +255,12 @@ jobs: name: risc0_verification_keys path: ethrex_guests/risc0/ + - name: Download ZisK elf artifact + uses: actions/download-artifact@v4 + with: + name: ethrex-riscv64ima-zisk-elf-${{ github.ref_name }} + path: ethrex_guests/zisk/ + - name: Archive ethrex guests run: | cd ethrex_guests/ diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index b8bef81e4c7..66d6023b6a2 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -159,6 +159,14 @@ fn build_zisk_program() { if !setup_status.success() { panic!("Failed to setup compiled guest program with zisk toolchain"); } + + let _ = std::fs::create_dir("./src/zisk/out"); + + std::fs::copy( + "./src/zisk/target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program", + "./src/zisk/out/riscv64ima-zisk-elf", + ) + .expect("could not copy Zisk elf to output directory"); } #[cfg(all(not(clippy), feature = "zisk"))] From a7549e0127ad3485dc2b640c77deeb63849eb724 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 25 Nov 2025 13:01:25 -0300 Subject: [PATCH 82/99] fix setup-rust --- .github/actions/setup-rust/action.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/actions/setup-rust/action.yml b/.github/actions/setup-rust/action.yml index 33ff62d6ba6..0b494ab361e 100644 --- a/.github/actions/setup-rust/action.yml +++ b/.github/actions/setup-rust/action.yml @@ -4,7 +4,7 @@ inputs: components: description: "Rust components to install (e.g., rustfmt, clippy)" required: false - type: string + default: "" runs: using: "composite" steps: @@ -24,4 +24,5 @@ runs: components: ${{ inputs.components }} - name: Add Rust Cache - uses: Swatinem/rust-cache@v2 \ No newline at end of file + uses: Swatinem/rust-cache@v2 + From 2a5c77690bbc373069c22a15e9f20c367593a728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 25 Nov 2025 15:19:12 -0300 Subject: [PATCH 83/99] add build.rs prints --- crates/l2/prover/src/guest_program/build.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index 66d6023b6a2..7d0b033bce4 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -137,11 +137,29 @@ fn build_zisk_program() { println!("{build_command:?}"); println!("{setup_command:?}"); + println!("CWD = {}", std::env::current_dir().unwrap().display()); + let start = std::time::Instant::now(); let build_status = build_command .status() .expect("Failed to execute zisk build command"); + + println!( + "ELF (workspace target) exists? {}", + std::path::Path::new("target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program").exists() + ); + + println!( + "ELF (src/zisk/target) exists? {}", + std::path::Path::new("src/zisk/target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program").exists() + ); + + println!( + "ELF (cwd-relative) exists? {}", + std::path::Path::new("./target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program").exists() + ); + let setup_status = setup_command .status() .expect("Failed to execute zisk setup command"); From 9df4478e6c3e167ec19b03b132a9edef4a72fa34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 25 Nov 2025 15:38:35 -0300 Subject: [PATCH 84/99] add ./ to path --- crates/l2/prover/src/guest_program/build.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index 7d0b033bce4..3bcd9be5824 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -128,7 +128,7 @@ fn build_zisk_program() { .args([ "rom-setup", "-e", - "target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program", + "./target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program", ]) .stdout(std::process::Stdio::inherit()) .stderr(std::process::Stdio::inherit()) From a8de27574753c7f57ca537f4c91c44bd0952da4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 25 Nov 2025 16:05:15 -0300 Subject: [PATCH 85/99] add retry and add zisk bin to path --- .github/workflows/pr-main_l2_prover.yaml | 14 ++++++++++---- .github/workflows/tag_release.yaml | 14 ++++++++++---- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/.github/workflows/pr-main_l2_prover.yaml b/.github/workflows/pr-main_l2_prover.yaml index d5d3b675186..39697d851d8 100644 --- a/.github/workflows/pr-main_l2_prover.yaml +++ b/.github/workflows/pr-main_l2_prover.yaml @@ -49,10 +49,16 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_RUNNER: 1 - run: | - sudo apt-get update - sudo apt-get install -y xz-utils jq curl build-essential qemu-system libomp-dev libgmp-dev nlohmann-json3-dev protobuf-compiler uuid-dev libgrpc++-dev libsecp256k1-dev libsodium-dev libpqxx-dev nasm libopenmpi-dev openmpi-bin openmpi-common libclang-dev clang gcc-riscv64-unknown-elf - curl https://raw.githubusercontent.com/0xPolygonHermez/zisk/main/ziskup/install.sh | bash + uses: actions/retry@v3 + with: + max_attempts: 3 + retry_wait_seconds: 0 + timeout_minutes: 15 + command: | + sudo apt-get update + sudo apt-get install -y xz-utils jq curl build-essential qemu-system libomp-dev libgmp-dev nlohmann-json3-dev protobuf-compiler uuid-dev libgrpc++-dev libsecp256k1-dev libsodium-dev libpqxx-dev nasm libopenmpi-dev openmpi-bin openmpi-common libclang-dev clang gcc-riscv64-unknown-elf + curl https://raw.githubusercontent.com/0xPolygonHermez/zisk/main/ziskup/install.sh | bash + echo "$HOME/.zisk/bin" >> $GITHUB_PATH - name: Check ${{ matrix.backend }} backend run: | diff --git a/.github/workflows/tag_release.yaml b/.github/workflows/tag_release.yaml index 8d02fa99515..125e83505e2 100644 --- a/.github/workflows/tag_release.yaml +++ b/.github/workflows/tag_release.yaml @@ -192,10 +192,16 @@ jobs: SHELL: /bin/bash GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_RUNNER: 1 - run: | - sudo apt-get update - sudo apt-get install -y xz-utils jq curl build-essential qemu-system libomp-dev libgmp-dev nlohmann-json3-dev protobuf-compiler uuid-dev libgrpc++-dev libsecp256k1-dev libsodium-dev libpqxx-dev nasm libopenmpi-dev openmpi-bin openmpi-common libclang-dev clang gcc-riscv64-unknown-elf - curl https://raw.githubusercontent.com/0xPolygonHermez/zisk/main/ziskup/install.sh | bash + uses: actions/retry@v3 + with: + max_attempts: 3 + retry_wait_seconds: 0 + timeout_minutes: 15 + command: | + sudo apt-get update + sudo apt-get install -y xz-utils jq curl build-essential qemu-system libomp-dev libgmp-dev nlohmann-json3-dev protobuf-compiler uuid-dev libgrpc++-dev libsecp256k1-dev libsodium-dev libpqxx-dev nasm libopenmpi-dev openmpi-bin openmpi-common libclang-dev clang gcc-riscv64-unknown-elf + curl https://raw.githubusercontent.com/0xPolygonHermez/zisk/main/ziskup/install.sh | bash + echo "$HOME/.zisk/bin" >> $GITHUB_PATH - name: Build ethrex elf - ${{ matrix.zkvm }} run: | From 0a35c02569301118cccac0822bcaa3e7770bfa55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 25 Nov 2025 16:13:26 -0300 Subject: [PATCH 86/99] lint --- crates/l2/prover/src/guest_program/build.rs | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index 3bcd9be5824..97c81ee0432 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -145,21 +145,6 @@ fn build_zisk_program() { .status() .expect("Failed to execute zisk build command"); - println!( - "ELF (workspace target) exists? {}", - std::path::Path::new("target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program").exists() - ); - - println!( - "ELF (src/zisk/target) exists? {}", - std::path::Path::new("src/zisk/target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program").exists() - ); - - println!( - "ELF (cwd-relative) exists? {}", - std::path::Path::new("./target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program").exists() - ); - let setup_status = setup_command .status() .expect("Failed to execute zisk setup command"); From 92fc3fac28851a048b2337194088481958068605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jerem=C3=ADas=20Salom=C3=B3n?= <48994069+JereSalo@users.noreply.github.com> Date: Tue, 25 Nov 2025 16:18:54 -0300 Subject: [PATCH 87/99] fix(l1): upload zisk artifact correctly (#5422) **Motivation** **Description** upload zisk artifact correctly --- .github/workflows/tag_release.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tag_release.yaml b/.github/workflows/tag_release.yaml index 125e83505e2..e5cfad2a502 100644 --- a/.github/workflows/tag_release.yaml +++ b/.github/workflows/tag_release.yaml @@ -211,18 +211,21 @@ jobs: mv crates/l2/prover/src/guest_program/src/${{ matrix.zkvm }}/out/riscv32im-succinct-zkvm-elf ethrex-riscv32im-${{ matrix.zkvm }}-elf-${{ github.ref_name }} mv crates/l2/prover/src/guest_program/src/${{ matrix.zkvm }}/out/riscv32im-succinct-zkvm-vk-bn254 ${{ matrix.zkvm }}_verification_keys/ethrex-riscv32im-${{ matrix.zkvm }}-vk-bn254-${{ github.ref_name }} mv crates/l2/prover/src/guest_program/src/${{ matrix.zkvm }}/out/riscv32im-succinct-zkvm-vk-u32 ${{ matrix.zkvm }}_verification_keys/ethrex-riscv32im-${{ matrix.zkvm }}-vk-u32-${{ github.ref_name }} + echo "ELF_ARTIFACT=ethrex-riscv32im-${{ matrix.zkvm }}-elf-${{ github.ref_name }}" >> $GITHUB_ENV elif [ "${{ matrix.zkvm }}" = "risc0" ]; then mv crates/l2/prover/src/guest_program/src/${{ matrix.zkvm }}/out/riscv32im-risc0-elf ethrex-riscv32im-${{ matrix.zkvm }}-elf-${{ github.ref_name}} mv crates/l2/prover/src/guest_program/src/${{ matrix.zkvm }}/out/riscv32im-risc0-vk ${{ matrix.zkvm }}_verification_keys/ethrex-riscv32im-${{ matrix.zkvm }}-vk-${{ github.ref_name}} + echo "ELF_ARTIFACT=ethrex-riscv32im-${{ matrix.zkvm }}-elf-${{ github.ref_name }}" >> $GITHUB_ENV elif [ "${{ matrix.zkvm }}" = "zisk" ]; then mv crates/l2/prover/src/guest_program/src/${{ matrix.zkvm }}/out/riscv64ima-zisk-elf ethrex-riscv64ima-${{ matrix.zkvm }}-elf-${{ github.ref_name}} + echo "ELF_ARTIFACT=ethrex-riscv64ima-${{ matrix.zkvm }}-elf-${{ github.ref_name }}" >> $GITHUB_ENV fi - name: Upload ethrex guest elf artifact - ${{ matrix.zkvm }} uses: actions/upload-artifact@v4 with: - name: ethrex-riscv32im-${{ matrix.zkvm }}-elf-${{ github.ref_name }} - path: ethrex-riscv32im-${{ matrix.zkvm }}-elf-${{ github.ref_name }} + name: ${{ env.ELF_ARTIFACT }} + path: ${{ env.ELF_ARTIFACT }} - name: Upload ethrex guest verification keys - ${{ matrix.zkvm }} uses: actions/upload-artifact@v4 From 35284c99bf1ee52b42776c15c694f18482dd8991 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 25 Nov 2025 16:24:41 -0300 Subject: [PATCH 88/99] fix retry --- .github/workflows/pr-main_l2_prover.yaml | 2 +- .github/workflows/tag_release.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-main_l2_prover.yaml b/.github/workflows/pr-main_l2_prover.yaml index 39697d851d8..724120a4d39 100644 --- a/.github/workflows/pr-main_l2_prover.yaml +++ b/.github/workflows/pr-main_l2_prover.yaml @@ -49,7 +49,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_RUNNER: 1 - uses: actions/retry@v3 + uses: nick-fields/retry@v3 with: max_attempts: 3 retry_wait_seconds: 0 diff --git a/.github/workflows/tag_release.yaml b/.github/workflows/tag_release.yaml index e5cfad2a502..2d1e86e54e7 100644 --- a/.github/workflows/tag_release.yaml +++ b/.github/workflows/tag_release.yaml @@ -192,7 +192,7 @@ jobs: SHELL: /bin/bash GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_RUNNER: 1 - uses: actions/retry@v3 + uses: nick-fields/retry@v3 with: max_attempts: 3 retry_wait_seconds: 0 From e31aa37fd8c4aee819a04c4b90a23efd72da8276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 25 Nov 2025 17:39:44 -0300 Subject: [PATCH 89/99] add ci flag --- .github/workflows/pr-main_l2_prover.yaml | 4 ++-- crates/l2/prover/src/guest_program/Cargo.toml | 1 + crates/l2/prover/src/guest_program/build.rs | 10 ++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-main_l2_prover.yaml b/.github/workflows/pr-main_l2_prover.yaml index 724120a4d39..03f9c9a0031 100644 --- a/.github/workflows/pr-main_l2_prover.yaml +++ b/.github/workflows/pr-main_l2_prover.yaml @@ -62,11 +62,11 @@ jobs: - name: Check ${{ matrix.backend }} backend run: | - cargo check -r -p ethrex-prover -F ${{ matrix.backend }} + cargo check -r -p ethrex-prover -F "${{ matrix.backend }},ci" - name: Clippy ${{ matrix.backend }} backend run: | - cargo clippy -r -p ethrex-prover --all-targets -F ${{ matrix.backend }} + cargo clippy -r -p ethrex-prover --all-targets -F "${{ matrix.backend }},ci" - name: Check ${{ matrix.backend }} Cargo.lock modified but not committed run: | diff --git a/crates/l2/prover/src/guest_program/Cargo.toml b/crates/l2/prover/src/guest_program/Cargo.toml index 87e4446792c..800c6b74ff6 100644 --- a/crates/l2/prover/src/guest_program/Cargo.toml +++ b/crates/l2/prover/src/guest_program/Cargo.toml @@ -50,6 +50,7 @@ secp256k1 = [ "ethrex-vm/secp256k1", "ethrex-l2-common/secp256k1", ] +ci = [] # When this feature is enabled, the cycles used in the code inside the # report_cycles! macro will be reported to stdout when running inside SP1 zkVM. diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index 97c81ee0432..e25c0ba3749 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -104,7 +104,12 @@ fn build_sp1_program() { #[cfg(all(not(clippy), feature = "zisk"))] fn build_zisk_program() { + // cargo-zisk rom-setup fails with `Os { code: 2, kind: NotFound, message: "No such file or directory" }` + // when building in a GitHub CI environment. This command is not required if we won't generate a proof + // so we skip it under the `ci` feature flag. + let mut build_command = std::process::Command::new("cargo"); + #[cfg(not(feature = "ci"))] let mut setup_command = std::process::Command::new("cargo-zisk"); build_command @@ -121,6 +126,8 @@ fn build_zisk_program() { .stdout(std::process::Stdio::inherit()) .stderr(std::process::Stdio::inherit()) .current_dir("./src/zisk"); + #[cfg(not(feature = "ci"))] + { setup_command .env("RUSTC", rustc_path("zisk")) .env_remove("RUSTFLAGS") @@ -133,6 +140,7 @@ fn build_zisk_program() { .stdout(std::process::Stdio::inherit()) .stderr(std::process::Stdio::inherit()) .current_dir("./src/zisk"); + } println!("{build_command:?}"); println!("{setup_command:?}"); @@ -145,6 +153,7 @@ fn build_zisk_program() { .status() .expect("Failed to execute zisk build command"); + #[cfg(not(feature = "ci"))] let setup_status = setup_command .status() .expect("Failed to execute zisk setup command"); @@ -159,6 +168,7 @@ fn build_zisk_program() { if !build_status.success() { panic!("Failed to build guest program with zisk toolchain"); } + #[cfg(not(feature = "ci"))] if !setup_status.success() { panic!("Failed to setup compiled guest program with zisk toolchain"); } From 958038944ed337f9bc11fc52e1ffe647aee7f450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 25 Nov 2025 17:51:27 -0300 Subject: [PATCH 90/99] add ci feature to prover --- crates/l2/prover/Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/l2/prover/Cargo.toml b/crates/l2/prover/Cargo.toml index c67efd64d38..e88a985ffe3 100644 --- a/crates/l2/prover/Cargo.toml +++ b/crates/l2/prover/Cargo.toml @@ -70,6 +70,7 @@ l2 = [ "guest_program/l2", "ethrex-l2/l2", ] # the prover can work with either l1 or l2 blocks +ci = ["guest_program/ci"] [lints.clippy] unwrap_used = "deny" From 3aa7db5a06960d8a992feb8f3c6e76b06ad6e039 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 25 Nov 2025 18:01:10 -0300 Subject: [PATCH 91/99] fmt --- crates/l2/prover/src/guest_program/build.rs | 24 ++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index e25c0ba3749..f4dee1b78a6 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -128,18 +128,18 @@ fn build_zisk_program() { .current_dir("./src/zisk"); #[cfg(not(feature = "ci"))] { - setup_command - .env("RUSTC", rustc_path("zisk")) - .env_remove("RUSTFLAGS") - .env_remove("CARGO_ENCODED_RUSTFLAGS") - .args([ - "rom-setup", - "-e", - "./target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program", - ]) - .stdout(std::process::Stdio::inherit()) - .stderr(std::process::Stdio::inherit()) - .current_dir("./src/zisk"); + setup_command + .env("RUSTC", rustc_path("zisk")) + .env_remove("RUSTFLAGS") + .env_remove("CARGO_ENCODED_RUSTFLAGS") + .args([ + "rom-setup", + "-e", + "./target/riscv64ima-zisk-zkvm-elf/release/zkvm-zisk-program", + ]) + .stdout(std::process::Stdio::inherit()) + .stderr(std::process::Stdio::inherit()) + .current_dir("./src/zisk"); } println!("{build_command:?}"); From 5a843d3aedd1ee42c3702a3d25a8b41f7250a7e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 25 Nov 2025 18:04:14 -0300 Subject: [PATCH 92/99] fix --- crates/l2/prover/src/guest_program/build.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index f4dee1b78a6..388664a60e5 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -143,6 +143,7 @@ fn build_zisk_program() { } println!("{build_command:?}"); + #[cfg(not(feature = "ci"))] println!("{setup_command:?}"); println!("CWD = {}", std::env::current_dir().unwrap().display()); From eac58e6a4326aba7ce03733b0ee9466302045102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 25 Nov 2025 18:23:28 -0300 Subject: [PATCH 93/99] Update crates/l2/prover/src/guest_program/build.rs Co-authored-by: Ivan Litteri <67517699+ilitteri@users.noreply.github.com> --- crates/l2/prover/src/guest_program/build.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index 863a492e864..2ba72daa92d 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -213,7 +213,7 @@ fn build_openvm_program() { } let elf_src = - Path::new("./src/openvm/target/riscv32im-risc0-zkvm-elf/release/zkvm-openvm-program"); + Path::new("./src/openvm/target/riscv32im-openvm-zkvm-elf/release/zkvm-openvm-program"); let elf_dst = Path::new("./src/openvm/out/riscv32im-openvm-zkvm-elf"); if let Some(parent) = elf_dst.parent() { From 431e3959fd656d3954377a97218f4220f8debc77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 25 Nov 2025 18:25:54 -0300 Subject: [PATCH 94/99] Revert "Update crates/l2/prover/src/guest_program/build.rs" This reverts commit eac58e6a4326aba7ce03733b0ee9466302045102. --- crates/l2/prover/src/guest_program/build.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index 2ba72daa92d..863a492e864 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -213,7 +213,7 @@ fn build_openvm_program() { } let elf_src = - Path::new("./src/openvm/target/riscv32im-openvm-zkvm-elf/release/zkvm-openvm-program"); + Path::new("./src/openvm/target/riscv32im-risc0-zkvm-elf/release/zkvm-openvm-program"); let elf_dst = Path::new("./src/openvm/out/riscv32im-openvm-zkvm-elf"); if let Some(parent) = elf_dst.parent() { From fcacfd0364f031a62cccaf944ffe1bfb79d6daeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Tue, 25 Nov 2025 18:29:23 -0300 Subject: [PATCH 95/99] remove openvm-build --- crates/l2/prover/src/guest_program/Cargo.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/l2/prover/src/guest_program/Cargo.toml b/crates/l2/prover/src/guest_program/Cargo.toml index 0c15f592502..73448fc9b09 100644 --- a/crates/l2/prover/src/guest_program/Cargo.toml +++ b/crates/l2/prover/src/guest_program/Cargo.toml @@ -28,7 +28,6 @@ risc0-build = { version = "=3.0.3", optional = true } risc0-zkvm = { version = "=3.0.3", optional = true, features = ["getrandom"] } sp1-build = { version = "=5.0.8", optional = true } sp1-sdk = { version = "=5.0.8", optional = true } -openvm-build = { git = "https://github.com/openvm-org/openvm.git", package = "openvm-build", optional = true } openvm-sdk = { git = "https://github.com/openvm-org/openvm.git", package = "openvm-sdk", optional = true, features = [ "evm-prove", "parallel", @@ -49,7 +48,7 @@ zisk = [ "ethrex-vm/zisk", "ethrex-l2-common/zisk", ] -openvm = ["dep:openvm-build", "dep:openvm-sdk"] +openvm = ["dep:openvm-sdk"] l2 = [] c-kzg = ["ethrex-vm/c-kzg", "ethrex-common/c-kzg"] secp256k1 = [ From f73aa554227a3317efd37dd439215d38a294eaec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Wed, 26 Nov 2025 15:35:29 -0300 Subject: [PATCH 96/99] change elf name, add release --- .github/workflows/tag_release.yaml | 14 ++++++++++++++ crates/l2/prover/src/backend/openvm.rs | 2 +- crates/l2/prover/src/guest_program/build.rs | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tag_release.yaml b/.github/workflows/tag_release.yaml index 7f71e134db0..caebecf8b80 100644 --- a/.github/workflows/tag_release.yaml +++ b/.github/workflows/tag_release.yaml @@ -160,6 +160,7 @@ jobs: - sp1 - risc0 - zisk + - openvm runs-on: ubuntu-latest steps: - name: Checkout code @@ -203,6 +204,15 @@ jobs: curl https://raw.githubusercontent.com/0xPolygonHermez/zisk/main/ziskup/install.sh | bash echo "$HOME/.zisk/bin" >> $GITHUB_PATH + - name: Install OpenVM + if: ${{ matrix.zkvm == 'openvm' }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + rustup install nightly-2025-02-14 + rustup component add rust-src --toolchain nightly-2025-02-14 + cargo +1.86 install --locked --git https://github.com/openvm-org/openvm.git --tag v1.4.1 cargo-openvm + - name: Build ethrex elf - ${{ matrix.zkvm }} run: | cargo build --release --package guest_program --features "${{ matrix.zkvm }},ci" @@ -220,6 +230,10 @@ jobs: mv crates/l2/prover/src/guest_program/src/${{ matrix.zkvm }}/out/riscv64ima-zisk-elf ethrex-riscv64ima-${{ matrix.zkvm }}-elf-${{ github.ref_name}} echo "ELF_ARTIFACT=ethrex-riscv64ima-${{ matrix.zkvm }}-elf-${{ github.ref_name }}" >> $GITHUB_ENV fi + elif [ "${{ matrix.zkvm }}" = "openvm" ]; then + mv crates/l2/prover/src/guest_program/src/${{ matrix.zkvm }}/out/riscv32im-openvm-elf ethrex-riscv32im-${{ matrix.zkvm }}-elf-${{ github.ref_name}} + echo "ELF_ARTIFACT=ethrex-riscv64ima-${{ matrix.zkvm }}-elf-${{ github.ref_name }}" >> $GITHUB_ENV + fi - name: Upload ethrex guest elf artifact - ${{ matrix.zkvm }} uses: actions/upload-artifact@v4 diff --git a/crates/l2/prover/src/backend/openvm.rs b/crates/l2/prover/src/backend/openvm.rs index b17323a2ba8..cf2e60d6886 100644 --- a/crates/l2/prover/src/backend/openvm.rs +++ b/crates/l2/prover/src/backend/openvm.rs @@ -6,7 +6,7 @@ use openvm_stark_sdk::config::baby_bear_poseidon2::BabyBearPoseidon2Config; use rkyv::rancor::Error; static PROGRAM_ELF: &[u8] = - include_bytes!("../guest_program/src/openvm/out/riscv32im-openvm-zkvm-elf"); + include_bytes!("../guest_program/src/openvm/out/riscv32im-openvm-elf"); pub enum ProveOutput { Compressed(VmStarkProof), diff --git a/crates/l2/prover/src/guest_program/build.rs b/crates/l2/prover/src/guest_program/build.rs index 34547d9d2ee..a2a21231870 100644 --- a/crates/l2/prover/src/guest_program/build.rs +++ b/crates/l2/prover/src/guest_program/build.rs @@ -210,7 +210,7 @@ fn build_openvm_program() { let elf_src = Path::new("./src/openvm/target/riscv32im-risc0-zkvm-elf/release/zkvm-openvm-program"); - let elf_dst = Path::new("./src/openvm/out/riscv32im-openvm-zkvm-elf"); + let elf_dst = Path::new("./src/openvm/out/riscv32im-openvm-elf"); if let Some(parent) = elf_dst.parent() { fs::create_dir_all(parent).expect("failed to create destination dir"); From 2d998137fbf96e3f631f215818a2ade50ca2792e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Wed, 26 Nov 2025 16:02:24 -0300 Subject: [PATCH 97/99] update cargo locks' --- Makefile | 1 + crates/l2/prover/src/guest_program/src/risc0/Cargo.lock | 1 + crates/l2/prover/src/guest_program/src/sp1/Cargo.lock | 1 + crates/l2/prover/src/guest_program/src/zisk/Cargo.lock | 1 + crates/l2/tee/quote-gen/Cargo.lock | 1 + 5 files changed, 5 insertions(+) diff --git a/Makefile b/Makefile index 174e232a1d6..e142a77d554 100644 --- a/Makefile +++ b/Makefile @@ -202,4 +202,5 @@ update-cargo-lock: ## 📦 Update Cargo.lock files cargo tree --manifest-path crates/l2/prover/src/guest_program/src/sp1/Cargo.toml cargo tree --manifest-path crates/l2/prover/src/guest_program/src/risc0/Cargo.toml cargo tree --manifest-path crates/l2/prover/src/guest_program/src/zisk/Cargo.toml + cargo tree --manifest-path crates/l2/prover/src/guest_program/src/openvm/Cargo.toml cargo tree --manifest-path crates/l2/tee/quote-gen/Cargo.toml diff --git a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock index 03dc801dde6..09ed9866856 100644 --- a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock @@ -1570,6 +1570,7 @@ dependencies = [ name = "guest_program" version = "7.0.0" dependencies = [ + "bincode", "bytes", "ethrex-blockchain", "ethrex-common", diff --git a/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock b/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock index ce04031a544..2c3c036f13a 100644 --- a/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock @@ -1328,6 +1328,7 @@ dependencies = [ name = "guest_program" version = "7.0.0" dependencies = [ + "bincode", "bytes", "ethrex-blockchain", "ethrex-common", diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock index 6ecb5fad784..06ce46ad95a 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock @@ -1271,6 +1271,7 @@ dependencies = [ name = "guest_program" version = "7.0.0" dependencies = [ + "bincode 1.3.3", "bytes", "ethrex-blockchain", "ethrex-common", diff --git a/crates/l2/tee/quote-gen/Cargo.lock b/crates/l2/tee/quote-gen/Cargo.lock index 49380eee071..c833c42c748 100644 --- a/crates/l2/tee/quote-gen/Cargo.lock +++ b/crates/l2/tee/quote-gen/Cargo.lock @@ -2900,6 +2900,7 @@ dependencies = [ name = "guest_program" version = "7.0.0" dependencies = [ + "bincode", "bytes", "ethrex-blockchain", "ethrex-common", From e84e9c7338b144530f5ea0d1c1aa8044efc6b6f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Wed, 26 Nov 2025 16:13:25 -0300 Subject: [PATCH 98/99] fix --- .github/workflows/tag_release.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/tag_release.yaml b/.github/workflows/tag_release.yaml index caebecf8b80..dd03e82558c 100644 --- a/.github/workflows/tag_release.yaml +++ b/.github/workflows/tag_release.yaml @@ -229,7 +229,6 @@ jobs: elif [ "${{ matrix.zkvm }}" = "zisk" ]; then mv crates/l2/prover/src/guest_program/src/${{ matrix.zkvm }}/out/riscv64ima-zisk-elf ethrex-riscv64ima-${{ matrix.zkvm }}-elf-${{ github.ref_name}} echo "ELF_ARTIFACT=ethrex-riscv64ima-${{ matrix.zkvm }}-elf-${{ github.ref_name }}" >> $GITHUB_ENV - fi elif [ "${{ matrix.zkvm }}" = "openvm" ]; then mv crates/l2/prover/src/guest_program/src/${{ matrix.zkvm }}/out/riscv32im-openvm-elf ethrex-riscv32im-${{ matrix.zkvm }}-elf-${{ github.ref_name}} echo "ELF_ARTIFACT=ethrex-riscv64ima-${{ matrix.zkvm }}-elf-${{ github.ref_name }}" >> $GITHUB_ENV From e85eaf56ce192a1ae089fa0afbd1e7bbcbb025c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Wed, 26 Nov 2025 16:33:56 -0300 Subject: [PATCH 99/99] fmt --- crates/l2/prover/src/backend/openvm.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/l2/prover/src/backend/openvm.rs b/crates/l2/prover/src/backend/openvm.rs index cf2e60d6886..401ec2e26e9 100644 --- a/crates/l2/prover/src/backend/openvm.rs +++ b/crates/l2/prover/src/backend/openvm.rs @@ -5,8 +5,7 @@ use openvm_sdk::{Sdk, StdIn, types::EvmProof}; use openvm_stark_sdk::config::baby_bear_poseidon2::BabyBearPoseidon2Config; use rkyv::rancor::Error; -static PROGRAM_ELF: &[u8] = - include_bytes!("../guest_program/src/openvm/out/riscv32im-openvm-elf"); +static PROGRAM_ELF: &[u8] = include_bytes!("../guest_program/src/openvm/out/riscv32im-openvm-elf"); pub enum ProveOutput { Compressed(VmStarkProof),