From 2ad9fa3d70d661c174831a4f467a6fbfad396199 Mon Sep 17 00:00:00 2001 From: ceciliaz030 Date: Fri, 2 Feb 2024 02:53:41 +0800 Subject: [PATCH 01/14] Squashed commit of the following: commit b960c3fd5813dc86643036ed9f705fb6a28a756b Merge: 983db4b 70ab8b6 Author: ceciliaz030 Date: Fri Jan 19 03:28:32 2024 +0800 Merge remote-tracking branch 'cecilia/main' into sync-taiko-v3.5 commit 983db4be8675efea76d5f1562d6e5776748a377f Author: ceciliaz030 Date: Fri Jan 19 03:21:10 2024 +0800 non exclusive op & taiko flags commit 115d5fea1f5a3adfb355ce46d8a07c5613296e89 Author: ceciliaz030 Date: Fri Jan 19 03:11:48 2024 +0800 cleanup commit 7b0065b38797d6eead2de438f1cea7847fc32c03 Merge: c306f98 9d655c4 Author: ceciliaz030 Date: Fri Jan 19 03:06:29 2024 +0800 Merge remote-tracking branch 'cecilia/main' into sync-taiko-v3.5 commit c306f988dad4ca0e613c5f7288908f254b337ac6 Author: ceciliaz030 Date: Fri Jan 19 03:02:19 2024 +0800 handler register commit 72a085ecc08c86ee2064ccf16ccdcdc173295e57 Author: ceciliaz030 Date: Thu Jan 18 16:02:07 2024 +0800 fix specs and conditional op/taiko flags, todo: taiko handlers commit 3ec69eeffef3e8e0d54120894b66621356a866e9 Merge: a983b13 9a03c7e Author: ceciliaz030 Date: Thu Jan 18 16:01:11 2024 +0800 Merge remote-tracking branch 'cecilia/serde-no-std' into sync-taiko-v3.5 commit 9a03c7ef8b58328bd1e34c484f1f021d8c0dd1e9 Merge: cf4da2f 0629883 Author: CeciliaZ030 <45245961+CeciliaZ030@users.noreply.github.com> Date: Thu Jan 18 14:44:30 2024 +0800 Merge branch 'main' into serde-no-std commit cf4da2fa8cce0c8cd65f52c62f985dfc82a8a6e7 Author: ceciliaz030 Date: Thu Jan 18 14:35:37 2024 +0800 "preserve_order" commit 6f951139e178ffb7619707b3a98c72fe79d8a7a4 Author: ceciliaz030 Date: Thu Jan 18 14:33:28 2024 +0800 delete comment #"std" commit 15c51faf740fd548acc452ce79d20ea6bf081f48 Author: ceciliaz030 Date: Thu Jan 18 13:30:33 2024 +0800 optional serde std commit a983b13ca8131e3dd3401e7b930497b769e5a4a1 Author: ceciliaz030 Date: Thu Jan 18 13:30:33 2024 +0800 optional serde std commit 546cb515982285c12be68dca386e95b7a68fa7f2 Author: ceciliaz030 Date: Thu Jan 18 12:47:50 2024 +0800 update commit f0d680646139cb7c079595c3b09141167d84e6b5 Author: Leo Alt Date: Fri Nov 24 16:32:08 2023 +0100 use serde as no-std commit 0546172927cbf8d1084a5164acd37d53495dd3f2 Merge: c7aee3a 327dc05 Author: ceciliaz030 Date: Wed Jan 17 03:46:52 2024 +0800 Merge remote-tracking branch 'john/feat/taiko' into cecilia-taiko commit c7aee3ab42e2fec17cb6bdc654a526f03cb6e3d7 Author: ceciliaz030 Date: Wed Jan 17 03:11:35 2024 +0800 init commit 327dc05411c59db6520ba3782a4d1cdab992f479 Author: john xu Date: Mon Dec 18 06:58:08 2023 +0000 Refactor handler functions in EVM implementation commit 2e961443c60eae354a078a3c82d22af6d530035d Author: john xu Date: Sat Dec 9 07:59:10 2023 +0000 Add condition to disable gas refund for anchor transactions commit 13c2272bf4ecce03529fb6545767064d1a7a2754 Author: john xu Date: Sat Dec 9 07:21:01 2023 +0000 Remove once_cell dependency commit 6c6b061ca06460012bbf53af52d113b8d9da4ec1 Author: john xu Date: Sat Dec 9 07:13:20 2023 +0000 Add taiko module and handler commit cbbfe9c9f2f3e17d4e67e979f954cd9e67b45753 Author: Leo Alt Date: Fri Nov 24 16:32:08 2023 +0100 use serde as no-std commit 0e7d7792b85a9ea1312ce1e5e8db41acf83bcf0c Author: john xu Date: Thu Oct 19 12:28:10 2023 +0000 feat: anchor check in zeth commit daf73eea96a71565dc3627359e99eb15f0dc3e29 Author: john xu Date: Tue Oct 17 13:18:20 2023 +0000 feat: support taiko protocol --- bins/revme/Cargo.toml | 9 +- crates/interpreter/Cargo.toml | 1 + crates/interpreter/src/instruction_result.rs | 2 +- crates/interpreter/src/instructions/opcode.rs | 14 +- crates/precompile/Cargo.toml | 1 + crates/precompile/src/lib.rs | 6 +- crates/primitives/Cargo.toml | 1 + crates/primitives/src/env.rs | 90 +++++++----- crates/primitives/src/result.rs | 18 ++- crates/primitives/src/specification.rs | 129 +++++++++++++++--- crates/revm/Cargo.toml | 1 + crates/revm/src/context.rs | 12 +- crates/revm/src/lib.rs | 6 +- crates/revm/src/taiko.rs | 3 + crates/revm/src/taiko/handler_register.rs | 14 ++ 15 files changed, 233 insertions(+), 74 deletions(-) create mode 100644 crates/revm/src/taiko.rs create mode 100644 crates/revm/src/taiko/handler_register.rs diff --git a/bins/revme/Cargo.toml b/bins/revme/Cargo.toml index b71d246e59..306105e9ac 100644 --- a/bins/revme/Cargo.toml +++ b/bins/revme/Cargo.toml @@ -16,7 +16,6 @@ indicatif = "0.17" plain_hasher = "0.2" revm = { path = "../../crates/revm", version = "3.5.0", default-features = false, features = [ "ethersdb", - "std", "serde", "c-kzg", ] } @@ -24,10 +23,14 @@ alloy-rlp = { version = "0.3", default-features = false, features = [ "arrayvec", "derive", ] } -serde = { version = "1.0", features = ["derive", "rc"] } -serde_json = { version = "1.0", features = ["preserve_order"] } +serde = { version = "1.0", default-features = false, features = ["derive", "rc"] } +serde_json = { version = "1.0", default-features = false, features = ["alloc"]} structopt = "0.3" thiserror = "1.0" triehash = "0.8" walkdir = "2.4" k256 = { version = "0.13.3", features = ["ecdsa"] } + +[features] +default = ["std"] +std = ["serde/std", "serde_json/std", "alloy-rlp/std", "revm/std"] \ No newline at end of file diff --git a/crates/interpreter/Cargo.toml b/crates/interpreter/Cargo.toml index 02654d4700..08fefed90c 100644 --- a/crates/interpreter/Cargo.toml +++ b/crates/interpreter/Cargo.toml @@ -27,6 +27,7 @@ arbitrary = ["std", "revm-primitives/arbitrary"] asm-keccak = ["revm-primitives/asm-keccak"] optimism = ["revm-primitives/optimism"] +taiko = ["revm-primitives/taiko"] dev = [ "memory_limit", diff --git a/crates/interpreter/src/instruction_result.rs b/crates/interpreter/src/instruction_result.rs index 13e250ee3d..3e0907a1e4 100644 --- a/crates/interpreter/src/instruction_result.rs +++ b/crates/interpreter/src/instruction_result.rs @@ -87,7 +87,7 @@ impl From for InstructionResult { HaltReason::CallNotAllowedInsideStatic => Self::CallNotAllowedInsideStatic, HaltReason::OutOfFunds => Self::OutOfFunds, HaltReason::CallTooDeep => Self::CallTooDeep, - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] HaltReason::FailedDeposit => Self::FatalExternalError, } } diff --git a/crates/interpreter/src/instructions/opcode.rs b/crates/interpreter/src/instructions/opcode.rs index 05865a6df0..85fbf17a9a 100644 --- a/crates/interpreter/src/instructions/opcode.rs +++ b/crates/interpreter/src/instructions/opcode.rs @@ -857,26 +857,32 @@ pub const fn spec_opcode_gas(spec_id: SpecId) -> &'static [OpInfo; 256] { TABLE } )* - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] SpecId::BEDROCK => { const TABLE: &[OpInfo;256] = &make_gas_table(SpecId::BEDROCK); TABLE } - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] SpecId::REGOLITH => { const TABLE: &[OpInfo;256] = &make_gas_table(SpecId::REGOLITH); TABLE } - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] SpecId::CANYON => { const TABLE: &[OpInfo;256] = &make_gas_table(SpecId::CANYON); TABLE } - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] SpecId::ECOTONE => { const TABLE: &[OpInfo;256] = &make_gas_table(SpecId::ECOTONE); TABLE } + #[cfg(all(feature = "taiko", not(feature = "optimism")))] + SpecId::KATLA => { + const TABLE: &[OpInfo;256] = &make_gas_table(SpecId::KATLA); + TABLE + } + } }; } diff --git a/crates/precompile/Cargo.toml b/crates/precompile/Cargo.toml index f8d6dd62a0..c2a4fd27c2 100644 --- a/crates/precompile/Cargo.toml +++ b/crates/precompile/Cargo.toml @@ -46,6 +46,7 @@ std = [ asm-keccak = ["revm-primitives/asm-keccak"] optimism = ["revm-primitives/optimism"] +taiko = ["revm-primitives/taiko"] # These libraries may not work on all no_std platforms as they depend on C. diff --git a/crates/precompile/src/lib.rs b/crates/precompile/src/lib.rs index e26a990169..cfd2cbe283 100644 --- a/crates/precompile/src/lib.rs +++ b/crates/precompile/src/lib.rs @@ -256,10 +256,12 @@ impl PrecompileSpecId { BERLIN | LONDON | ARROW_GLACIER | GRAY_GLACIER | MERGE | SHANGHAI => Self::BERLIN, CANCUN => Self::CANCUN, LATEST => Self::LATEST, - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] BEDROCK | REGOLITH | CANYON => Self::BERLIN, - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] ECOTONE => Self::CANCUN, + #[cfg(all(feature = "taiko", not(feature = "optimism")))] + KATLA => Self::BERLIN, // TODO(Cecilia): what is this? } } } diff --git a/crates/primitives/Cargo.toml b/crates/primitives/Cargo.toml index e57aa16dc5..477cd58db9 100644 --- a/crates/primitives/Cargo.toml +++ b/crates/primitives/Cargo.toml @@ -61,6 +61,7 @@ arbitrary = ["std", "alloy-primitives/arbitrary", "bitflags/arbitrary"] asm-keccak = ["alloy-primitives/asm-keccak"] optimism = [] +taiko = [] dev = [ "memory_limit", diff --git a/crates/primitives/src/env.rs b/crates/primitives/src/env.rs index 53637b7c3c..4ba4ba6f64 100644 --- a/crates/primitives/src/env.rs +++ b/crates/primitives/src/env.rs @@ -79,7 +79,7 @@ impl Env { /// Return initial spend gas (Gas needed to execute transaction). #[inline] pub fn validate_tx(&self) -> Result<(), InvalidTransaction> { - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] if self.cfg.optimism { // Do not allow for a system transaction to be processed if Regolith is enabled. if self.tx.optimism.is_system_transaction.unwrap_or(false) @@ -206,7 +206,7 @@ impl Env { // On Optimism, deposit transactions do not have verification on the nonce // nor the balance of the account. - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] if self.cfg.optimism && self.tx.optimism.source_hash.is_some() { return Ok(()); } @@ -316,8 +316,11 @@ pub struct CfgEnv { /// allowing for features like multichain fork testing. Setting this field /// to false will disable all optimism execution changes regardless of /// compilation with the optimism feature flag. - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] pub optimism: bool, + + #[cfg(all(feature = "taiko", not(feature = "optimism")))] + pub taiko: bool, } impl CfgEnv { @@ -381,14 +384,14 @@ impl CfgEnv { false } - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] pub fn is_optimism(&self) -> bool { self.optimism } - #[cfg(not(feature = "optimism"))] - pub fn is_optimism(&self) -> bool { - false + #[cfg(all(feature = "taiko", not(feature = "optimism")))] + pub fn is_taiko(&self) -> bool { + self.taiko } } @@ -414,8 +417,10 @@ impl Default for CfgEnv { disable_base_fee: false, #[cfg(feature = "optional_beneficiary_reward")] disable_beneficiary_reward: false, - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] optimism: false, + #[cfg(all(feature = "taiko", not(feature = "optimism")))] + taiko: false, } } } @@ -461,6 +466,14 @@ pub struct BlockEnv { pub blob_excess_gas_and_price: Option, } +#[cfg(all(feature = "taiko", not(feature = "optimism")))] +#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +pub struct TaikoFields { + pub treasury: Address, + pub is_anchor: bool, +} + impl BlockEnv { /// Takes `blob_excess_gas` saves it inside env /// and calculates `blob_fee` with [`BlobExcessGasAndPrice`]. @@ -569,8 +582,12 @@ pub struct TxEnv { pub max_fee_per_blob_gas: Option, #[cfg_attr(feature = "serde", serde(flatten))] - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] pub optimism: OptimismFields, + + #[cfg_attr(feature = "serde", serde(flatten))] + #[cfg(all(feature = "taiko", not(feature = "optimism")))] + pub taiko: TaikoFields, } impl TxEnv { @@ -589,27 +606,6 @@ impl TxEnv { } } -impl Default for TxEnv { - fn default() -> Self { - Self { - caller: Address::ZERO, - gas_limit: u64::MAX, - gas_price: U256::ZERO, - gas_priority_fee: None, - transact_to: TransactTo::Call(Address::ZERO), // will do nothing - value: U256::ZERO, - data: Bytes::new(), - chain_id: None, - nonce: None, - access_list: Vec::new(), - blob_hashes: Vec::new(), - max_fee_per_blob_gas: None, - #[cfg(feature = "optimism")] - optimism: OptimismFields::default(), - } - } -} - /// Structure holding block blob excess gas and it calculates blob fee. /// /// Incorporated as part of the Cancun upgrade via [EIP-4844]. @@ -669,6 +665,29 @@ pub struct OptimismFields { pub enveloped_tx: Option, } +impl Default for TxEnv { + fn default() -> Self { + Self { + caller: Address::ZERO, + gas_limit: u64::MAX, + gas_price: U256::ZERO, + gas_priority_fee: None, + transact_to: TransactTo::Call(Address::ZERO), // will do nothing + value: U256::ZERO, + data: Bytes::new(), + chain_id: None, + nonce: None, + access_list: Vec::new(), + blob_hashes: Vec::new(), + max_fee_per_blob_gas: None, + #[cfg(all(feature = "optimism", not(feature = "taiko")))] + optimism: OptimismFields::default(), + #[cfg(all(feature = "taiko", not(feature = "optimism")))] + taiko: TaikoFields::default(), + } + } +} + /// Transaction destination. #[derive(Clone, Debug, PartialEq, Eq, Hash)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] @@ -738,7 +757,7 @@ pub enum AnalysisKind { } #[cfg(test)] -#[cfg(feature = "optimism")] +#[cfg(all(feature = "optimism", not(feature = "taiko")))] mod op_tests { use super::*; @@ -783,6 +802,15 @@ mod op_tests { } } + + +#[cfg(all(feature = "taiko", not(feature = "optimism")))] +#[test] +fn taiko_test() { + // TODO(Cecilia): taiko tests +} + + #[cfg(test)] mod tests { use super::*; diff --git a/crates/primitives/src/result.rs b/crates/primitives/src/result.rs index b765dd7aef..d027a51bee 100644 --- a/crates/primitives/src/result.rs +++ b/crates/primitives/src/result.rs @@ -235,7 +235,7 @@ pub enum InvalidTransaction { /// special gas accounting rules are applied. Normally on L1, [EVMError::Transaction] errors /// are cause for non-inclusion, so a special [HaltReason] variant was introduced to handle this /// case for failed deposit transactions. - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] DepositSystemTxPostRegolith, /// Deposit transaction haults bubble up to the global main return handler, wiping state and /// only increasing the nonce + persisting the mint value. @@ -251,8 +251,12 @@ pub enum InvalidTransaction { /// special gas accounting rules are applied. Normally on L1, [EVMError::Transaction] errors /// are cause for non-inclusion, so a special [HaltReason] variant was introduced to handle this /// case for failed deposit transactions. - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] HaltedDepositPostRegolith, + + /// Anchor check failed + #[cfg(all(feature = "taiko", not(feature = "optimism")))] + InvalidAnchorTransaction, } #[cfg(feature = "std")] @@ -311,20 +315,24 @@ impl fmt::Display for InvalidTransaction { InvalidTransaction::BlobCreateTransaction => write!(f, "Blob create transaction"), InvalidTransaction::TooManyBlobs => write!(f, "Too many blobs"), InvalidTransaction::BlobVersionNotSupported => write!(f, "Blob version not supported"), - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] InvalidTransaction::DepositSystemTxPostRegolith => { write!( f, "Deposit system transactions post regolith hardfork are not supported" ) } - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] InvalidTransaction::HaltedDepositPostRegolith => { write!( f, "Deposit transaction halted post-regolith. Error will be bubbled up to main return handler." ) } + #[cfg(all(feature = "taiko", not(feature = "optimism")))] + InvalidTransaction::InvalidAnchorTransaction => { + write!(f, "Invalid Anchor transaction.") + } } } } @@ -397,7 +405,7 @@ pub enum HaltReason { CallTooDeep, /* Optimism errors */ - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] FailedDeposit, } diff --git a/crates/primitives/src/specification.rs b/crates/primitives/src/specification.rs index 937acc141f..54d3357726 100644 --- a/crates/primitives/src/specification.rs +++ b/crates/primitives/src/specification.rs @@ -1,11 +1,13 @@ #![allow(non_camel_case_types)] - pub use SpecId::*; /// Specification IDs and their activation block. /// /// Information was obtained from the [Ethereum Execution Specifications](https://github.com/ethereum/execution-specs) -#[cfg(not(feature = "optimism"))] +#[cfg(any( + all(feature = "optimism", feature = "taiko"), + all(not(feature = "optimism"), not(feature = "taiko")) +))] #[repr(u8)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Ord, PartialOrd, enumn::N)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] @@ -34,7 +36,7 @@ pub enum SpecId { /// Specification IDs and their activation block. /// /// Information was obtained from the [Ethereum Execution Specifications](https://github.com/ethereum/execution-specs) -#[cfg(feature = "optimism")] +#[cfg(all(feature = "optimism", not(feature = "taiko")))] #[repr(u8)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Ord, PartialOrd, enumn::N)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] @@ -60,7 +62,67 @@ pub enum SpecId { SHANGHAI = 18, CANYON = 19, CANCUN = 20, - ECOTONE = 21, + ECOTONE = 21, + LATEST = u8::MAX, +} + +/// Specification IDs and their activation block. +/// +/// Information was obtained from the [Ethereum Execution Specifications](https://github.com/ethereum/execution-specs) +#[cfg(all(feature = "taiko", not(feature = "optimism")))] +#[repr(u8)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Ord, PartialOrd, enumn::N)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +pub enum SpecId { + FRONTIER = 0, + FRONTIER_THAWING = 1, + HOMESTEAD = 2, + DAO_FORK = 3, + TANGERINE = 4, + SPURIOUS_DRAGON = 5, + BYZANTIUM = 6, + CONSTANTINOPLE = 7, + PETERSBURG = 8, + ISTANBUL = 9, + MUIR_GLACIER = 10, + BERLIN = 11, + LONDON = 12, + ARROW_GLACIER = 13, + GRAY_GLACIER = 14, + MERGE = 15, + SHANGHAI = 16, + CANCUN = 17, + KATLA = 18, + LATEST = u8::MAX, +} + +/// Specification IDs and their activation block. +/// +/// Information was obtained from the [Ethereum Execution Specifications](https://github.com/ethereum/execution-specs) +#[cfg(all(feature = "taiko", not(feature = "optimism")))] +#[repr(u8)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Ord, PartialOrd, enumn::N)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +pub enum SpecId { + FRONTIER = 0, + FRONTIER_THAWING = 1, + HOMESTEAD = 2, + DAO_FORK = 3, + TANGERINE = 4, + SPURIOUS_DRAGON = 5, + BYZANTIUM = 6, + CONSTANTINOPLE = 7, + PETERSBURG = 8, + ISTANBUL = 9, + MUIR_GLACIER = 10, + BERLIN = 11, + LONDON = 12, + ARROW_GLACIER = 13, + GRAY_GLACIER = 14, + MERGE = 15, + SHANGHAI = 16, + CANCUN = 17, + KATLA = 18, LATEST = u8::MAX, } @@ -97,14 +159,16 @@ impl From<&str> for SpecId { "Merge" => Self::MERGE, "Shanghai" => Self::SHANGHAI, "Cancun" => Self::CANCUN, - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] "Bedrock" => SpecId::BEDROCK, - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] "Regolith" => SpecId::REGOLITH, - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] "Canyon" => SpecId::CANYON, - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] "Ecotone" => SpecId::ECOTONE, + #[cfg(all(feature = "taiko", not(feature = "optimism")))] + "Katla" => SpecId::KATLA, _ => Self::LATEST, } } @@ -154,15 +218,19 @@ spec!(CANCUN, CancunSpec); spec!(LATEST, LatestSpec); // Optimism Hardforks -#[cfg(feature = "optimism")] +#[cfg(all(feature = "optimism", not(feature = "taiko")))] spec!(BEDROCK, BedrockSpec); -#[cfg(feature = "optimism")] +#[cfg(all(feature = "optimism", not(feature = "taiko")))] spec!(REGOLITH, RegolithSpec); -#[cfg(feature = "optimism")] +#[cfg(all(feature = "optimism", not(feature = "taiko")))] spec!(CANYON, CanyonSpec); -#[cfg(feature = "optimism")] +#[cfg(all(feature = "optimism", not(feature = "taiko")))] spec!(ECOTONE, EcotoneSpec); +// Taiko Hardforks +#[cfg(all(feature = "taiko", not(feature = "optimism")))] +spec!(KATLA, KatlaSpec); + #[macro_export] macro_rules! spec_to_generic { ($spec_id:expr, $e:expr) => {{ @@ -222,26 +290,31 @@ macro_rules! spec_to_generic { use $crate::LatestSpec as SPEC; $e } - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] $crate::SpecId::BEDROCK => { use $crate::BedrockSpec as SPEC; $e } - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] $crate::SpecId::REGOLITH => { use $crate::RegolithSpec as SPEC; $e } - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] $crate::SpecId::CANYON => { use $crate::CanyonSpec as SPEC; $e } - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] $crate::SpecId::ECOTONE => { use $crate::EcotoneSpec as SPEC; $e } + #[cfg(all(feature = "taiko", not(feature = "optimism")))] + $crate::SpecId::KATLA => { + use $crate::KatlaSpec as SPEC; + $e + } } }}; } @@ -270,19 +343,19 @@ mod tests { spec_to_generic!(ARROW_GLACIER, assert_eq!(SPEC::SPEC_ID, LONDON)); spec_to_generic!(GRAY_GLACIER, assert_eq!(SPEC::SPEC_ID, LONDON)); spec_to_generic!(MERGE, assert_eq!(SPEC::SPEC_ID, MERGE)); - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] spec_to_generic!(BEDROCK, assert_eq!(SPEC::SPEC_ID, BEDROCK)); - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] spec_to_generic!(REGOLITH, assert_eq!(SPEC::SPEC_ID, REGOLITH)); spec_to_generic!(SHANGHAI, assert_eq!(SPEC::SPEC_ID, SHANGHAI)); - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] spec_to_generic!(CANYON, assert_eq!(SPEC::SPEC_ID, CANYON)); spec_to_generic!(CANCUN, assert_eq!(SPEC::SPEC_ID, CANCUN)); spec_to_generic!(LATEST, assert_eq!(SPEC::SPEC_ID, LATEST)); } } -#[cfg(feature = "optimism")] +#[cfg(all(feature = "optimism", not(feature = "taiko")))] #[cfg(test)] mod optimism_tests { use super::*; @@ -373,3 +446,19 @@ mod optimism_tests { assert!(SpecId::enabled(SpecId::ECOTONE, SpecId::ECOTONE)); } } + +#[cfg(all(feature = "taiko", not(feature = "optimism")))] +#[cfg(test)] +mod tests { + use super::*; + + // TODO(Cecilia): update this range of bits + #[test] + fn test_katla_post_merge_hardforks() { + assert!(SpecId::enabled(SpecId::MERGE)); + assert!(SpecId::enabled(SpecId::SHANGHAI)); + assert!(!SpecId::enabled(SpecId::CANCUN)); + assert!(!SpecId::enabled(SpecId::LATEST)); + assert!(SpecId::enabled(SpecId::KATLA)); + } +} diff --git a/crates/revm/Cargo.toml b/crates/revm/Cargo.toml index a2400e49eb..41578c1335 100644 --- a/crates/revm/Cargo.toml +++ b/crates/revm/Cargo.toml @@ -50,6 +50,7 @@ asm-keccak = ["revm-interpreter/asm-keccak", "revm-precompile/asm-keccak"] test-utils = [] optimism = ["revm-interpreter/optimism", "revm-precompile/optimism"] +taiko = ["revm-interpreter/taiko", "revm-precompile/taiko"] ethersdb = ["std", "tokio", "futures", "ethers-providers", "ethers-core"] diff --git a/crates/revm/src/context.rs b/crates/revm/src/context.rs index 6c4fb6f161..58637b607a 100644 --- a/crates/revm/src/context.rs +++ b/crates/revm/src/context.rs @@ -58,7 +58,7 @@ pub struct EvmContext { /// Precompiles that are available for evm. pub precompiles: Precompiles, /// Used as temporary value holder to store L1 block info. - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] pub l1_block_info: Option, } @@ -70,7 +70,7 @@ impl EvmContext { db, error: None, precompiles: self.precompiles, - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] l1_block_info: self.l1_block_info, } } @@ -81,7 +81,7 @@ impl EvmContext { db, error: None, precompiles: Precompiles::default(), - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] l1_block_info: None, } } @@ -94,7 +94,7 @@ impl EvmContext { db, error: None, precompiles: Precompiles::default(), - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] l1_block_info: None, } } @@ -578,7 +578,7 @@ pub(crate) mod test_utils { db, error: None, precompiles: Precompiles::default(), - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] l1_block_info: None, } } @@ -591,7 +591,7 @@ pub(crate) mod test_utils { db, error: None, precompiles: Precompiles::default(), - #[cfg(feature = "optimism")] + #[cfg(all(feature = "optimism", not(feature = "taiko")))] l1_block_info: None, } } diff --git a/crates/revm/src/lib.rs b/crates/revm/src/lib.rs index 50be69fa29..7fb801f111 100644 --- a/crates/revm/src/lib.rs +++ b/crates/revm/src/lib.rs @@ -23,8 +23,10 @@ mod frame; pub mod handler; mod inspector; mod journaled_state; -#[cfg(feature = "optimism")] +#[cfg(all(feature = "optimism", not(feature = "taiko")))] pub mod optimism; +#[cfg(all(feature = "taiko", not(feature = "optimism")))] +pub mod taiko; // Export items. @@ -43,7 +45,7 @@ pub use inspector::{ }; pub use journaled_state::{JournalCheckpoint, JournalEntry, JournaledState}; // export Optimism types, helpers, and constants -#[cfg(feature = "optimism")] +#[cfg(all(feature = "optimism", not(feature = "taiko")))] pub use optimism::{L1BlockInfo, BASE_FEE_RECIPIENT, L1_BLOCK_CONTRACT, L1_FEE_RECIPIENT}; // Reexport libraries diff --git a/crates/revm/src/taiko.rs b/crates/revm/src/taiko.rs new file mode 100644 index 0000000000..20b7b78ea6 --- /dev/null +++ b/crates/revm/src/taiko.rs @@ -0,0 +1,3 @@ +//! Optimism-specific constants, types, and helpers. + +mod handler_register; diff --git a/crates/revm/src/taiko/handler_register.rs b/crates/revm/src/taiko/handler_register.rs new file mode 100644 index 0000000000..972f4e0237 --- /dev/null +++ b/crates/revm/src/taiko/handler_register.rs @@ -0,0 +1,14 @@ +//! Handler related to Taiko chain + +use crate::{ + handler::{ + mainnet::{self, deduct_caller_inner}, + register::EvmHandler, + }, + interpreter::{return_ok, return_revert, Gas, InstructionResult}, + primitives::{ + db::Database, spec_to_generic, Account, EVMError, Env, ExecutionResult, HaltReason, + HashMap, InvalidTransaction, Output, ResultAndState, Spec, SpecId, U256, + }, + Context, +}; From bc6534882ee87a810ee0809f3fe2d5196dad9181 Mon Sep 17 00:00:00 2001 From: ceciliaz030 Date: Fri, 2 Feb 2024 05:22:58 +0800 Subject: [PATCH 02/14] taiko reimburse_caller & reward_beneficiary --- crates/primitives/Cargo.toml | 2 +- crates/primitives/src/env.rs | 3 - crates/primitives/src/specification.rs | 42 ++--------- crates/revm/Cargo.toml | 2 +- crates/revm/src/taiko/handler_register.rs | 87 ++++++++++++++++++++++- 5 files changed, 94 insertions(+), 42 deletions(-) diff --git a/crates/primitives/Cargo.toml b/crates/primitives/Cargo.toml index 477cd58db9..51e1f295fa 100644 --- a/crates/primitives/Cargo.toml +++ b/crates/primitives/Cargo.toml @@ -40,7 +40,7 @@ serde = { version = "1.0", default-features = false, features = ["derive", "rc"] hex = { version = "0.4", default-features = false } [features] -default = ["std", "c-kzg"] +default = ["std", "c-kzg", "taiko"] std = [ "serde?/std", "alloy-primitives/std", diff --git a/crates/primitives/src/env.rs b/crates/primitives/src/env.rs index 4ba4ba6f64..bb198919c8 100644 --- a/crates/primitives/src/env.rs +++ b/crates/primitives/src/env.rs @@ -802,15 +802,12 @@ mod op_tests { } } - - #[cfg(all(feature = "taiko", not(feature = "optimism")))] #[test] fn taiko_test() { // TODO(Cecilia): taiko tests } - #[cfg(test)] mod tests { use super::*; diff --git a/crates/primitives/src/specification.rs b/crates/primitives/src/specification.rs index 54d3357726..626d754824 100644 --- a/crates/primitives/src/specification.rs +++ b/crates/primitives/src/specification.rs @@ -62,37 +62,7 @@ pub enum SpecId { SHANGHAI = 18, CANYON = 19, CANCUN = 20, - ECOTONE = 21, - LATEST = u8::MAX, -} - -/// Specification IDs and their activation block. -/// -/// Information was obtained from the [Ethereum Execution Specifications](https://github.com/ethereum/execution-specs) -#[cfg(all(feature = "taiko", not(feature = "optimism")))] -#[repr(u8)] -#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Ord, PartialOrd, enumn::N)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub enum SpecId { - FRONTIER = 0, - FRONTIER_THAWING = 1, - HOMESTEAD = 2, - DAO_FORK = 3, - TANGERINE = 4, - SPURIOUS_DRAGON = 5, - BYZANTIUM = 6, - CONSTANTINOPLE = 7, - PETERSBURG = 8, - ISTANBUL = 9, - MUIR_GLACIER = 10, - BERLIN = 11, - LONDON = 12, - ARROW_GLACIER = 13, - GRAY_GLACIER = 14, - MERGE = 15, - SHANGHAI = 16, - CANCUN = 17, - KATLA = 18, + ECOTONE = 21, LATEST = u8::MAX, } @@ -455,10 +425,10 @@ mod tests { // TODO(Cecilia): update this range of bits #[test] fn test_katla_post_merge_hardforks() { - assert!(SpecId::enabled(SpecId::MERGE)); - assert!(SpecId::enabled(SpecId::SHANGHAI)); - assert!(!SpecId::enabled(SpecId::CANCUN)); - assert!(!SpecId::enabled(SpecId::LATEST)); - assert!(SpecId::enabled(SpecId::KATLA)); + assert!(SpecId::enabled(SpecId::KATLA, SpecId::MERGE)); + assert!(SpecId::enabled(SpecId::KATLA, SpecId::SHANGHAI)); + assert!(!SpecId::enabled(SpecId::KATLA, SpecId::CANCUN)); + assert!(!SpecId::enabled(SpecId::KATLA, SpecId::LATEST)); + assert!(SpecId::enabled(SpecId::KATLA, SpecId::KATLA)); } } diff --git a/crates/revm/Cargo.toml b/crates/revm/Cargo.toml index 41578c1335..231931d3fa 100644 --- a/crates/revm/Cargo.toml +++ b/crates/revm/Cargo.toml @@ -41,7 +41,7 @@ criterion = "0.5" indicatif = "0.17" [features] -default = ["std", "c-kzg", "secp256k1"] +default = ["std", "c-kzg", "secp256k1", "taiko"] std = ["serde?/std", "serde_json?/std", "serde_json?/preserve_order", "revm-interpreter/std", "revm-precompile/std"] serde = ["dep:serde", "dep:serde_json", "revm-interpreter/serde"] arbitrary = ["revm-interpreter/arbitrary"] diff --git a/crates/revm/src/taiko/handler_register.rs b/crates/revm/src/taiko/handler_register.rs index 972f4e0237..07e7a3b96f 100644 --- a/crates/revm/src/taiko/handler_register.rs +++ b/crates/revm/src/taiko/handler_register.rs @@ -2,7 +2,7 @@ use crate::{ handler::{ - mainnet::{self, deduct_caller_inner}, + mainnet::{self, deduct_caller, deduct_caller_inner, end, last_frame_return, output}, register::EvmHandler, }, interpreter::{return_ok, return_revert, Gas, InstructionResult}, @@ -12,3 +12,88 @@ use crate::{ }, Context, }; +use alloc::sync::Arc; +use core::ops::Mul; +use SpecId::LONDON; + +pub fn taiko_handle_register(handler: &mut EvmHandler<'_, EXT, DB>) { + spec_to_generic!(handler.spec_id, { + handler.post_execution.reimburse_caller = Arc::new(reimburse_caller::); + handler.post_execution.reward_beneficiary = Arc::new(reward_beneficiary::); + }); +} + +#[inline] +pub fn reimburse_caller( + context: &mut Context, + gas: &Gas, +) -> Result<(), EVMError> { + if context.evm.env.tx.taiko.is_anchor { + return Ok(()); + } + let caller = context.evm.env.tx.caller; + let effective_gas_price = context.evm.env.effective_gas_price(); + + // return balance of not spend gas. + let (caller_account, _) = context + .evm + .journaled_state + .load_account(caller, &mut context.evm.db) + .map_err(EVMError::Database)?; + + caller_account.info.balance = caller_account + .info + .balance + .saturating_add(effective_gas_price * U256::from(gas.remaining() + gas.refunded() as u64)); + + Ok(()) +} + +/// Reward beneficiary with gas fee. +#[inline] +pub fn reward_beneficiary( + context: &mut Context, + gas: &Gas, +) -> Result<(), EVMError> { + if context.evm.env.tx.taiko.is_anchor { + return Ok(()); + } + let beneficiary = context.evm.env.block.coinbase; + let effective_gas_price = context.evm.env.effective_gas_price(); + + // transfer fee to coinbase/beneficiary. + // EIP-1559 discard basefee for coinbase transfer. Basefee amount of gas is discarded. + let coinbase_gas_price = if SPEC::enabled(LONDON) { + effective_gas_price.saturating_sub(context.evm.env.block.basefee) + } else { + effective_gas_price + }; + + let (coinbase_account, _) = context + .evm + .journaled_state + .load_account(beneficiary, &mut context.evm.db) + .map_err(EVMError::Database)?; + + coinbase_account.mark_touch(); + coinbase_account.info.balance = coinbase_account + .info + .balance + .saturating_add(coinbase_gas_price * U256::from(gas.spend() - gas.refunded() as u64)); + + let treasury = context.evm.env.tx.taiko.treasury; + let basefee = context.evm.env.block.basefee; + + let (treasury_account, _) = context + .evm + .journaled_state + .load_account(treasury, &mut context.evm.db) + .map_err(EVMError::Database)?; + + treasury_account.mark_touch(); + treasury_account.info.balance = treasury_account + .info + .balance + .saturating_add(basefee * U256::from(gas.spend() - gas.refunded() as u64)); + Ok(()) +} From f5c36e8670dba4a9c213fcd508753924f8005d44 Mon Sep 17 00:00:00 2001 From: ceciliaz030 Date: Fri, 2 Feb 2024 05:42:06 +0800 Subject: [PATCH 03/14] KATLA is before CANCUN, aka does not have 4844 --- crates/primitives/src/specification.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/primitives/src/specification.rs b/crates/primitives/src/specification.rs index 626d754824..863326da35 100644 --- a/crates/primitives/src/specification.rs +++ b/crates/primitives/src/specification.rs @@ -91,8 +91,8 @@ pub enum SpecId { GRAY_GLACIER = 14, MERGE = 15, SHANGHAI = 16, - CANCUN = 17, - KATLA = 18, + KATLA = 17, // KATLA is before CANCUN, aka does not have 4844 + CANCUN = 18, LATEST = u8::MAX, } @@ -419,7 +419,7 @@ mod optimism_tests { #[cfg(all(feature = "taiko", not(feature = "optimism")))] #[cfg(test)] -mod tests { +mod taiko_tests { use super::*; // TODO(Cecilia): update this range of bits From 2559c92784002e0abf67486daa2cd70301d7c02a Mon Sep 17 00:00:00 2001 From: ceciliaz030 Date: Mon, 5 Feb 2024 23:51:00 +0800 Subject: [PATCH 04/14] --features taiko --- .github/workflows/ci.yml | 6 +-- crates/interpreter/src/instruction_result.rs | 2 +- crates/interpreter/src/instructions/opcode.rs | 10 ++-- crates/precompile/src/lib.rs | 6 +-- crates/primitives/src/env.rs | 30 ++++++------ crates/primitives/src/lib.rs | 3 ++ crates/primitives/src/result.rs | 14 +++--- crates/primitives/src/specification.rs | 49 +++++++++---------- crates/revm/src/context.rs | 12 ++--- crates/revm/src/lib.rs | 6 +-- 10 files changed, 69 insertions(+), 69 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c4d7e3ddde..3345b5081f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: fail-fast: false matrix: rust: ["stable", "beta", "nightly"] - flags: ["--no-default-features", "", "--all-features"] + flags: ["--no-default-features", "", "--features taiko"] steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@master @@ -79,7 +79,7 @@ jobs: steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@clippy - - run: cargo +nightly clippy --workspace --all-targets --all-features + - run: cargo +nightly clippy --workspace --all-targets --features taiko env: RUSTFLAGS: -Dwarnings @@ -92,7 +92,7 @@ jobs: - uses: dtolnay/rust-toolchain@nightly with: components: rust-docs - - run: cargo doc --workspace --all-features --no-deps --document-private-items + - run: cargo doc --workspace --features taiko --no-deps --document-private-items env: RUSTDOCFLAGS: "--cfg docsrs -D warnings" diff --git a/crates/interpreter/src/instruction_result.rs b/crates/interpreter/src/instruction_result.rs index 3e0907a1e4..13e250ee3d 100644 --- a/crates/interpreter/src/instruction_result.rs +++ b/crates/interpreter/src/instruction_result.rs @@ -87,7 +87,7 @@ impl From for InstructionResult { HaltReason::CallNotAllowedInsideStatic => Self::CallNotAllowedInsideStatic, HaltReason::OutOfFunds => Self::OutOfFunds, HaltReason::CallTooDeep => Self::CallTooDeep, - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] HaltReason::FailedDeposit => Self::FatalExternalError, } } diff --git a/crates/interpreter/src/instructions/opcode.rs b/crates/interpreter/src/instructions/opcode.rs index 85fbf17a9a..25f2d950e1 100644 --- a/crates/interpreter/src/instructions/opcode.rs +++ b/crates/interpreter/src/instructions/opcode.rs @@ -857,27 +857,27 @@ pub const fn spec_opcode_gas(spec_id: SpecId) -> &'static [OpInfo; 256] { TABLE } )* - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] SpecId::BEDROCK => { const TABLE: &[OpInfo;256] = &make_gas_table(SpecId::BEDROCK); TABLE } - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] SpecId::REGOLITH => { const TABLE: &[OpInfo;256] = &make_gas_table(SpecId::REGOLITH); TABLE } - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] SpecId::CANYON => { const TABLE: &[OpInfo;256] = &make_gas_table(SpecId::CANYON); TABLE } - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] SpecId::ECOTONE => { const TABLE: &[OpInfo;256] = &make_gas_table(SpecId::ECOTONE); TABLE } - #[cfg(all(feature = "taiko", not(feature = "optimism")))] + #[cfg(feature = "taiko")] SpecId::KATLA => { const TABLE: &[OpInfo;256] = &make_gas_table(SpecId::KATLA); TABLE diff --git a/crates/precompile/src/lib.rs b/crates/precompile/src/lib.rs index cfd2cbe283..903f93f434 100644 --- a/crates/precompile/src/lib.rs +++ b/crates/precompile/src/lib.rs @@ -256,11 +256,11 @@ impl PrecompileSpecId { BERLIN | LONDON | ARROW_GLACIER | GRAY_GLACIER | MERGE | SHANGHAI => Self::BERLIN, CANCUN => Self::CANCUN, LATEST => Self::LATEST, - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] BEDROCK | REGOLITH | CANYON => Self::BERLIN, - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] ECOTONE => Self::CANCUN, - #[cfg(all(feature = "taiko", not(feature = "optimism")))] + #[cfg(feature = "taiko")] KATLA => Self::BERLIN, // TODO(Cecilia): what is this? } } diff --git a/crates/primitives/src/env.rs b/crates/primitives/src/env.rs index bb198919c8..bcab89dc46 100644 --- a/crates/primitives/src/env.rs +++ b/crates/primitives/src/env.rs @@ -79,7 +79,7 @@ impl Env { /// Return initial spend gas (Gas needed to execute transaction). #[inline] pub fn validate_tx(&self) -> Result<(), InvalidTransaction> { - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] if self.cfg.optimism { // Do not allow for a system transaction to be processed if Regolith is enabled. if self.tx.optimism.is_system_transaction.unwrap_or(false) @@ -206,7 +206,7 @@ impl Env { // On Optimism, deposit transactions do not have verification on the nonce // nor the balance of the account. - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] if self.cfg.optimism && self.tx.optimism.source_hash.is_some() { return Ok(()); } @@ -316,10 +316,10 @@ pub struct CfgEnv { /// allowing for features like multichain fork testing. Setting this field /// to false will disable all optimism execution changes regardless of /// compilation with the optimism feature flag. - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] pub optimism: bool, - #[cfg(all(feature = "taiko", not(feature = "optimism")))] + #[cfg(feature = "taiko")] pub taiko: bool, } @@ -384,12 +384,12 @@ impl CfgEnv { false } - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] pub fn is_optimism(&self) -> bool { self.optimism } - #[cfg(all(feature = "taiko", not(feature = "optimism")))] + #[cfg(feature = "taiko")] pub fn is_taiko(&self) -> bool { self.taiko } @@ -417,9 +417,9 @@ impl Default for CfgEnv { disable_base_fee: false, #[cfg(feature = "optional_beneficiary_reward")] disable_beneficiary_reward: false, - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] optimism: false, - #[cfg(all(feature = "taiko", not(feature = "optimism")))] + #[cfg(feature = "taiko")] taiko: false, } } @@ -466,7 +466,7 @@ pub struct BlockEnv { pub blob_excess_gas_and_price: Option, } -#[cfg(all(feature = "taiko", not(feature = "optimism")))] +#[cfg(feature = "taiko")] #[derive(Clone, Debug, Default, PartialEq, Eq, Hash)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct TaikoFields { @@ -582,11 +582,11 @@ pub struct TxEnv { pub max_fee_per_blob_gas: Option, #[cfg_attr(feature = "serde", serde(flatten))] - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] pub optimism: OptimismFields, #[cfg_attr(feature = "serde", serde(flatten))] - #[cfg(all(feature = "taiko", not(feature = "optimism")))] + #[cfg(feature = "taiko")] pub taiko: TaikoFields, } @@ -680,9 +680,9 @@ impl Default for TxEnv { access_list: Vec::new(), blob_hashes: Vec::new(), max_fee_per_blob_gas: None, - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] optimism: OptimismFields::default(), - #[cfg(all(feature = "taiko", not(feature = "optimism")))] + #[cfg(feature = "taiko")] taiko: TaikoFields::default(), } } @@ -757,7 +757,7 @@ pub enum AnalysisKind { } #[cfg(test)] -#[cfg(all(feature = "optimism", not(feature = "taiko")))] +#[cfg(feature = "optimism")] mod op_tests { use super::*; @@ -802,7 +802,7 @@ mod op_tests { } } -#[cfg(all(feature = "taiko", not(feature = "optimism")))] +#[cfg(feature = "taiko")] #[test] fn taiko_test() { // TODO(Cecilia): taiko tests diff --git a/crates/primitives/src/lib.rs b/crates/primitives/src/lib.rs index f2a6c049cc..465a9fb449 100644 --- a/crates/primitives/src/lib.rs +++ b/crates/primitives/src/lib.rs @@ -7,6 +7,9 @@ #![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#[cfg(all(feature = "taiko", feature = "optimism"))] +compile_error!("Features 'taiko' and 'optimism' cannot be enabled at the same time."); + extern crate alloc; mod bytecode; diff --git a/crates/primitives/src/result.rs b/crates/primitives/src/result.rs index d027a51bee..c830c4bd8f 100644 --- a/crates/primitives/src/result.rs +++ b/crates/primitives/src/result.rs @@ -235,7 +235,7 @@ pub enum InvalidTransaction { /// special gas accounting rules are applied. Normally on L1, [EVMError::Transaction] errors /// are cause for non-inclusion, so a special [HaltReason] variant was introduced to handle this /// case for failed deposit transactions. - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] DepositSystemTxPostRegolith, /// Deposit transaction haults bubble up to the global main return handler, wiping state and /// only increasing the nonce + persisting the mint value. @@ -251,11 +251,11 @@ pub enum InvalidTransaction { /// special gas accounting rules are applied. Normally on L1, [EVMError::Transaction] errors /// are cause for non-inclusion, so a special [HaltReason] variant was introduced to handle this /// case for failed deposit transactions. - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] HaltedDepositPostRegolith, /// Anchor check failed - #[cfg(all(feature = "taiko", not(feature = "optimism")))] + #[cfg(feature = "taiko")] InvalidAnchorTransaction, } @@ -315,21 +315,21 @@ impl fmt::Display for InvalidTransaction { InvalidTransaction::BlobCreateTransaction => write!(f, "Blob create transaction"), InvalidTransaction::TooManyBlobs => write!(f, "Too many blobs"), InvalidTransaction::BlobVersionNotSupported => write!(f, "Blob version not supported"), - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] InvalidTransaction::DepositSystemTxPostRegolith => { write!( f, "Deposit system transactions post regolith hardfork are not supported" ) } - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] InvalidTransaction::HaltedDepositPostRegolith => { write!( f, "Deposit transaction halted post-regolith. Error will be bubbled up to main return handler." ) } - #[cfg(all(feature = "taiko", not(feature = "optimism")))] + #[cfg(feature = "taiko")] InvalidTransaction::InvalidAnchorTransaction => { write!(f, "Invalid Anchor transaction.") } @@ -405,7 +405,7 @@ pub enum HaltReason { CallTooDeep, /* Optimism errors */ - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] FailedDeposit, } diff --git a/crates/primitives/src/specification.rs b/crates/primitives/src/specification.rs index 863326da35..2929a17288 100644 --- a/crates/primitives/src/specification.rs +++ b/crates/primitives/src/specification.rs @@ -4,10 +4,7 @@ pub use SpecId::*; /// Specification IDs and their activation block. /// /// Information was obtained from the [Ethereum Execution Specifications](https://github.com/ethereum/execution-specs) -#[cfg(any( - all(feature = "optimism", feature = "taiko"), - all(not(feature = "optimism"), not(feature = "taiko")) -))] +#[cfg(all(not(feature = "optimism"), not(feature = "taiko")))] #[repr(u8)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Ord, PartialOrd, enumn::N)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] @@ -36,7 +33,7 @@ pub enum SpecId { /// Specification IDs and their activation block. /// /// Information was obtained from the [Ethereum Execution Specifications](https://github.com/ethereum/execution-specs) -#[cfg(all(feature = "optimism", not(feature = "taiko")))] +#[cfg(feature = "optimism")] #[repr(u8)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Ord, PartialOrd, enumn::N)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] @@ -69,7 +66,7 @@ pub enum SpecId { /// Specification IDs and their activation block. /// /// Information was obtained from the [Ethereum Execution Specifications](https://github.com/ethereum/execution-specs) -#[cfg(all(feature = "taiko", not(feature = "optimism")))] +#[cfg(feature = "taiko")] #[repr(u8)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Ord, PartialOrd, enumn::N)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] @@ -129,15 +126,15 @@ impl From<&str> for SpecId { "Merge" => Self::MERGE, "Shanghai" => Self::SHANGHAI, "Cancun" => Self::CANCUN, - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] "Bedrock" => SpecId::BEDROCK, - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] "Regolith" => SpecId::REGOLITH, - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] "Canyon" => SpecId::CANYON, - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] "Ecotone" => SpecId::ECOTONE, - #[cfg(all(feature = "taiko", not(feature = "optimism")))] + #[cfg(feature = "taiko")] "Katla" => SpecId::KATLA, _ => Self::LATEST, } @@ -188,17 +185,17 @@ spec!(CANCUN, CancunSpec); spec!(LATEST, LatestSpec); // Optimism Hardforks -#[cfg(all(feature = "optimism", not(feature = "taiko")))] +#[cfg(feature = "optimism")] spec!(BEDROCK, BedrockSpec); -#[cfg(all(feature = "optimism", not(feature = "taiko")))] +#[cfg(feature = "optimism")] spec!(REGOLITH, RegolithSpec); -#[cfg(all(feature = "optimism", not(feature = "taiko")))] +#[cfg(feature = "optimism")] spec!(CANYON, CanyonSpec); -#[cfg(all(feature = "optimism", not(feature = "taiko")))] +#[cfg(feature = "optimism")] spec!(ECOTONE, EcotoneSpec); // Taiko Hardforks -#[cfg(all(feature = "taiko", not(feature = "optimism")))] +#[cfg(feature = "taiko")] spec!(KATLA, KatlaSpec); #[macro_export] @@ -260,27 +257,27 @@ macro_rules! spec_to_generic { use $crate::LatestSpec as SPEC; $e } - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] $crate::SpecId::BEDROCK => { use $crate::BedrockSpec as SPEC; $e } - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] $crate::SpecId::REGOLITH => { use $crate::RegolithSpec as SPEC; $e } - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] $crate::SpecId::CANYON => { use $crate::CanyonSpec as SPEC; $e } - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] $crate::SpecId::ECOTONE => { use $crate::EcotoneSpec as SPEC; $e } - #[cfg(all(feature = "taiko", not(feature = "optimism")))] + #[cfg(feature = "taiko")] $crate::SpecId::KATLA => { use $crate::KatlaSpec as SPEC; $e @@ -313,19 +310,19 @@ mod tests { spec_to_generic!(ARROW_GLACIER, assert_eq!(SPEC::SPEC_ID, LONDON)); spec_to_generic!(GRAY_GLACIER, assert_eq!(SPEC::SPEC_ID, LONDON)); spec_to_generic!(MERGE, assert_eq!(SPEC::SPEC_ID, MERGE)); - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] spec_to_generic!(BEDROCK, assert_eq!(SPEC::SPEC_ID, BEDROCK)); - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] spec_to_generic!(REGOLITH, assert_eq!(SPEC::SPEC_ID, REGOLITH)); spec_to_generic!(SHANGHAI, assert_eq!(SPEC::SPEC_ID, SHANGHAI)); - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] spec_to_generic!(CANYON, assert_eq!(SPEC::SPEC_ID, CANYON)); spec_to_generic!(CANCUN, assert_eq!(SPEC::SPEC_ID, CANCUN)); spec_to_generic!(LATEST, assert_eq!(SPEC::SPEC_ID, LATEST)); } } -#[cfg(all(feature = "optimism", not(feature = "taiko")))] +#[cfg(feature = "optimism")] #[cfg(test)] mod optimism_tests { use super::*; @@ -417,7 +414,7 @@ mod optimism_tests { } } -#[cfg(all(feature = "taiko", not(feature = "optimism")))] +#[cfg(feature = "taiko")] #[cfg(test)] mod taiko_tests { use super::*; diff --git a/crates/revm/src/context.rs b/crates/revm/src/context.rs index 58637b607a..6c4fb6f161 100644 --- a/crates/revm/src/context.rs +++ b/crates/revm/src/context.rs @@ -58,7 +58,7 @@ pub struct EvmContext { /// Precompiles that are available for evm. pub precompiles: Precompiles, /// Used as temporary value holder to store L1 block info. - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] pub l1_block_info: Option, } @@ -70,7 +70,7 @@ impl EvmContext { db, error: None, precompiles: self.precompiles, - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] l1_block_info: self.l1_block_info, } } @@ -81,7 +81,7 @@ impl EvmContext { db, error: None, precompiles: Precompiles::default(), - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] l1_block_info: None, } } @@ -94,7 +94,7 @@ impl EvmContext { db, error: None, precompiles: Precompiles::default(), - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] l1_block_info: None, } } @@ -578,7 +578,7 @@ pub(crate) mod test_utils { db, error: None, precompiles: Precompiles::default(), - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] l1_block_info: None, } } @@ -591,7 +591,7 @@ pub(crate) mod test_utils { db, error: None, precompiles: Precompiles::default(), - #[cfg(all(feature = "optimism", not(feature = "taiko")))] + #[cfg(feature = "optimism")] l1_block_info: None, } } diff --git a/crates/revm/src/lib.rs b/crates/revm/src/lib.rs index 7fb801f111..fc7ae06395 100644 --- a/crates/revm/src/lib.rs +++ b/crates/revm/src/lib.rs @@ -23,9 +23,9 @@ mod frame; pub mod handler; mod inspector; mod journaled_state; -#[cfg(all(feature = "optimism", not(feature = "taiko")))] +#[cfg(feature = "optimism")] pub mod optimism; -#[cfg(all(feature = "taiko", not(feature = "optimism")))] +#[cfg(feature = "taiko")] pub mod taiko; // Export items. @@ -45,7 +45,7 @@ pub use inspector::{ }; pub use journaled_state::{JournalCheckpoint, JournalEntry, JournaledState}; // export Optimism types, helpers, and constants -#[cfg(all(feature = "optimism", not(feature = "taiko")))] +#[cfg(feature = "optimism")] pub use optimism::{L1BlockInfo, BASE_FEE_RECIPIENT, L1_BLOCK_CONTRACT, L1_FEE_RECIPIENT}; // Reexport libraries From b6988ee295b8aa8d3c9ec08236409387c5b26700 Mon Sep 17 00:00:00 2001 From: ceciliaz030 Date: Tue, 6 Feb 2024 01:17:25 +0800 Subject: [PATCH 05/14] more registers --- crates/primitives/src/env.rs | 5 ++ crates/revm/src/taiko/handler_register.rs | 57 ++++++++++++++++++----- 2 files changed, 51 insertions(+), 11 deletions(-) diff --git a/crates/primitives/src/env.rs b/crates/primitives/src/env.rs index bcab89dc46..d8c116c90a 100644 --- a/crates/primitives/src/env.rs +++ b/crates/primitives/src/env.rs @@ -238,6 +238,11 @@ impl Env { .ok_or(InvalidTransaction::OverflowPaymentInTransaction)?; } + #[cfg(feature = "taiko")] + if self.tx.taiko.is_anchor { + return Ok(()); + } + // Check if account has enough balance for gas_limit*gas_price and value transfer. // Transfer will be done inside `*_inner` functions. if balance_check > account.info.balance { diff --git a/crates/revm/src/taiko/handler_register.rs b/crates/revm/src/taiko/handler_register.rs index 07e7a3b96f..275ad2f4f5 100644 --- a/crates/revm/src/taiko/handler_register.rs +++ b/crates/revm/src/taiko/handler_register.rs @@ -1,25 +1,21 @@ //! Handler related to Taiko chain use crate::{ - handler::{ - mainnet::{self, deduct_caller, deduct_caller_inner, end, last_frame_return, output}, - register::EvmHandler, - }, - interpreter::{return_ok, return_revert, Gas, InstructionResult}, - primitives::{ - db::Database, spec_to_generic, Account, EVMError, Env, ExecutionResult, HaltReason, - HashMap, InvalidTransaction, Output, ResultAndState, Spec, SpecId, U256, - }, + handler::register::EvmHandler, + interpreter::Gas, + primitives::{db::Database, spec_to_generic, EVMError, Spec, SpecId, TransactTo, U256}, Context, }; use alloc::sync::Arc; -use core::ops::Mul; -use SpecId::LONDON; +use SpecId::{CANCUN, LONDON}; pub fn taiko_handle_register(handler: &mut EvmHandler<'_, EXT, DB>) { spec_to_generic!(handler.spec_id, { + handler.pre_execution.deduct_caller = Arc::new(deduct_caller::); handler.post_execution.reimburse_caller = Arc::new(reimburse_caller::); handler.post_execution.reward_beneficiary = Arc::new(reward_beneficiary::); + // Done with flags in mainnet + // handler.validation.tx_against_state = Arc::new(mainnet::validate_tx_against_state::); }); } @@ -97,3 +93,42 @@ pub fn reward_beneficiary( .saturating_add(basefee * U256::from(gas.spend() - gas.refunded() as u64)); Ok(()) } + +/// Deducts the caller balance to the transaction limit. +#[inline] +pub fn deduct_caller( + context: &mut Context, +) -> Result<(), EVMError> { + // load caller's account. + let (caller_account, _) = context + .evm + .journaled_state + .load_account(context.evm.env.tx.caller, &mut context.evm.db) + .map_err(EVMError::Database)?; + + let env = &context.evm.env; + // Subtract gas costs from the caller's account. + // We need to saturate the gas cost to prevent underflow in case that `disable_balance_check` is enabled. + let mut gas_cost = U256::from(env.tx.gas_limit).saturating_mul(env.effective_gas_price()); + + // EIP-4844 + if SPEC::enabled(CANCUN) { + let data_fee = env.calc_data_fee().expect("already checked"); + gas_cost = gas_cost.saturating_add(data_fee); + } + + if !env.tx.taiko.is_anchor { + // set new caller account balance. + caller_account.info.balance = caller_account.info.balance.saturating_sub(gas_cost); + } + // bump the nonce for calls. Nonce for CREATE will be bumped in `handle_create`. + if matches!(env.tx.transact_to, TransactTo::Call(_)) { + // Nonce is already checked + caller_account.info.nonce = caller_account.info.nonce.saturating_add(1); + } + + // touch account so we know it is changed. + caller_account.mark_touch(); + + Ok(()) +} From c464cf9d3eca69066e46e326b45b8310e15ad881 Mon Sep 17 00:00:00 2001 From: ceciliaz030 Date: Tue, 6 Feb 2024 01:22:06 +0800 Subject: [PATCH 06/14] update --- crates/revm/src/taiko/handler_register.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/revm/src/taiko/handler_register.rs b/crates/revm/src/taiko/handler_register.rs index 275ad2f4f5..7c3239cce8 100644 --- a/crates/revm/src/taiko/handler_register.rs +++ b/crates/revm/src/taiko/handler_register.rs @@ -14,7 +14,7 @@ pub fn taiko_handle_register(handler: &mut EvmHandler<'_, EXT handler.pre_execution.deduct_caller = Arc::new(deduct_caller::); handler.post_execution.reimburse_caller = Arc::new(reimburse_caller::); handler.post_execution.reward_beneficiary = Arc::new(reward_beneficiary::); - // Done with flags in mainnet + // Done with flags to avoid repetitive code // handler.validation.tx_against_state = Arc::new(mainnet::validate_tx_against_state::); }); } From 09531f2d92b80989c79fb9508ef20f8e9cbdd079 Mon Sep 17 00:00:00 2001 From: ceciliaz030 Date: Tue, 6 Feb 2024 03:11:46 +0800 Subject: [PATCH 07/14] pub mod handler_register --- crates/revm/src/taiko.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/revm/src/taiko.rs b/crates/revm/src/taiko.rs index 20b7b78ea6..af549299e3 100644 --- a/crates/revm/src/taiko.rs +++ b/crates/revm/src/taiko.rs @@ -1,3 +1,3 @@ -//! Optimism-specific constants, types, and helpers. +//! Taiko-specific constants, types, and helpers. -mod handler_register; +pub mod handler_register; From 2c9e739e8bbb14ea1400cfdb4edbcb8e74dfe4de Mon Sep 17 00:00:00 2001 From: CeciliaZ030 <45245961+CeciliaZ030@users.noreply.github.com> Date: Thu, 15 Feb 2024 11:32:07 +0800 Subject: [PATCH 08/14] Update Cargo.toml --- crates/revm/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/revm/Cargo.toml b/crates/revm/Cargo.toml index 231931d3fa..41578c1335 100644 --- a/crates/revm/Cargo.toml +++ b/crates/revm/Cargo.toml @@ -41,7 +41,7 @@ criterion = "0.5" indicatif = "0.17" [features] -default = ["std", "c-kzg", "secp256k1", "taiko"] +default = ["std", "c-kzg", "secp256k1"] std = ["serde?/std", "serde_json?/std", "serde_json?/preserve_order", "revm-interpreter/std", "revm-precompile/std"] serde = ["dep:serde", "dep:serde_json", "revm-interpreter/serde"] arbitrary = ["revm-interpreter/arbitrary"] From 8e0e484f4e31ecc1d8e7ed2b74d81c730b5b4afd Mon Sep 17 00:00:00 2001 From: CeciliaZ030 <45245961+CeciliaZ030@users.noreply.github.com> Date: Thu, 15 Feb 2024 11:32:48 +0800 Subject: [PATCH 09/14] Update Cargo.toml --- crates/primitives/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/primitives/Cargo.toml b/crates/primitives/Cargo.toml index 51e1f295fa..477cd58db9 100644 --- a/crates/primitives/Cargo.toml +++ b/crates/primitives/Cargo.toml @@ -40,7 +40,7 @@ serde = { version = "1.0", default-features = false, features = ["derive", "rc"] hex = { version = "0.4", default-features = false } [features] -default = ["std", "c-kzg", "taiko"] +default = ["std", "c-kzg"] std = [ "serde?/std", "alloy-primitives/std", From 36589aaf098ac3d61c8255768fa0431aa181206c Mon Sep 17 00:00:00 2001 From: CeciliaZ030 <45245961+CeciliaZ030@users.noreply.github.com> Date: Thu, 15 Feb 2024 11:36:38 +0800 Subject: [PATCH 10/14] #[cfg(all(feature = "taiko", not(feature = "optimism")))] --- crates/primitives/src/specification.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/primitives/src/specification.rs b/crates/primitives/src/specification.rs index 2929a17288..0480f1a9ff 100644 --- a/crates/primitives/src/specification.rs +++ b/crates/primitives/src/specification.rs @@ -66,7 +66,7 @@ pub enum SpecId { /// Specification IDs and their activation block. /// /// Information was obtained from the [Ethereum Execution Specifications](https://github.com/ethereum/execution-specs) -#[cfg(feature = "taiko")] +#[cfg(all(feature = "taiko", not(feature = "optimism")))] #[repr(u8)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Ord, PartialOrd, enumn::N)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] From 3700b8eabcf2c9db0b40b1469ad3514ccd41f805 Mon Sep 17 00:00:00 2001 From: CeciliaZ030 <45245961+CeciliaZ030@users.noreply.github.com> Date: Thu, 15 Feb 2024 11:38:01 +0800 Subject: [PATCH 11/14] #[cfg(all(feature = "taiko", not(feature = "optimism")))] --- crates/primitives/src/specification.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/primitives/src/specification.rs b/crates/primitives/src/specification.rs index 0480f1a9ff..68dd7602a5 100644 --- a/crates/primitives/src/specification.rs +++ b/crates/primitives/src/specification.rs @@ -195,7 +195,7 @@ spec!(CANYON, CanyonSpec); spec!(ECOTONE, EcotoneSpec); // Taiko Hardforks -#[cfg(feature = "taiko")] +#[cfg(all(feature = "taiko", not(feature = "optimism")))] spec!(KATLA, KatlaSpec); #[macro_export] From 0ebc1e0f5e2ab731bd583c4113440d6226dea58c Mon Sep 17 00:00:00 2001 From: CeciliaZ030 <45245961+CeciliaZ030@users.noreply.github.com> Date: Thu, 15 Feb 2024 11:40:06 +0800 Subject: [PATCH 12/14] #[cfg(all(feature = "taiko", not(feature = "optimism")))] --- crates/primitives/src/specification.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/primitives/src/specification.rs b/crates/primitives/src/specification.rs index 68dd7602a5..5bd53cc2f9 100644 --- a/crates/primitives/src/specification.rs +++ b/crates/primitives/src/specification.rs @@ -134,7 +134,7 @@ impl From<&str> for SpecId { "Canyon" => SpecId::CANYON, #[cfg(feature = "optimism")] "Ecotone" => SpecId::ECOTONE, - #[cfg(feature = "taiko")] + #[cfg(all(feature = "taiko", not(feature = "optimism")))] "Katla" => SpecId::KATLA, _ => Self::LATEST, } @@ -277,7 +277,7 @@ macro_rules! spec_to_generic { use $crate::EcotoneSpec as SPEC; $e } - #[cfg(feature = "taiko")] + #[cfg(all(feature = "taiko", not(feature = "optimism")))] $crate::SpecId::KATLA => { use $crate::KatlaSpec as SPEC; $e @@ -414,7 +414,7 @@ mod optimism_tests { } } -#[cfg(feature = "taiko")] +#[cfg(all(feature = "taiko", not(feature = "optimism")))] #[cfg(test)] mod taiko_tests { use super::*; From 502f770834a767a9390ec6a8286df337212edf43 Mon Sep 17 00:00:00 2001 From: ceciliaz030 Date: Thu, 22 Feb 2024 18:24:02 +0800 Subject: [PATCH 13/14] manual pick: bluealloy/revm/pull/1073 & succinct/john/v5.0.0-patched --- Cargo.lock | 803 +++++++++++++---------------- crates/precompile/Cargo.toml | 6 +- crates/precompile/src/modexp.rs | 49 +- crates/precompile/src/secp256k1.rs | 39 +- crates/precompile/src/utilities.rs | 163 ++++-- 5 files changed, 540 insertions(+), 520 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6ec49dfd3b..cc1a7cf82a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -19,9 +19,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.8.6" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f" dependencies = [ "cfg-if", "once_cell", @@ -46,9 +46,9 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" [[package]] name = "alloy-primitives" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4b6fb2b432ff223d513db7f908937f63c252bee0af9b82bfd25b0a5dd1eb0d8" +checksum = "ef197eb250c64962003cb08b90b17f0882c192f4a6f2f544809d424fd7cb0e7d" dependencies = [ "alloy-rlp", "arbitrary", @@ -89,14 +89,14 @@ checksum = "1a047897373be4bbb0224c1afdabca92648dc57a9c9ef6e7b0be3aff7a859c83" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", ] [[package]] name = "alloy-sol-macro" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b0b5ab0cb07c21adf9d72e988b34e8200ce648c2bba8d009183bb1c50fb1216" +checksum = "82e92100dee7fd1e44abbe0ef6607f18758cf0ad4e483f4c65ff5c8d85428a6d" dependencies = [ "const-hex", "dunce", @@ -105,16 +105,16 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-types" -version = "0.6.0" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "783eb720b73d38f9d4c1fb9890e4db6bc8c708f7aa77d3071a19e06091ecd1c9" +checksum = "3e7c6a8c492b1d6a4f92a8fc6a13cf39473978dd7d459d7221969ce5a73d97cd" dependencies = [ "alloy-primitives", "alloy-sol-macro", @@ -139,15 +139,15 @@ 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 = "anyhow" -version = "1.0.79" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" [[package]] name = "arbitrary" @@ -287,13 +287,13 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", ] [[package]] @@ -336,7 +336,7 @@ checksum = "823b8bb275161044e2ac7a25879cb3e2480cb403e3943022c7c769c599b756aa" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", ] [[package]] @@ -374,9 +374,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" @@ -385,26 +385,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] -name = "bindgen" -version = "0.66.1" +name = "bincode" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ - "bitflags 2.4.2", - "cexpr", - "clang-sys", - "lazy_static", - "lazycell", - "log", - "peeking_take_while", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn 2.0.46", - "which", + "serde", ] [[package]] @@ -474,9 +460,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "a3b1be7772ee4501dba05acbe66bb1e8760f6a6c474a36035631638e4415f130" [[package]] name = "byte-slice-cast" @@ -501,11 +487,10 @@ dependencies = [ [[package]] name = "c-kzg" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32700dc7904064bb64e857d38a1766607372928e2466ee5f02a869829b3297d7" +checksum = "94a4bc5367b6284358d2a6a6a1dc2d92ec4b86034561c3b9d3341909752fd848" dependencies = [ - "bindgen", "blst", "cc", "glob", @@ -522,21 +507,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] - -[[package]] -name = "cexpr" -version = "0.6.0" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] +checksum = "7f9fa1897e4325be0d68d48df6aa1a71ac2ed4d27723887e7754192705350730" [[package]] name = "cfg-if" @@ -546,18 +519,18 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" dependencies = [ "num-traits", ] [[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", @@ -566,31 +539,20 @@ 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", ] -[[package]] -name = "clang-sys" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" -dependencies = [ - "glob", - "libc", - "libloading", -] - [[package]] name = "clap" version = "2.34.0" @@ -608,18 +570,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.8" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64" +checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.4.8" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc" +checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" dependencies = [ "anstyle", "clap_lex", @@ -627,28 +589,28 @@ dependencies = [ [[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 = "console" -version = "0.15.7" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" dependencies = [ "encode_unicode", "lazy_static", "libc", "unicode-width", - "windows-sys 0.45.0", + "windows-sys 0.52.0", ] [[package]] name = "const-hex" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5104de16b218eddf8e34ffe2f86f74bfa4e61e95a1b89732fccf6325efd0557" +checksum = "18d59688ad0945eaf6b84cb44fedbe93484c81b48970e98f09db8a22832d7961" dependencies = [ "cfg-if", "cpufeatures", @@ -659,9 +621,9 @@ 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 = "convert_case" @@ -671,9 +633,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[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", @@ -681,15 +643,15 @@ 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", ] @@ -703,7 +665,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.4.8", + "clap 4.5.1", "criterion-plot", "is-terminal", "itertools", @@ -732,36 +694,28 @@ dependencies = [ [[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-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" @@ -809,9 +763,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", ] @@ -835,7 +789,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", ] [[package]] @@ -894,9 +848,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" @@ -914,6 +868,7 @@ dependencies = [ "rand_core", "sec1", "subtle", + "tap", "zeroize", ] @@ -938,7 +893,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "hex", "k256", @@ -958,7 +913,7 @@ checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", ] [[package]] @@ -969,12 +924,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -1038,9 +993,9 @@ dependencies = [ [[package]] name = "ethers-contract" -version = "2.0.11" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0111ead599d17a7bff6985fd5756f39ca7033edc79a31b23026a8d5d64fa95cd" +checksum = "43304317c7f776876e47f2f637859f6d0701c1ec7930a150f169d5fbe7d76f5a" dependencies = [ "const-hex", "ethers-core", @@ -1054,9 +1009,9 @@ dependencies = [ [[package]] name = "ethers-core" -version = "2.0.12" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "918b1a9ba585ea61022647def2f27c29ba19f6d2a4a4c8f68a9ae97fd5769737" +checksum = "aab3cef6cc1c9fd7f787043c81ad3052eff2b96a3878ef1526aa446311bdbfc9" dependencies = [ "arrayvec", "bytes", @@ -1081,13 +1036,13 @@ dependencies = [ [[package]] name = "ethers-providers" -version = "2.0.11" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25d6c0c9455d93d4990c06e049abf9b30daf148cf461ee939c11d88907c60816" +checksum = "fb6b15393996e3b8a78ef1332d6483c11d839042c17be58decc92fa8b1c3508a" dependencies = [ "async-trait", "auto_impl", - "base64 0.21.5", + "base64 0.21.7", "bytes", "const-hex", "enr", @@ -1119,9 +1074,9 @@ dependencies = [ [[package]] name = "eyre" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6267a1fa6f59179ea4afc8e50fd8612a3cc60bc858f786ff877a4a8cb042799" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" dependencies = [ "indenter", "once_cell", @@ -1150,6 +1105,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ + "bitvec", "rand_core", "subtle", ] @@ -1244,7 +1200,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", ] [[package]] @@ -1309,9 +1265,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", "libc", @@ -1320,9 +1276,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "glob" @@ -1355,9 +1311,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.22" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" dependencies = [ "bytes", "fnv", @@ -1374,9 +1330,13 @@ dependencies = [ [[package]] name = "half" -version = "1.8.2" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872" +dependencies = [ + "cfg-if", + "crunchy", +] [[package]] name = "hash-db" @@ -1430,9 +1390,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" [[package]] name = "hex" @@ -1458,15 +1418,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "home" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" -dependencies = [ - "windows-sys 0.48.0", -] - [[package]] name = "http" version = "0.2.11" @@ -1480,9 +1431,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -1503,9 +1454,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[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", @@ -1518,7 +1469,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.10", + "socket2", "tokio", "tower-service", "tracing", @@ -1595,9 +1546,9 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "2.2.1" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433de089bd45971eecf4668ee0ee8f4cec17db4f8bd8f7bc3197a6ce37aa7d9b" +checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" dependencies = [ "equivalent", "hashbrown", @@ -1605,9 +1556,9 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ "console", "instant", @@ -1633,13 +1584,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 0.3.3", - "rustix", - "windows-sys 0.48.0", + "hermit-abi 0.3.6", + "libc", + "windows-sys 0.52.0", ] [[package]] @@ -1653,15 +1604,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.65" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" dependencies = [ "wasm-bindgen", ] @@ -1672,7 +1623,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", @@ -1696,9 +1647,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", ] @@ -1722,27 +1673,11 @@ dependencies = [ "spin 0.5.2", ] -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "libc" -version = "0.2.150" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" - -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if", - "winapi", -] +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libm" @@ -1752,9 +1687,9 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[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 = "log" @@ -1764,18 +1699,9 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[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 = "microbench" @@ -1789,42 +1715,26 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -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.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "wasi", "windows-sys 0.48.0", ] -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - [[package]] name = "num" version = "0.4.1" @@ -1852,28 +1762,33 @@ 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", ] +[[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", @@ -1894,9 +1809,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", @@ -1908,29 +1823,29 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.3", + "hermit-abi 0.3.6", "libc", ] [[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.46", + "syn 2.0.50", ] [[package]] @@ -1941,9 +1856,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[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", ] @@ -1987,9 +1902,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.5" +version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb" +checksum = "881331e34fa842a2fb61cc2db9643a8fedc615e47cfcc52597d1af0db9a7e8fe" dependencies = [ "arrayvec", "bitvec", @@ -2001,11 +1916,11 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.6.5" +version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" +checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate 2.0.0", "proc-macro2", "quote", "syn 1.0.109", @@ -2017,12 +1932,6 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - [[package]] name = "pem" version = "1.1.1" @@ -2040,9 +1949,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.5" +version = "2.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" +checksum = "219c0dcc30b6a27553f9cc242972b67f75b60eb0db71f0b5462f38b058c41546" dependencies = [ "memchr", "thiserror", @@ -2061,22 +1970,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", ] [[package]] @@ -2156,16 +2065,6 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" -[[package]] -name = "prettyplease" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" -dependencies = [ - "proc-macro2", - "syn 2.0.46", -] - [[package]] name = "primitive-types" version = "0.12.2" @@ -2199,6 +2098,15 @@ dependencies = [ "toml_edit 0.20.7", ] +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -2225,9 +2133,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.74" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2de98502f212cfcea8d0bb305bd0f49d7ebdd75b64ba0a68f937d888f4e0d6db" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -2325,9 +2233,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" dependencies = [ "either", "rayon-core", @@ -2335,23 +2243,14 @@ 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", ] -[[package]] -name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "regex" version = "1.10.3" @@ -2366,9 +2265,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", @@ -2383,11 +2282,11 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" -version = "0.11.22" +version = "0.11.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" +checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", @@ -2409,6 +2308,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "sync_wrapper", "system-configuration", "tokio", "tokio-rustls", @@ -2452,6 +2352,7 @@ dependencies = [ name = "revm-precompile" version = "2.2.0" dependencies = [ + "anyhow", "aurora-engine-modexp", "c-kzg", "k256", @@ -2460,6 +2361,7 @@ dependencies = [ "ripemd", "secp256k1", "sha2", + "sp1-precompiles", "substrate-bn", ] @@ -2540,16 +2442,17 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.5" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" +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]] @@ -2620,12 +2523,6 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - [[package]] name = "rustc-hex" version = "2.1.0" @@ -2647,30 +2544,30 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.20", + "semver 1.0.22", ] [[package]] name = "rustix" -version = "0.38.25" +version = "0.38.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" dependencies = [ "bitflags 2.4.2", "errno", "libc", "linux-raw-sys", - "windows-sys 0.48.0", + "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.5", + "ring 0.17.8", "rustls-webpki", "sct", ] @@ -2681,7 +2578,7 @@ 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]] @@ -2690,7 +2587,7 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.5", + "ring 0.17.8", "untrusted 0.9.0", ] @@ -2714,9 +2611,9 @@ dependencies = [ [[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 = "same-file" @@ -2751,19 +2648,13 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - [[package]] name = "sct" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.5", + "ring 0.17.8", "untrusted 0.9.0", ] @@ -2783,9 +2674,9 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.28.1" +version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f622567e3b4b38154fb8190bcf6b160d7a4301d70595a49195b48c116007a27" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" dependencies = [ "secp256k1-sys", ] @@ -2810,9 +2701,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" [[package]] name = "semver-parser" @@ -2837,29 +2728,29 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.196" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.196" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", ] [[package]] name = "serde_json" -version = "1.0.113" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ "indexmap", "itoa", @@ -2921,12 +2812,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "shlex" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" - [[package]] name = "signature" version = "2.2.0" @@ -2960,28 +2845,32 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" -version = "0.4.10" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ "libc", - "winapi", + "windows-sys 0.48.0", ] [[package]] -name = "socket2" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +name = "sp1-precompiles" +version = "0.1.0" +source = "git+https://github.com/succinctlabs/sp1.git#81f01f96fd95e262c3ca79a37f8ebe0cc9c6121c" dependencies = [ - "libc", - "windows-sys 0.48.0", + "anyhow", + "bincode", + "cfg-if", + "getrandom", + "k256", + "rand", + "serde", ] [[package]] @@ -2998,9 +2887,9 @@ checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "spki" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", "der", @@ -3061,7 +2950,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.46", + "syn 2.0.50", ] [[package]] @@ -3096,9 +2985,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.46" +version = "2.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89456b690ff72fddcecf231caedbe615c59480c93358a93dfae7fc29e3ebbf0e" +checksum = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb" dependencies = [ "proc-macro2", "quote", @@ -3107,16 +2996,22 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63bef2e2c735acbc06874eca3a8506f02a3c4700e6e748afc92cc2e4220e8a03" +checksum = "e656cbcef8a77543b5accbd76f60f9e0bc4be364b0aba4263a6f313f8a355511" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", ] +[[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" @@ -3146,15 +3041,14 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.8.1" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" dependencies = [ "cfg-if", "fastrand", - "redox_syscall", "rustix", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3168,22 +3062,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", ] [[package]] @@ -3197,12 +3091,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", @@ -3217,10 +3112,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", ] @@ -3260,9 +3156,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.35.1" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", "bytes", @@ -3270,7 +3166,7 @@ dependencies = [ "mio", "num_cpus", "pin-project-lite", - "socket2 0.5.5", + "socket2", "tokio-macros", "windows-sys 0.48.0", ] @@ -3283,7 +3179,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", ] [[package]] @@ -3353,6 +3249,17 @@ dependencies = [ "winnow", ] +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + [[package]] name = "tower-service" version = "0.3.2" @@ -3378,7 +3285,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", ] [[package]] @@ -3412,9 +3319,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" @@ -3469,9 +3376,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" @@ -3481,18 +3388,18 @@ 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", ] [[package]] name = "unicode-segmentation" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" @@ -3589,9 +3496,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.88" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3599,24 +3506,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.88" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.38" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" +checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" dependencies = [ "cfg-if", "js-sys", @@ -3626,9 +3533,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.88" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3636,28 +3543,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.88" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.88" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" [[package]] name = "web-sys" -version = "0.3.65" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" +checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" dependencies = [ "js-sys", "wasm-bindgen", @@ -3665,21 +3572,9 @@ 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" - -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix", -] +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "winapi" @@ -3712,15 +3607,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.48.0" @@ -3731,18 +3617,12 @@ dependencies = [ ] [[package]] -name = "windows-targets" -version = "0.42.2" +name = "windows-sys" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets 0.52.0", ] [[package]] @@ -3761,10 +3641,19 @@ dependencies = [ ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" +name = "windows-targets" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +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", +] [[package]] name = "windows_aarch64_gnullvm" @@ -3773,10 +3662,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" +name = "windows_aarch64_gnullvm" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" @@ -3785,10 +3674,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] -name = "windows_i686_gnu" -version = "0.42.2" +name = "windows_aarch64_msvc" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" @@ -3797,10 +3686,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] -name = "windows_i686_msvc" -version = "0.42.2" +name = "windows_i686_gnu" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" @@ -3809,10 +3698,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" +name = "windows_i686_msvc" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" @@ -3821,10 +3710,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" +name = "windows_x86_64_gnu" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" @@ -3833,10 +3722,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" +name = "windows_x86_64_gnullvm" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" @@ -3844,11 +3733,17 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + [[package]] name = "winnow" -version = "0.5.19" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" dependencies = [ "memchr", ] @@ -3893,22 +3788,22 @@ dependencies = [ [[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", - "syn 2.0.46", + "syn 2.0.50", ] [[package]] @@ -3928,5 +3823,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.50", ] diff --git a/crates/precompile/Cargo.toml b/crates/precompile/Cargo.toml index c2a4fd27c2..29e23573d9 100644 --- a/crates/precompile/Cargo.toml +++ b/crates/precompile/Cargo.toml @@ -22,7 +22,7 @@ sha2 = { version = "0.10", default-features = false } aurora-engine-modexp = { version = "1.0", default-features = false } # Optional KZG point evaluation precompile -c-kzg = { version = "0.4.0", default-features = false, optional = true } +c-kzg = { version = "0.4.1", default-features = false, optional = true } # ecRecover precompile k256 = { version = "0.13.3", default-features = false, features = ["ecdsa"] } @@ -30,10 +30,12 @@ secp256k1 = { version = "0.28.1", default-features = false, features = [ "alloc", "recovery", ], optional = true } - +sp1-precompiles = { git = "https://github.com/succinctlabs/sp1.git" } +anyhow = "1.0.79" [features] default = ["std", "c-kzg", "secp256k1"] + std = [ "revm-primitives/std", "k256/std", diff --git a/crates/precompile/src/modexp.rs b/crates/precompile/src/modexp.rs index 344bf1dd6c..3b47ab9577 100644 --- a/crates/precompile/src/modexp.rs +++ b/crates/precompile/src/modexp.rs @@ -1,7 +1,7 @@ use crate::{ primitives::U256, - utilities::{get_right_padded, get_right_padded_vec, left_padding, left_padding_vec}, - Error, Precompile, PrecompileResult, PrecompileWithAddress, StandardPrecompileFn, + utilities::{left_pad, left_pad_vec, right_pad_with_offset, right_pad_with_offset_vec}, + Error, Precompile, PrecompileResult, PrecompileWithAddress, }; use alloc::vec::Vec; use aurora_engine_modexp::modexp; @@ -9,13 +9,11 @@ use core::cmp::{max, min}; pub const BYZANTIUM: PrecompileWithAddress = PrecompileWithAddress( crate::u64_to_address(5), - Precompile::Standard(byzantium_run as StandardPrecompileFn), + Precompile::Standard(byzantium_run), ); -pub const BERLIN: PrecompileWithAddress = PrecompileWithAddress( - crate::u64_to_address(5), - Precompile::Standard(berlin_run as StandardPrecompileFn), -); +pub const BERLIN: PrecompileWithAddress = + PrecompileWithAddress(crate::u64_to_address(5), Precompile::Standard(berlin_run)); /// See: /// See: @@ -39,7 +37,8 @@ fn calculate_iteration_count(exp_length: u64, exp_highp: &U256) -> u64 { } else if exp_length <= 32 { iteration_count = exp_highp.bit_len() as u64 - 1; } else if exp_length > 32 { - iteration_count = (8 * (exp_length - 32)) + max(1, exp_highp.bit_len() as u64) - 1; + iteration_count = (8u64.saturating_mul(exp_length - 32)) + .saturating_add(max(1, exp_highp.bit_len() as u64) - 1); } max(iteration_count, 1) @@ -60,9 +59,9 @@ where const HEADER_LENGTH: usize = 96; // Extract the header. - let base_len = U256::from_be_bytes(get_right_padded::<32>(input, 0)); - let exp_len = U256::from_be_bytes(get_right_padded::<32>(input, 32)); - let mod_len = U256::from_be_bytes(get_right_padded::<32>(input, 64)); + let base_len = U256::from_be_bytes(right_pad_with_offset::<32>(input, 0).into_owned()); + let exp_len = U256::from_be_bytes(right_pad_with_offset::<32>(input, 32).into_owned()); + let mod_len = U256::from_be_bytes(right_pad_with_offset::<32>(input, 64).into_owned()); // cast base and modulus to usize, it does not make sense to handle larger values let Ok(base_len) = usize::try_from(base_len) else { @@ -95,10 +94,10 @@ where let exp_highp = { // get right padded bytes so if data.len is less then exp_len we will get right padded zeroes. - let right_padded_highp = get_right_padded::<32>(input, base_len); + let right_padded_highp = right_pad_with_offset::<32>(input, base_len); // If exp_len is less then 32 bytes get only exp_len bytes and do left padding. - let out = left_padding::<32>(&right_padded_highp[..exp_highp_len]); - U256::from_be_bytes(out) + let out = left_pad::<32>(&right_padded_highp[..exp_highp_len]); + U256::from_be_bytes(out.into_owned()) }; // calculate gas spent. @@ -109,15 +108,15 @@ where } // Padding is needed if the input does not contain all 3 values. - let base = get_right_padded_vec(input, 0, base_len); - let exponent = get_right_padded_vec(input, base_len, exp_len); - let modulus = get_right_padded_vec(input, base_len.saturating_add(exp_len), mod_len); + let base = right_pad_with_offset_vec(input, 0, base_len); + let exponent = right_pad_with_offset_vec(input, base_len, exp_len); + let modulus = right_pad_with_offset_vec(input, base_len.saturating_add(exp_len), mod_len); // Call the modexp. let output = modexp(&base, &exponent, &modulus); // left pad the result to modulus length. bytes will always by less or equal to modulus length. - Ok((gas_cost, left_padding_vec(&output, mod_len))) + Ok((gas_cost, left_pad_vec(&output, mod_len).into_owned())) } fn byzantium_gas_calc(base_len: u64, exp_len: u64, mod_len: u64, exp_highp: &U256) -> u64 { @@ -139,12 +138,7 @@ fn byzantium_gas_calc(base_len: u64, exp_len: u64, mod_len: u64, exp_highp: &U25 let iter_count = U256::from(calculate_iteration_count(exp_len, exp_highp)); // mul * iter_count bounded by 2^195 < 2^256 (no overflow) let gas = (mul * iter_count) / U256::from(20); - - if gas.as_limbs()[1] != 0 || gas.as_limbs()[2] != 0 || gas.as_limbs()[3] != 0 { - u64::MAX - } else { - gas.as_limbs()[0] - } + gas.saturating_to() } // Calculate gas cost according to EIP 2565: @@ -163,12 +157,7 @@ fn berlin_gas_calc(base_length: u64, exp_length: u64, mod_length: u64, exp_highp let multiplication_complexity = calculate_multiplication_complexity(base_length, mod_length); let iteration_count = calculate_iteration_count(exp_length, exp_highp); let gas = (multiplication_complexity * U256::from(iteration_count)) / U256::from(3); - - if gas.as_limbs()[1] != 0 || gas.as_limbs()[2] != 0 || gas.as_limbs()[3] != 0 { - u64::MAX - } else { - max(200, gas.as_limbs()[0]) - } + max(200, gas.saturating_to()) } #[cfg(test)] diff --git a/crates/precompile/src/secp256k1.rs b/crates/precompile/src/secp256k1.rs index 4889a89488..845b04c622 100644 --- a/crates/precompile/src/secp256k1.rs +++ b/crates/precompile/src/secp256k1.rs @@ -1,20 +1,43 @@ -use crate::{Error, Precompile, PrecompileResult, PrecompileWithAddress, StandardPrecompileFn}; +use crate::{utilities::right_pad, Error, Precompile, PrecompileResult, PrecompileWithAddress}; use alloc::vec::Vec; +use revm_primitives::{alloy_primitives::B512, B256}; use core::cmp::min; -use revm_primitives::B256; pub const ECRECOVER: PrecompileWithAddress = PrecompileWithAddress( crate::u64_to_address(1), - Precompile::Standard(ec_recover_run as StandardPrecompileFn), + Precompile::Standard(ec_recover_run), ); -#[cfg(not(feature = "secp256k1"))] +#[cfg(all(target_os = "zkvm", target_vendor = "succinct"))] +#[allow(clippy::module_inception)] +mod secp256k1 { + use crate::B256; + use revm_primitives::keccak256; + + pub fn ecrecover(sig: &[u8; 65], msg: &B256) -> Result { + let recovered_key = sp1_precompiles::secp256k1::ecrecover(sig, msg)?; + + let mut hash = keccak256(&recovered_key[1..]); + + // truncate to 20 bytes + hash[..12].fill(0); + Ok(hash) + } +} + +#[cfg(all( + not(all(target_os = "zkvm", target_vendor = "succinct")), + not(feature = "secp256k1") +))] #[allow(clippy::module_inception)] mod secp256k1 { use crate::B256; use k256::ecdsa::{Error, RecoveryId, Signature, VerifyingKey}; use revm_primitives::keccak256; + // Silence the unused crate dependency warning. + use anyhow as _; + pub fn ecrecover(sig: &[u8; 65], msg: &B256) -> Result { // parse signature let mut recid = sig[64]; @@ -42,7 +65,10 @@ mod secp256k1 { } } -#[cfg(feature = "secp256k1")] +#[cfg(all( + not(all(target_os = "zkvm", target_vendor = "succinct")), + feature = "secp256k1" +))] #[allow(clippy::module_inception)] mod secp256k1 { use crate::B256; @@ -53,7 +79,9 @@ mod secp256k1 { }; // Silence the unused crate dependency warning. + use anyhow as _; use k256 as _; + use sp1_precompiles as _; pub fn ecrecover(sig: &[u8; 65], msg: &B256) -> Result { let sig = @@ -69,6 +97,7 @@ mod secp256k1 { } fn ec_recover_run(i: &[u8], target_gas: u64) -> PrecompileResult { + const ECRECOVER_BASE: u64 = 3_000; if ECRECOVER_BASE > target_gas { diff --git a/crates/precompile/src/utilities.rs b/crates/precompile/src/utilities.rs index 3b0f19143c..b62f8dfc13 100644 --- a/crates/precompile/src/utilities.rs +++ b/crates/precompile/src/utilities.rs @@ -1,43 +1,148 @@ +use alloc::borrow::Cow; use core::cmp::min; -use alloc::vec::Vec; +/// Right-pads the given slice at `offset` with zeroes until `LEN`. +/// +/// Returns the first `LEN` bytes if it does not need padding. +#[inline(always)] +pub fn right_pad_with_offset(data: &[u8], offset: usize) -> Cow<'_, [u8; LEN]> { + right_pad(data.get(offset..).unwrap_or_default()) +} -/// Get an array from the data, if data does not contain `start` to `len` bytes, add right padding with -/// zeroes +/// Right-pads the given slice at `offset` with zeroes until `len`. +/// +/// Returns the first `len` bytes if it does not need padding. #[inline(always)] -pub fn get_right_padded(data: &[u8], offset: usize) -> [u8; S] { - let mut padded = [0; S]; - let start = min(offset, data.len()); - let end = min(start.saturating_add(S), data.len()); - padded[..end - start].copy_from_slice(&data[start..end]); - padded +pub fn right_pad_with_offset_vec(data: &[u8], offset: usize, len: usize) -> Cow<'_, [u8]> { + right_pad_vec(data.get(offset..).unwrap_or_default(), len) } -/// Get a vector of the data, if data does not contain the slice of `start` to `len`, right pad missing -/// part with zeroes +/// Right-pads the given slice with zeroes until `LEN`. +/// +/// Returns the first `LEN` bytes if it does not need padding. #[inline(always)] -pub fn get_right_padded_vec(data: &[u8], offset: usize, len: usize) -> Vec { - let mut padded = vec![0; len]; - let start = min(offset, data.len()); - let end = min(start.saturating_add(len), data.len()); - padded[..end - start].copy_from_slice(&data[start..end]); - padded +pub fn right_pad(data: &[u8]) -> Cow<'_, [u8; LEN]> { + if let Some(data) = data.get(..LEN) { + Cow::Borrowed(data.try_into().unwrap()) + } else { + let mut padded = [0; LEN]; + let end = min(LEN, data.len()); + padded[..end].copy_from_slice(&data[..end]); + Cow::Owned(padded) + } } -/// Left padding until `len`. If data is more then len, truncate the right most bytes. +/// Right-pads the given slice with zeroes until `len`. +/// +/// Returns the first `len` bytes if it does not need padding. #[inline(always)] -pub fn left_padding(data: &[u8]) -> [u8; S] { - let mut padded = [0; S]; - let end = min(S, data.len()); - padded[S - end..].copy_from_slice(&data[..end]); - padded +pub fn right_pad_vec(data: &[u8], len: usize) -> Cow<'_, [u8]> { + if let Some(data) = data.get(..len) { + Cow::Borrowed(data) + } else { + let mut padded = vec![0; len]; + let end = min(len, data.len()); + padded[..end].copy_from_slice(&data[..end]); + Cow::Owned(padded) + } } -/// Left padding until `len`. If data is more then len, truncate the right most bytes. +/// Left-pads the given slice with zeroes until `LEN`. +/// +/// Returns the first `LEN` bytes if it does not need padding. #[inline(always)] -pub fn left_padding_vec(data: &[u8], len: usize) -> Vec { - let mut padded = vec![0; len]; - let end = min(len, data.len()); - padded[len - end..].copy_from_slice(&data[..end]); - padded +pub fn left_pad(data: &[u8]) -> Cow<'_, [u8; LEN]> { + if let Some(data) = data.get(..LEN) { + Cow::Borrowed(data.try_into().unwrap()) + } else { + let mut padded = [0; LEN]; + let end = min(LEN, data.len()); + padded[LEN - end..].copy_from_slice(&data[..end]); + Cow::Owned(padded) + } +} + +/// Left-pads the given slice with zeroes until `len`. +/// +/// Returns the first `len` bytes if it does not need padding. +#[inline(always)] +pub fn left_pad_vec(data: &[u8], len: usize) -> Cow<'_, [u8]> { + if let Some(data) = data.get(..len) { + Cow::Borrowed(data) + } else { + let mut padded = vec![0; len]; + let end = min(len, data.len()); + padded[len - end..].copy_from_slice(&data[..end]); + Cow::Owned(padded) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn get_with_right_padding() { + let data = [1, 2, 3, 4]; + let padded = right_pad_with_offset::<8>(&data, 4); + assert!(matches!(padded, Cow::Owned(_))); + assert_eq!(padded[..], [0, 0, 0, 0, 0, 0, 0, 0]); + let padded = right_pad_with_offset_vec(&data, 4, 8); + assert!(matches!(padded, Cow::Owned(_))); + assert_eq!(padded[..], [0, 0, 0, 0, 0, 0, 0, 0]); + + let data = [1, 2, 3, 4, 5, 6, 7, 8]; + let padded = right_pad_with_offset::<8>(&data, 0); + assert!(matches!(padded, Cow::Borrowed(_))); + assert_eq!(padded[..], [1, 2, 3, 4, 5, 6, 7, 8]); + let padded = right_pad_with_offset_vec(&data, 0, 8); + assert!(matches!(padded, Cow::Borrowed(_))); + assert_eq!(padded[..], [1, 2, 3, 4, 5, 6, 7, 8]); + + let data = [1, 2, 3, 4, 5, 6, 7, 8]; + let padded = right_pad_with_offset::<8>(&data, 4); + assert!(matches!(padded, Cow::Owned(_))); + assert_eq!(padded[..], [5, 6, 7, 8, 0, 0, 0, 0]); + let padded = right_pad_with_offset_vec(&data, 4, 8); + assert!(matches!(padded, Cow::Owned(_))); + assert_eq!(padded[..], [5, 6, 7, 8, 0, 0, 0, 0]); + } + + #[test] + fn right_padding() { + let data = [1, 2, 3, 4]; + let padded = right_pad::<8>(&data); + assert!(matches!(padded, Cow::Owned(_))); + assert_eq!(padded[..], [1, 2, 3, 4, 0, 0, 0, 0]); + let padded = right_pad_vec(&data, 8); + assert!(matches!(padded, Cow::Owned(_))); + assert_eq!(padded[..], [1, 2, 3, 4, 0, 0, 0, 0]); + + let data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + let padded = right_pad::<8>(&data); + assert!(matches!(padded, Cow::Borrowed(_))); + assert_eq!(padded[..], [1, 2, 3, 4, 5, 6, 7, 8]); + let padded = right_pad_vec(&data, 8); + assert!(matches!(padded, Cow::Borrowed(_))); + assert_eq!(padded[..], [1, 2, 3, 4, 5, 6, 7, 8]); + } + + #[test] + fn left_padding() { + let data = [1, 2, 3, 4]; + let padded = left_pad::<8>(&data); + assert!(matches!(padded, Cow::Owned(_))); + assert_eq!(padded[..], [0, 0, 0, 0, 1, 2, 3, 4]); + let padded = left_pad_vec(&data, 8); + assert!(matches!(padded, Cow::Owned(_))); + assert_eq!(padded[..], [0, 0, 0, 0, 1, 2, 3, 4]); + + let data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + let padded = left_pad::<8>(&data); + assert!(matches!(padded, Cow::Borrowed(_))); + assert_eq!(padded[..], [1, 2, 3, 4, 5, 6, 7, 8]); + let padded = left_pad_vec(&data, 8); + assert!(matches!(padded, Cow::Borrowed(_))); + assert_eq!(padded[..], [1, 2, 3, 4, 5, 6, 7, 8]); + } } From 4383c0a15ebda3e6f5501f59579afc213ec44d8f Mon Sep 17 00:00:00 2001 From: CeciliaZ030 Date: Sun, 24 Mar 2024 17:35:57 +0000 Subject: [PATCH 14/14] update c-kzg 1.0.0 --- Cargo.lock | 350 +++++++++++++++++------------------ crates/precompile/Cargo.toml | 2 +- crates/primitives/Cargo.toml | 2 +- 3 files changed, 177 insertions(+), 177 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cc1a7cf82a..e1db0caa9d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -19,9 +19,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.8.9" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "once_cell", @@ -31,9 +31,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", ] @@ -46,9 +46,9 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" [[package]] name = "alloy-primitives" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef197eb250c64962003cb08b90b17f0882c192f4a6f2f544809d424fd7cb0e7d" +checksum = "600d34d8de81e23b6d909c094e23b3d357e01ca36b78a8c5424c501eedbe86f0" dependencies = [ "alloy-rlp", "arbitrary", @@ -89,14 +89,14 @@ checksum = "1a047897373be4bbb0224c1afdabca92648dc57a9c9ef6e7b0be3aff7a859c83" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", ] [[package]] name = "alloy-sol-macro" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e92100dee7fd1e44abbe0ef6607f18758cf0ad4e483f4c65ff5c8d85428a6d" +checksum = "e86ec0a47740b20bc5613b8712d0d321d031c4efc58e9645af96085d5cccfc27" dependencies = [ "const-hex", "dunce", @@ -105,16 +105,16 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-types" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e7c6a8c492b1d6a4f92a8fc6a13cf39473978dd7d459d7221969ce5a73d97cd" +checksum = "ad09ec5853fa700d12d778ad224dcdec636af424d29fad84fb9a2f16a5b0ef09" dependencies = [ "alloy-primitives", "alloy-sol-macro", @@ -145,9 +145,9 @@ checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" [[package]] name = "anyhow" -version = "1.0.80" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" +checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" [[package]] name = "arbitrary" @@ -287,13 +287,13 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "async-trait" -version = "0.1.77" +version = "0.1.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", ] [[package]] @@ -330,13 +330,13 @@ dependencies = [ [[package]] name = "auto_impl" -version = "1.1.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "823b8bb275161044e2ac7a25879cb3e2480cb403e3943022c7c769c599b756aa" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", ] [[package]] @@ -347,9 +347,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[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", @@ -416,9 +416,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" dependencies = [ "arbitrary", "serde", @@ -460,9 +460,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.15.2" +version = "3.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3b1be7772ee4501dba05acbe66bb1e8760f6a6c474a36035631638e4415f130" +checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" [[package]] name = "byte-slice-cast" @@ -478,18 +478,18 @@ 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", ] [[package]] name = "c-kzg" -version = "0.4.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a4bc5367b6284358d2a6a6a1dc2d92ec4b86034561c3b9d3341909752fd848" +checksum = "3130f3d8717cc02e668a896af24984d5d5d4e8bf12e278e982e0f1bd88a0f9af" dependencies = [ "blst", "cc", @@ -507,9 +507,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.86" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9fa1897e4325be0d68d48df6aa1a71ac2ed4d27723887e7754192705350730" +checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" [[package]] name = "cfg-if" @@ -519,9 +519,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.34" +version = "0.4.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" +checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" dependencies = [ "num-traits", ] @@ -570,18 +570,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.1" +version = "4.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" +checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.1" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" dependencies = [ "anstyle", "clap_lex", @@ -608,9 +608,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.11.0" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d59688ad0945eaf6b84cb44fedbe93484c81b48970e98f09db8a22832d7961" +checksum = "5ba00838774b4ab0233e355d26710fbfc8327a05c017f6dc4873f876d1f79f78" dependencies = [ "cfg-if", "cpufeatures", @@ -665,7 +665,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.1", + "clap 4.5.3", "criterion-plot", "is-terminal", "itertools", @@ -789,7 +789,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", ] [[package]] @@ -889,9 +889,9 @@ 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.7", "bytes", @@ -913,7 +913,7 @@ checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", ] [[package]] @@ -993,9 +993,9 @@ dependencies = [ [[package]] name = "ethers-contract" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43304317c7f776876e47f2f637859f6d0701c1ec7930a150f169d5fbe7d76f5a" +checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" dependencies = [ "const-hex", "ethers-core", @@ -1009,9 +1009,9 @@ dependencies = [ [[package]] name = "ethers-core" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aab3cef6cc1c9fd7f787043c81ad3052eff2b96a3878ef1526aa446311bdbfc9" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" dependencies = [ "arrayvec", "bytes", @@ -1036,9 +1036,9 @@ dependencies = [ [[package]] name = "ethers-providers" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb6b15393996e3b8a78ef1332d6483c11d839042c17be58decc92fa8b1c3508a" +checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" dependencies = [ "async-trait", "auto_impl", @@ -1084,9 +1084,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 = "fastrlp" @@ -1200,7 +1200,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", ] [[package]] @@ -1217,9 +1217,9 @@ 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", @@ -1311,9 +1311,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb" dependencies = [ "bytes", "fnv", @@ -1330,9 +1330,9 @@ dependencies = [ [[package]] name = "half" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872" +checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e" dependencies = [ "cfg-if", "crunchy", @@ -1390,9 +1390,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.6" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" @@ -1420,9 +1420,9 @@ dependencies = [ [[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", @@ -1546,9 +1546,9 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "2.2.3" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", "hashbrown", @@ -1588,7 +1588,7 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ - "hermit-abi 0.3.6", + "hermit-abi 0.3.9", "libc", "windows-sys 0.52.0", ] @@ -1610,9 +1610,9 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -1693,9 +1693,9 @@ checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[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 = "memchr" @@ -1726,9 +1726,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "wasi", @@ -1823,7 +1823,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.6", + "hermit-abi 0.3.9", "libc", ] @@ -1845,7 +1845,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", ] [[package]] @@ -1949,9 +1949,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.7" +version = "2.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219c0dcc30b6a27553f9cc242972b67f75b60eb0db71f0b5462f38b058c41546" +checksum = "56f8023d0fb78c8e03784ea1c7f3fa36e68a723138990b8d5a47d916b651e7a8" dependencies = [ "memchr", "thiserror", @@ -1970,22 +1970,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", ] [[package]] @@ -2133,9 +2133,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] @@ -2148,7 +2148,7 @@ checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.4.2", + "bitflags 2.5.0", "lazy_static", "num-traits", "rand", @@ -2233,9 +2233,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.8.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -2253,9 +2253,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.3" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", @@ -2265,9 +2265,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", @@ -2282,9 +2282,9 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" -version = "0.11.24" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "base64 0.21.7", "bytes", @@ -2371,7 +2371,7 @@ version = "1.3.0" dependencies = [ "alloy-primitives", "auto_impl", - "bitflags 2.4.2", + "bitflags 2.5.0", "bitvec", "c-kzg", "derive_more", @@ -2488,9 +2488,9 @@ dependencies = [ [[package]] name = "ruint" -version = "1.11.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608a5726529f2f0ef81b8fde9873c4bb829d6b5b5ca6be4d97345ddf0749c825" +checksum = "8f308135fef9fc398342da5472ce7c484529df23743fb7c734e0f3d472971e62" dependencies = [ "alloy-rlp", "arbitrary", @@ -2513,9 +2513,9 @@ dependencies = [ [[package]] name = "ruint-macro" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e666a5496a0b2186dbcd0ff6106e29e093c15591bde62c20d3842007c6978a09" +checksum = "f86854cf50259291520509879a5c294c3c9a4c334e9ff65071c51e42ef1e2343" [[package]] name = "rustc-demangle" @@ -2549,11 +2549,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "errno", "libc", "linux-raw-sys", @@ -2626,9 +2626,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7d66a1128282b7ef025a8ead62a4a9fcf017382ec53b8ffbf4d7bf77bd3c60" +checksum = "2ef2175c2907e7c8bc0a9c3f86aeb5ec1f3b275300ad58a44d0c3ae379a5e52e" dependencies = [ "cfg-if", "derive_more", @@ -2638,9 +2638,9 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf2c68b89cafb3b8d918dd07b42be0da66ff202cf1155c5739a4e0c1ea0dc19" +checksum = "634d9b8eb8fd61c5cdd3390d9b2132300a7e7618955b98b8416f118c1b4e144f" dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", @@ -2743,7 +2743,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", ] [[package]] @@ -2845,24 +2845,24 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[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]] name = "sp1-precompiles" version = "0.1.0" -source = "git+https://github.com/succinctlabs/sp1.git#81f01f96fd95e262c3ca79a37f8ebe0cc9c6121c" +source = "git+https://github.com/succinctlabs/sp1.git#5fa44d6589a4612fda531a119dad030e88f84015" dependencies = [ "anyhow", "bincode", @@ -2933,24 +2933,24 @@ dependencies = [ [[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 0.4.1", "proc-macro2", "quote", "rustversion", - "syn 2.0.50", + "syn 2.0.55", ] [[package]] @@ -2985,9 +2985,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.50" +version = "2.0.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb" +checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0" dependencies = [ "proc-macro2", "quote", @@ -2996,14 +2996,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e656cbcef8a77543b5accbd76f60f9e0bc4be364b0aba4263a6f313f8a355511" +checksum = "cb3d0961cd53c23ea94eeec56ba940f636f6394788976e9f16ca5ee0aca7464a" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", ] [[package]] @@ -3041,9 +3041,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.10.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", "fastrand", @@ -3062,22 +3062,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", ] [[package]] @@ -3179,7 +3179,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", ] [[package]] @@ -3285,7 +3285,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", ] [[package]] @@ -3471,9 +3471,9 @@ dependencies = [ [[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", @@ -3496,9 +3496,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3506,24 +3506,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -3533,9 +3533,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3543,28 +3543,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "web-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -3622,7 +3622,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]] @@ -3642,17 +3642,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]] @@ -3663,9 +3663,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" @@ -3675,9 +3675,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" @@ -3687,9 +3687,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" @@ -3699,9 +3699,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" @@ -3711,9 +3711,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" @@ -3723,9 +3723,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" @@ -3735,9 +3735,9 @@ 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" @@ -3803,7 +3803,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", ] [[package]] @@ -3823,5 +3823,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.55", ] diff --git a/crates/precompile/Cargo.toml b/crates/precompile/Cargo.toml index 29e23573d9..f64df5a1a8 100644 --- a/crates/precompile/Cargo.toml +++ b/crates/precompile/Cargo.toml @@ -22,7 +22,7 @@ sha2 = { version = "0.10", default-features = false } aurora-engine-modexp = { version = "1.0", default-features = false } # Optional KZG point evaluation precompile -c-kzg = { version = "0.4.1", default-features = false, optional = true } +c-kzg = { version = "1.0.0", default-features = false, optional = true } # ecRecover precompile k256 = { version = "0.13.3", default-features = false, features = ["ecdsa"] } diff --git a/crates/primitives/Cargo.toml b/crates/primitives/Cargo.toml index 477cd58db9..65a165dd13 100644 --- a/crates/primitives/Cargo.toml +++ b/crates/primitives/Cargo.toml @@ -26,7 +26,7 @@ bitvec = { version = "1", default-features = false, features = ["alloc"] } bitflags = { version = "2.4.2", default-features = false } # For setting the CfgEnv KZGSettings. Enabled by c-kzg flag. -c-kzg = { version = "0.4.0", default-features = false, optional = true } +c-kzg = { version = "1.0.0", default-features = false, optional = true } once_cell = { version = "1.19", default-features = false, optional = true } # utility