From d4a0fa9df8f0f617f6120f8d2aa8643a0bf40f1a Mon Sep 17 00:00:00 2001 From: jbcaron Date: Mon, 26 Aug 2024 17:24:46 +0400 Subject: [PATCH] clean dependencies --- Cargo.lock | 20 ---------------- crates/client/block_import/Cargo.toml | 3 --- .../client/block_import/src/pre_validate.rs | 7 +++--- crates/client/eth/Cargo.toml | 1 - crates/client/mempool/Cargo.toml | 1 - crates/client/sync/Cargo.toml | 6 ----- crates/node/Cargo.toml | 1 - crates/primitives/block/Cargo.toml | 4 ---- crates/primitives/chain_config/Cargo.toml | 1 - crates/primitives/class/Cargo.toml | 2 -- .../class/src/into_starknet_core.rs | 10 ++++---- crates/primitives/class/src/lib.rs | 23 +++++++++---------- crates/primitives/convert/Cargo.toml | 1 - crates/primitives/state_update/src/lib.rs | 15 ++++++++++++ .../src/broadcasted_to_blockifier.rs | 22 ++++++++++++++---- 15 files changed, 53 insertions(+), 64 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9e8107f5a..afa79d20e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3392,12 +3392,9 @@ dependencies = [ "dp-receipt", "dp-state-update", "dp-transactions", - "dp-utils", - "futures", "log", "rayon", "starknet-core", - "starknet-providers", "starknet-types-core", "starknet_api", "thiserror", @@ -3442,7 +3439,6 @@ dependencies = [ "dc-db", "dc-metrics", "dotenv", - "dp-block", "dp-chain-config", "dp-convert", "dp-transactions", @@ -3502,7 +3498,6 @@ dependencies = [ "log", "proptest", "proptest-derive", - "rayon", "starknet-types-core", "starknet_api", "thiserror", @@ -3556,8 +3551,6 @@ name = "dc-sync" version = "0.1.0" dependencies = [ "anyhow", - "bitvec", - "bonsai-trie", "dc-block-import", "dc-db", "dc-eth", @@ -3568,15 +3561,11 @@ dependencies = [ "dp-class", "dp-convert", "dp-receipt", - "dp-state-update", "dp-transactions", "dp-utils", "futures", "log", "num-traits 0.2.19", - "rand", - "rayon", - "reqwest 0.12.5", "rodio", "serde_json", "starknet-core", @@ -3634,7 +3623,6 @@ dependencies = [ "ip_network", "jsonrpsee", "log", - "primitive-types", "rand", "rayon", "reqwest 0.12.5", @@ -3772,16 +3760,12 @@ version = "0.1.0" dependencies = [ "blockifier", "dp-chain-config", - "dp-convert", "dp-receipt", "dp-transactions", - "lazy_static", "primitive-types", "serde", - "serde_json", "starknet-core", "starknet-types-core", - "starknet_api", "thiserror", ] @@ -3794,7 +3778,6 @@ dependencies = [ "primitive-types", "serde", "serde_json", - "starknet-core", "starknet-types-core", "starknet_api", "thiserror", @@ -3804,7 +3787,6 @@ dependencies = [ name = "dp-class" version = "0.1.0" dependencies = [ - "anyhow", "blockifier", "cairo-lang-starknet 1.0.0-alpha.6", "cairo-lang-starknet 1.0.0-rc0", @@ -3821,7 +3803,6 @@ dependencies = [ "num-bigint", "serde", "serde_json", - "sha3", "starknet-core", "starknet-providers", "starknet-types-core", @@ -3836,7 +3817,6 @@ dependencies = [ "assert_matches", "primitive-types", "starknet-core", - "starknet-providers", "starknet-types-core", "starknet_api", "thiserror", diff --git a/crates/client/block_import/Cargo.toml b/crates/client/block_import/Cargo.toml index 6255d8810..50ec9d611 100644 --- a/crates/client/block_import/Cargo.toml +++ b/crates/client/block_import/Cargo.toml @@ -10,7 +10,6 @@ license.workspace = true [dependencies] bitvec.workspace = true -futures.workspace = true log.workspace = true rayon.workspace = true thiserror.workspace = true @@ -24,10 +23,8 @@ dp-convert = { workspace = true } dp-receipt = { workspace = true } dp-state-update = { workspace = true } dp-transactions = { workspace = true } -dp-utils = { workspace = true } bonsai-trie = { workspace = true } starknet-core = { workspace = true } -starknet-providers = { workspace = true } starknet-types-core = { workspace = true } starknet_api = { workspace = true } diff --git a/crates/client/block_import/src/pre_validate.rs b/crates/client/block_import/src/pre_validate.rs index 481373e09..04cb36c78 100644 --- a/crates/client/block_import/src/pre_validate.rs +++ b/crates/client/block_import/src/pre_validate.rs @@ -14,6 +14,7 @@ use starknet_api::core::ChainId; use starknet_core::types::Felt; use starknet_types_core::hash::{Pedersen, Poseidon, StarkHash}; use std::mem; +use std::sync::Arc; /// This function wraps the [`pre_validate_inner`] step, which runs on the rayon pool, in a tokio-friendly future. pub async fn pre_validate( @@ -159,15 +160,15 @@ fn class_conversion(_validation: &Validation, class: DeclaredClass) -> Result { // TODO: verify that the class hash is correct Ok(ConvertedClass::Legacy(LegacyConvertedClass { class_hash: legacy.class_hash, - info: LegacyClassInfo { contract_class: legacy.contract_class }, + info: LegacyClassInfo { contract_class: Arc::new(legacy.contract_class) }, })) } } diff --git a/crates/client/eth/Cargo.toml b/crates/client/eth/Cargo.toml index b15c65728..b3a4fdd0b 100644 --- a/crates/client/eth/Cargo.toml +++ b/crates/client/eth/Cargo.toml @@ -16,7 +16,6 @@ targets = ["x86_64-unknown-linux-gnu"] # Deoxys dc-db = { workspace = true } dc-metrics = { workspace = true } -dp-block = { workspace = true } dp-chain-config = { workspace = true } dp-convert = { workspace = true } dp-transactions = { workspace = true } diff --git a/crates/client/mempool/Cargo.toml b/crates/client/mempool/Cargo.toml index a3940be64..614fc0f5f 100644 --- a/crates/client/mempool/Cargo.toml +++ b/crates/client/mempool/Cargo.toml @@ -43,6 +43,5 @@ starknet_api.workspace = true # Other anyhow.workspace = true log.workspace = true -rayon.workspace = true thiserror.workspace = true tokio.workspace = true diff --git a/crates/client/sync/Cargo.toml b/crates/client/sync/Cargo.toml index 9b091dd25..4da35ce19 100644 --- a/crates/client/sync/Cargo.toml +++ b/crates/client/sync/Cargo.toml @@ -29,12 +29,10 @@ dp-chain-config = { workspace = true } dp-class = { workspace = true } dp-convert = { workspace = true } dp-receipt = { workspace = true } -dp-state-update = { workspace = true } dp-transactions = { workspace = true } dp-utils = { workspace = true } # Starknet -bonsai-trie = { workspace = true } starknet-core = { workspace = true } starknet-providers = { workspace = true } starknet-types-core = { workspace = true } @@ -43,13 +41,9 @@ starknet_api = { workspace = true } # Other anyhow = { workspace = true } -bitvec = { workspace = true } futures = { workspace = true, default-features = true } log = { workspace = true } num-traits = { workspace = true } -rand = { workspace = true } -rayon = { workspace = true } -reqwest = { workspace = true } rodio = { version = "0.17", optional = true } serde_json = { workspace = true } thiserror.workspace = true diff --git a/crates/node/Cargo.toml b/crates/node/Cargo.toml index fb7458dc6..4199af32f 100644 --- a/crates/node/Cargo.toml +++ b/crates/node/Cargo.toml @@ -49,7 +49,6 @@ hyper.workspace = true ip_network.workspace = true jsonrpsee.workspace = true log = { workspace = true } -primitive-types = { workspace = true } rand = { workspace = true } rayon.workspace = true reqwest = { workspace = true } diff --git a/crates/primitives/block/Cargo.toml b/crates/primitives/block/Cargo.toml index 2d323ad0d..2eb5eefc7 100644 --- a/crates/primitives/block/Cargo.toml +++ b/crates/primitives/block/Cargo.toml @@ -15,7 +15,6 @@ targets = ["x86_64-unknown-linux-gnu"] # Deoxys dp-chain-config = { workspace = true } -dp-convert = { workspace = true } dp-receipt = { workspace = true } dp-transactions = { workspace = true } @@ -23,11 +22,8 @@ dp-transactions = { workspace = true } blockifier = { workspace = true } starknet-core = { workspace = true } starknet-types-core = { workspace = true } -starknet_api = { workspace = true } # Other -lazy_static = { workspace = true } primitive-types.workspace = true serde = { workspace = true, features = ["derive"] } -serde_json = { workspace = true } thiserror = { workspace = true } diff --git a/crates/primitives/chain_config/Cargo.toml b/crates/primitives/chain_config/Cargo.toml index 438f458e3..f88b0a4e8 100644 --- a/crates/primitives/chain_config/Cargo.toml +++ b/crates/primitives/chain_config/Cargo.toml @@ -11,7 +11,6 @@ license.workspace = true # Starknet blockifier = { workspace = true } -starknet-core = { workspace = true } starknet-types-core = { workspace = true } starknet_api = { workspace = true } diff --git a/crates/primitives/class/Cargo.toml b/crates/primitives/class/Cargo.toml index a740d0b15..2c16a11fd 100644 --- a/crates/primitives/class/Cargo.toml +++ b/crates/primitives/class/Cargo.toml @@ -27,12 +27,10 @@ casm-utils-v1_0_0-alpha6 = { package = "cairo-lang-utils", git = "https://github casm-utils-v1_0_0-rc0 = { package = "cairo-lang-utils", git = "https://github.com/starkware-libs/cairo", tag = "v1.0.0-rc0" } casm-utils-v1_1_1 = { package = "cairo-lang-utils", version = "=1.1.1" } casm-utils-v2 = { package = "cairo-lang-utils", version = "=2.7.0-rc.2" } -sha3 = { workspace = true } starknet-core = { workspace = true } starknet-types-core = { workspace = true } # Other -anyhow = { workspace = true } flate2 = { workspace = true } num-bigint = { workspace = true } serde = { workspace = true } diff --git a/crates/primitives/class/src/into_starknet_core.rs b/crates/primitives/class/src/into_starknet_core.rs index e0da575dd..0de54938d 100644 --- a/crates/primitives/class/src/into_starknet_core.rs +++ b/crates/primitives/class/src/into_starknet_core.rs @@ -1,3 +1,5 @@ +use std::sync::Arc; + use crate::{ CompressedLegacyContractClass, ContractClass, EntryPointsByType, FlattenedSierraClass, FunctionStateMutability, LegacyContractAbiEntry, LegacyContractEntryPoint, LegacyEntryPointsByType, LegacyEventAbiEntry, LegacyEventAbiType, @@ -9,10 +11,10 @@ impl From for ContractClass { fn from(contract_class: starknet_core::types::ContractClass) -> Self { match contract_class { starknet_core::types::ContractClass::Sierra(flattened_sierra_class) => { - ContractClass::Sierra(flattened_sierra_class.into()) + ContractClass::Sierra(Arc::new(flattened_sierra_class.into())) } starknet_core::types::ContractClass::Legacy(compressed_legacy_contract_class) => { - ContractClass::Legacy(compressed_legacy_contract_class.into()) + ContractClass::Legacy(Arc::new(compressed_legacy_contract_class.into())) } } } @@ -22,10 +24,10 @@ impl From for starknet_core::types::ContractClass { fn from(contract_class: ContractClass) -> Self { match contract_class { ContractClass::Sierra(flattened_sierra_class) => { - starknet_core::types::ContractClass::Sierra(flattened_sierra_class.into()) + starknet_core::types::ContractClass::Sierra((*flattened_sierra_class).clone().into()) } ContractClass::Legacy(compressed_legacy_contract_class) => { - starknet_core::types::ContractClass::Legacy(compressed_legacy_contract_class.into()) + starknet_core::types::ContractClass::Legacy((*compressed_legacy_contract_class).clone().into()) } } } diff --git a/crates/primitives/class/src/lib.rs b/crates/primitives/class/src/lib.rs index 23b11f392..6d7acd15c 100644 --- a/crates/primitives/class/src/lib.rs +++ b/crates/primitives/class/src/lib.rs @@ -1,4 +1,4 @@ -use std::collections::HashMap; +use std::{collections::HashMap, sync::Arc}; use starknet_types_core::felt::Felt; @@ -7,7 +7,7 @@ pub mod class_update; pub mod compile; mod into_starknet_core; -#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)] +#[derive(Clone, Debug, PartialEq, Eq)] pub enum ConvertedClass { Legacy(LegacyConvertedClass), Sierra(SierraConvertedClass), @@ -21,7 +21,6 @@ impl ConvertedClass { } } - // TODO: remove clone pub fn info(&self) -> ClassInfo { match self { ConvertedClass::Legacy(legacy) => ClassInfo::Legacy(legacy.info.clone()), @@ -40,7 +39,7 @@ pub struct LegacyConvertedClass { pub struct SierraConvertedClass { pub class_hash: Felt, pub info: SierraClassInfo, - pub compiled: CompiledSierra, + pub compiled: Arc, } #[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)] @@ -64,38 +63,38 @@ impl From for ClassInfo { impl ClassInfo { pub fn contract_class(&self) -> ContractClass { match self { - ClassInfo::Sierra(SierraClassInfo { contract_class, .. }) => contract_class.clone().into(), - ClassInfo::Legacy(LegacyClassInfo { contract_class }) => contract_class.clone().into(), + ClassInfo::Sierra(sierra) => ContractClass::Sierra(Arc::clone(&sierra.contract_class)), + ClassInfo::Legacy(legacy) => ContractClass::Legacy(Arc::clone(&legacy.contract_class)), } } } #[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)] pub struct LegacyClassInfo { - pub contract_class: CompressedLegacyContractClass, + pub contract_class: Arc, } #[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)] pub struct SierraClassInfo { - pub contract_class: FlattenedSierraClass, + pub contract_class: Arc, pub compiled_class_hash: Felt, } #[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)] pub enum ContractClass { - Sierra(FlattenedSierraClass), - Legacy(CompressedLegacyContractClass), + Sierra(Arc), + Legacy(Arc), } impl From for ContractClass { fn from(flattened_sierra_class: FlattenedSierraClass) -> Self { - ContractClass::Sierra(flattened_sierra_class) + ContractClass::Sierra(Arc::new(flattened_sierra_class)) } } impl From for ContractClass { fn from(compressed_legacy_contract_class: CompressedLegacyContractClass) -> Self { - ContractClass::Legacy(compressed_legacy_contract_class) + ContractClass::Legacy(Arc::new(compressed_legacy_contract_class)) } } diff --git a/crates/primitives/convert/Cargo.toml b/crates/primitives/convert/Cargo.toml index 3eaf2d013..be005480b 100644 --- a/crates/primitives/convert/Cargo.toml +++ b/crates/primitives/convert/Cargo.toml @@ -12,7 +12,6 @@ homepage.workspace = true # Starknet starknet-core = { workspace = true } -starknet-providers = { workspace = true } starknet-types-core = { workspace = true } starknet_api = { workspace = true } diff --git a/crates/primitives/state_update/src/lib.rs b/crates/primitives/state_update/src/lib.rs index 766d59908..1750657da 100644 --- a/crates/primitives/state_update/src/lib.rs +++ b/crates/primitives/state_update/src/lib.rs @@ -54,6 +54,16 @@ impl StateDiff { result } + pub fn sort(&mut self) { + self.storage_diffs.iter_mut().for_each(|storage_diff| storage_diff.sort()); + self.storage_diffs.sort_by_key(|storage_diff| storage_diff.address); + self.deprecated_declared_classes.sort(); + self.declared_classes.sort_by_key(|declared_class| declared_class.class_hash); + self.deployed_contracts.sort_by_key(|deployed_contract| deployed_contract.address); + self.replaced_classes.sort_by_key(|replaced_class| replaced_class.contract_address); + self.nonces.sort_by_key(|nonce| nonce.contract_address); + } + pub fn compute_hash(&self) -> Felt { let updated_contracts_sorted = { let mut updated_contracts = self @@ -142,7 +152,12 @@ impl ContractStorageDiffItem { fn len(&self) -> usize { self.storage_entries.len() } + + pub fn sort(&mut self) { + self.storage_entries.sort_by_key(|storage_entry| storage_entry.key); + } } + #[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)] pub struct StorageEntry { pub key: Felt, diff --git a/crates/primitives/transactions/src/broadcasted_to_blockifier.rs b/crates/primitives/transactions/src/broadcasted_to_blockifier.rs index edbdb284c..9b18cd5e3 100644 --- a/crates/primitives/transactions/src/broadcasted_to_blockifier.rs +++ b/crates/primitives/transactions/src/broadcasted_to_blockifier.rs @@ -1,3 +1,5 @@ +use std::sync::Arc; + use crate::{into_starknet_api::TransactionApiError, Transaction, TransactionWithHash}; use blockifier::{execution::errors::ContractClassError, transaction::errors::TransactionExecutionError}; use dp_chain_config::StarknetVersion; @@ -51,7 +53,7 @@ pub fn broadcasted_to_blockifier( let class_blockifier = compressed_legacy_class .to_blockifier_class() .map_err(BroadcastedToBlockifierError::CompilationFailed)?; - let class_info = LegacyClassInfo { contract_class: compressed_legacy_class }; + let class_info = LegacyClassInfo { contract_class: Arc::new(compressed_legacy_class) }; ( Some(blockifier::execution::contract_class::ClassInfo::new(&class_blockifier, 0, 0)?), @@ -69,7 +71,8 @@ pub fn broadcasted_to_blockifier( compilation: compiled_class_hash, }); } - let class_info = SierraClassInfo { contract_class: flatten_sierra_class, compiled_class_hash }; + let class_info = + SierraClassInfo { contract_class: Arc::new(flatten_sierra_class), compiled_class_hash }; ( Some(blockifier::execution::contract_class::ClassInfo::new( @@ -78,7 +81,11 @@ pub fn broadcasted_to_blockifier( tx.contract_class.abi.len(), )?), Some(class_hash), - Some(ConvertedClass::Sierra(SierraConvertedClass { class_hash, info: class_info, compiled })), + Some(ConvertedClass::Sierra(SierraConvertedClass { + class_hash, + info: class_info, + compiled: Arc::new(compiled), + })), ) } starknet_core::types::BroadcastedDeclareTransaction::V3(tx) => { @@ -91,7 +98,8 @@ pub fn broadcasted_to_blockifier( compilation: compiled_class_hash, }); } - let class_info = SierraClassInfo { contract_class: flatten_sierra_class, compiled_class_hash }; + let class_info = + SierraClassInfo { contract_class: Arc::new(flatten_sierra_class), compiled_class_hash }; ( Some(blockifier::execution::contract_class::ClassInfo::new( @@ -100,7 +108,11 @@ pub fn broadcasted_to_blockifier( tx.contract_class.abi.len(), )?), Some(class_hash), - Some(ConvertedClass::Sierra(SierraConvertedClass { class_hash, info: class_info, compiled })), + Some(ConvertedClass::Sierra(SierraConvertedClass { + class_hash, + info: class_info, + compiled: Arc::new(compiled), + })), ) } },