[go: up one dir, main page]

Skip to content

Commit

Permalink
Revert "Moving Optimism bin to Optimism Cli" (paradigmxyz#9875)
Browse files Browse the repository at this point in the history
  • Loading branch information
mattsse authored Jul 29, 2024
1 parent 700e660 commit 700caca
Show file tree
Hide file tree
Showing 22 changed files with 134 additions and 157 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ jobs:
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- run: cargo hack check --workspace --exclude op-reth
- run: cargo hack check

msrv:
name: MSRV / ${{ matrix.network }}
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/op-sync.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ jobs:
with:
cache-on-failure: true
- name: Build op-reth
run: make install-op
run: |
cargo install --features asm-keccak,jemalloc,optimism --bin op-reth --path bin/reth
- name: Run sync
# https://basescan.org/block/10000
run: |
Expand Down
19 changes: 3 additions & 16 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 0 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ members = [
"crates/node/builder/",
"crates/node/events/",
"crates/node/metrics",
"crates/optimism/bin",
"crates/optimism/cli",
"crates/optimism/consensus",
"crates/optimism/evm/",
Expand Down Expand Up @@ -338,7 +337,6 @@ reth-node-ethereum = { path = "crates/ethereum/node" }
reth-node-events = { path = "crates/node/events" }
reth-node-metrics = { path = "crates/node/metrics" }
reth-node-optimism = { path = "crates/optimism/node" }
reth-optimism-bin = { path = "crates/optimism/bin" }
reth-optimism-cli = { path = "crates/optimism/cli" }
reth-optimism-consensus = { path = "crates/optimism/consensus" }
reth-optimism-payload-builder = { path = "crates/optimism/payload" }
Expand Down Expand Up @@ -546,5 +544,3 @@ serial_test = "3"
similar-asserts = "1.5.0"
test-fuzz = "5"
iai-callgrind = "0.11"

tikv-jemallocator = { version = "0.5.0" }
10 changes: 5 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ install: ## Build and install the reth binary under `~/.cargo/bin`.

.PHONY: install-op
install-op: ## Build and install the op-reth binary under `~/.cargo/bin`.
cargo install --path crates/optimism/bin --bin op-reth --force --locked \
cargo install --path bin/reth --bin op-reth --force --locked \
--features "optimism,$(FEATURES)" \
--profile "$(PROFILE)" \
$(CARGO_INSTALL_EXTRA_FLAGS)
Expand All @@ -63,14 +63,14 @@ build: ## Build the reth binary into `target` directory.

.PHONY: build-op
build-op: ## Build the op-reth binary into `target` directory.
cargo build --bin op-reth --features "optimism,$(FEATURES)" --profile "$(PROFILE)" --manifest-path crates/optimism/bin/Cargo.toml
cargo build --bin op-reth --features "optimism,$(FEATURES)" --profile "$(PROFILE)"

# Builds the reth binary natively.
build-native-%:
cargo build --bin reth --target $* --features "$(FEATURES)" --profile "$(PROFILE)"

op-build-native-%:
cargo build --bin op-reth --target $* --features "optimism,$(FEATURES)" --profile "$(PROFILE)" --manifest-path crates/optimism/bin/Cargo.toml
cargo build --bin op-reth --target $* --features "optimism,$(FEATURES)" --profile "$(PROFILE)"

# The following commands use `cross` to build a cross-compile.
#
Expand Down Expand Up @@ -105,7 +105,7 @@ build-%:

op-build-%:
RUSTFLAGS="-C link-arg=-lgcc -Clink-arg=-static-libgcc" \
cross build --bin op-reth --target $* --features "optimism,$(FEATURES)" --profile "$(PROFILE)" --manifest-path crates/optimism/bin/Cargo.toml
cross build --bin op-reth --target $* --features "optimism,$(FEATURES)" --profile "$(PROFILE)"

# Unfortunately we can't easily use cross to build for Darwin because of licensing issues.
# If we wanted to, we would need to build a custom Docker image with the SDK available.
Expand Down Expand Up @@ -313,7 +313,7 @@ maxperf: ## Builds `reth` with the most aggressive optimisations.

.PHONY: maxperf-op
maxperf-op: ## Builds `op-reth` with the most aggressive optimisations.
RUSTFLAGS="-C target-cpu=native" cargo build --profile maxperf --features jemalloc,asm-keccak,optimism --bin op-reth --manifest-path crates/optimism/bin/Cargo.toml
RUSTFLAGS="-C target-cpu=native" cargo build --profile maxperf --features jemalloc,asm-keccak,optimism --bin op-reth

.PHONY: maxperf-no-asm
maxperf-no-asm: ## Builds `reth` with the most aggressive optimisations, minus the "asm-keccak" feature.
Expand Down
2 changes: 1 addition & 1 deletion bin/reth-bench/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ clap = { workspace = true, features = ["derive", "env"] }
csv = "1.3.0"

[target.'cfg(unix)'.dependencies]
tikv-jemallocator = { workspace = true, optional = true }
tikv-jemallocator = { version = "0.5.0", optional = true }
libc = "0.2"

[dev-dependencies]
Expand Down
27 changes: 26 additions & 1 deletion bin/reth/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ reth-static-file-types = { workspace = true, features = ["clap"] }
reth-trie = { workspace = true, features = ["metrics"] }
reth-trie-db = { workspace = true, features = ["metrics"] }
reth-node-api.workspace = true
reth-node-optimism = { workspace = true, optional = true, features = [
"optimism",
] }
reth-node-core.workspace = true
reth-ethereum-payload-builder.workspace = true
reth-db-common.workspace = true
Expand All @@ -64,9 +67,11 @@ reth-node-builder.workspace = true
reth-node-events.workspace = true
reth-node-metrics.workspace = true
reth-consensus.workspace = true
reth-optimism-primitives.workspace = true
reth-engine-util.workspace = true
reth-prune.workspace = true
reth-stages-api.workspace = true
reth-optimism-cli = { workspace = true, optional = true }

# crypto
alloy-rlp.workspace = true
Expand Down Expand Up @@ -106,7 +111,7 @@ itertools.workspace = true
discv5.workspace = true

[target.'cfg(unix)'.dependencies]
tikv-jemallocator = { workspace = true, optional = true }
tikv-jemallocator = { version = "0.5.0", optional = true }
libc = "0.2"

[dev-dependencies]
Expand All @@ -128,10 +133,30 @@ min-info-logs = ["tracing/release_max_level_info"]
min-debug-logs = ["tracing/release_max_level_debug"]
min-trace-logs = ["tracing/release_max_level_trace"]

optimism = [
"dep:reth-node-optimism",
"dep:reth-optimism-cli",
"reth-beacon-consensus/optimism",
"reth-blockchain-tree/optimism",
"reth-node-core/optimism",
"reth-optimism-cli?/optimism",
"reth-primitives/optimism",
"reth-provider/optimism",
"reth-rpc/optimism",
]

# no-op feature flag for switching between the `optimism` and default functionality in CI matrices
ethereum = []

[[bin]]
name = "reth"
path = "src/main.rs"

[[bin]]
name = "engine2"
path = "src/engine2.rs"

[[bin]]
name = "op-reth"
path = "src/optimism.rs"
required-features = ["optimism"]
25 changes: 20 additions & 5 deletions bin/reth/src/cli/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use crate::{
LogArgs,
},
commands::debug_cmd,
macros::block_executor,
version::{LONG_VERSION, SHORT_VERSION},
};
use clap::{value_parser, Parser, Subcommand};
Expand All @@ -18,7 +19,6 @@ use reth_cli_commands::{
use reth_cli_runner::CliRunner;
use reth_db::DatabaseEnv;
use reth_node_builder::{NodeBuilder, WithLaunchContext};
use reth_node_ethereum::EthExecutorProvider;
use reth_tracing::FileWorkerGuard;
use std::{ffi::OsString, fmt, future::Future, sync::Arc};
use tracing::info;
Expand Down Expand Up @@ -151,13 +151,20 @@ impl<Ext: clap::Args + fmt::Debug> Cli<Ext> {
}
Commands::Init(command) => runner.run_blocking_until_ctrl_c(command.execute()),
Commands::InitState(command) => runner.run_blocking_until_ctrl_c(command.execute()),
Commands::Import(command) => {
runner.run_blocking_until_ctrl_c(command.execute(EthExecutorProvider::ethereum))
Commands::Import(command) => runner.run_blocking_until_ctrl_c(
command.execute(|chain_spec| block_executor!(chain_spec)),
),
#[cfg(feature = "optimism")]
Commands::ImportOp(command) => runner.run_blocking_until_ctrl_c(command.execute()),
#[cfg(feature = "optimism")]
Commands::ImportReceiptsOp(command) => {
runner.run_blocking_until_ctrl_c(command.execute())
}
Commands::DumpGenesis(command) => runner.run_blocking_until_ctrl_c(command.execute()),
Commands::Db(command) => runner.run_blocking_until_ctrl_c(command.execute()),
Commands::Stage(command) => runner
.run_command_until_exit(|ctx| command.execute(ctx, EthExecutorProvider::ethereum)),
Commands::Stage(command) => runner.run_command_until_exit(|ctx| {
command.execute(ctx, |chain_spec| block_executor!(chain_spec))
}),
Commands::P2P(command) => runner.run_until_ctrl_c(command.execute()),
#[cfg(feature = "dev")]
Commands::TestVectors(command) => runner.run_until_ctrl_c(command.execute()),
Expand Down Expand Up @@ -193,6 +200,14 @@ pub enum Commands<Ext: clap::Args + fmt::Debug = NoArgs> {
/// This syncs RLP encoded blocks from a file.
#[command(name = "import")]
Import(import::ImportCommand),
/// This syncs RLP encoded OP blocks below Bedrock from a file, without executing.
#[cfg(feature = "optimism")]
#[command(name = "import-op")]
ImportOp(reth_optimism_cli::ImportOpCommand),
/// This imports RLP encoded receipts from a file.
#[cfg(feature = "optimism")]
#[command(name = "import-receipts-op")]
ImportReceiptsOp(reth_optimism_cli::ImportReceiptsOpCommand),
/// Dumps genesis block JSON configuration to stdout.
DumpGenesis(dump_genesis::DumpGenesisCommand),
/// Database debugging utilities
Expand Down
25 changes: 21 additions & 4 deletions bin/reth/src/commands/debug_cmd/build_block.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
//! Command for debugging block building.
use crate::macros::block_executor;
use alloy_rlp::Decodable;
use clap::Parser;
use eyre::Context;
Expand All @@ -18,7 +19,6 @@ use reth_evm::execute::{BlockExecutionOutput, BlockExecutorProvider, Executor};
use reth_execution_types::ExecutionOutcome;
use reth_fs_util as fs;
use reth_node_api::PayloadBuilderAttributes;
use reth_node_ethereum::EthExecutorProvider;
use reth_payload_builder::database::CachedReads;
use reth_primitives::{
constants::eip4844::LoadKzgSettingsError, revm_primitives::KzgSettings, Address,
Expand Down Expand Up @@ -120,7 +120,7 @@ impl Command {
let consensus: Arc<dyn Consensus> =
Arc::new(EthBeaconConsensus::new(provider_factory.chain_spec()));

let executor = EthExecutorProvider::ethereum(provider_factory.chain_spec());
let executor = block_executor!(provider_factory.chain_spec());

// configure blockchain tree
let tree_externals =
Expand Down Expand Up @@ -221,6 +221,17 @@ impl Command {
let payload_config = PayloadConfig::new(
Arc::clone(&best_block),
Bytes::default(),
#[cfg(feature = "optimism")]
reth_node_optimism::OptimismPayloadBuilderAttributes::try_new(
best_block.hash(),
reth_rpc_types::engine::OptimismPayloadAttributes {
payload_attributes: payload_attrs,
transactions: None,
no_tx_pool: None,
gas_limit: None,
},
)?,
#[cfg(not(feature = "optimism"))]
reth_payload_builder::EthPayloadBuilderAttributes::try_new(
best_block.hash(),
payload_attrs,
Expand All @@ -237,6 +248,13 @@ impl Command {
None,
);

#[cfg(feature = "optimism")]
let payload_builder = reth_node_optimism::OptimismPayloadBuilder::new(
reth_node_optimism::OptimismEvmConfig::default(),
)
.compute_pending_block();

#[cfg(not(feature = "optimism"))]
let payload_builder = reth_ethereum_payload_builder::EthereumPayloadBuilder::default();

match payload_builder.try_build(args)? {
Expand All @@ -253,8 +271,7 @@ impl Command {
SealedBlockWithSenders::new(block.clone(), senders).unwrap();

let db = StateProviderDatabase::new(blockchain_db.latest()?);
let executor =
EthExecutorProvider::ethereum(provider_factory.chain_spec()).executor(db);
let executor = block_executor!(provider_factory.chain_spec()).executor(db);

let BlockExecutionOutput { state, receipts, requests, .. } =
executor.execute((&block_with_senders.clone().unseal(), U256::MAX).into())?;
Expand Down
5 changes: 2 additions & 3 deletions bin/reth/src/commands/debug_cmd/execution.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//! Command for debugging execution.

use crate::{args::NetworkArgs, utils::get_single_header};
use crate::{args::NetworkArgs, macros::block_executor, utils::get_single_header};
use clap::Parser;
use futures::{stream::select as stream_select, StreamExt};
use reth_beacon_consensus::EthBeaconConsensus;
Expand All @@ -19,7 +19,6 @@ use reth_exex::ExExManagerHandle;
use reth_network::{NetworkEvents, NetworkHandle};
use reth_network_api::NetworkInfo;
use reth_network_p2p::{bodies::client::BodiesClient, headers::client::HeadersClient};
use reth_node_ethereum::EthExecutorProvider;
use reth_primitives::{BlockHashOrNumber, BlockNumber, B256};
use reth_provider::{
BlockExecutionWriter, ChainSpecProvider, ProviderFactory, StageCheckpointReader,
Expand Down Expand Up @@ -81,7 +80,7 @@ impl Command {
let prune_modes = config.prune.clone().map(|prune| prune.segments).unwrap_or_default();

let (tip_tx, tip_rx) = watch::channel(B256::ZERO);
let executor = EthExecutorProvider::ethereum(provider_factory.chain_spec());
let executor = block_executor!(provider_factory.chain_spec());

let pipeline = Pipeline::builder()
.with_tip_sender(tip_tx)
Expand Down
4 changes: 2 additions & 2 deletions bin/reth/src/commands/debug_cmd/in_memory_merkle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

use crate::{
args::NetworkArgs,
macros::block_executor,
utils::{get_single_body, get_single_header},
};
use backon::{ConstantBuilder, Retryable};
Expand All @@ -16,7 +17,6 @@ use reth_evm::execute::{BlockExecutionOutput, BlockExecutorProvider, Executor};
use reth_execution_types::ExecutionOutcome;
use reth_network::NetworkHandle;
use reth_network_api::NetworkInfo;
use reth_node_ethereum::EthExecutorProvider;
use reth_primitives::BlockHashOrNumber;
use reth_provider::{
writer::StorageWriter, AccountExtReader, ChainSpecProvider, HashingWriter, HeaderProvider,
Expand Down Expand Up @@ -130,7 +130,7 @@ impl Command {
provider_factory.static_file_provider(),
));

let executor = EthExecutorProvider::ethereum(provider_factory.chain_spec()).executor(db);
let executor = block_executor!(provider_factory.chain_spec()).executor(db);

let merkle_block_td =
provider.header_td_by_number(merkle_block_number)?.unwrap_or_default();
Expand Down
Loading

0 comments on commit 700caca

Please sign in to comment.