From 17c11c26177e529a65a0360a611181017a1e551d Mon Sep 17 00:00:00 2001 From: BGluth Date: Wed, 20 Mar 2024 19:56:17 -0600 Subject: [PATCH 01/10] Updated deps to use `zk_evm` repo - The deps were very out of date and we need them to be up to date to do padding. --- Cargo.lock | 277 ++++++++++++++----------- Cargo.toml | 8 +- common/Cargo.toml | 4 +- common/src/prover_state/circuit.rs | 4 +- common/src/prover_state/mod.rs | 2 +- common/src/prover_state/persistence.rs | 2 +- leader/Cargo.toml | 8 +- leader/src/lib.rs | 17 +- leader/src/main.rs | 2 +- leader/src/mpt.rs | 10 +- leader/src/prover.rs | 4 +- ops/Cargo.toml | 4 +- ops/src/lib.rs | 17 +- 13 files changed, 188 insertions(+), 171 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 779e80d..d9f8ea9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -40,9 +40,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.6" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "const-random", @@ -792,9 +792,9 @@ name = "common" version = "0.1.0" dependencies = [ "clap", + "evm_arithmetization", "plonky2", - "plonky2_evm", - "plonky_block_proof_gen", + "proof_gen", "thiserror", "tracing", ] @@ -1268,18 +1268,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "enum-as-inner" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "enum-as-inner" version = "0.6.0" @@ -1354,25 +1342,6 @@ dependencies = [ "uuid 0.8.2", ] -[[package]] -name = "eth_trie_utils" -version = "0.6.0" -source = "git+https://github.com/0xPolygonZero/eth_trie_utils.git?rev=7fc3c3f54b3cec9c6fc5ffc5230910bd1cb77f76#7fc3c3f54b3cec9c6fc5ffc5230910bd1cb77f76" -dependencies = [ - "bytes", - "enum-as-inner 0.5.1", - "ethereum-types", - "hex", - "keccak-hash 0.10.0", - "log", - "num-traits", - "parking_lot", - "rlp", - "serde", - "thiserror", - "uint", -] - [[package]] name = "ethabi" version = "18.0.0" @@ -1696,6 +1665,42 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "evm_arithmetization" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8460fed1dc1b098aab4dd9f5b7a2281423f2cd078393284ce1edbf13d49b55c" +dependencies = [ + "anyhow", + "bytes", + "env_logger", + "ethereum-types", + "hashbrown 0.14.3", + "hex-literal", + "itertools 0.11.0", + "jemallocator", + "keccak-hash 0.10.0", + "log", + "mpt_trie", + "num", + "num-bigint", + "once_cell", + "pest", + "pest_derive", + "plonky2", + "plonky2_maybe_rayon", + "plonky2_util", + "rand", + "rand_chacha", + "rlp", + "rlp-derive", + "serde", + "serde_json", + "starky", + "static_assertions", + "tiny-keccak", +] + [[package]] name = "executor-trait" version = "2.1.0" @@ -2564,19 +2569,19 @@ dependencies = [ "clap", "common", "dotenvy", - "eth_trie_utils", "ethers", + "evm_arithmetization", "hex", "itertools 0.11.0", + "mpt_trie", "ops", "paladin-core", "plonky2", - "plonky2_evm", - "plonky_block_proof_gen", - "protocol_decoder", + "proof_gen", "serde", "serde_json", "tokio", + "trace_decoder", "tracing", "tracing-subscriber", ] @@ -2719,6 +2724,27 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "mpt_trie" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276984ee63f94fab7907336095c1ff0d6a9117d8c42291564f79101ac275037b" +dependencies = [ + "bytes", + "enum-as-inner", + "ethereum-types", + "hex", + "keccak-hash 0.10.0", + "log", + "num", + "num-traits", + "parking_lot", + "rlp", + "serde", + "thiserror", + "uint", +] + [[package]] name = "new_debug_unreachable" version = "1.0.4" @@ -2908,10 +2934,10 @@ dependencies = [ "common", "ethers", "paladin-core", - "plonky_block_proof_gen", - "protocol_decoder", + "proof_gen", "rlp", "serde", + "trace_decoder", "tracing", ] @@ -3291,8 +3317,9 @@ checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "plonky2" -version = "0.1.4" -source = "git+https://github.com/0xPolygonZero/plonky2?rev=39a2d62d6d025631380da88aa78c2f8b929852a2#39a2d62d6d025631380da88aa78c2f8b929852a2" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b25deb9a4b9c2014c2f99cd36078f30e453d188d0ca8dd4c5ffd1d494b661ac1" dependencies = [ "ahash", "anyhow", @@ -3308,49 +3335,16 @@ dependencies = [ "rand", "rand_chacha", "serde", - "serde_json", "static_assertions", "unroll", -] - -[[package]] -name = "plonky2_evm" -version = "0.1.1" -source = "git+https://github.com/0xPolygonZero/plonky2?rev=39a2d62d6d025631380da88aa78c2f8b929852a2#39a2d62d6d025631380da88aa78c2f8b929852a2" -dependencies = [ - "anyhow", - "bytes", - "env_logger", - "eth_trie_utils", - "ethereum-types", - "hashbrown 0.14.3", - "hex-literal", - "itertools 0.11.0", - "jemallocator", - "keccak-hash 0.10.0", - "log", - "num", - "num-bigint", - "once_cell", - "pest", - "pest_derive", - "plonky2", - "plonky2_maybe_rayon", - "plonky2_util", - "rand", - "rand_chacha", - "rlp", - "rlp-derive", - "serde", - "serde_json", - "static_assertions", - "tiny-keccak", + "web-time", ] [[package]] name = "plonky2_field" -version = "0.1.1" -source = "git+https://github.com/0xPolygonZero/plonky2?rev=39a2d62d6d025631380da88aa78c2f8b929852a2#39a2d62d6d025631380da88aa78c2f8b929852a2" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "465a741ba134485af571152aab5086457a470aa8893391186cf78dd389694440" dependencies = [ "anyhow", "itertools 0.11.0", @@ -3364,30 +3358,18 @@ dependencies = [ [[package]] name = "plonky2_maybe_rayon" -version = "0.1.1" -source = "git+https://github.com/0xPolygonZero/plonky2?rev=39a2d62d6d025631380da88aa78c2f8b929852a2#39a2d62d6d025631380da88aa78c2f8b929852a2" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ff44a90aaca13e10e7ddf8fab815ba1b404c3f7c3ca82aaf11c46beabaa923" dependencies = [ "rayon", ] [[package]] name = "plonky2_util" -version = "0.1.1" -source = "git+https://github.com/0xPolygonZero/plonky2?rev=39a2d62d6d025631380da88aa78c2f8b929852a2#39a2d62d6d025631380da88aa78c2f8b929852a2" - -[[package]] -name = "plonky_block_proof_gen" -version = "0.1.0" -source = "git+https://github.com/0xPolygonZero/proof-protocol-decoder.git?rev=6f97b3cd837d385c3501107bfdfbb3761e392b73#6f97b3cd837d385c3501107bfdfbb3761e392b73" -dependencies = [ - "ethereum-types", - "log", - "paste", - "plonky2", - "plonky2_evm", - "protocol_decoder", - "serde", -] +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b16136f5f3019c1e83035af76cccddd56d789a5e2933306270185c3f99f12259" [[package]] name = "polling" @@ -3535,6 +3517,21 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "proof_gen" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b632ae384e13ad12ed9556e544650bfd79a54b3574fe3da4a749083ea6125440" +dependencies = [ + "ethereum-types", + "evm_arithmetization", + "log", + "paste", + "plonky2", + "serde", + "trace_decoder", +] + [[package]] name = "proptest" version = "1.4.0" @@ -3551,30 +3548,6 @@ dependencies = [ "unarray", ] -[[package]] -name = "protocol_decoder" -version = "0.1.0" -source = "git+https://github.com/0xPolygonZero/proof-protocol-decoder.git?rev=6f97b3cd837d385c3501107bfdfbb3761e392b73#6f97b3cd837d385c3501107bfdfbb3761e392b73" -dependencies = [ - "bytes", - "ciborium", - "ciborium-io", - "enum-as-inner 0.6.0", - "enumn", - "eth_trie_utils", - "ethereum-types", - "hex", - "hex-literal", - "keccak-hash 0.10.0", - "log", - "plonky2_evm", - "rlp", - "rlp-derive", - "serde", - "serde_with", - "thiserror", -] - [[package]] name = "quote" version = "1.0.33" @@ -4340,6 +4313,23 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "starky" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24e0a1eec739c7a67cb1c6f916c0b7bf2d281cf2edb35d3db5caa6989090133e" +dependencies = [ + "ahash", + "anyhow", + "hashbrown 0.14.3", + "itertools 0.11.0", + "log", + "num-bigint", + "plonky2", + "plonky2_maybe_rayon", + "plonky2_util", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -4757,6 +4747,31 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +[[package]] +name = "trace_decoder" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69c42e0c922b0a7eafaad55ca960f8bc9a8fa95eed4b8ec1beb3749d6543d789" +dependencies = [ + "bytes", + "ciborium", + "ciborium-io", + "enum-as-inner", + "enumn", + "ethereum-types", + "evm_arithmetization", + "hex", + "hex-literal", + "keccak-hash 0.10.0", + "log", + "mpt_trie", + "rlp", + "rlp-derive", + "serde", + "serde_with", + "thiserror", +] + [[package]] name = "tracing" version = "0.1.40" @@ -5096,6 +5111,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "webpki-roots" version = "0.25.3" @@ -5350,18 +5375,18 @@ checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" [[package]] name = "zerocopy" -version = "0.7.26" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.26" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 1b4b0b3..1fe596c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,11 +8,11 @@ resolver = "2" ethers = "2.0.7" tokio = { version = "1", features = ["full"] } anyhow = "1.0.71" -plonky2 = { git = "https://github.com/0xPolygonZero/plonky2", rev = "39a2d62d6d025631380da88aa78c2f8b929852a2" } -plonky2_evm = { git = "https://github.com/0xPolygonZero/plonky2", rev = "39a2d62d6d025631380da88aa78c2f8b929852a2" } +plonky2 = "0.2.0" +evm_arithmetization = "0.1.2" clap = { version = "4.4.11", features = ["derive", "env"] } -protocol_decoder = { git = "https://github.com/0xPolygonZero/proof-protocol-decoder.git", rev = "6f97b3cd837d385c3501107bfdfbb3761e392b73" } -plonky_block_proof_gen = { git = "https://github.com/0xPolygonZero/proof-protocol-decoder.git", rev = "6f97b3cd837d385c3501107bfdfbb3761e392b73" } +trace_decoder = "0.2.0" +proof_gen = "0.1.2" dotenvy = "0.15.7" paladin-core = "0.4.1" serde = { version = "1.0.193", features = ["derive"] } diff --git a/common/Cargo.toml b/common/Cargo.toml index e487cdb..f7740c0 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -6,8 +6,8 @@ edition = "2021" [dependencies] tracing = { workspace = true } -plonky_block_proof_gen = { workspace = true } +proof_gen = { workspace = true } plonky2 = { workspace = true } -plonky2_evm = { workspace = true } +evm_arithmetization = { workspace = true } clap = { workspace = true } thiserror = "1.0.50" diff --git a/common/src/prover_state/circuit.rs b/common/src/prover_state/circuit.rs index 623846f..2d12506 100644 --- a/common/src/prover_state/circuit.rs +++ b/common/src/prover_state/circuit.rs @@ -5,8 +5,8 @@ use std::{ str::FromStr, }; -use plonky2_evm::{all_stark::AllStark, config::StarkConfig}; -use plonky_block_proof_gen::types::AllRecursiveCircuits; +use evm_arithmetization::{all_stark::AllStark, StarkConfig}; +use proof_gen::types::AllRecursiveCircuits; use crate::parsing::{parse_range, RangeParseError}; diff --git a/common/src/prover_state/mod.rs b/common/src/prover_state/mod.rs index 3c4e24a..f824e25 100644 --- a/common/src/prover_state/mod.rs +++ b/common/src/prover_state/mod.rs @@ -12,7 +12,7 @@ use std::{fmt::Display, sync::OnceLock}; use clap::ValueEnum; -use plonky_block_proof_gen::prover_state::ProverState; +use proof_gen::prover_state::ProverState; use tracing::info; pub mod circuit; diff --git a/common/src/prover_state/persistence.rs b/common/src/prover_state/persistence.rs index 858d6cf..3fedfae 100644 --- a/common/src/prover_state/persistence.rs +++ b/common/src/prover_state/persistence.rs @@ -7,7 +7,7 @@ use plonky2::{ plonk::config::PoseidonGoldilocksConfig, util::serialization::{DefaultGateSerializer, DefaultGeneratorSerializer}, }; -use plonky_block_proof_gen::types::AllRecursiveCircuits; +use proof_gen::types::AllRecursiveCircuits; use tracing::{info, warn}; use super::circuit::CircuitConfig; diff --git a/leader/Cargo.toml b/leader/Cargo.toml index c039f8e..eec29d0 100644 --- a/leader/Cargo.toml +++ b/leader/Cargo.toml @@ -9,10 +9,10 @@ edition = "2021" [dependencies] tokio = { workspace = true } plonky2 = { workspace = true } -plonky2_evm = { workspace = true } +evm_arithmetization = { workspace = true } clap = { workspace = true } -protocol_decoder = { workspace = true } -plonky_block_proof_gen = { workspace = true } +trace_decoder = { workspace = true } +proof_gen = { workspace = true } anyhow = { workspace = true } serde = { workspace = true } paladin-core = { workspace = true } @@ -22,7 +22,7 @@ tracing-subscriber = { workspace = true } ethers = { workspace = true } itertools = "0.11.0" -eth_trie_utils = { git = "https://github.com/0xPolygonZero/eth_trie_utils.git", rev = "7fc3c3f54b3cec9c6fc5ffc5230910bd1cb77f76" } +mpt_trie = "0.2.0" hex = "0.4.3" serde_json = "1.0.108" diff --git a/leader/src/lib.rs b/leader/src/lib.rs index 4d8a87d..931ff6d 100644 --- a/leader/src/lib.rs +++ b/leader/src/lib.rs @@ -7,16 +7,16 @@ pub mod utils; use std::collections::{BTreeMap, HashMap}; use anyhow::{anyhow, Result}; -use eth_trie_utils::nibbles::Nibbles; -use eth_trie_utils::partial_trie::{HashedPartialTrie, Node, PartialTrie}; use ethers::prelude::*; use ethers::types::GethDebugTracerType; use ethers::utils::rlp; +use evm_arithmetization::generation::{GenerationInputs, TrieInputs}; +use evm_arithmetization::proof::BlockMetadata; +use evm_arithmetization::proof::{BlockHashes, TrieRoots}; use itertools::izip; -use plonky2_evm::generation::{GenerationInputs, TrieInputs}; -use plonky2_evm::proof::BlockMetadata; -use plonky2_evm::proof::{BlockHashes, TrieRoots}; -use protocol_decoder::types::TxnProofGenIR; +use mpt_trie::nibbles::Nibbles; +use mpt_trie::partial_trie::{HashedPartialTrie, Node, PartialTrie}; +use trace_decoder::types::TxnProofGenIR; use crate::mpt::{apply_diffs, insert_mpt, trim, Mpt}; use crate::utils::{has_storage_deletion, keccak}; @@ -433,10 +433,7 @@ pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result &'static ProverState { @@ -27,15 +27,10 @@ impl Operation for TxProof { type Output = AggregatableProof; fn execute(&self, input: Self::Input) -> Result { - let tx_hash = rlp::decode::( - input - .gen_inputs - .signed_txn - .as_ref() - .expect("signed txn is missing"), - ) - .expect("failed to decode signed transaction") - .hash; + let tx_hash = + rlp::decode::(input.signed_txn.as_ref().expect("signed txn is missing")) + .expect("failed to decode signed transaction") + .hash; let _span = info_span!("generate proof", tx_hash = ?tx_hash).entered(); tracing::event!(Level::INFO, "generating proof for {:?}", tx_hash); From 3108cbe6bb98959d3d80b70b3fad735a55bcb58d Mon Sep 17 00:00:00 2001 From: BGluth Date: Thu, 21 Mar 2024 10:54:48 -0600 Subject: [PATCH 02/10] Initial untested porting of dummy padding --- leader/src/init.rs | 6 +- leader/src/lib.rs | 86 +++++++- leader/src/padding_and_withdrawals.rs | 302 ++++++++++++++++++++++++++ 3 files changed, 388 insertions(+), 6 deletions(-) create mode 100644 leader/src/padding_and_withdrawals.rs diff --git a/leader/src/init.rs b/leader/src/init.rs index 28c00d4..bd3d774 100644 --- a/leader/src/init.rs +++ b/leader/src/init.rs @@ -3,9 +3,9 @@ pub(crate) fn tracing() { tracing_subscriber::Registry::default() .with( tracing_subscriber::fmt::layer() - .pretty() - .with_span_events(FmtSpan::CLOSE) - .with_filter(EnvFilter::from_default_env()), + .without_time() + .with_ansi(false) + .with_filter(EnvFilter::from_default_env()) ) .init(); } diff --git a/leader/src/lib.rs b/leader/src/lib.rs index 931ff6d..1aa385e 100644 --- a/leader/src/lib.rs +++ b/leader/src/lib.rs @@ -4,6 +4,8 @@ pub mod cli; pub mod mpt; pub mod utils; +mod padding_and_withdrawals; + use std::collections::{BTreeMap, HashMap}; use anyhow::{anyhow, Result}; @@ -11,12 +13,15 @@ use ethers::prelude::*; use ethers::types::GethDebugTracerType; use ethers::utils::rlp; use evm_arithmetization::generation::{GenerationInputs, TrieInputs}; -use evm_arithmetization::proof::BlockMetadata; use evm_arithmetization::proof::{BlockHashes, TrieRoots}; +use evm_arithmetization::proof::{BlockMetadata, ExtraBlockData}; use itertools::izip; use mpt_trie::nibbles::Nibbles; use mpt_trie::partial_trie::{HashedPartialTrie, Node, PartialTrie}; -use trace_decoder::types::TxnProofGenIR; +use padding_and_withdrawals::{ + add_withdrawals_to_txns, pad_gen_inputs_with_dummy_inputs_if_needed, BlockMetaAndHashes, +}; +use trace_decoder::types::{HashedAccountAddr, TxnProofGenIR}; use crate::mpt::{apply_diffs, insert_mpt, trim, Mpt}; use crate::utils::{has_storage_deletion, keccak}; @@ -27,6 +32,16 @@ pub const EMPTY_HASH: H256 = H256([ 130, 39, 59, 123, 250, 216, 4, 93, 133, 164, 112, ]); +/// The current state of all tries as we process txn deltas. These are mutated +/// after every txn we process in the trace. +#[derive(Clone, Debug, Default)] +struct PartialTrieState { + state: HashedPartialTrie, + storage: HashMap, + txn: HashedPartialTrie, + receipt: HashedPartialTrie, +} + /// Get the proof for an account + storage locations at a given block number. pub async fn get_proof( address: Address, @@ -154,13 +169,26 @@ pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result = HashMap::new(); let mut txn_rlps = vec![]; let chain_id = U256::one(); let mut alladdrs = vec![]; let mut state = BTreeMap::::new(); let mut traces: Vec> = vec![]; let mut txns_info = vec![]; + + let initial_storage_tries = HashMap::from_iter( + storage_mpts + .iter() + .map(|(k, trie)| (*k, trie.to_partial_trie())), + ); + + let initial_tries_for_dummies = PartialTrieState { + state: state_mpt.to_partial_trie(), + storage: initial_storage_tries, + ..Default::default() + }; + for &hash in block.transactions.iter().take(tx_index + 1) { let txn = provider.get_transaction(hash); let txn = txn @@ -436,5 +464,57 @@ pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result, + other_data: &BlockMetaAndHashes, + final_extra_data: &ExtraBlockData, + initial_extra_data: &ExtraBlockData, + initial_tries: &PartialTrieState, + final_tries: &PartialTrieState, + has_withdrawals: bool, +) -> bool { + match gen_inputs.len() { + 0 => { + debug_assert!(initial_tries.state == final_tries.state); + debug_assert!(initial_extra_data == final_extra_data); + // We need to pad with two dummy entries. + gen_inputs.extend(create_dummy_txn_pair_for_empty_block( + other_data, + final_extra_data, + initial_tries, + )); + + true + } + 1 => { + // We just need one dummy entry. + // If there are withdrawals, we will need to append them at the end of the block + // execution, in which case we directly append the dummy proof + // after the only txn of this block. + // If there are no withdrawals, then the dummy proof will be prepended to the + // actual txn. + match has_withdrawals { + false => { + let dummy_txn = + create_dummy_gen_input(other_data, initial_extra_data, initial_tries); + gen_inputs.insert(0, dummy_txn) + } + true => { + let dummy_txn = + create_dummy_gen_input(other_data, final_extra_data, final_tries); + gen_inputs.push(dummy_txn) + } + }; + + true + } + _ => false, + } +} + +/// The withdrawals are always in the final ir payload. How they are placed +/// differs based on whether or not there are already dummy proofs present +/// in the IR. The rules for adding withdrawals to the IR list are: +/// - If dummy proofs are already present, then the withdrawals are added to the +/// last dummy proof (always index `1`). +/// - If no dummy proofs are already present, then a dummy proof that just +/// contains the withdrawals is appended to the end of the IR vec. +pub(crate) fn add_withdrawals_to_txns( + txn_ir: &mut Vec, + other_data: &BlockMetaAndHashes, + final_extra_data: &ExtraBlockData, + final_trie_state: &mut PartialTrieState, + withdrawals: Vec<(Address, U256)>, + dummies_already_added: bool, +) { + let withdrawals_with_hashed_addrs_iter = withdrawals + .iter() + .map(|(addr, v)| (*addr, hash(addr.as_bytes()), *v)); + + match dummies_already_added { + // If we have no actual dummy proofs, then we create one and append it to the + // end of the block. + false => { + // TODO: Decide if we want this allocation... + // To avoid double hashing the addrs, but I don't know if the extra `Vec` + // allocation is worth it. + let withdrawals_with_hashed_addrs: Vec<_> = + withdrawals_with_hashed_addrs_iter.collect(); + + // Dummy state will be the state after the final txn. Also need to include the + // account nodes that were accessed by the withdrawals. + let withdrawal_addrs = withdrawals_with_hashed_addrs + .iter() + .cloned() + .map(|(_, h_addr, _)| h_addr); + let mut withdrawal_dummy = create_dummy_gen_input_with_state_addrs_accessed( + other_data, + final_extra_data, + final_trie_state, + withdrawal_addrs, + ); + + update_trie_state_from_withdrawals( + withdrawals_with_hashed_addrs, + &mut final_trie_state.state, + ); + + withdrawal_dummy.withdrawals = withdrawals; + + // Only the state root hash needs to be updated from the withdrawals. + withdrawal_dummy.trie_roots_after.state_root = final_trie_state.state.hash(); + + txn_ir.push(withdrawal_dummy); + } + true => { + update_trie_state_from_withdrawals( + withdrawals_with_hashed_addrs_iter, + &mut final_trie_state.state, + ); + + // If we have dummy proofs (note: `txn_ir[1]` is always a dummy txn in this + // case), then this dummy will get the withdrawals. + txn_ir[1].withdrawals = withdrawals; + txn_ir[1].trie_roots_after.state_root = final_trie_state.state.hash(); + } + } +} + +/// Withdrawals update balances in the account trie, so we need to update +/// our local trie state. +fn update_trie_state_from_withdrawals<'a>( + withdrawals: impl IntoIterator + 'a, + state: &mut HashedPartialTrie, +) { + for (_addr, h_addr, amt) in withdrawals { + let h_addr_nibs = Nibbles::from_h256_be(h_addr); + + let acc_bytes = state.get(h_addr_nibs).unwrap(); + + let mut acc_data = rlp::decode::(acc_bytes).unwrap(); + + acc_data.balance += amt; + + state.insert(h_addr_nibs, rlp::encode(&acc_data).to_vec()); + } +} + +fn create_dummy_txn_pair_for_empty_block( + other_data: &BlockMetaAndHashes, + extra_data: &ExtraBlockData, + final_tries: &PartialTrieState, +) -> [GenerationInputs; 2] { + [ + create_dummy_gen_input(other_data, extra_data, final_tries), + create_dummy_gen_input(other_data, extra_data, final_tries), + ] +} + +fn create_dummy_gen_input( + other_data: &BlockMetaAndHashes, + extra_data: &ExtraBlockData, + final_tries: &PartialTrieState, +) -> GenerationInputs { + let sub_tries = create_dummy_proof_trie_inputs( + final_tries, + create_fully_hashed_out_sub_partial_trie(&final_tries.state), + ); + create_dummy_gen_input_common(other_data, extra_data, sub_tries) +} + +fn create_dummy_gen_input_with_state_addrs_accessed( + other_data: &BlockMetaAndHashes, + extra_data: &ExtraBlockData, + final_tries: &PartialTrieState, + withdrawal_account_addrs_accessed: impl Iterator, +) -> GenerationInputs { + let state_trie_hashed_for_withdrawals = create_minimal_state_partial_trie( + &final_tries.state, + withdrawal_account_addrs_accessed, + iter::empty(), + ); + + let sub_tries = create_dummy_proof_trie_inputs(final_tries, state_trie_hashed_for_withdrawals); + + create_dummy_gen_input_common(other_data, extra_data, sub_tries) +} + +fn create_dummy_gen_input_common( + other_data: &BlockMetaAndHashes, + extra_data: &ExtraBlockData, + sub_tries: TrieInputs, +) -> GenerationInputs { + let trie_roots_after = TrieRoots { + state_root: sub_tries.state_trie.hash(), + transactions_root: sub_tries.transactions_trie.hash(), + receipts_root: sub_tries.receipts_trie.hash(), + }; + + // Sanity checks + assert_eq!( + extra_data.txn_number_before, extra_data.txn_number_after, + "Txn numbers before/after differ in a dummy payload with no txn!" + ); + assert_eq!( + extra_data.gas_used_before, extra_data.gas_used_after, + "Gas used before/after differ in a dummy payload with no txn!" + ); + + GenerationInputs { + signed_txn: None, + tries: sub_tries, + trie_roots_after, + checkpoint_state_trie_root: extra_data.checkpoint_state_trie_root, + block_metadata: other_data.b_meta.clone(), + block_hashes: other_data.b_hashes.clone(), + txn_number_before: extra_data.txn_number_before, + gas_used_before: extra_data.gas_used_before, + gas_used_after: extra_data.gas_used_after, + contract_code: HashMap::default(), + withdrawals: vec![], // this is set after creating dummy payloads + } +} + +fn create_dummy_proof_trie_inputs( + final_tries_at_end_of_block: &PartialTrieState, + state_trie_hashed_for_withdrawals: HashedPartialTrie, +) -> TrieInputs { + let partial_sub_storage_tries: Vec<_> = final_tries_at_end_of_block + .storage + .iter() + .map(|(hashed_acc_addr, s_trie)| { + ( + *hashed_acc_addr, + create_fully_hashed_out_sub_partial_trie(s_trie), + ) + }) + .collect(); + + TrieInputs { + state_trie: state_trie_hashed_for_withdrawals, + transactions_trie: create_fully_hashed_out_sub_partial_trie( + &final_tries_at_end_of_block.txn, + ), + receipts_trie: create_fully_hashed_out_sub_partial_trie( + &final_tries_at_end_of_block.receipt, + ), + storage_tries: partial_sub_storage_tries, + } +} + +fn create_minimal_state_partial_trie( + state_trie: &HashedPartialTrie, + state_accesses: impl Iterator, + additional_state_trie_paths_to_not_hash: impl Iterator, +) -> HashedPartialTrie { + let accesses = state_accesses + .into_iter() + .map(Nibbles::from_h256_be) + .chain(additional_state_trie_paths_to_not_hash); + + create_trie_subset(state_trie, accesses) + .expect("Encountered a hash node when creating a subset of the state trie") +} + +// We really want to get a trie with just a hash node here, and this is an easy +// way to do it. +fn create_fully_hashed_out_sub_partial_trie(trie: &HashedPartialTrie) -> HashedPartialTrie { + // Impossible to actually fail with an empty iter. + create_trie_subset(trie, empty::()).unwrap() +} + +fn hash(bytes: &[u8]) -> H256 { + H256::from(keccak(bytes)) +} From e7236dbc5f0fb7a1a31dc4dad28a0be086747be4 Mon Sep 17 00:00:00 2001 From: BGluth Date: Thu, 21 Mar 2024 12:57:44 -0600 Subject: [PATCH 03/10] Now seems to prove blocks fine --- leader/src/lib.rs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/leader/src/lib.rs b/leader/src/lib.rs index 1aa385e..25515d5 100644 --- a/leader/src/lib.rs +++ b/leader/src/lib.rs @@ -469,11 +469,6 @@ pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result) -> Result Date: Wed, 27 Mar 2024 15:17:22 -0600 Subject: [PATCH 04/10] Various fixes - Now works on block heights <= 256. - Now pads blocks when there is < 2 txns. --- Cargo.lock | 1417 ++++++++++++++----------- Cargo.toml | 8 +- leader/Cargo.toml | 9 +- leader/src/init.rs | 4 +- leader/src/lib.rs | 62 +- leader/src/padding_and_withdrawals.rs | 12 +- leader/src/rpc.rs | 130 +++ ops/src/lib.rs | 31 +- 8 files changed, 1021 insertions(+), 652 deletions(-) create mode 100644 leader/src/rpc.rs diff --git a/Cargo.lock b/Cargo.lock index d9f8ea9..141cdf5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -29,9 +29,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aes" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", @@ -53,9 +53,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -131,9 +131,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.5" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" +checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" dependencies = [ "anstyle", "anstyle-parse", @@ -145,9 +145,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" [[package]] name = "anstyle-parse" @@ -179,9 +179,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" dependencies = [ "backtrace", ] @@ -203,13 +203,13 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" +checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" dependencies = [ "concurrent-queue", - "event-listener 4.0.0", - "event-listener-strategy", + "event-listener 5.2.0", + "event-listener-strategy 0.5.0", "futures-core", "pin-project-lite", ] @@ -220,11 +220,11 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" dependencies = [ - "async-lock 3.2.0", + "async-lock 3.3.0", "async-task", "concurrent-queue", - "fastrand 2.0.1", - "futures-lite 2.1.0", + "fastrand 2.0.2", + "futures-lite 2.3.0", "slab", ] @@ -236,10 +236,10 @@ checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ "async-channel", "async-executor", - "async-io 2.2.2", - "async-lock 3.2.0", + "async-io 2.3.2", + "async-lock 3.3.0", "blocking", - "futures-lite 2.1.0", + "futures-lite 2.3.0", "once_cell", ] @@ -276,18 +276,18 @@ dependencies = [ [[package]] name = "async-io" -version = "2.2.2" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6afaa937395a620e33dc6a742c593c01aced20aa376ffb0f628121198578ccc7" +checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" dependencies = [ - "async-lock 3.2.0", + "async-lock 3.3.0", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.1.0", + "futures-lite 2.3.0", "parking", - "polling 3.3.1", - "rustix 0.38.25", + "polling 3.6.0", + "rustix 0.38.32", "slab", "tracing", "windows-sys 0.52.0", @@ -304,12 +304,12 @@ dependencies = [ [[package]] name = "async-lock" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7125e42787d53db9dd54261812ef17e937c95a51e4d291373b670342fa44310c" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" dependencies = [ - "event-listener 4.0.0", - "event-listener-strategy", + "event-listener 4.0.3", + "event-listener-strategy 0.4.0", "pin-project-lite", ] @@ -327,19 +327,19 @@ dependencies = [ [[package]] name = "async-task" -version = "4.5.0" +version = "4.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1" +checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] @@ -370,21 +370,20 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "auto_impl" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ - "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.55", ] [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "backoff" @@ -402,9 +401,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ "addr2line", "cc", @@ -429,9 +428,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64ct" @@ -468,9 +467,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" [[package]] name = "bitvec" @@ -509,20 +508,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" dependencies = [ "async-channel", - "async-lock 3.2.0", + "async-lock 3.3.0", "async-task", - "fastrand 2.0.1", + "fastrand 2.0.2", "futures-io", - "futures-lite 2.1.0", + "futures-lite 2.3.0", "piper", "tracing", ] [[package]] name = "bs58" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" dependencies = [ "sha2", "tinyvec", @@ -530,9 +529,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" [[package]] name = "byte-slice-cast" @@ -548,9 +547,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" dependencies = [ "serde", ] @@ -587,9 +586,9 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.5" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" dependencies = [ "serde", ] @@ -619,9 +618,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" dependencies = [ "jobserver", "libc", @@ -635,22 +634,22 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets 0.48.5", + "windows-targets 0.52.4", ] [[package]] name = "ciborium" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" dependencies = [ "ciborium-io", "ciborium-ll", @@ -659,15 +658,15 @@ dependencies = [ [[package]] name = "ciborium-io" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" [[package]] name = "ciborium-ll" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" dependencies = [ "ciborium-io", "half", @@ -685,9 +684,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.11" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" dependencies = [ "clap_builder", "clap_derive", @@ -695,33 +694,33 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.11" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim", + "strsim 0.11.0", ] [[package]] name = "clap_derive" -version = "4.4.7" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "cobs" @@ -767,7 +766,7 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bech32", "bs58", "digest", @@ -810,9 +809,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.10.0" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5104de16b218eddf8e34ffe2f86f74bfa4e61e95a1b89732fccf6325efd0557" +checksum = "5ba00838774b4ab0233e355d26710fbfc8327a05c017f6dc4873f876d1f79f78" dependencies = [ "cfg-if", "cpufeatures", @@ -823,15 +822,15 @@ dependencies = [ [[package]] name = "const-oid" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "const-random" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaf16c9c2c612020bcfd042e170f6e32de9b9d75adb5277cdbbd2e2c8c8299a" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" dependencies = [ "const-random-macro", ] @@ -855,15 +854,18 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "cookie-factory" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396de984970346b0d9e93d1415082923c679e5ae5c3ee3dcbd104f5610af126b" +checksum = "9885fa71e26b8ab7855e2ec7cae6e9b380edff76cd052e07c683a0319d51b3a2" +dependencies = [ + "futures", +] [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -871,24 +873,24 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", ] @@ -901,11 +903,10 @@ checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" [[package]] name = "crossbeam" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" dependencies = [ - "cfg-if", "crossbeam-channel", "crossbeam-deque", "crossbeam-epoch", @@ -915,68 +916,56 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.3.8" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-skiplist" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "883a5821d7d079fcf34ac55f27a833ee61678110f6b97637cc74513c0d0b42fc" +checksum = "df29de440c58ca2cc6e587ec3d22347551a32435fbde9d2bff64e78a9ffa151b" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crunchy" @@ -1017,9 +1006,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.3" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" dependencies = [ "darling_core", "darling_macro", @@ -1027,27 +1016,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.3" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim", - "syn 2.0.39", + "strsim 0.10.0", + "syn 2.0.55", ] [[package]] name = "darling_macro" -version = "0.20.3" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ "darling_core", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] @@ -1081,9 +1070,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.9" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", "serde", @@ -1109,12 +1098,6 @@ dependencies = [ "cipher", ] -[[package]] -name = "diff" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" - [[package]] name = "digest" version = "0.10.7" @@ -1203,9 +1186,9 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] name = "elliptic-curve" @@ -1252,11 +1235,11 @@ dependencies = [ [[package]] name = "enr" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" +checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "hex", "k256", @@ -1274,28 +1257,28 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] name = "enumn" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b" +checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] name = "env_logger" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" dependencies = [ "humantime", "is-terminal", @@ -1392,9 +1375,9 @@ dependencies = [ [[package]] name = "ethers" -version = "2.0.11" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5344eea9b20effb5efeaad29418215c4d27017639fd1f908260f59cbbd226e" +checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" dependencies = [ "ethers-addressbook", "ethers-contract", @@ -1408,9 +1391,9 @@ dependencies = [ [[package]] name = "ethers-addressbook" -version = "2.0.11" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c405f24ea3a517899ba7985385c43dc4a7eb1209af3b1e0a1a32d7dcc7f8d09" +checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" dependencies = [ "ethers-core", "once_cell", @@ -1420,9 +1403,9 @@ dependencies = [ [[package]] name = "ethers-contract" -version = "2.0.11" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0111ead599d17a7bff6985fd5756f39ca7033edc79a31b23026a8d5d64fa95cd" +checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" dependencies = [ "const-hex", "ethers-contract-abigen", @@ -1439,9 +1422,9 @@ dependencies = [ [[package]] name = "ethers-contract-abigen" -version = "2.0.11" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51258120c6b47ea9d9bec0d90f9e8af71c977fbefbef8213c91bfed385fe45eb" +checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" dependencies = [ "Inflector", "const-hex", @@ -1453,19 +1436,19 @@ dependencies = [ "proc-macro2", "quote", "regex", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", - "syn 2.0.39", + "syn 2.0.55", "toml", "walkdir", ] [[package]] name = "ethers-contract-derive" -version = "2.0.11" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936e7a0f1197cee2b62dc89f63eff3201dbf87c283ff7e18d86d38f83b845483" +checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" dependencies = [ "Inflector", "const-hex", @@ -1474,14 +1457,14 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] name = "ethers-core" -version = "2.0.11" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f03e0bdc216eeb9e355b90cf610ef6c5bb8aca631f97b5ae9980ce34ea7878d" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" dependencies = [ "arrayvec", "bytes", @@ -1500,7 +1483,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.39", + "syn 2.0.55", "tempfile", "thiserror", "tiny-keccak", @@ -1509,13 +1492,13 @@ dependencies = [ [[package]] name = "ethers-etherscan" -version = "2.0.11" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abbac2c890bdbe0f1b8e549a53b00e2c4c1de86bb077c1094d1f38cdf9381a56" +checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" dependencies = [ "chrono", "ethers-core", - "reqwest", + "reqwest 0.11.27", "semver", "serde", "serde_json", @@ -1525,9 +1508,9 @@ dependencies = [ [[package]] name = "ethers-middleware" -version = "2.0.11" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681ece6eb1d10f7cf4f873059a77c04ff1de4f35c63dd7bccde8f438374fcb93" +checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" dependencies = [ "async-trait", "auto_impl", @@ -1540,7 +1523,7 @@ dependencies = [ "futures-locks", "futures-util", "instant", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "thiserror", @@ -1552,13 +1535,13 @@ dependencies = [ [[package]] name = "ethers-providers" -version = "2.0.11" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25d6c0c9455d93d4990c06e049abf9b30daf148cf461ee939c11d88907c60816" +checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" dependencies = [ "async-trait", "auto_impl", - "base64 0.21.5", + "base64 0.21.7", "bytes", "const-hex", "enr", @@ -1567,12 +1550,12 @@ dependencies = [ "futures-timer", "futures-util", "hashers", - "http", + "http 0.2.12", "instant", "jsonwebtoken", "once_cell", "pin-project", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "thiserror", @@ -1589,9 +1572,9 @@ dependencies = [ [[package]] name = "ethers-signers" -version = "2.0.11" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cb1b714e227bbd2d8c53528adb580b203009728b17d0d0e4119353aa9bc5532" +checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" dependencies = [ "async-trait", "coins-bip32", @@ -1608,9 +1591,9 @@ dependencies = [ [[package]] name = "ethers-solc" -version = "2.0.11" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64f710586d147864cff66540a6d64518b9ff37d73ef827fee430538265b595f" +checksum = "66244a771d9163282646dbeffe0e6eca4dda4146b6498644e678ac6089b11edd" dependencies = [ "cfg-if", "const-hex", @@ -1646,9 +1629,20 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "4.0.0" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "770d968249b5d99410d61f5bf89057f3199a077a04d087092f58e7d10692baae" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91" dependencies = [ "concurrent-queue", "parking", @@ -1661,15 +1655,24 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" dependencies = [ - "event-listener 4.0.0", + "event-listener 4.0.3", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291" +dependencies = [ + "event-listener 5.2.0", "pin-project-lite", ] [[package]] name = "evm_arithmetization" version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8460fed1dc1b098aab4dd9f5b7a2281423f2cd078393284ce1edbf13d49b55c" +source = "git+https://github.com/0xPolygonZero/zk_evm.git?branch=develop#81b5ef2088e4707ee173f8eea95e50b96237a227" dependencies = [ "anyhow", "bytes", @@ -1677,7 +1680,7 @@ dependencies = [ "ethereum-types", "hashbrown 0.14.3", "hex-literal", - "itertools 0.11.0", + "itertools", "jemallocator", "keccak-hash 0.10.0", "log", @@ -1712,9 +1715,9 @@ dependencies = [ [[package]] name = "eyre" -version = "0.6.9" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80f656be11ddf91bd709454d15d5bd896fbaf4cc3314e69349e4d1569f5b46cd" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" dependencies = [ "indenter", "once_cell", @@ -1731,9 +1734,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" [[package]] name = "ff" @@ -1836,9 +1839,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -1851,9 +1854,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -1861,15 +1864,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -1878,9 +1881,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-lite" @@ -1899,11 +1902,11 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeee267a1883f7ebef3700f262d2d54de95dfaf38189015a74fdc4e0c7ad8143" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.0.1", + "fastrand 2.0.2", "futures-core", "futures-io", "parking", @@ -1922,32 +1925,32 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" dependencies = [ "gloo-timers", "send_wrapper 0.4.0", @@ -1955,9 +1958,9 @@ dependencies = [ [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -1993,9 +1996,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "js-sys", @@ -2041,17 +2044,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.22" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb" dependencies = [ "bytes", "fnv", "futures-core", "futures-sink", "futures-util", - "http", - "indexmap 2.1.0", + "http 0.2.12", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -2060,9 +2063,13 @@ dependencies = [ [[package]] name = "half" -version = "1.8.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e" +dependencies = [ + "cfg-if", + "crunchy", +] [[package]] name = "hash32" @@ -2120,11 +2127,17 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" @@ -2149,18 +2162,29 @@ dependencies = [ [[package]] name = "home" -version = "0.5.5" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "http" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", @@ -2169,12 +2193,35 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" dependencies = [ "bytes", - "http", + "futures-core", + "http 1.1.0", + "http-body 1.0.0", "pin-project-lite", ] @@ -2198,28 +2245,47 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.27" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", "h2", - "http", - "http-body", + "http 0.2.12", + "http-body 0.4.6", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.10", + "socket2 0.5.6", "tokio", "tower-service", "tracing", "want", ] +[[package]] +name = "hyper" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + [[package]] name = "hyper-rustls" version = "0.24.2" @@ -2227,18 +2293,55 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", - "http", - "hyper", - "rustls", + "http 0.2.12", + "hyper 0.14.28", + "rustls 0.21.10", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.2.0", + "hyper-util", + "rustls 0.22.3", + "rustls-pki-types", "tokio", - "tokio-rustls", + "tokio-rustls 0.25.0", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "hyper 1.2.0", + "pin-project-lite", + "socket2 0.5.6", + "tokio", + "tower", + "tower-service", + "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.58" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2330,9 +2433,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.1.0" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", "hashbrown 0.14.3", @@ -2377,22 +2480,13 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is-terminal" -version = "0.4.9" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ "hermit-abi", - "rustix 0.38.25", - "windows-sys 0.48.0", -] - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", + "libc", + "windows-sys 0.52.0", ] [[package]] @@ -2406,9 +2500,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jemalloc-sys" @@ -2432,18 +2526,18 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -2454,7 +2548,7 @@ version = "8.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "pem", "ring 0.16.20", "serde", @@ -2464,9 +2558,9 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f01b677d82ef7a676aa37e099defd83a28e15687112cafdd112d60236b6115b" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" dependencies = [ "cfg-if", "ecdsa", @@ -2478,9 +2572,9 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ "cpufeatures", ] @@ -2507,31 +2601,33 @@ dependencies = [ [[package]] name = "lalrpop" -version = "0.20.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" +checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" dependencies = [ "ascii-canvas", "bit-set", - "diff", "ena", - "is-terminal", - "itertools 0.10.5", + "itertools", "lalrpop-util", "petgraph", "regex", - "regex-syntax 0.7.5", + "regex-syntax 0.8.3", "string_cache", "term", "tiny-keccak", "unicode-xid", + "walkdir", ] [[package]] name = "lalrpop-util" -version = "0.20.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" +dependencies = [ + "regex-automata 0.4.6", +] [[package]] name = "lapin" @@ -2571,15 +2667,18 @@ dependencies = [ "dotenvy", "ethers", "evm_arithmetization", + "futures", "hex", - "itertools 0.11.0", + "itertools", "mpt_trie", "ops", "paladin-core", "plonky2", "proof_gen", + "reqwest 0.12.2", "serde", "serde_json", + "serde_path_to_error", "tokio", "trace_decoder", "tracing", @@ -2588,9 +2687,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.150" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libm" @@ -2604,29 +2703,29 @@ version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "libc", "redox_syscall", ] [[package]] name = "linkme" -version = "0.3.18" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e6b0bb9ca88d3c5ae88240beb9683821f903b824ee8381ef9ab4e8522fbfa9" +checksum = "bb2cfee0de9bd869589fb9a015e155946d1be5ff415cb844c2caccc6cc4b5db9" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.18" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3b3f61e557a617ec6ba36c79431e1f3b5e100d67cfbdb61ed6ef384298af016" +checksum = "adf157a4dc5a29b7b464aa8fe7edeff30076e07e13646a1c3874f58477dc99f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] @@ -2637,9 +2736,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.11" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" @@ -2654,9 +2753,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "matchers" @@ -2679,18 +2778,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" - -[[package]] -name = "memoffset" -version = "0.9.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "mime" @@ -2706,18 +2796,18 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.9" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "wasi", @@ -2727,8 +2817,7 @@ dependencies = [ [[package]] name = "mpt_trie" version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276984ee63f94fab7907336095c1ff0d6a9117d8c42291564f79101ac275037b" +source = "git+https://github.com/0xPolygonZero/zk_evm.git?branch=develop#81b5ef2088e4707ee173f8eea95e50b96237a227" dependencies = [ "bytes", "enum-as-inner", @@ -2747,9 +2836,9 @@ dependencies = [ [[package]] name = "new_debug_unreachable" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] name = "nom" @@ -2799,29 +2888,34 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" dependencies = [ "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.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" dependencies = [ "autocfg", "num-integer", @@ -2842,9 +2936,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", "libm", @@ -2862,39 +2956,39 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683751d591e6d81200c39fb0d1032608b77724f34114db54f571ff1317b337c0" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c11e44798ad209ccdd91fc192f0526a369a01234f7373e1b141c96d7cee4f0e" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ - "proc-macro-crate 2.0.0", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] name = "object" -version = "0.32.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "open-fastrlp" @@ -2972,9 +3066,9 @@ dependencies = [ [[package]] name = "paladin-core" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c10eebceee2898070e490a57ada2bd3810c236a6d80aadccab4d70ef27c7aa34" +checksum = "5af1955eaab1506a43d046628c218b7b3915539554838feb85ed31f54aace2f2" dependencies = [ "anyhow", "async-trait", @@ -3000,7 +3094,7 @@ dependencies = [ "tokio-util", "tracing", "tracing-subscriber", - "uuid 1.6.1", + "uuid 1.8.0", ] [[package]] @@ -3010,7 +3104,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af25dcb10b7c0ce99abee8694e2e79e4787d7f778b9339dc5a50ba6fc45e5cc9" dependencies = [ "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] @@ -3130,9 +3224,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.5" +version = "2.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" +checksum = "56f8023d0fb78c8e03784ea1c7f3fa36e68a723138990b8d5a47d916b651e7a8" dependencies = [ "memchr", "thiserror", @@ -3141,9 +3235,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.5" +version = "2.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81d78524685f5ef2a3b3bd1cafbc9fcabb036253d9b1463e726a91cd16e2dfc2" +checksum = "b0d24f72393fd16ab6ac5738bc33cdb6a9aa73f8b902e8fe29cf4e67d7dd1026" dependencies = [ "pest", "pest_generator", @@ -3151,22 +3245,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.5" +version = "2.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68bd1206e71118b5356dae5ddc61c8b11e28b09ef6a31acbd15ea48a28e0c227" +checksum = "fdc17e2a6c7d0a492f0158d7a4bd66cc17280308bbaff78d5bef566dca35ab80" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] name = "pest_meta" -version = "2.7.5" +version = "2.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c747191d4ad9e4a4ab9c8798f1e82a39affe7ef9648390b7e5548d18e099de6" +checksum = "934cd7631c050f4674352a6e835d5f6711ffbfb9345c2fc0107155ac495ae293" dependencies = [ "once_cell", "pest", @@ -3180,7 +3274,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 2.1.0", + "indexmap 2.2.6", ] [[package]] @@ -3223,7 +3317,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] @@ -3246,22 +3340,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] @@ -3295,7 +3389,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" dependencies = [ "atomic-waker", - "fastrand 2.0.1", + "fastrand 2.0.2", "futures-io", ] @@ -3311,21 +3405,21 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "plonky2" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b25deb9a4b9c2014c2f99cd36078f30e453d188d0ca8dd4c5ffd1d494b661ac1" +checksum = "d04c7dfa293cd62a8e1e3f21157dba8508ab2de6078b0e5fae202a4fc98ef224" dependencies = [ "ahash", "anyhow", "getrandom", "hashbrown 0.14.3", - "itertools 0.11.0", + "itertools", "keccak-hash 0.8.0", "log", "num", @@ -3342,12 +3436,12 @@ dependencies = [ [[package]] name = "plonky2_field" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "465a741ba134485af571152aab5086457a470aa8893391186cf78dd389694440" +checksum = "e27aab0723672905a49e4771232d7fcf71b97dd0e57634f1dfb5492635f765fc" dependencies = [ "anyhow", - "itertools 0.11.0", + "itertools", "num", "plonky2_util", "rand", @@ -3389,14 +3483,15 @@ dependencies = [ [[package]] name = "polling" -version = "3.3.1" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf63fa624ab313c11656b4cda960bfc46c410187ad493c41f6ba2d8c1e991c9e" +checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6" dependencies = [ "cfg-if", "concurrent-queue", + "hermit-abi", "pin-project-lite", - "rustix 0.38.25", + "rustix 0.38.32", "tracing", "windows-sys 0.52.0", ] @@ -3433,12 +3528,12 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7" dependencies = [ "proc-macro2", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] @@ -3485,34 +3580,19 @@ dependencies = [ ] [[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "proc-macro-crate" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ - "proc-macro2", - "quote", - "version_check", + "toml_edit 0.21.1", ] [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] @@ -3520,8 +3600,7 @@ dependencies = [ [[package]] name = "proof_gen" version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b632ae384e13ad12ed9556e544650bfd79a54b3574fe3da4a749083ea6125440" +source = "git+https://github.com/0xPolygonZero/zk_evm.git?branch=develop#81b5ef2088e4707ee173f8eea95e50b96237a227" dependencies = [ "ethereum-types", "evm_arithmetization", @@ -3538,21 +3617,21 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "lazy_static", "num-traits", "rand", "rand_chacha", "rand_xorshift", - "regex-syntax 0.8.2", + "regex-syntax 0.8.3", "unarray", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -3604,9 +3683,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -3614,9 +3693,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -3664,14 +3743,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.3", - "regex-syntax 0.8.2", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", ] [[package]] @@ -3685,13 +3764,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax 0.8.3", ] [[package]] @@ -3702,32 +3781,26 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" - -[[package]] -name = "regex-syntax" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "reqwest" -version = "0.11.22" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", "futures-util", "h2", - "http", - "http-body", - "hyper", - "hyper-rustls", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.28", + "hyper-rustls 0.24.2", "ipnet", "js-sys", "log", @@ -3735,20 +3808,62 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls", + "rustls 0.21.10", "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", + "sync_wrapper", "system-configuration", "tokio", - "tokio-rustls", + "tokio-rustls 0.24.1", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", + "webpki-roots 0.25.4", + "winreg", +] + +[[package]] +name = "reqwest" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d66674f2b6fb864665eea7a3c1ac4e3dfacd2fda83cf6f935a612e01b0e3338" +dependencies = [ + "base64 0.21.7", + "bytes", + "futures-core", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", + "hyper 1.2.0", + "hyper-rustls 0.26.0", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.22.3", + "rustls-pemfile", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls 0.25.0", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.26.1", "winreg", ] @@ -3779,16 +3894,17 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.6" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684d5e6e18f669ccebf64a92236bb7db9a34f07be010e3627368182027180866" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", + "cfg-if", "getrandom", "libc", "spin 0.9.8", "untrusted 0.9.0", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3859,29 +3975,43 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.25" +version = "0.38.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" +checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "errno", "libc", - "linux-raw-sys 0.4.11", - "windows-sys 0.48.0", + "linux-raw-sys 0.4.13", + "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.21.9" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", - "ring 0.17.6", - "rustls-webpki", + "ring 0.17.8", + "rustls-webpki 0.101.7", "sct", ] +[[package]] +name = "rustls" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99008d7ad0bbbea527ec27bddbc0e432c5b87d8175178cee68d2eec9c4a1813c" +dependencies = [ + "log", + "ring 0.17.8", + "rustls-pki-types", + "rustls-webpki 0.102.2", + "subtle", + "zeroize", +] + [[package]] name = "rustls-connector" version = "0.18.5" @@ -3889,9 +4019,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25da151615461c7347114b1ad1a7458b4cdebc69cb220cd140cd5cb324b1dd37" dependencies = [ "log", - "rustls", + "rustls 0.21.10", "rustls-native-certs", - "rustls-webpki", + "rustls-webpki 0.101.7", ] [[package]] @@ -3912,16 +4042,33 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", ] +[[package]] +name = "rustls-pki-types" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ede67b28608b4c60685c7d54122d4400d90f62b40caee7700e700380a390fa8" + [[package]] name = "rustls-webpki" version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.6", + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "rustls-webpki" +version = "0.102.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" +dependencies = [ + "ring 0.17.8", + "rustls-pki-types", "untrusted 0.9.0", ] @@ -3933,9 +4080,9 @@ checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" [[package]] name = "salsa20" @@ -3957,9 +4104,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.10.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7d66a1128282b7ef025a8ead62a4a9fcf017382ec53b8ffbf4d7bf77bd3c60" +checksum = "788745a868b0e751750388f4e6546eb921ef714a4317fa6954f7cde114eb2eb7" dependencies = [ "cfg-if", "derive_more", @@ -3969,9 +4116,9 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.10.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf2c68b89cafb3b8d918dd07b42be0da66ff202cf1155c5739a4e0c1ea0dc19" +checksum = "7dc2f4e8bc344b9fc3d5f74f72c2e55bfc38d28dc2ebc69c194a3df424e4d9ac" dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", @@ -3981,11 +4128,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -4012,7 +4159,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.6", + "ring 0.17.8", "untrusted 0.9.0", ] @@ -4055,9 +4202,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" dependencies = [ "serde", ] @@ -4076,40 +4223,50 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" dependencies = [ "itoa", "ryu", "serde", ] +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + [[package]] name = "serde_spanned" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" dependencies = [ "serde", ] @@ -4128,16 +4285,17 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.4.0" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" +checksum = "ee80b0e361bbf88fd2f6e242ccd19cfda072cb0faa6ae694ecee08199938569a" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.1.0", + "indexmap 2.2.6", "serde", + "serde_derive", "serde_json", "serde_with_macros", "time", @@ -4145,14 +4303,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.4.0" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" +checksum = "6561dc161a9224638a31d876ccdfefbc1df91d3f3a8342eddb35f055d48c7655" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] @@ -4244,9 +4402,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" @@ -4260,12 +4418,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -4274,7 +4432,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" dependencies = [ - "itertools 0.11.0", + "itertools", "lalrpop", "lalrpop-util", "phf", @@ -4315,14 +4473,14 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "starky" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24e0a1eec739c7a67cb1c6f916c0b7bf2d281cf2edb35d3db5caa6989090133e" +checksum = "acf2fe03f53197fbd5e2f2e5fbb809f8e953881cc729261b55f71134323bbfd6" dependencies = [ "ahash", "anyhow", "hashbrown 0.14.3", - "itertools 0.11.0", + "itertools", "log", "num-bigint", "plonky2", @@ -4355,26 +4513,32 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "strsim" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" + [[package]] name = "strum" -version = "0.25.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.25.3" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", "rustversion", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] @@ -4385,15 +4549,15 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "svm-rs" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20689c7d03b6461b502d0b95d6c24874c7d24dea2688af80486a130a06af3b07" +checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" dependencies = [ "dirs", "fs2", "hex", "once_cell", - "reqwest", + "reqwest 0.11.27", "semver", "serde", "serde_json", @@ -4416,15 +4580,21 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.39" +version = "2.0.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "system-configuration" version = "0.5.1" @@ -4466,15 +4636,14 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.8.1" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", - "fastrand 2.0.1", - "redox_syscall", - "rustix 0.38.25", - "windows-sys 0.48.0", + "fastrand 2.0.2", + "rustix 0.38.32", + "windows-sys 0.52.0", ] [[package]] @@ -4490,38 +4659,38 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", @@ -4529,12 +4698,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.30" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" dependencies = [ "deranged", "itoa", + "num-conv", "powerfmt", "serde", "time-core", @@ -4549,10 +4719,11 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" dependencies = [ + "num-conv", "time-core", ] @@ -4582,9 +4753,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.34.0" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", "bytes", @@ -4594,7 +4765,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.5", + "socket2 0.5.6", "tokio-macros", "windows-sys 0.48.0", ] @@ -4618,7 +4789,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] @@ -4641,15 +4812,26 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls", + "rustls 0.21.10", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +dependencies = [ + "rustls 0.22.3", + "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", "pin-project-lite", @@ -4664,11 +4846,11 @@ checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" dependencies = [ "futures-util", "log", - "rustls", + "rustls 0.21.10", "tokio", - "tokio-rustls", + "tokio-rustls 0.24.1", "tungstenite", - "webpki-roots", + "webpki-roots 0.25.4", ] [[package]] @@ -4687,14 +4869,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.8" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.21.0", + "toml_edit 0.22.9", ] [[package]] @@ -4712,9 +4894,9 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.1.0", + "indexmap 2.2.6", "toml_datetime", - "winnow", + "winnow 0.5.40", ] [[package]] @@ -4723,24 +4905,57 @@ version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" dependencies = [ - "indexmap 2.1.0", + "indexmap 2.2.6", "toml_datetime", - "winnow", + "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.1.0", + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" +dependencies = [ + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.6.5", ] +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + [[package]] name = "tower-service" version = "0.3.2" @@ -4750,8 +4965,7 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "trace_decoder" version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69c42e0c922b0a7eafaad55ca960f8bc9a8fa95eed4b8ec1beb3749d6543d789" +source = "git+https://github.com/0xPolygonZero/zk_evm.git?branch=develop#81b5ef2088e4707ee173f8eea95e50b96237a227" dependencies = [ "bytes", "ciborium", @@ -4778,6 +4992,7 @@ version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -4791,7 +5006,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] @@ -4845,9 +5060,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" @@ -4858,11 +5073,11 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http", + "http 0.2.12", "httparse", "log", "rand", - "rustls", + "rustls 0.21.10", "sha1", "thiserror", "url", @@ -4901,9 +5116,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -4913,9 +5128,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] @@ -4983,9 +5198,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" +checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" dependencies = [ "getrandom", "rand", @@ -5012,9 +5227,9 @@ checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -5037,9 +5252,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -5047,24 +5262,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.39" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -5074,9 +5289,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5084,28 +5299,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "web-sys" -version = "0.3.66" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -5123,9 +5338,18 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.25.3" +version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "webpki-roots" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +dependencies = [ + "rustls-pki-types", +] [[package]] name = "winapi" @@ -5160,11 +5384,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.51.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.52.4", ] [[package]] @@ -5182,7 +5406,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.4", ] [[package]] @@ -5202,17 +5426,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", ] [[package]] @@ -5223,9 +5447,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" [[package]] name = "windows_aarch64_msvc" @@ -5235,9 +5459,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" [[package]] name = "windows_i686_gnu" @@ -5247,9 +5471,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" [[package]] name = "windows_i686_msvc" @@ -5259,9 +5483,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" [[package]] name = "windows_x86_64_gnu" @@ -5271,9 +5495,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" [[package]] name = "windows_x86_64_gnullvm" @@ -5283,9 +5507,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" [[package]] name = "windows_x86_64_msvc" @@ -5295,15 +5519,24 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" [[package]] name = "winnow" -version = "0.5.19" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" dependencies = [ "memchr", ] @@ -5390,7 +5623,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.55", ] [[package]] @@ -5440,9 +5673,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.9+zstd.1.5.5" +version = "2.0.10+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index 1fe596c..e7276a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,11 +8,11 @@ resolver = "2" ethers = "2.0.7" tokio = { version = "1", features = ["full"] } anyhow = "1.0.71" -plonky2 = "0.2.0" -evm_arithmetization = "0.1.2" +plonky2 = "0.2.1" +evm_arithmetization = { git = "https://github.com/0xPolygonZero/zk_evm.git", branch = "develop" } clap = { version = "4.4.11", features = ["derive", "env"] } -trace_decoder = "0.2.0" -proof_gen = "0.1.2" +trace_decoder = { git = "https://github.com/0xPolygonZero/zk_evm.git", branch = "develop" } +proof_gen = { git = "https://github.com/0xPolygonZero/zk_evm.git", branch = "develop" } dotenvy = "0.15.7" paladin-core = "0.4.1" serde = { version = "1.0.193", features = ["derive"] } diff --git a/leader/Cargo.toml b/leader/Cargo.toml index eec29d0..9b4f384 100644 --- a/leader/Cargo.toml +++ b/leader/Cargo.toml @@ -15,14 +15,21 @@ trace_decoder = { workspace = true } proof_gen = { workspace = true } anyhow = { workspace = true } serde = { workspace = true } +serde_path_to_error = "0.1.14" paladin-core = { workspace = true } dotenvy = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true } ethers = { workspace = true } +futures = "0.3.30" +reqwest = { version = "0.12.2", default-features = false, features = [ + "json", + "rustls-tls", +] } + itertools = "0.11.0" -mpt_trie = "0.2.0" +mpt_trie = { git = "https://github.com/0xPolygonZero/zk_evm.git", branch = "develop" } hex = "0.4.3" serde_json = "1.0.108" diff --git a/leader/src/init.rs b/leader/src/init.rs index bd3d774..c528443 100644 --- a/leader/src/init.rs +++ b/leader/src/init.rs @@ -1,11 +1,11 @@ -use tracing_subscriber::{fmt::format::FmtSpan, prelude::*, util::SubscriberInitExt, EnvFilter}; +use tracing_subscriber::{prelude::*, util::SubscriberInitExt, EnvFilter}; pub(crate) fn tracing() { tracing_subscriber::Registry::default() .with( tracing_subscriber::fmt::layer() .without_time() .with_ansi(false) - .with_filter(EnvFilter::from_default_env()) + .with_filter(EnvFilter::from_default_env()), ) .init(); } diff --git a/leader/src/lib.rs b/leader/src/lib.rs index 25515d5..5b72aab 100644 --- a/leader/src/lib.rs +++ b/leader/src/lib.rs @@ -2,6 +2,7 @@ pub mod cli; pub mod mpt; +mod rpc; pub mod utils; mod padding_and_withdrawals; @@ -13,7 +14,7 @@ use ethers::prelude::*; use ethers::types::GethDebugTracerType; use ethers::utils::rlp; use evm_arithmetization::generation::{GenerationInputs, TrieInputs}; -use evm_arithmetization::proof::{BlockHashes, TrieRoots}; +use evm_arithmetization::proof::TrieRoots; use evm_arithmetization::proof::{BlockMetadata, ExtraBlockData}; use itertools::izip; use mpt_trie::nibbles::Nibbles; @@ -23,8 +24,11 @@ use padding_and_withdrawals::{ }; use trace_decoder::types::{HashedAccountAddr, TxnProofGenIR}; -use crate::mpt::{apply_diffs, insert_mpt, trim, Mpt}; use crate::utils::{has_storage_deletion, keccak}; +use crate::{ + mpt::{apply_diffs, insert_mpt, trim, Mpt}, + rpc::get_block_hashes, +}; /// Keccak of empty bytes. pub const EMPTY_HASH: H256 = H256([ @@ -132,30 +136,6 @@ pub async fn get_block_metadata( )) } -pub async fn get_block_hashes(block_number: U64, provider: &Provider) -> Result { - let mut prev_hashes = vec![H256::zero(); 256]; - let cur_hash = provider - .get_block(block_number) - .await? - .ok_or_else(|| anyhow!("Block not found. Block number: {}", block_number))? - .hash - .unwrap(); - for i in 1..=256 { - let hash = provider - .get_block(block_number - i) - .await? - .ok_or_else(|| anyhow!("Block not found. Block number: {}", block_number - i))? - .hash - .unwrap(); - prev_hashes[256 - i] = hash; - } - - Ok(BlockHashes { - prev_hashes, - cur_hash, - }) -} - pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result> { let tx = provider .get_transaction(tx) @@ -171,7 +151,7 @@ pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result = HashMap::new(); let mut txn_rlps = vec![]; - let chain_id = U256::one(); + let chain_id = 13473.into(); let mut alladdrs = vec![]; let mut state = BTreeMap::::new(); let mut traces: Vec> = vec![]; @@ -359,7 +339,7 @@ pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result = storage_mpts .iter() @@ -403,22 +383,26 @@ pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result) -> Result) -> Result GenerationInputs { let sub_tries = create_dummy_proof_trie_inputs( - final_tries, - create_fully_hashed_out_sub_partial_trie(&final_tries.state), + tries, + create_fully_hashed_out_sub_partial_trie(&tries.state), ); create_dummy_gen_input_common(other_data, extra_data, sub_tries) } @@ -199,16 +199,16 @@ fn create_dummy_gen_input( fn create_dummy_gen_input_with_state_addrs_accessed( other_data: &BlockMetaAndHashes, extra_data: &ExtraBlockData, - final_tries: &PartialTrieState, + tries: &PartialTrieState, withdrawal_account_addrs_accessed: impl Iterator, ) -> GenerationInputs { let state_trie_hashed_for_withdrawals = create_minimal_state_partial_trie( - &final_tries.state, + &tries.state, withdrawal_account_addrs_accessed, iter::empty(), ); - let sub_tries = create_dummy_proof_trie_inputs(final_tries, state_trie_hashed_for_withdrawals); + let sub_tries = create_dummy_proof_trie_inputs(tries, state_trie_hashed_for_withdrawals); create_dummy_gen_input_common(other_data, extra_data, sub_tries) } diff --git a/leader/src/rpc.rs b/leader/src/rpc.rs new file mode 100644 index 0000000..041e60f --- /dev/null +++ b/leader/src/rpc.rs @@ -0,0 +1,130 @@ +use anyhow::Context; +use ethers::types::{Address, Bloom, H256, U256}; +use evm_arithmetization::proof::BlockHashes; +use futures::{stream::FuturesOrdered, TryStreamExt}; +use reqwest::IntoUrl; +use serde::Deserialize; +use tracing::info; + +#[derive(Deserialize, Debug)] +#[serde(rename_all = "camelCase")] +struct EthGetBlockByNumberResult { + base_fee_per_gas: U256, + difficulty: U256, + gas_limit: U256, + gas_used: U256, + hash: H256, + logs_bloom: Bloom, + miner: Address, + mix_hash: H256, + number: U256, + parent_hash: H256, + state_root: H256, + timestamp: U256, + + // Pre-eip-4895 blocks won't have this field, so if it's missing, using an empty vec is fine. + #[serde(default)] + withdrawals: Vec, +} + +#[derive(Deserialize, Debug)] +#[serde(rename_all = "camelCase")] +struct Withdrawal { + address: Address, + amount: U256, +} + +impl From for (Address, U256) { + fn from(v: Withdrawal) -> Self { + (v.address, v.amount) + } +} + +/// The response from the `eth_getBlockByNumber` RPC method. +#[derive(Deserialize, Debug)] +struct EthGetBlockByNumberResponse { + result: EthGetBlockByNumberResult, +} + +impl EthGetBlockByNumberResponse { + /// Fetches the block metadata for the given block number. + async fn fetch(block_number: u64, rpc_url: U) -> anyhow::Result { + let client = reqwest::Client::new(); + let block_number_hex = format!("0x{:x}", block_number); + info!("Fetching block metadata for block {}", block_number_hex); + + let response = client + .post(rpc_url) + .json(&serde_json::json!({ + "jsonrpc": "2.0", + "method": "eth_getBlockByNumber", + "params": [&block_number_hex, false], + "id": 1, + })) + .send() + .await + .context("fetching eth_getBlockByNumber")?; + + let bytes = response.bytes().await?; + let des = &mut serde_json::Deserializer::from_slice(&bytes); + let parsed = + serde_path_to_error::deserialize(des).context("deserializing eth_getBlockByNumber")?; + + Ok(parsed) + } + + async fn fetch_previous_block_hashes( + rpc_url: U, + block_number: u64, + ) -> anyhow::Result> { + if block_number == 0 { + return Ok(vec![H256::default(); 256]); + } + + let mut hashes = Vec::with_capacity(256); + + let padding_delta = block_number as i64 - 256; + if padding_delta < 0 { + let default = H256::default(); + for _ in 0..padding_delta.abs() { + hashes.push(default); + } + } + + // Every block response includes the _parent_ hash along with its hash, so we + // can just fetch half the blocks to acquire all hashes for the range. + let start = block_number.saturating_sub(256); + let mut futs: FuturesOrdered<_> = (start..=block_number) + .step_by(2) + .map(|block_number| Self::fetch(block_number, rpc_url)) + .collect(); + + while let Some(response) = futs.try_next().await? { + // Ignore hash of the current block. + if response.result.number == block_number.into() { + hashes.push(response.result.parent_hash); + continue; + } + + // Ignore the parent of the start block. + if response.result.number != start.into() { + hashes.push(response.result.parent_hash); + } + + hashes.push(response.result.hash); + } + + Ok(hashes) + } +} + +pub(crate) async fn get_block_hashes(block_number: u64, url: &str) -> anyhow::Result { + let curr_block_info = EthGetBlockByNumberResponse::fetch(block_number, url).await?; + let prev_hashes = + EthGetBlockByNumberResponse::fetch_previous_block_hashes(url, block_number).await?; + + Ok(BlockHashes { + prev_hashes, + cur_hash: curr_block_info.result.hash, + }) +} diff --git a/ops/src/lib.rs b/ops/src/lib.rs index 3622a97..cf3bdc6 100644 --- a/ops/src/lib.rs +++ b/ops/src/lib.rs @@ -27,20 +27,35 @@ impl Operation for TxProof { type Output = AggregatableProof; fn execute(&self, input: Self::Input) -> Result { - let tx_hash = - rlp::decode::(input.signed_txn.as_ref().expect("signed txn is missing")) - .expect("failed to decode signed transaction") - .hash; - - let _span = info_span!("generate proof", tx_hash = ?tx_hash).entered(); - tracing::event!(Level::INFO, "generating proof for {:?}", tx_hash); + println!("Input: {:#?}", input); + + // If we hit a dummy txn, there is no signed txn, so we must come up with a + // backup identifier to use for logging. + let tx_ident = input + .signed_txn + .as_ref() + .map(|txn| { + rlp::decode::(txn) + .expect("failed to decode signed transaction") + .hash + .to_string() + }) + .unwrap_or_else(|| { + format!( + "Dummy txn for block {} at {}", + input.block_metadata.block_number, input.txn_number_before + ) + }); + + let _span = info_span!("generate proof", tx_hash = ?tx_ident).entered(); + tracing::event!(Level::INFO, "generating proof for {:?}", tx_ident); let start = std::time::Instant::now(); let result = generate_txn_proof(p_state(), input, None).map_err(FatalError::from)?; tracing::event!( Level::INFO, "generate transaction proof for {:?} took {:?}", - tx_hash, + tx_ident, start.elapsed() ); From cf98ab526427411bd7182709232862370fc5fa11 Mon Sep 17 00:00:00 2001 From: BGluth Date: Wed, 27 Mar 2024 15:37:43 -0600 Subject: [PATCH 05/10] Now gets the chain id from the endpoint --- leader/src/lib.rs | 7 ++++++- leader/src/rpc.rs | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/leader/src/lib.rs b/leader/src/lib.rs index 5b72aab..b6ceda1 100644 --- a/leader/src/lib.rs +++ b/leader/src/lib.rs @@ -22,6 +22,7 @@ use mpt_trie::partial_trie::{HashedPartialTrie, Node, PartialTrie}; use padding_and_withdrawals::{ add_withdrawals_to_txns, pad_gen_inputs_with_dummy_inputs_if_needed, BlockMetaAndHashes, }; +use rpc::EthChainIdResponse; use trace_decoder::types::{HashedAccountAddr, TxnProofGenIR}; use crate::utils::{has_storage_deletion, keccak}; @@ -151,7 +152,11 @@ pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result = HashMap::new(); let mut txn_rlps = vec![]; - let chain_id = 13473.into(); + + let chain_id = EthChainIdResponse::fetch(provider.url().to_string()) + .await? + .result; + let mut alladdrs = vec![]; let mut state = BTreeMap::::new(); let mut traces: Vec> = vec![]; diff --git a/leader/src/rpc.rs b/leader/src/rpc.rs index 041e60f..02e401d 100644 --- a/leader/src/rpc.rs +++ b/leader/src/rpc.rs @@ -128,3 +128,35 @@ pub(crate) async fn get_block_hashes(block_number: u64, url: &str) -> anyhow::Re cur_hash: curr_block_info.result.hash, }) } + +/// The response from the `eth_chainId` RPC method. +#[derive(Deserialize, Debug)] +pub(crate) struct EthChainIdResponse { + pub(crate) result: U256, +} + +impl EthChainIdResponse { + /// Fetches the chain id. + pub(crate) async fn fetch(rpc_url: U) -> anyhow::Result { + let client = reqwest::Client::new(); + info!("Fetching chain id"); + + let response = client + .post(rpc_url) + .json(&serde_json::json!({ + "jsonrpc": "2.0", + "method": "eth_chainId", + "params": [], + "id": 1, + })) + .send() + .await + .context("fetching eth_chainId")?; + + let bytes = response.bytes().await?; + let des = &mut serde_json::Deserializer::from_slice(&bytes); + let parsed = serde_path_to_error::deserialize(des).context("deserializing eth_chainId")?; + + Ok(parsed) + } +} From 983aa29de0498b86b4c3639e84e1acf5b691884f Mon Sep 17 00:00:00 2001 From: BGluth Date: Wed, 27 Mar 2024 22:11:17 -0600 Subject: [PATCH 06/10] Fixed dummy trie roots being incorrect --- leader/src/lib.rs | 52 ++++++++++++++++++++------- leader/src/padding_and_withdrawals.rs | 4 ++- 2 files changed, 42 insertions(+), 14 deletions(-) diff --git a/leader/src/lib.rs b/leader/src/lib.rs index b6ceda1..b917491 100644 --- a/leader/src/lib.rs +++ b/leader/src/lib.rs @@ -23,7 +23,7 @@ use padding_and_withdrawals::{ add_withdrawals_to_txns, pad_gen_inputs_with_dummy_inputs_if_needed, BlockMetaAndHashes, }; use rpc::EthChainIdResponse; -use trace_decoder::types::{HashedAccountAddr, TxnProofGenIR}; +use trace_decoder::types::{HashedAccountAddr, TrieRootHash, TxnProofGenIR}; use crate::utils::{has_storage_deletion, keccak}; use crate::{ @@ -37,6 +37,12 @@ pub const EMPTY_HASH: H256 = H256([ 130, 39, 59, 123, 250, 216, 4, 93, 133, 164, 112, ]); +/// 0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421 +const EMPTY_TRIE_HASH: H256 = H256([ + 86, 232, 31, 23, 27, 204, 85, 166, 255, 131, 69, 230, 146, 192, 248, 110, 91, 72, 224, 27, 153, + 108, 173, 192, 1, 98, 47, 181, 227, 99, 180, 33, +]); + /// The current state of all tries as we process txn deltas. These are mutated /// after every txn we process in the trace. #[derive(Clone, Debug, Default)] @@ -144,10 +150,14 @@ pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result = HashMap::new(); @@ -162,18 +172,6 @@ pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result> = vec![]; let mut txns_info = vec![]; - let initial_storage_tries = HashMap::from_iter( - storage_mpts - .iter() - .map(|(k, trie)| (*k, trie.to_partial_trie())), - ); - - let initial_tries_for_dummies = PartialTrieState { - state: state_mpt.to_partial_trie(), - storage: initial_storage_tries, - ..Default::default() - }; - for &hash in block.transactions.iter().take(tx_index + 1) { let txn = provider.get_transaction(hash); let txn = txn @@ -345,6 +343,7 @@ pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result = storage_mpts .iter() @@ -410,6 +409,7 @@ pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result) -> Result) -> Result HashedPartialTrie { + let mut trie = HashedPartialTrie::default(); + trie.insert(Nibbles::default(), h); + + trie +} diff --git a/leader/src/padding_and_withdrawals.rs b/leader/src/padding_and_withdrawals.rs index e2abf1c..b5c933d 100644 --- a/leader/src/padding_and_withdrawals.rs +++ b/leader/src/padding_and_withdrawals.rs @@ -169,7 +169,9 @@ fn update_trie_state_from_withdrawals<'a>( acc_data.balance += amt; - state.insert(h_addr_nibs, rlp::encode(&acc_data).to_vec()); + state + .insert(h_addr_nibs, rlp::encode(&acc_data).to_vec()) + .unwrap(); } } From 91ac5b3377d5331eba127066fa7d0b5077dc6afa Mon Sep 17 00:00:00 2001 From: BGluth Date: Wed, 27 Mar 2024 22:28:09 -0600 Subject: [PATCH 07/10] Added in support for clique (TEMP) - This is intended to be a short term solution. In the long term, this should probably be moved to a more robust config. --- leader/src/cli.rs | 5 +++++ leader/src/lib.rs | 37 +++++++++++++++++++++++++++++-------- leader/src/main.rs | 4 +++- leader/src/rpc.rs | 37 +++++++++++++++++++++++++++++++++++++ 4 files changed, 74 insertions(+), 9 deletions(-) diff --git a/leader/src/cli.rs b/leader/src/cli.rs index 01c3dcf..e538b6c 100644 --- a/leader/src/cli.rs +++ b/leader/src/cli.rs @@ -20,6 +20,11 @@ pub enum Command { /// The transaction hash from which to generate the witness. #[arg(long, short)] transaction_hash: TxHash, + + /// If enabled, we will instead attempt to get the block miner from + /// clique. + #[arg(long, short)] + request_miner_from_clique: bool, }, /// Generates a proof from the given witness and outputs it to stdout. Prove { diff --git a/leader/src/lib.rs b/leader/src/lib.rs index b917491..d61ea3c 100644 --- a/leader/src/lib.rs +++ b/leader/src/lib.rs @@ -22,7 +22,7 @@ use mpt_trie::partial_trie::{HashedPartialTrie, Node, PartialTrie}; use padding_and_withdrawals::{ add_withdrawals_to_txns, pad_gen_inputs_with_dummy_inputs_if_needed, BlockMetaAndHashes, }; -use rpc::EthChainIdResponse; +use rpc::{CliqueGetSignersAtHashResponse, EthChainIdResponse}; use trace_decoder::types::{HashedAccountAddr, TrieRootHash, TxnProofGenIR}; use crate::utils::{has_storage_deletion, keccak}; @@ -121,14 +121,26 @@ pub async fn get_block_metadata( block_number: U64, block_chain_id: U256, provider: &Provider, + request_miner_from_clique: bool, ) -> Result<(BlockMetadata, H256)> { let block = provider .get_block(block_number) .await? .ok_or_else(|| anyhow!("Block not found. Block number: {}", block_number))?; + + let block_beneficiary = match request_miner_from_clique { + false => block.author.unwrap(), + true => { + CliqueGetSignersAtHashResponse::fetch(provider.url().to_string(), block.hash.unwrap()) + .await? + .result + .signer + } + }; + Ok(( BlockMetadata { - block_beneficiary: block.author.unwrap(), + block_beneficiary, block_timestamp: block.timestamp, block_number: U256([block_number.0[0], 0, 0, 0]), block_difficulty: block.difficulty, @@ -143,7 +155,11 @@ pub async fn get_block_metadata( )) } -pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result> { +pub async fn gather_witness( + tx: TxHash, + provider: &Provider, + request_miner_from_clique: bool, +) -> Result> { let tx = provider .get_transaction(tx) .await? @@ -324,8 +340,13 @@ pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result) -> Result = storage_mpts .iter() @@ -470,7 +491,7 @@ pub async fn gather_witness(tx: TxHash, provider: &Provider) -> Result) -> Result HashedPartialTrie { let mut trie = HashedPartialTrie::default(); - trie.insert(Nibbles::default(), h); + trie.insert(Nibbles::default(), h).unwrap(); trie } diff --git a/leader/src/main.rs b/leader/src/main.rs index 9f44f2a..5d3b3d0 100644 --- a/leader/src/main.rs +++ b/leader/src/main.rs @@ -27,10 +27,12 @@ async fn main() -> Result<()> { Command::Rpc { rpc_url, transaction_hash, + request_miner_from_clique, } => { let provider = Provider::::try_from(&rpc_url)?; - let gen_inputs = gather_witness(transaction_hash, &provider).await?; + let gen_inputs = + gather_witness(transaction_hash, &provider, request_miner_from_clique).await?; std::io::stdout().write_all(&serde_json::to_vec(&gen_inputs)?)?; } Command::Prove { diff --git a/leader/src/rpc.rs b/leader/src/rpc.rs index 02e401d..1ecbf55 100644 --- a/leader/src/rpc.rs +++ b/leader/src/rpc.rs @@ -160,3 +160,40 @@ impl EthChainIdResponse { Ok(parsed) } } + +#[derive(Debug, Deserialize)] +pub(crate) struct CliqueGetSignersAtHashResponse { + pub(crate) result: CliqueGetSignersAtHashResult, +} + +impl CliqueGetSignersAtHashResponse { + pub(crate) async fn fetch(rpc_url: U, b_hash: H256) -> anyhow::Result { + let client = reqwest::Client::new(); + let b_hash_hex = format!("0x{:x}", b_hash); + info!("Fetching clique signer for block hash {}", b_hash_hex); + + let response = client + .post(rpc_url) + .json(&serde_json::json!({ + "jsonrpc": "2.0", + "method": "clique_getSignersAtHash", + "params": [b_hash_hex], + "id": 1, + })) + .send() + .await + .context("fetching clique_getSignersAtHash")?; + + let bytes = response.bytes().await?; + let des = &mut serde_json::Deserializer::from_slice(&bytes); + let parsed = serde_path_to_error::deserialize(des) + .context("deserializing clique_getSignersAtHash")?; + + Ok(parsed) + } +} + +#[derive(Debug, Deserialize)] +pub(crate) struct CliqueGetSignersAtHashResult { + pub(crate) signer: Address, +} From f34002f336575498e4a2d291437f78da1a3945b2 Mon Sep 17 00:00:00 2001 From: Robin Salen Date: Wed, 3 Apr 2024 09:13:41 +0900 Subject: [PATCH 08/10] Do not pad when no withdrawals --- leader/src/padding_and_withdrawals.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/leader/src/padding_and_withdrawals.rs b/leader/src/padding_and_withdrawals.rs index b5c933d..256a594 100644 --- a/leader/src/padding_and_withdrawals.rs +++ b/leader/src/padding_and_withdrawals.rs @@ -101,6 +101,10 @@ pub(crate) fn add_withdrawals_to_txns( withdrawals: Vec<(Address, U256)>, dummies_already_added: bool, ) { + if withdrawals.is_empty() { + return; + } + let withdrawals_with_hashed_addrs_iter = withdrawals .iter() .map(|(addr, v)| (*addr, hash(addr.as_bytes()), *v)); From a29c93be1078aa26163a1587bceec78b155c4dbf Mon Sep 17 00:00:00 2001 From: BGluth Date: Wed, 3 Apr 2024 22:29:08 -0600 Subject: [PATCH 09/10] Final cleanup --- leader/src/lib.rs | 2 -- leader/src/padding_and_withdrawals.rs | 3 --- ops/src/lib.rs | 2 -- 3 files changed, 7 deletions(-) diff --git a/leader/src/lib.rs b/leader/src/lib.rs index d61ea3c..c6f3bef 100644 --- a/leader/src/lib.rs +++ b/leader/src/lib.rs @@ -172,8 +172,6 @@ pub async fn gather_witness( .await? .ok_or_else(|| anyhow!("Block not found. Block number: {}", block_number))?; - // println!("BLOCK: {:?}", block); - let mut state_mpt = Mpt::new(); let mut contract_codes = contract_codes(); let mut storage_mpts: HashMap<_, Mpt> = HashMap::new(); diff --git a/leader/src/padding_and_withdrawals.rs b/leader/src/padding_and_withdrawals.rs index 256a594..d4de2f0 100644 --- a/leader/src/padding_and_withdrawals.rs +++ b/leader/src/padding_and_withdrawals.rs @@ -113,9 +113,6 @@ pub(crate) fn add_withdrawals_to_txns( // If we have no actual dummy proofs, then we create one and append it to the // end of the block. false => { - // TODO: Decide if we want this allocation... - // To avoid double hashing the addrs, but I don't know if the extra `Vec` - // allocation is worth it. let withdrawals_with_hashed_addrs: Vec<_> = withdrawals_with_hashed_addrs_iter.collect(); diff --git a/ops/src/lib.rs b/ops/src/lib.rs index cf3bdc6..153d192 100644 --- a/ops/src/lib.rs +++ b/ops/src/lib.rs @@ -27,8 +27,6 @@ impl Operation for TxProof { type Output = AggregatableProof; fn execute(&self, input: Self::Input) -> Result { - println!("Input: {:#?}", input); - // If we hit a dummy txn, there is no signed txn, so we must come up with a // backup identifier to use for logging. let tx_ident = input From bd04dca5ceef0c263273ce9177dda024b0afbc1f Mon Sep 17 00:00:00 2001 From: BGluth Date: Thu, 4 Apr 2024 16:43:09 -0600 Subject: [PATCH 10/10] Cleaned up warnings --- Cargo.lock | 16 ++++++++-------- leader/src/mpt.rs | 19 ++++++++++++------- leader/src/rpc.rs | 15 +-------------- 3 files changed, 21 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 141cdf5..58cf94a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1671,8 +1671,8 @@ dependencies = [ [[package]] name = "evm_arithmetization" -version = "0.1.2" -source = "git+https://github.com/0xPolygonZero/zk_evm.git?branch=develop#81b5ef2088e4707ee173f8eea95e50b96237a227" +version = "0.1.3" +source = "git+https://github.com/0xPolygonZero/zk_evm.git?branch=develop#423e2614d31d323e950b4a461a27ef565a820b75" dependencies = [ "anyhow", "bytes", @@ -2816,8 +2816,8 @@ dependencies = [ [[package]] name = "mpt_trie" -version = "0.2.0" -source = "git+https://github.com/0xPolygonZero/zk_evm.git?branch=develop#81b5ef2088e4707ee173f8eea95e50b96237a227" +version = "0.2.1" +source = "git+https://github.com/0xPolygonZero/zk_evm.git?branch=develop#423e2614d31d323e950b4a461a27ef565a820b75" dependencies = [ "bytes", "enum-as-inner", @@ -3599,8 +3599,8 @@ dependencies = [ [[package]] name = "proof_gen" -version = "0.1.2" -source = "git+https://github.com/0xPolygonZero/zk_evm.git?branch=develop#81b5ef2088e4707ee173f8eea95e50b96237a227" +version = "0.1.3" +source = "git+https://github.com/0xPolygonZero/zk_evm.git?branch=develop#423e2614d31d323e950b4a461a27ef565a820b75" dependencies = [ "ethereum-types", "evm_arithmetization", @@ -4964,8 +4964,8 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "trace_decoder" -version = "0.2.0" -source = "git+https://github.com/0xPolygonZero/zk_evm.git?branch=develop#81b5ef2088e4707ee173f8eea95e50b96237a227" +version = "0.3.0" +source = "git+https://github.com/0xPolygonZero/zk_evm.git?branch=develop#423e2614d31d323e950b4a461a27ef565a820b75" dependencies = [ "bytes", "ciborium", diff --git a/leader/src/mpt.rs b/leader/src/mpt.rs index 6a3bc57..4b9e0e3 100644 --- a/leader/src/mpt.rs +++ b/leader/src/mpt.rs @@ -206,19 +206,21 @@ pub fn apply_diffs( for (&k, &v) in &old.storage.clone().unwrap_or_default() { if !new.storage.clone().unwrap_or_default().contains_key(&k) { // dbg!(format!("Del {:?} {:?}", addr, k)); - trie.delete(tokk(k)); + trie.delete(tokk(k)).unwrap(); // println!("Done Del {:?} {:?}", addr, k); } else { let sanity = trie.get(tokk(k)).unwrap(); let sanity = rlp::decode::(sanity).unwrap(); assert_eq!(sanity, v.into_uint()); let w = *new.storage.clone().unwrap_or_default().get(&k).unwrap(); - trie.insert(tokk(k), rlp::encode(&w.into_uint()).to_vec()); + trie.insert(tokk(k), rlp::encode(&w.into_uint()).to_vec()) + .unwrap(); } } for (&k, v) in &new.storage.clone().unwrap_or_default() { if !old.storage.clone().unwrap_or_default().contains_key(&k) { - trie.insert(tokk(k), rlp::encode(&v.into_uint()).to_vec()); + trie.insert(tokk(k), rlp::encode(&v.into_uint()).to_vec()) + .unwrap(); } } storage.insert(key, trie); @@ -230,7 +232,8 @@ pub fn apply_diffs( if !diff.pre.contains_key(addr) { let mut trie = HashedPartialTrie::from(Node::Empty); for (&k, v) in &new.storage.clone().unwrap_or_default() { - trie.insert(tokk(k), rlp::encode(&v.into_uint()).to_vec()); + trie.insert(tokk(k), rlp::encode(&v.into_uint()).to_vec()) + .unwrap(); } storage.insert(key, trie); } @@ -241,7 +244,7 @@ pub fn apply_diffs( // Delete accounts that are not in the post state. for addr in diff.pre.keys() { if !diff.post.contains_key(addr) { - mpt.delete(tok(addr)); + mpt.delete(tok(addr)).unwrap(); } } @@ -272,7 +275,8 @@ pub fn apply_diffs( .hash(), code_hash, }; - mpt.insert(tok(addr), rlp::encode(&account).to_vec()); + mpt.insert(tok(addr), rlp::encode(&account).to_vec()) + .unwrap(); } else { let old = mpt .get(tok(addr)) @@ -307,7 +311,8 @@ pub fn apply_diffs( .unwrap_or(old.storage_root), code_hash, }; - mpt.insert(tok(addr), rlp::encode(&account).to_vec()); + mpt.insert(tok(addr), rlp::encode(&account).to_vec()) + .unwrap(); } } diff --git a/leader/src/rpc.rs b/leader/src/rpc.rs index 1ecbf55..ba051fe 100644 --- a/leader/src/rpc.rs +++ b/leader/src/rpc.rs @@ -1,5 +1,5 @@ use anyhow::Context; -use ethers::types::{Address, Bloom, H256, U256}; +use ethers::types::{Address, H256, U256}; use evm_arithmetization::proof::BlockHashes; use futures::{stream::FuturesOrdered, TryStreamExt}; use reqwest::IntoUrl; @@ -9,22 +9,9 @@ use tracing::info; #[derive(Deserialize, Debug)] #[serde(rename_all = "camelCase")] struct EthGetBlockByNumberResult { - base_fee_per_gas: U256, - difficulty: U256, - gas_limit: U256, - gas_used: U256, hash: H256, - logs_bloom: Bloom, - miner: Address, - mix_hash: H256, number: U256, parent_hash: H256, - state_root: H256, - timestamp: U256, - - // Pre-eip-4895 blocks won't have this field, so if it's missing, using an empty vec is fine. - #[serde(default)] - withdrawals: Vec, } #[derive(Deserialize, Debug)]