From a083e0a29a6b6bd653667365ed78d21da5187cdf Mon Sep 17 00:00:00 2001 From: rakita Date: Wed, 18 Sep 2024 16:26:16 +0200 Subject: [PATCH 1/5] feat: restructure database crate --- Cargo.lock | 29 +++++++- Cargo.toml | 2 + bins/revme/Cargo.toml | 1 + bins/revme/src/cmd/bench/analysis.rs | 2 +- bins/revme/src/cmd/bench/burntpix.rs | 2 +- bins/revme/src/cmd/bench/snailtracer.rs | 2 +- bins/revme/src/cmd/bench/transfer.rs | 2 +- bins/revme/src/cmd/evmrunner.rs | 2 +- bins/revme/src/cmd/statetest/merkle_trie.rs | 6 +- bins/revme/src/cmd/statetest/runner.rs | 8 +-- crates/database/CHANGELOG.md | 0 crates/database/Cargo.toml | 67 ++++++++++++++++++ crates/database/LICENSE | 21 ++++++ .../{revm/src/db => database/src}/alloydb.rs | 32 ++++++--- .../{revm/src/db => database/src}/ethersdb.rs | 0 .../src/db => database/src}/in_memory_db.rs | 5 +- .../{revm/src/db.rs => database/src/lib.rs} | 3 - .../{revm/src/db => database/src}/states.rs | 0 .../src}/states/account_status.rs | 0 .../src}/states/bundle_account.rs | 0 .../src}/states/bundle_state.rs | 2 +- .../src/db => database/src}/states/cache.rs | 0 .../src}/states/cache_account.rs | 0 .../src/db => database/src}/states/changes.rs | 0 .../src}/states/plain_account.rs | 0 .../src/db => database/src}/states/reverts.rs | 0 .../src/db => database/src}/states/state.rs | 2 +- .../src}/states/state_builder.rs | 0 .../src}/states/transition_account.rs | 0 .../src}/states/transition_state.rs | 0 crates/optimism/Cargo.toml | 1 + crates/optimism/src/fast_lz.rs | 2 +- crates/optimism/src/handler_register.rs | 2 +- crates/revm/Cargo.toml | 22 +----- crates/revm/benches/bench.rs | 2 +- crates/revm/src/builder.rs | 3 +- crates/revm/src/context/evm_context.rs | 6 +- crates/revm/src/db/utils.rs | 22 ------ crates/revm/src/evm.rs | 2 +- crates/revm/src/inspector/customprinter.rs | 3 +- crates/revm/src/inspector/gas.rs | 3 +- crates/revm/src/inspector/handler_register.rs | 4 +- crates/revm/src/lib.rs | 5 -- crates/state/src/lib.rs | 1 + graph.png | Bin 0 -> 134890 bytes 45 files changed, 177 insertions(+), 89 deletions(-) create mode 100644 crates/database/CHANGELOG.md create mode 100644 crates/database/Cargo.toml create mode 100644 crates/database/LICENSE rename crates/{revm/src/db => database/src}/alloydb.rs (91%) rename crates/{revm/src/db => database/src}/ethersdb.rs (100%) rename crates/{revm/src/db => database/src}/in_memory_db.rs (99%) rename crates/{revm/src/db.rs => database/src/lib.rs} (91%) rename crates/{revm/src/db => database/src}/states.rs (100%) rename crates/{revm/src/db => database/src}/states/account_status.rs (100%) rename crates/{revm/src/db => database/src}/states/bundle_account.rs (100%) rename crates/{revm/src/db => database/src}/states/bundle_state.rs (99%) rename crates/{revm/src/db => database/src}/states/cache.rs (100%) rename crates/{revm/src/db => database/src}/states/cache_account.rs (100%) rename crates/{revm/src/db => database/src}/states/changes.rs (100%) rename crates/{revm/src/db => database/src}/states/plain_account.rs (100%) rename crates/{revm/src/db => database/src}/states/reverts.rs (100%) rename crates/{revm/src/db => database/src}/states/state.rs (99%) rename crates/{revm/src/db => database/src}/states/state_builder.rs (100%) rename crates/{revm/src/db => database/src}/states/transition_account.rs (100%) rename crates/{revm/src/db => database/src}/states/transition_state.rs (100%) delete mode 100644 crates/revm/src/db/utils.rs create mode 100644 graph.png diff --git a/Cargo.lock b/Cargo.lock index 8ac74f9d91..294f541e6b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2812,10 +2812,8 @@ dependencies = [ name = "revm" version = "14.0.1" dependencies = [ - "alloy-eips", "alloy-provider", "alloy-sol-types", - "alloy-transport", "anyhow", "auto_impl", "criterion", @@ -2825,6 +2823,7 @@ dependencies = [ "indicatif", "reqwest", "revm-bytecode", + "revm-database", "revm-database-interface", "revm-interpreter", "revm-precompile", @@ -2835,7 +2834,6 @@ dependencies = [ "rstest", "serde", "serde_json", - "tokio", ] [[package]] @@ -2847,6 +2845,29 @@ dependencies = [ "serde", ] +[[package]] +name = "revm-database" +version = "1.0.0" +dependencies = [ + "alloy-eips", + "alloy-provider", + "alloy-sol-types", + "alloy-transport", + "anyhow", + "auto_impl", + "criterion", + "indicatif", + "revm-bytecode", + "revm-database-interface", + "revm-primitives", + "revm-state", + "revm-wiring", + "rstest", + "serde", + "serde_json", + "tokio", +] + [[package]] name = "revm-database-interface" version = "1.0.0" @@ -2890,6 +2911,7 @@ dependencies = [ "enumn", "indicatif", "revm", + "revm-database", "revm-precompile", "rstest", "serde", @@ -2988,6 +3010,7 @@ dependencies = [ "microbench", "plain_hasher", "revm", + "revm-database", "serde", "serde_json", "thiserror", diff --git a/Cargo.toml b/Cargo.toml index 2d48060191..352fd89505 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,6 +6,7 @@ members = [ "crates/interpreter", "crates/precompile", "crates/optimism", + "crates/database", "crates/database/interface", "crates/bytecode", "crates/state", @@ -19,6 +20,7 @@ default-members = ["crates/revm"] # revm primitives = { path = "crates/primitives", package = "revm-primitives", version = "9.0.1", default-features = false } bytecode = { path = "crates/bytecode", package = "revm-bytecode", version = "1.0.0", default-features = false } +database = { path = "crates/database", package = "revm-database", version = "1.0.0", default-features = false } database-interface = { path = "crates/database/interface", package = "revm-database-interface", version = "1.0.0", default-features = false } specification = { path = "crates/specification", package = "revm-specification", version = "1.0.0", default-features = false } state = { path = "crates/state", package = "revm-state", version = "1.0.0", default-features = false } diff --git a/bins/revme/Cargo.toml b/bins/revme/Cargo.toml index 14e510bbbc..27c07739df 100644 --- a/bins/revme/Cargo.toml +++ b/bins/revme/Cargo.toml @@ -9,6 +9,7 @@ description = "Rust Ethereum Virtual Machine Executable" version = "0.10.1" [dependencies] +database.workspace = true # revm revm = { workspace = true, features = [ "std", diff --git a/bins/revme/src/cmd/bench/analysis.rs b/bins/revme/src/cmd/bench/analysis.rs index 472fabd1b5..359738567e 100644 --- a/bins/revme/src/cmd/bench/analysis.rs +++ b/bins/revme/src/cmd/bench/analysis.rs @@ -1,6 +1,6 @@ +use database::{BenchmarkDB, EthereumBenchmarkWiring}; use revm::{ bytecode::Bytecode, - db::{BenchmarkDB, EthereumBenchmarkWiring}, interpreter::analysis::to_analysed, primitives::{address, bytes, Bytes, TxKind}, Evm, diff --git a/bins/revme/src/cmd/bench/burntpix.rs b/bins/revme/src/cmd/bench/burntpix.rs index 663987f700..c7f0755bf8 100644 --- a/bins/revme/src/cmd/bench/burntpix.rs +++ b/bins/revme/src/cmd/bench/burntpix.rs @@ -8,9 +8,9 @@ use static_data::{ use alloy_sol_macro::sol; use alloy_sol_types::SolCall; +use database::CacheDB; use revm::{ database_interface::EmptyDB, - db::CacheDB, primitives::{address, hex, keccak256, Address, Bytes, TxKind, B256, U256}, state::{AccountInfo, Bytecode}, wiring::{ diff --git a/bins/revme/src/cmd/bench/snailtracer.rs b/bins/revme/src/cmd/bench/snailtracer.rs index 989bdc15d2..fe729f12b5 100644 --- a/bins/revme/src/cmd/bench/snailtracer.rs +++ b/bins/revme/src/cmd/bench/snailtracer.rs @@ -1,6 +1,6 @@ +use database::{BenchmarkDB, EthereumBenchmarkWiring}; use revm::{ bytecode::Bytecode, - db::{BenchmarkDB, EthereumBenchmarkWiring}, interpreter::analysis::to_analysed, primitives::{address, bytes, Bytes, TxKind}, Evm, diff --git a/bins/revme/src/cmd/bench/transfer.rs b/bins/revme/src/cmd/bench/transfer.rs index 03ac702f8a..027f1775e8 100644 --- a/bins/revme/src/cmd/bench/transfer.rs +++ b/bins/revme/src/cmd/bench/transfer.rs @@ -1,6 +1,6 @@ +use database::{BenchmarkDB, EthereumBenchmarkWiring}; use revm::{ bytecode::Bytecode, - db::{BenchmarkDB, EthereumBenchmarkWiring}, primitives::{TxKind, U256}, Evm, }; diff --git a/bins/revme/src/cmd/evmrunner.rs b/bins/revme/src/cmd/evmrunner.rs index 4d378000d0..f33a962007 100644 --- a/bins/revme/src/cmd/evmrunner.rs +++ b/bins/revme/src/cmd/evmrunner.rs @@ -1,7 +1,7 @@ use clap::Parser; +use database::BenchmarkDB; use revm::{ bytecode::{Bytecode, BytecodeDecodeError}, - db::BenchmarkDB, inspector_handle_register, inspectors::TracerEip3155, primitives::{address, Address, TxKind}, diff --git a/bins/revme/src/cmd/statetest/merkle_trie.rs b/bins/revme/src/cmd/statetest/merkle_trie.rs index b7a97cd7c7..e294c4e4be 100644 --- a/bins/revme/src/cmd/statetest/merkle_trie.rs +++ b/bins/revme/src/cmd/statetest/merkle_trie.rs @@ -1,10 +1,8 @@ use alloy_rlp::{RlpEncodable, RlpMaxEncodedLen}; +use database::PlainAccount; use hash_db::Hasher; use plain_hasher::PlainHasher; -use revm::{ - db::PlainAccount, - primitives::{keccak256, Address, Log, B256, U256}, -}; +use revm::primitives::{keccak256, Address, Log, B256, U256}; use triehash::sec_trie_root; pub fn log_rlp_hash(logs: &[Log]) -> B256 { diff --git a/bins/revme/src/cmd/statetest/runner.rs b/bins/revme/src/cmd/statetest/runner.rs index c6adcd186a..8eeb6c5e59 100644 --- a/bins/revme/src/cmd/statetest/runner.rs +++ b/bins/revme/src/cmd/statetest/runner.rs @@ -3,11 +3,11 @@ use super::{ models::{SpecName, Test, TestSuite}, utils::recover_address, }; +use database::State; use indicatif::{ProgressBar, ProgressDrawTarget}; use revm::{ bytecode::Bytecode, database_interface::EmptyDB, - db::State, inspector_handle_register, inspectors::TracerEip3155, interpreter::analysis::to_analysed, @@ -276,7 +276,7 @@ pub fn execute_test_suite( for (name, unit) in suite.0 { // Create database and insert cache - let mut cache_state = revm::CacheState::new(false); + let mut cache_state = database::CacheState::new(false); for (address, info) in unit.pre { let code_hash = keccak256(&info.code); let bytecode = to_analysed(Bytecode::new_raw(info.code)); @@ -391,7 +391,7 @@ pub fn execute_test_suite( let mut cache = cache_state.clone(); cache.set_state_clear_flag(SpecId::enabled(spec_id, SpecId::SPURIOUS_DRAGON)); - let mut state = revm::db::State::builder() + let mut state = database::State::builder() .with_cached_prestate(cache) .with_bundle_update() .build(); @@ -460,7 +460,7 @@ pub fn execute_test_suite( // re build to run with tracing let mut cache = cache_state.clone(); cache.set_state_clear_flag(SpecId::enabled(spec_id, SpecId::SPURIOUS_DRAGON)); - let mut state = revm::db::State::builder() + let mut state = database::State::builder() .with_cached_prestate(cache) .with_bundle_update() .build(); diff --git a/crates/database/CHANGELOG.md b/crates/database/CHANGELOG.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/crates/database/Cargo.toml b/crates/database/Cargo.toml new file mode 100644 index 0000000000..0a638a20a9 --- /dev/null +++ b/crates/database/Cargo.toml @@ -0,0 +1,67 @@ +[package] +authors = ["Dragan Rakita "] +description = "Revm Database interface" +edition = "2021" +keywords = ["ethereum", "evm", "revm", "no_std"] +license = "MIT" +name = "revm-database" +repository = "https://github.com/bluealloy/revm" +version = "1.0.0" +readme = "../../README.md" + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = ["--cfg", "docsrs"] + +[lints.rust] +unreachable_pub = "warn" +unused_must_use = "deny" +rust_2018_idioms = "deny" + +[lints.rustdoc] +all = "warn" + +[dependencies] +state.workspace = true +primitives.workspace = true +database-interface.workspace = true +wiring.workspace = true +bytecode.workspace = true + +auto_impl = "1.2" + +# Optional +serde = { version = "1.0", default-features = false, features = [ + "derive", + "rc", +], optional = true } + +# alloydb +tokio = { version = "1.40", features = [ + "rt-multi-thread", + "macros", +], optional = true } +alloy-provider = { version = "0.3", optional = true, default-features = false } +alloy-eips = { version = "0.3", optional = true, default-features = false } +alloy-transport = { version = "0.3", optional = true, default-features = false } + + +[dev-dependencies] +serde_json = { version = "1.0", default-features = false, features = ["alloc"] } +anyhow = "1.0.83" +criterion = "0.5" +indicatif = "0.17" +rstest = "0.22.0" +alloy-sol-types = "0.8" + +[features] +default = ["std"] +std = ["serde?/std"] +serde = ["dep:serde"] +alloydb = [ + "std", + "dep:tokio", + "dep:alloy-provider", + "dep:alloy-eips", + "dep:alloy-transport", +] diff --git a/crates/database/LICENSE b/crates/database/LICENSE new file mode 100644 index 0000000000..ad98ff22cc --- /dev/null +++ b/crates/database/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-2024 draganrakita + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/crates/revm/src/db/alloydb.rs b/crates/database/src/alloydb.rs similarity index 91% rename from crates/revm/src/db/alloydb.rs rename to crates/database/src/alloydb.rs index f0196ac6bc..7c361e4506 100644 --- a/crates/revm/src/db/alloydb.rs +++ b/crates/database/src/alloydb.rs @@ -1,20 +1,15 @@ -use crate::{ - bytecode::Bytecode, - database_interface::{Database, DatabaseRef}, - primitives::{Address, B256, U256}, - state::AccountInfo, -}; use alloy_eips::BlockId; use alloy_provider::{ network::{BlockResponse, HeaderResponse}, Network, Provider, }; use alloy_transport::{Transport, TransportError}; +use database_interface::{Database, DatabaseRef}; +use primitives::{Address, B256, U256}; +use state::{AccountInfo, Bytecode}; use std::future::IntoFuture; use tokio::runtime::{Handle, Runtime}; -use super::utils::HandleOrRuntime; - /// An alloy-powered REVM [Database]. /// /// When accessing the database, it'll use the given provider to fetch the corresponding account's data. @@ -176,6 +171,27 @@ impl> Database for AlloyDB(&self, f: F) -> F::Output + where + F: std::future::Future + Send, + F::Output: Send, + { + match self { + Self::Handle(handle) => tokio::task::block_in_place(move || handle.block_on(f)), + Self::Runtime(rt) => rt.block_on(f), + } + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/crates/revm/src/db/ethersdb.rs b/crates/database/src/ethersdb.rs similarity index 100% rename from crates/revm/src/db/ethersdb.rs rename to crates/database/src/ethersdb.rs diff --git a/crates/revm/src/db/in_memory_db.rs b/crates/database/src/in_memory_db.rs similarity index 99% rename from crates/revm/src/db/in_memory_db.rs rename to crates/database/src/in_memory_db.rs index 29cae75811..feca6d2220 100644 --- a/crates/revm/src/db/in_memory_db.rs +++ b/crates/database/src/in_memory_db.rs @@ -1,8 +1,7 @@ -use bytecode::Bytecode; use core::convert::Infallible; use database_interface::{Database, DatabaseCommit, DatabaseRef, EmptyDB}; use primitives::{hash_map::Entry, Address, HashMap, Log, B256, KECCAK_EMPTY, U256}; -use state::{Account, AccountInfo}; +use state::{Account, AccountInfo, Bytecode}; use std::vec::Vec; use wiring::EthereumWiring; @@ -469,7 +468,7 @@ mod tests { assert_eq!(new_state.storage(account, key1), Ok(value1)); } - #[cfg(feature = "serde-json")] + #[cfg(feature = "serde")] #[test] fn test_serialize_deserialize_cachedb() { let account = Address::with_last_byte(69); diff --git a/crates/revm/src/db.rs b/crates/database/src/lib.rs similarity index 91% rename from crates/revm/src/db.rs rename to crates/database/src/lib.rs index 6e0566aec9..2e893715cf 100644 --- a/crates/revm/src/db.rs +++ b/crates/database/src/lib.rs @@ -1,8 +1,5 @@ //! Database implementations. -#[cfg(feature = "alloydb")] -mod utils; - #[cfg(feature = "alloydb")] mod alloydb; diff --git a/crates/revm/src/db/states.rs b/crates/database/src/states.rs similarity index 100% rename from crates/revm/src/db/states.rs rename to crates/database/src/states.rs diff --git a/crates/revm/src/db/states/account_status.rs b/crates/database/src/states/account_status.rs similarity index 100% rename from crates/revm/src/db/states/account_status.rs rename to crates/database/src/states/account_status.rs diff --git a/crates/revm/src/db/states/bundle_account.rs b/crates/database/src/states/bundle_account.rs similarity index 100% rename from crates/revm/src/db/states/bundle_account.rs rename to crates/database/src/states/bundle_account.rs diff --git a/crates/revm/src/db/states/bundle_state.rs b/crates/database/src/states/bundle_state.rs similarity index 99% rename from crates/revm/src/db/states/bundle_state.rs rename to crates/database/src/states/bundle_state.rs index 6b57bf8641..791a304e46 100644 --- a/crates/revm/src/db/states/bundle_state.rs +++ b/crates/database/src/states/bundle_state.rs @@ -857,7 +857,7 @@ impl BundleState { #[cfg(test)] mod tests { use super::*; - use crate::{db::StorageWithOriginalValues, TransitionAccount}; + use crate::{StorageWithOriginalValues, TransitionAccount}; #[test] fn transition_states() { diff --git a/crates/revm/src/db/states/cache.rs b/crates/database/src/states/cache.rs similarity index 100% rename from crates/revm/src/db/states/cache.rs rename to crates/database/src/states/cache.rs diff --git a/crates/revm/src/db/states/cache_account.rs b/crates/database/src/states/cache_account.rs similarity index 100% rename from crates/revm/src/db/states/cache_account.rs rename to crates/database/src/states/cache_account.rs diff --git a/crates/revm/src/db/states/changes.rs b/crates/database/src/states/changes.rs similarity index 100% rename from crates/revm/src/db/states/changes.rs rename to crates/database/src/states/changes.rs diff --git a/crates/revm/src/db/states/plain_account.rs b/crates/database/src/states/plain_account.rs similarity index 100% rename from crates/revm/src/db/states/plain_account.rs rename to crates/database/src/states/plain_account.rs diff --git a/crates/revm/src/db/states/reverts.rs b/crates/database/src/states/reverts.rs similarity index 100% rename from crates/revm/src/db/states/reverts.rs rename to crates/database/src/states/reverts.rs diff --git a/crates/revm/src/db/states/state.rs b/crates/database/src/states/state.rs similarity index 99% rename from crates/revm/src/db/states/state.rs rename to crates/database/src/states/state.rs index c0bb51c340..cf46dc975d 100644 --- a/crates/revm/src/db/states/state.rs +++ b/crates/database/src/states/state.rs @@ -302,7 +302,7 @@ impl DatabaseCommit for State { #[cfg(test)] mod tests { use super::*; - use crate::db::{ + use crate::{ states::{reverts::AccountInfoRevert, StorageSlot}, AccountRevert, AccountStatus, BundleAccount, RevertToSlot, }; diff --git a/crates/revm/src/db/states/state_builder.rs b/crates/database/src/states/state_builder.rs similarity index 100% rename from crates/revm/src/db/states/state_builder.rs rename to crates/database/src/states/state_builder.rs diff --git a/crates/revm/src/db/states/transition_account.rs b/crates/database/src/states/transition_account.rs similarity index 100% rename from crates/revm/src/db/states/transition_account.rs rename to crates/database/src/states/transition_account.rs diff --git a/crates/revm/src/db/states/transition_state.rs b/crates/database/src/states/transition_state.rs similarity index 100% rename from crates/revm/src/db/states/transition_state.rs rename to crates/database/src/states/transition_state.rs diff --git a/crates/optimism/Cargo.toml b/crates/optimism/Cargo.toml index fbf7b0138f..1ca1396e32 100644 --- a/crates/optimism/Cargo.toml +++ b/crates/optimism/Cargo.toml @@ -37,6 +37,7 @@ serde = { version = "1.0", default-features = false, features = [ [dev-dependencies] +database.workspace = true anyhow = "1.0.89" criterion = "0.5" indicatif = "0.17" diff --git a/crates/optimism/src/fast_lz.rs b/crates/optimism/src/fast_lz.rs index b0cef1fe43..5c75a8820e 100644 --- a/crates/optimism/src/fast_lz.rs +++ b/crates/optimism/src/fast_lz.rs @@ -108,9 +108,9 @@ mod tests { use super::*; use alloy_sol_types::sol; use alloy_sol_types::SolCall; + use database::BenchmarkDB; use revm::{ bytecode::Bytecode, - db::BenchmarkDB, primitives::{address, bytes, Bytes, TxKind, U256}, wiring::EthereumWiring, Evm, diff --git a/crates/optimism/src/handler_register.rs b/crates/optimism/src/handler_register.rs index 495d81b638..89e81b12f0 100644 --- a/crates/optimism/src/handler_register.rs +++ b/crates/optimism/src/handler_register.rs @@ -429,9 +429,9 @@ pub fn end( mod tests { use super::*; use crate::{BedrockSpec, L1BlockInfo, LatestSpec, OptimismEvmWiring, RegolithSpec}; + use database::InMemoryDB; use revm::{ database_interface::EmptyDB, - db::InMemoryDB, interpreter::{CallOutcome, InterpreterResult}, primitives::{bytes, Address, Bytes, B256}, state::AccountInfo, diff --git a/crates/revm/Cargo.toml b/crates/revm/Cargo.toml index 87e6be0544..dab0783e8f 100644 --- a/crates/revm/Cargo.toml +++ b/crates/revm/Cargo.toml @@ -46,16 +46,8 @@ serde_json = { version = "1.0", default-features = false, features = [ "alloc", ], optional = true } -# alloydb -tokio = { version = "1.40", features = [ - "rt-multi-thread", - "macros", -], optional = true } -alloy-provider = { version = "0.3", optional = true, default-features = false } -alloy-eips = { version = "0.3", optional = true, default-features = false } -alloy-transport = { version = "0.3", optional = true, default-features = false } - [dev-dependencies] +database.workspace = true alloy-sol-types = { version = "0.8.2", default-features = false, features = [ "std", ] } @@ -86,14 +78,6 @@ portable = ["wiring/portable"] test-utils = [] -alloydb = [ - "std", - "dep:tokio", - "dep:alloy-provider", - "dep:alloy-eips", - "dep:alloy-transport", -] - dev = [ "memory_limit", "optional_balance_check", @@ -119,12 +103,12 @@ blst = ["precompile/blst"] [[example]] name = "fork_ref_transact" path = "../../examples/fork_ref_transact.rs" -required-features = ["alloydb"] +required-features = ["database/alloydb"] [[example]] name = "generate_block_traces" path = "../../examples/generate_block_traces.rs" -required-features = ["std", "serde-json", "alloydb"] +required-features = ["std", "serde-json", "database/alloydb"] [[example]] name = "db_by_ref" diff --git a/crates/revm/benches/bench.rs b/crates/revm/benches/bench.rs index f4f22544d5..89f98c05b7 100644 --- a/crates/revm/benches/bench.rs +++ b/crates/revm/benches/bench.rs @@ -1,10 +1,10 @@ use criterion::{ criterion_group, criterion_main, measurement::WallTime, BenchmarkGroup, Criterion, }; +use database::BenchmarkDB; use interpreter::{opcode::make_instruction_table, SharedMemory, EMPTY_SHARED_MEMORY}; use revm::{ bytecode::Bytecode, - db::BenchmarkDB, interpreter::{analysis::to_analysed, Contract, DummyHost, Interpreter}, primitives::{address, bytes, hex, Bytes, TxKind, U256}, specification::hardfork::BerlinSpec, diff --git a/crates/revm/src/builder.rs b/crates/revm/src/builder.rs index 1380c0ebb4..9630ae345e 100644 --- a/crates/revm/src/builder.rs +++ b/crates/revm/src/builder.rs @@ -465,8 +465,9 @@ where #[cfg(test)] mod test { - use crate::{Context, Evm, InMemoryDB}; + use crate::{Context, Evm}; use bytecode::Bytecode; + use database::InMemoryDB; use interpreter::Interpreter; use primitives::{address, TxKind, U256}; use state::AccountInfo; diff --git a/crates/revm/src/context/evm_context.rs b/crates/revm/src/context/evm_context.rs index ea1978346b..22279a7dd8 100644 --- a/crates/revm/src/context/evm_context.rs +++ b/crates/revm/src/context/evm_context.rs @@ -463,7 +463,8 @@ where #[cfg(any(test, feature = "test-utils"))] pub(crate) mod test_utils { use super::*; - use crate::{db::CacheDB, journaled_state::JournaledState}; + use crate::journaled_state::JournaledState; + use database::CacheDB; use database_interface::EmptyDB; use interpreter::CallScheme; use primitives::{address, HashSet, B256, U256}; @@ -549,8 +550,9 @@ pub(crate) mod test_utils { #[cfg(test)] mod tests { use super::*; - use crate::{db::CacheDB, Frame, JournalEntry}; + use crate::{Frame, JournalEntry}; use bytecode::Bytecode; + use database::CacheDB; use database_interface::EmptyDB; use primitives::{address, U256}; use state::AccountInfo; diff --git a/crates/revm/src/db/utils.rs b/crates/revm/src/db/utils.rs deleted file mode 100644 index bf06940612..0000000000 --- a/crates/revm/src/db/utils.rs +++ /dev/null @@ -1,22 +0,0 @@ -use tokio::runtime::{Handle, Runtime}; - -// Hold a tokio runtime handle or full runtime -#[derive(Debug)] -pub(crate) enum HandleOrRuntime { - Handle(Handle), - Runtime(Runtime), -} - -impl HandleOrRuntime { - #[inline] - pub(crate) fn block_on(&self, f: F) -> F::Output - where - F: std::future::Future + Send, - F::Output: Send, - { - match self { - Self::Handle(handle) => tokio::task::block_in_place(move || handle.block_on(f)), - Self::Runtime(rt) => rt.block_on(f), - } - } -} diff --git a/crates/revm/src/evm.rs b/crates/revm/src/evm.rs index f20372dfed..6922d08cf8 100644 --- a/crates/revm/src/evm.rs +++ b/crates/revm/src/evm.rs @@ -427,8 +427,8 @@ impl Evm<'_, EvmWiringT> { mod tests { use super::*; - use crate::db::BenchmarkDB; use bytecode::Bytecode; + use database::BenchmarkDB; use interpreter::opcode::{PUSH1, SSTORE}; use primitives::{address, U256}; use specification::eip7702::{Authorization, RecoveredAuthorization, Signature}; diff --git a/crates/revm/src/inspector/customprinter.rs b/crates/revm/src/inspector/customprinter.rs index d5259a0a68..1ba61e7cd0 100644 --- a/crates/revm/src/inspector/customprinter.rs +++ b/crates/revm/src/inspector/customprinter.rs @@ -111,8 +111,9 @@ impl Inspector for CustomPrintTracer { #[cfg(test)] mod test { use super::*; - use crate::{inspector_handle_register, Evm, InMemoryDB}; + use crate::{inspector_handle_register, Evm}; use bytecode::Bytecode; + use database::InMemoryDB; use primitives::{address, bytes, keccak256, Bytes, TxKind, U256}; use specification::hardfork::SpecId; use state::AccountInfo; diff --git a/crates/revm/src/inspector/gas.rs b/crates/revm/src/inspector/gas.rs index 94eb607dbc..b0be32ce54 100644 --- a/crates/revm/src/inspector/gas.rs +++ b/crates/revm/src/inspector/gas.rs @@ -70,8 +70,9 @@ impl Inspector for GasInspector { #[cfg(test)] mod tests { use super::*; - use crate::{db::BenchmarkDB, inspector::inspector_handle_register, Evm, EvmWiring}; + use crate::{inspector::inspector_handle_register, Evm, EvmWiring}; use bytecode::Bytecode; + use database::BenchmarkDB; use interpreter::{opcode, Interpreter}; use primitives::{address, Bytes, Log, TxKind}; use wiring::{DefaultEthereumWiring, EthereumWiring, EvmWiring as PrimitiveEvmWiring}; diff --git a/crates/revm/src/inspector/handler_register.rs b/crates/revm/src/inspector/handler_register.rs index 35bf2e60fc..f7b81225de 100644 --- a/crates/revm/src/inspector/handler_register.rs +++ b/crates/revm/src/inspector/handler_register.rs @@ -262,10 +262,10 @@ fn inspector_instruction( mod tests { use super::*; use crate::{ - db::BenchmarkDB, inspector::inspector_handle_register, inspectors::NoOpInspector, Evm, - EvmContext, EvmWiring, + inspector::inspector_handle_register, inspectors::NoOpInspector, Evm, EvmContext, EvmWiring, }; use bytecode::Bytecode; + use database::BenchmarkDB; use database_interface::EmptyDB; use interpreter::{opcode, CallInputs, CallOutcome, CreateInputs, CreateOutcome}; use primitives::{address, Bytes, TxKind}; diff --git a/crates/revm/src/lib.rs b/crates/revm/src/lib.rs index 8711786400..3e3f0c64a7 100644 --- a/crates/revm/src/lib.rs +++ b/crates/revm/src/lib.rs @@ -22,7 +22,6 @@ mod context; #[cfg(any(test, feature = "test-utils"))] pub mod test_utils; -pub mod db; mod evm; mod evm_wiring; mod frame; @@ -39,10 +38,6 @@ pub use context::{ ContextWithEvmWiring, EvmContext, InnerEvmContext, }; pub use database_interface::{Database, DatabaseCommit, DatabaseRef}; -pub use db::InMemoryDB; -pub use db::{ - CacheState, DBBox, State, StateBuilder, StateDBBox, TransitionAccount, TransitionState, -}; pub use evm::{Evm, CALL_STACK_LIMIT}; pub use evm_wiring::EvmWiring; pub use frame::{CallFrame, CreateFrame, Frame, FrameData, FrameOrResult, FrameResult}; diff --git a/crates/state/src/lib.rs b/crates/state/src/lib.rs index 06c730ab7c..f467907694 100644 --- a/crates/state/src/lib.rs +++ b/crates/state/src/lib.rs @@ -4,6 +4,7 @@ mod account_info; mod types; +pub use bytecode; pub use account_info::AccountInfo; pub use bytecode::Bytecode; diff --git a/graph.png b/graph.png new file mode 100644 index 0000000000000000000000000000000000000000..78e0523323e20a84c84285af4554e3dc55eb0fc2 GIT binary patch literal 134890 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 z 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 Date: Wed, 18 Sep 2024 16:35:43 +0200 Subject: [PATCH 2/5] fix tests --- examples/db_by_ref.rs | 2 +- examples/deploy.rs | 3 ++- examples/split_db_trait.rs | 4 ++-- graph.png | Bin 134890 -> 0 bytes 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/examples/db_by_ref.rs b/examples/db_by_ref.rs index 8be90b8dfe..53432fd64e 100644 --- a/examples/db_by_ref.rs +++ b/examples/db_by_ref.rs @@ -1,8 +1,8 @@ use core::error::Error; use core::fmt::Debug; +use database::CacheDB; use revm::{ database_interface::{EmptyDB, WrapDatabaseRef}, - db::CacheDB, handler::register::HandleRegister, inspector_handle_register, inspectors::{NoOpInspector, TracerEip3155}, diff --git a/examples/deploy.rs b/examples/deploy.rs index 9431f32cf2..3dba344c9c 100644 --- a/examples/deploy.rs +++ b/examples/deploy.rs @@ -1,4 +1,5 @@ use anyhow::{anyhow, bail}; +use database::InMemoryDB; use revm::{ interpreter::opcode, primitives::{hex, Bytes, TxKind, U256}, @@ -6,7 +7,7 @@ use revm::{ result::{ExecutionResult, Output}, EthereumWiring, }, - Evm, InMemoryDB, + Evm, }; /// Load number parameter and set to storage with slot 0 diff --git a/examples/split_db_trait.rs b/examples/split_db_trait.rs index 1382982ce6..bde7df9c39 100644 --- a/examples/split_db_trait.rs +++ b/examples/split_db_trait.rs @@ -85,8 +85,8 @@ impl DatabaseCommit for DatabaseComponents< } -//! BlockHash database component from [`crate::db::Database`] -//! it is used inside [`crate::db::DatabaseComponents`] +//! BlockHash database component from [`database::Database`] +//! it is used inside [`database::DatabaseComponents`] use crate::B256; use auto_impl::auto_impl; diff --git a/graph.png b/graph.png index 78e0523323e20a84c84285af4554e3dc55eb0fc2..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 134890 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 z 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 Date: Wed, 18 Sep 2024 16:49:10 +0200 Subject: [PATCH 3/5] GitButler Workspace Commit This is a merge commit the virtual branches in your workspace. Due to GitButler managing multiple virtual branches, you cannot switch back and forth between git branches and virtual branches easily. If you switch to another branch, GitButler will need to be reinitialized. If you commit on this branch, GitButler will throw it away. Here are the branches that are currently applied: - restructure (refs/gitbutler/restructure) branch head: 4637d1d49901603c602ce8613423b77fea87a618 - crates/database/src/alloydb.rs - crates/revm/Cargo.toml For more information about what we're doing here, check out our docs: https://docs.gitbutler.com/features/virtual-branches/integration-branch From 0a9f0dcf27175181eb5f65b6521e3109dc06f5f1 Mon Sep 17 00:00:00 2001 From: rakita Date: Wed, 18 Sep 2024 20:07:57 +0200 Subject: [PATCH 4/5] wip examples --- Cargo.toml | 24 ++++++++++++++++++- crates/database/src/alloydb.rs | 2 +- crates/revm/Cargo.toml | 8 ++----- examples/block_traces/Cargo.toml | 22 +++++++++++++++++ .../src/main.rs} | 3 +++ examples/contract_deployment/Cargo.toml | 22 +++++++++++++++++ .../src/main.rs} | 3 +++ examples/custom_opcodes/Cargo.toml | 22 +++++++++++++++++ .../src/lib.rs} | 3 +++ examples/database_components/Cargo.toml | 22 +++++++++++++++++ .../src/lib.rs} | 3 +++ examples/database_ref/Cargo.toml | 21 ++++++++++++++++ .../src/main.rs} | 3 +++ examples/uniswap_get_reserves/Cargo.toml | 22 +++++++++++++++++ .../src/main.rs} | 3 +++ examples/uniswap_v2_usdc_swap/Cargo.toml | 22 +++++++++++++++++ .../src/main.rs} | 3 +++ 17 files changed, 200 insertions(+), 8 deletions(-) create mode 100644 examples/block_traces/Cargo.toml rename examples/{generate_block_traces.rs => block_traces/src/main.rs} (98%) create mode 100644 examples/contract_deployment/Cargo.toml rename examples/{deploy.rs => contract_deployment/src/main.rs} (95%) create mode 100644 examples/custom_opcodes/Cargo.toml rename examples/{custom_opcodes.rs => custom_opcodes/src/lib.rs} (98%) create mode 100644 examples/database_components/Cargo.toml rename examples/{split_db_trait.rs => database_components/src/lib.rs} (98%) create mode 100644 examples/database_ref/Cargo.toml rename examples/{db_by_ref.rs => database_ref/src/main.rs} (95%) create mode 100644 examples/uniswap_get_reserves/Cargo.toml rename examples/{fork_ref_transact.rs => uniswap_get_reserves/src/main.rs} (97%) create mode 100644 examples/uniswap_v2_usdc_swap/Cargo.toml rename examples/{uniswap_v2_usdc_swap.rs => uniswap_v2_usdc_swap/src/main.rs} (98%) diff --git a/Cargo.toml b/Cargo.toml index 352fd89505..89297be5bd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,9 @@ [workspace] members = [ + # binary "bins/revme", + + # libraries "crates/revm", "crates/primitives", "crates/interpreter", @@ -12,6 +15,15 @@ members = [ "crates/state", "crates/wiring", "crates/specification", + + # examples + "examples/block_traces", + "examples/contract_deployment", + "examples/custom_opcodes", + "examples/database_components", + "examples/database_ref", + "examples/uniswap_get_reserves", + "examples/uniswap_v2_usdc_swap", ] resolver = "2" default-members = ["crates/revm"] @@ -28,7 +40,17 @@ wiring = { path = "crates/wiring", package = "revm-wiring", version = "1.0.0", d revm = { path = "crates/revm", version = "14.0.1", default-features = false } interpreter = { path = "crates/interpreter", package = "revm-interpreter", version = "10.0.1", default-features = false } precompile = { path = "crates/precompile", package = "revm-precompile", version = "11.0.1", default-features = false } -# misc + +[workspace.package] +license-file = "LICENSE" +authors = ["Dragan Rakita "] +categories = ["no-std",] +keywords = ["revm", "evm", "ethereum", "blockchain", "no_std"] +repository = "https://github.com/bluealloy/revm" +documentation = "https://bluealloy.github.io/revm/" +homepage = "" +licence = "MIT" +edition = "2021" [workspace.metadata.docs.rs] all-features = true diff --git a/crates/database/src/alloydb.rs b/crates/database/src/alloydb.rs index 7c361e4506..cfa7d237ab 100644 --- a/crates/database/src/alloydb.rs +++ b/crates/database/src/alloydb.rs @@ -1,4 +1,4 @@ -use alloy_eips::BlockId; +pub use alloy_eips::BlockId; use alloy_provider::{ network::{BlockResponse, HeaderResponse}, Network, Provider, diff --git a/crates/revm/Cargo.toml b/crates/revm/Cargo.toml index dab0783e8f..1fe01bb298 100644 --- a/crates/revm/Cargo.toml +++ b/crates/revm/Cargo.toml @@ -31,6 +31,7 @@ database-interface.workspace = true state.workspace = true specification.workspace = true bytecode.workspace = true +database = { workspace = true, optional = true } # misc auto_impl = { version = "1.2", default-features = false } @@ -76,7 +77,7 @@ arbitrary = ["primitives/arbitrary"] asm-keccak = ["primitives/asm-keccak"] portable = ["wiring/portable"] -test-utils = [] +test-utils = ["database"] dev = [ "memory_limit", @@ -120,11 +121,6 @@ name = "deploy" path = "../../examples/deploy.rs" required-features = [] -#[[example]] -#name = "uniswap_v2_usdc_swap" -#path = "../../examples/uniswap_v2_usdc_swap.rs" -#required-features = ["alloydb"] - [[bench]] name = "bench" path = "benches/bench.rs" diff --git a/examples/block_traces/Cargo.toml b/examples/block_traces/Cargo.toml new file mode 100644 index 0000000000..22502546c7 --- /dev/null +++ b/examples/block_traces/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "example-block-traces" +version = "0.0.0" +publish = false +license.workspace = true +edition.workspace = true + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = ["--cfg", "docsrs"] + +[lints.rust] +unreachable_pub = "warn" +unused_must_use = "deny" +rust_2018_idioms = "deny" + +[lints.rustdoc] +all = "warn" + +[dependencies] +revm.workspace = true +database.workspace = true diff --git a/examples/generate_block_traces.rs b/examples/block_traces/src/main.rs similarity index 98% rename from examples/generate_block_traces.rs rename to examples/block_traces/src/main.rs index 371c4bdd34..88baf830e7 100644 --- a/examples/generate_block_traces.rs +++ b/examples/block_traces/src/main.rs @@ -1,3 +1,6 @@ +//! Optimism-specific constants, types, and helpers. +#![cfg_attr(not(test), warn(unused_crate_dependencies))] + use alloy_eips::{BlockId, BlockNumberOrTag}; use alloy_provider::{network::primitives::BlockTransactions, Provider, ProviderBuilder}; use indicatif::ProgressBar; diff --git a/examples/contract_deployment/Cargo.toml b/examples/contract_deployment/Cargo.toml new file mode 100644 index 0000000000..6ea6e4855e --- /dev/null +++ b/examples/contract_deployment/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "example-contract-deployment" +version = "0.0.0" +publish = false +license.workspace = true +edition.workspace = true + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = ["--cfg", "docsrs"] + +[lints.rust] +unreachable_pub = "warn" +unused_must_use = "deny" +rust_2018_idioms = "deny" + +[lints.rustdoc] +all = "warn" + +[dependencies] +revm.workspace = true +database.workspace = true diff --git a/examples/deploy.rs b/examples/contract_deployment/src/main.rs similarity index 95% rename from examples/deploy.rs rename to examples/contract_deployment/src/main.rs index 3dba344c9c..d025ecb62b 100644 --- a/examples/deploy.rs +++ b/examples/contract_deployment/src/main.rs @@ -1,3 +1,6 @@ +//! Optimism-specific constants, types, and helpers. +#![cfg_attr(not(test), warn(unused_crate_dependencies))] + use anyhow::{anyhow, bail}; use database::InMemoryDB; use revm::{ diff --git a/examples/custom_opcodes/Cargo.toml b/examples/custom_opcodes/Cargo.toml new file mode 100644 index 0000000000..8d7dd9dc0a --- /dev/null +++ b/examples/custom_opcodes/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "example-custom-opcodes" +version = "0.0.0" +publish = false +license.workspace = true +edition.workspace = true + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = ["--cfg", "docsrs"] + +[lints.rust] +unreachable_pub = "warn" +unused_must_use = "deny" +rust_2018_idioms = "deny" + +[lints.rustdoc] +all = "warn" + +[dependencies] +revm.workspace = true +database.workspace = true diff --git a/examples/custom_opcodes.rs b/examples/custom_opcodes/src/lib.rs similarity index 98% rename from examples/custom_opcodes.rs rename to examples/custom_opcodes/src/lib.rs index 62b3abe4ac..f514d38c7c 100644 --- a/examples/custom_opcodes.rs +++ b/examples/custom_opcodes/src/lib.rs @@ -1,3 +1,6 @@ +//! Optimism-specific constants, types, and helpers. +#![cfg_attr(not(test), warn(unused_crate_dependencies))] + use revm::{ interpreter::{ gas, diff --git a/examples/database_components/Cargo.toml b/examples/database_components/Cargo.toml new file mode 100644 index 0000000000..6603ca2bd9 --- /dev/null +++ b/examples/database_components/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "example-database-components" +version = "0.0.0" +publish = false +license.workspace = true +edition.workspace = true + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = ["--cfg", "docsrs"] + +[lints.rust] +unreachable_pub = "warn" +unused_must_use = "deny" +rust_2018_idioms = "deny" + +[lints.rustdoc] +all = "warn" + +[dependencies] +revm.workspace = true +database.workspace = true diff --git a/examples/split_db_trait.rs b/examples/database_components/src/lib.rs similarity index 98% rename from examples/split_db_trait.rs rename to examples/database_components/src/lib.rs index bde7df9c39..095a737956 100644 --- a/examples/split_db_trait.rs +++ b/examples/database_components/src/lib.rs @@ -1,3 +1,6 @@ +//! Optimism-specific constants, types, and helpers. +#![cfg_attr(not(test), warn(unused_crate_dependencies))] + //! Database that is split on State and BlockHash traits. diff --git a/examples/database_ref/Cargo.toml b/examples/database_ref/Cargo.toml new file mode 100644 index 0000000000..bb96d832b1 --- /dev/null +++ b/examples/database_ref/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "example-db-by-ref" +version = "0.0.0" +publish = false +license.workspace = true +edition.workspace = true + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = ["--cfg", "docsrs"] + +[lints.rust] +unreachable_pub = "warn" +unused_must_use = "deny" +rust_2018_idioms = "deny" + +[lints.rustdoc] +all = "warn" + +[dependencies] +revm.workspace = true diff --git a/examples/db_by_ref.rs b/examples/database_ref/src/main.rs similarity index 95% rename from examples/db_by_ref.rs rename to examples/database_ref/src/main.rs index 53432fd64e..36f335639a 100644 --- a/examples/db_by_ref.rs +++ b/examples/database_ref/src/main.rs @@ -1,3 +1,6 @@ +//! Optimism-specific constants, types, and helpers. +#![cfg_attr(not(test), warn(unused_crate_dependencies))] + use core::error::Error; use core::fmt::Debug; use database::CacheDB; diff --git a/examples/uniswap_get_reserves/Cargo.toml b/examples/uniswap_get_reserves/Cargo.toml new file mode 100644 index 0000000000..2c61d1a38d --- /dev/null +++ b/examples/uniswap_get_reserves/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "example-uniswap-get-reserves" +version = "0.0.0" +publish = false +license.workspace = true +edition.workspace = true + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = ["--cfg", "docsrs"] + +[lints.rust] +unreachable_pub = "warn" +unused_must_use = "deny" +rust_2018_idioms = "deny" + +[lints.rustdoc] +all = "warn" + +[dependencies] +revm.workspace = true +database.workspace = true diff --git a/examples/fork_ref_transact.rs b/examples/uniswap_get_reserves/src/main.rs similarity index 97% rename from examples/fork_ref_transact.rs rename to examples/uniswap_get_reserves/src/main.rs index a1467f29b1..8004bf8b07 100644 --- a/examples/fork_ref_transact.rs +++ b/examples/uniswap_get_reserves/src/main.rs @@ -1,3 +1,6 @@ +//! Example of uniswap getReserves() call emulation. +#![cfg_attr(not(test), warn(unused_crate_dependencies))] + use alloy_eips::BlockId; use alloy_provider::ProviderBuilder; use alloy_sol_types::sol; diff --git a/examples/uniswap_v2_usdc_swap/Cargo.toml b/examples/uniswap_v2_usdc_swap/Cargo.toml new file mode 100644 index 0000000000..d1b3ae52cc --- /dev/null +++ b/examples/uniswap_v2_usdc_swap/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "example-uniswap-v2-usdc-swap" +version = "0.0.0" +publish = false +license.workspace = true +edition.workspace = true + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = ["--cfg", "docsrs"] + +[lints.rust] +unreachable_pub = "warn" +unused_must_use = "deny" +rust_2018_idioms = "deny" + +[lints.rustdoc] +all = "warn" + +[dependencies] +revm.workspace = true +database.workspace = true diff --git a/examples/uniswap_v2_usdc_swap.rs b/examples/uniswap_v2_usdc_swap/src/main.rs similarity index 98% rename from examples/uniswap_v2_usdc_swap.rs rename to examples/uniswap_v2_usdc_swap/src/main.rs index 3f9905bf42..c6922d98dc 100644 --- a/examples/uniswap_v2_usdc_swap.rs +++ b/examples/uniswap_v2_usdc_swap/src/main.rs @@ -1,3 +1,6 @@ +//! Example of uniswap getReserves() call emulation. +#![cfg_attr(not(test), warn(unused_crate_dependencies))] + use alloy_provider::{network::Ethereum, ProviderBuilder, RootProvider}; use alloy_rpc_types::BlockId; use alloy_sol_types::{sol, SolCall, SolValue}; From 77c4a6043d6124114bfa89e56fde5715789e0fb0 Mon Sep 17 00:00:00 2001 From: rakita Date: Thu, 19 Sep 2024 01:35:21 +0200 Subject: [PATCH 5/5] split examples to standalone crates --- Cargo.toml | 23 +++++---- bins/revme/Cargo.toml | 10 ++-- crates/bytecode/Cargo.toml | 14 +++--- crates/database/Cargo.toml | 14 +++--- crates/database/interface/Cargo.toml | 14 +++--- crates/database/src/lib.rs | 2 +- crates/gas/Cargo.toml | 14 +++--- crates/inspector/Cargo.toml | 22 ++++----- crates/interface/Cargo.toml | 14 +++--- crates/interpreter/Cargo.toml | 14 +++--- crates/optimism/Cargo.toml | 14 +++--- crates/precompile/Cargo.toml | 14 +++--- crates/primitives/Cargo.toml | 14 +++--- crates/revm/Cargo.toml | 62 ++++++++++++------------ crates/specification/Cargo.toml | 14 +++--- crates/state/Cargo.toml | 14 +++--- crates/wiring/Cargo.toml | 14 +++--- examples/block_traces/Cargo.toml | 6 ++- examples/contract_deployment/Cargo.toml | 6 ++- examples/custom_opcodes/Cargo.toml | 6 ++- examples/database_components/Cargo.toml | 6 ++- examples/database_ref/Cargo.toml | 6 ++- examples/uniswap_get_reserves/Cargo.toml | 6 ++- examples/uniswap_v2_usdc_swap/Cargo.toml | 6 ++- 24 files changed, 177 insertions(+), 152 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 89297be5bd..1bb9b0b2c3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,6 @@ [workspace] +resolver = "2" +default-members = ["crates/revm"] members = [ # binary "bins/revme", @@ -17,16 +19,14 @@ members = [ "crates/specification", # examples - "examples/block_traces", - "examples/contract_deployment", - "examples/custom_opcodes", - "examples/database_components", - "examples/database_ref", - "examples/uniswap_get_reserves", - "examples/uniswap_v2_usdc_swap", + #"examples/block_traces", + #"examples/contract_deployment", + #"examples/custom_opcodes", + #"examples/database_components", + #"examples/database_ref", + #"examples/uniswap_get_reserves", + #"examples/uniswap_v2_usdc_swap", ] -resolver = "2" -default-members = ["crates/revm"] [workspace.dependencies] # revm @@ -42,14 +42,13 @@ interpreter = { path = "crates/interpreter", package = "revm-interpreter", versi precompile = { path = "crates/precompile", package = "revm-precompile", version = "11.0.1", default-features = false } [workspace.package] -license-file = "LICENSE" +license = "MIT" authors = ["Dragan Rakita "] -categories = ["no-std",] +categories = ["no-std", "compilers", "cryptography::cryptocurrencies"] keywords = ["revm", "evm", "ethereum", "blockchain", "no_std"] repository = "https://github.com/bluealloy/revm" documentation = "https://bluealloy.github.io/revm/" homepage = "" -licence = "MIT" edition = "2021" [workspace.metadata.docs.rs] diff --git a/bins/revme/Cargo.toml b/bins/revme/Cargo.toml index 27c07739df..12ec072bef 100644 --- a/bins/revme/Cargo.toml +++ b/bins/revme/Cargo.toml @@ -1,12 +1,12 @@ [package] -authors = ["Dragan Rakita "] -edition = "2021" name = "revme" -keywords = ["ethereum", "evm"] -license = "MIT" -repository = "https://github.com/bluealloy/revm" description = "Rust Ethereum Virtual Machine Executable" version = "0.10.1" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true [dependencies] database.workspace = true diff --git a/crates/bytecode/Cargo.toml b/crates/bytecode/Cargo.toml index 6b9f24dacc..f1418d4e5b 100644 --- a/crates/bytecode/Cargo.toml +++ b/crates/bytecode/Cargo.toml @@ -1,13 +1,13 @@ [package] -authors = ["Dragan Rakita "] -description = "Revm Database interface" -edition = "2021" -keywords = ["ethereum", "evm", "revm", "no_std"] -license = "MIT" name = "revm-bytecode" -repository = "https://github.com/bluealloy/revm" +description = "Revm Database interface" version = "1.0.0" -readme = "../../README.md" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/crates/database/Cargo.toml b/crates/database/Cargo.toml index 0a638a20a9..5e49f01f88 100644 --- a/crates/database/Cargo.toml +++ b/crates/database/Cargo.toml @@ -1,13 +1,13 @@ [package] -authors = ["Dragan Rakita "] -description = "Revm Database interface" -edition = "2021" -keywords = ["ethereum", "evm", "revm", "no_std"] -license = "MIT" name = "revm-database" -repository = "https://github.com/bluealloy/revm" +description = "Revm Database implementations" version = "1.0.0" -readme = "../../README.md" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/crates/database/interface/Cargo.toml b/crates/database/interface/Cargo.toml index bc67977713..6406283099 100644 --- a/crates/database/interface/Cargo.toml +++ b/crates/database/interface/Cargo.toml @@ -1,13 +1,13 @@ [package] -authors = ["Dragan Rakita "] -description = "Revm Database interface" -edition = "2021" -keywords = ["ethereum", "evm", "revm", "no_std"] -license = "MIT" name = "revm-database-interface" -repository = "https://github.com/bluealloy/revm" +description = "Revm Database interface" version = "1.0.0" -readme = "../../README.md" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/crates/database/src/lib.rs b/crates/database/src/lib.rs index 2e893715cf..e5d1e4a65a 100644 --- a/crates/database/src/lib.rs +++ b/crates/database/src/lib.rs @@ -7,7 +7,7 @@ pub mod in_memory_db; pub mod states; #[cfg(feature = "alloydb")] -pub use alloydb::AlloyDB; +pub use alloydb::{AlloyDB, BlockId}; pub use in_memory_db::*; pub use states::{ diff --git a/crates/gas/Cargo.toml b/crates/gas/Cargo.toml index 435e80f935..e554cfba45 100644 --- a/crates/gas/Cargo.toml +++ b/crates/gas/Cargo.toml @@ -1,13 +1,13 @@ [package] -authors = ["Dragan Rakita "] -description = "Revm Database interface" -edition = "2021" -keywords = ["ethereum", "evm", "revm", "no_std"] -license = "MIT" name = "revm-gas" -repository = "https://github.com/bluealloy/revm" +description = "Revm gas constants and calculations" version = "1.0.0" -readme = "../../README.md" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/crates/inspector/Cargo.toml b/crates/inspector/Cargo.toml index 053b6ae583..b03c3cacb1 100644 --- a/crates/inspector/Cargo.toml +++ b/crates/inspector/Cargo.toml @@ -1,13 +1,13 @@ [package] -authors = ["Dragan Rakita "] -description = "Revm Database interface" -edition = "2021" -keywords = ["ethereum", "evm", "revm", "no_std"] -license = "MIT" name = "revm-inspector" -repository = "https://github.com/bluealloy/revm" +description = "Revm inspector interface" version = "1.0.0" -readme = "../../README.md" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true @@ -30,9 +30,7 @@ serde = { version = "1.0", default-features = false, features = [ [features] -default = ["std",] -std = [ - "serde?/std", -] +default = ["std"] +std = ["serde?/std"] serde = ["dep:serde"] -serde-json = ["serde"] \ No newline at end of file +serde-json = ["serde"] diff --git a/crates/interface/Cargo.toml b/crates/interface/Cargo.toml index 25793f6d78..2867aba626 100644 --- a/crates/interface/Cargo.toml +++ b/crates/interface/Cargo.toml @@ -1,13 +1,13 @@ [package] -authors = ["Dragan Rakita "] -description = "Revm Database interface" -edition = "2021" -keywords = ["ethereum", "evm", "revm", "no_std"] -license = "MIT" name = "revm-interface" -repository = "https://github.com/bluealloy/revm" +description = "Revm crate" version = "1.0.0" -readme = "../../README.md" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/crates/interpreter/Cargo.toml b/crates/interpreter/Cargo.toml index baf356978c..313e210833 100644 --- a/crates/interpreter/Cargo.toml +++ b/crates/interpreter/Cargo.toml @@ -1,13 +1,13 @@ [package] -authors = ["Dragan Rakita "] -description = "revm Interpreter" -edition = "2021" -keywords = ["no_std", "ethereum", "evm", "revm", "interpreter"] -license = "MIT" name = "revm-interpreter" -repository = "https://github.com/bluealloy/revm" +description = "Revm Interpreter that executes bytecode." version = "10.0.1" -readme = "../../README.md" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/crates/optimism/Cargo.toml b/crates/optimism/Cargo.toml index 1ca1396e32..46ce6feda2 100644 --- a/crates/optimism/Cargo.toml +++ b/crates/optimism/Cargo.toml @@ -1,13 +1,13 @@ [package] -authors = ["Dragan Rakita "] -description = "Revm Optimism" -edition = "2021" -keywords = ["ethereum", "optimism", "evm", "revm", "no_std"] -license = "MIT" name = "revm-optimism" -repository = "https://github.com/bluealloy/revm" +description = "Optimism extension of Revm" version = "1.0.0" -readme = "../../README.md" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/crates/precompile/Cargo.toml b/crates/precompile/Cargo.toml index a7d1baae69..fa4691dffd 100644 --- a/crates/precompile/Cargo.toml +++ b/crates/precompile/Cargo.toml @@ -1,13 +1,13 @@ [package] -authors = ["Dragan Rakita "] -description = "revm Precompiles - Ethereum compatible precompiled contracts" -edition = "2021" -keywords = ["no_std", "ethereum", "evm", "revm", "precompiles"] -license = "MIT" name = "revm-precompile" -repository = "https://github.com/bluealloy/revm" +description = "Revm Precompiles - Ethereum compatible precompiled contracts" version = "11.0.1" -readme = "../../README.md" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/crates/primitives/Cargo.toml b/crates/primitives/Cargo.toml index 72adf8d5ef..7ba394f7dd 100644 --- a/crates/primitives/Cargo.toml +++ b/crates/primitives/Cargo.toml @@ -1,13 +1,13 @@ [package] -authors = ["Dragan Rakita "] -description = "revm primitives" -edition = "2021" -keywords = ["no_std", "ethereum", "evm", "revm", "types"] -license = "MIT" name = "revm-primitives" -repository = "https://github.com/bluealloy/revm" +description = "Revm primitives structure" version = "9.0.1" -readme = "../../README.md" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/crates/revm/Cargo.toml b/crates/revm/Cargo.toml index 1fe01bb298..81e0e7a1b9 100644 --- a/crates/revm/Cargo.toml +++ b/crates/revm/Cargo.toml @@ -1,13 +1,13 @@ [package] -authors = ["Dragan Rakita "] -description = "revm - Rust Ethereum Virtual Machine" -edition = "2021" -keywords = ["no_std", "ethereum", "evm", "revm"] -license = "MIT" name = "revm" -repository = "https://github.com/bluealloy/revm" +description = "Revm - Rust Ethereum Virtual Machine" version = "14.0.1" -readme = "../../README.md" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true @@ -101,27 +101,27 @@ c-kzg = ["precompile/c-kzg"] kzg-rs = ["precompile/kzg-rs"] blst = ["precompile/blst"] -[[example]] -name = "fork_ref_transact" -path = "../../examples/fork_ref_transact.rs" -required-features = ["database/alloydb"] - -[[example]] -name = "generate_block_traces" -path = "../../examples/generate_block_traces.rs" -required-features = ["std", "serde-json", "database/alloydb"] - -[[example]] -name = "db_by_ref" -path = "../../examples/db_by_ref.rs" -required-features = ["std", "serde-json"] - -[[example]] -name = "deploy" -path = "../../examples/deploy.rs" -required-features = [] - -[[bench]] -name = "bench" -path = "benches/bench.rs" -harness = false +# [[example]] +# name = "fork_ref_transact" +# path = "../../examples/fork_ref_transact.rs" +# required-features = ["alloydb"] + +# [[example]] +# name = "generate_block_traces" +# path = "../../examples/generate_block_traces.rs" +# required-features = ["std", "serde-json", "alloydb"] + +# [[example]] +# name = "db_by_ref" +# path = "../../examples/db_by_ref.rs" +# required-features = ["std", "serde-json"] + +# [[example]] +# name = "deploy" +# path = "../../examples/deploy.rs" +# required-features = [] + +# [[bench]] +# name = "bench" +# path = "benches/bench.rs" +# harness = false diff --git a/crates/specification/Cargo.toml b/crates/specification/Cargo.toml index 02ea8850f3..a4b28dc4f9 100644 --- a/crates/specification/Cargo.toml +++ b/crates/specification/Cargo.toml @@ -1,13 +1,13 @@ [package] -authors = ["Dragan Rakita "] -description = "Revm Database interface" -edition = "2021" -keywords = ["ethereum", "evm", "revm", "no_std"] -license = "MIT" name = "revm-specification" -repository = "https://github.com/bluealloy/revm" +description = "Ethereum hardforks and EIP specification structs and constants" version = "1.0.0" -readme = "../../README.md" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/crates/state/Cargo.toml b/crates/state/Cargo.toml index 79d747eb1a..e7d62ad841 100644 --- a/crates/state/Cargo.toml +++ b/crates/state/Cargo.toml @@ -1,13 +1,13 @@ [package] -authors = ["Dragan Rakita "] -description = "Revm state types" -edition = "2021" -keywords = ["ethereum", "evm", "revm", "no_std"] -license = "MIT" name = "revm-state" -repository = "https://github.com/bluealloy/revm" +description = "Revm state types" version = "1.0.0" -readme = "../../README.md" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/crates/wiring/Cargo.toml b/crates/wiring/Cargo.toml index 242141280a..668bc10bc6 100644 --- a/crates/wiring/Cargo.toml +++ b/crates/wiring/Cargo.toml @@ -1,13 +1,13 @@ [package] -authors = ["Dragan Rakita "] -description = "Revm generic types wiring" -edition = "2021" -keywords = ["ethereum", "evm", "revm", "no_std"] -license = "MIT" name = "revm-wiring" -repository = "https://github.com/bluealloy/revm" +description = "Revm generic types wiring" version = "1.0.0" -readme = "../../README.md" +authors.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/examples/block_traces/Cargo.toml b/examples/block_traces/Cargo.toml index 22502546c7..466edfbf77 100644 --- a/examples/block_traces/Cargo.toml +++ b/examples/block_traces/Cargo.toml @@ -2,8 +2,12 @@ name = "example-block-traces" version = "0.0.0" publish = false -license.workspace = true +authors.workspace = true edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/examples/contract_deployment/Cargo.toml b/examples/contract_deployment/Cargo.toml index 6ea6e4855e..0d482a26dc 100644 --- a/examples/contract_deployment/Cargo.toml +++ b/examples/contract_deployment/Cargo.toml @@ -2,8 +2,12 @@ name = "example-contract-deployment" version = "0.0.0" publish = false -license.workspace = true +authors.workspace = true edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/examples/custom_opcodes/Cargo.toml b/examples/custom_opcodes/Cargo.toml index 8d7dd9dc0a..fae13e5da1 100644 --- a/examples/custom_opcodes/Cargo.toml +++ b/examples/custom_opcodes/Cargo.toml @@ -2,8 +2,12 @@ name = "example-custom-opcodes" version = "0.0.0" publish = false -license.workspace = true +authors.workspace = true edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/examples/database_components/Cargo.toml b/examples/database_components/Cargo.toml index 6603ca2bd9..666c1633a0 100644 --- a/examples/database_components/Cargo.toml +++ b/examples/database_components/Cargo.toml @@ -2,8 +2,12 @@ name = "example-database-components" version = "0.0.0" publish = false -license.workspace = true +authors.workspace = true edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/examples/database_ref/Cargo.toml b/examples/database_ref/Cargo.toml index bb96d832b1..10250d758d 100644 --- a/examples/database_ref/Cargo.toml +++ b/examples/database_ref/Cargo.toml @@ -2,8 +2,12 @@ name = "example-db-by-ref" version = "0.0.0" publish = false -license.workspace = true +authors.workspace = true edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/examples/uniswap_get_reserves/Cargo.toml b/examples/uniswap_get_reserves/Cargo.toml index 2c61d1a38d..e275f58bcc 100644 --- a/examples/uniswap_get_reserves/Cargo.toml +++ b/examples/uniswap_get_reserves/Cargo.toml @@ -2,8 +2,12 @@ name = "example-uniswap-get-reserves" version = "0.0.0" publish = false -license.workspace = true +authors.workspace = true edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true diff --git a/examples/uniswap_v2_usdc_swap/Cargo.toml b/examples/uniswap_v2_usdc_swap/Cargo.toml index d1b3ae52cc..6275283a17 100644 --- a/examples/uniswap_v2_usdc_swap/Cargo.toml +++ b/examples/uniswap_v2_usdc_swap/Cargo.toml @@ -2,8 +2,12 @@ name = "example-uniswap-v2-usdc-swap" version = "0.0.0" publish = false -license.workspace = true +authors.workspace = true edition.workspace = true +keywords.workspace = true +license.workspace = true +repository.workspace = true +readme.workspace = true [package.metadata.docs.rs] all-features = true