Skip to content

Commit

Permalink
feat: fix WASM build for crates dependent on reth-payload-primitives
Browse files Browse the repository at this point in the history
  • Loading branch information
fgimenez committed Nov 16, 2024
1 parent bf92a5f commit 39ef38b
Show file tree
Hide file tree
Showing 10 changed files with 69 additions and 83 deletions.
7 changes: 0 additions & 7 deletions .github/assets/check_wasm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ exclude_crates=(
reth-beacon-consensus
reth-bench
reth-blockchain-tree
reth-chain-state
reth-cli
reth-cli-commands
reth-cli-runner
Expand All @@ -26,13 +25,11 @@ exclude_crates=(
reth-dns-discovery
reth-downloaders
reth-e2e-test-utils
reth-engine-primitives
reth-engine-service
reth-engine-tree
reth-engine-util
reth-eth-wire
reth-ethereum-cli
reth-ethereum-engine-primitives
reth-ethereum-payload-builder
reth-etl
reth-exex
Expand All @@ -41,7 +38,6 @@ exclude_crates=(
reth-net-nat
reth-network
reth-node-api
reth-node-types
reth-node-builder
reth-node-core
reth-node-ethereum
Expand All @@ -51,9 +47,6 @@ exclude_crates=(
reth-optimism-node
reth-optimism-payload-builder
reth-optimism-rpc
reth-payload-builder
reth-payload-builder-primitives
reth-payload-primitives
reth-rpc
reth-rpc-api
reth-rpc-api-testing-util
Expand Down
8 changes: 3 additions & 5 deletions Cargo.lock

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

2 changes: 1 addition & 1 deletion crates/chain-state/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ alloy-primitives.workspace = true
alloy-consensus.workspace = true

# async
tokio = { workspace = true, features = ["sync", "macros", "rt-multi-thread"] }
tokio = { workspace = true, default-features = false, features = ["sync", "macros"] }
tokio-stream = { workspace = true, features = ["sync"] }

# tracing
Expand Down
8 changes: 5 additions & 3 deletions crates/ethereum/payload/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -397,9 +397,11 @@ where
// only determine cancun fields when active
if chain_spec.is_cancun_active_at_timestamp(attributes.timestamp) {
// grab the blob sidecars from the executed txs
blob_sidecars = pool.get_all_blobs_exact(
executed_txs.iter().filter(|tx| tx.is_eip4844()).map(|tx| tx.hash).collect(),
)?;
blob_sidecars = pool
.get_all_blobs_exact(
executed_txs.iter().filter(|tx| tx.is_eip4844()).map(|tx| tx.hash).collect(),
)
.map_err(PayloadBuilderError::other)?;

excess_blob_gas = if chain_spec.is_cancun_active_at_timestamp(parent_header.timestamp) {
let parent_excess_blob_gas = parent_header.excess_blob_gas.unwrap_or_default();
Expand Down
5 changes: 0 additions & 5 deletions crates/payload/builder-primitives/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,9 @@ workspace = true

[dependencies]
# reth
reth-errors.workspace = true
reth-payload-primitives.workspace = true
reth-transaction-pool.workspace = true
revm-primitives.workspace = true

# alloy
alloy-primitives.workspace = true
alloy-rpc-types-engine = { workspace = true, features = ["serde"] }

# async
Expand All @@ -29,5 +25,4 @@ tokio = { workspace = true, features = ["sync"] }
tokio-stream.workspace = true

# misc
thiserror.workspace = true
tracing.workspace = true
58 changes: 0 additions & 58 deletions crates/payload/builder-primitives/src/error.rs

This file was deleted.

5 changes: 2 additions & 3 deletions crates/payload/builder-primitives/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,11 @@
#![cfg_attr(not(test), warn(unused_crate_dependencies))]
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]

mod error;
pub use error::PayloadBuilderError;

mod events;
pub use crate::events::{Events, PayloadEvents};

/// Contains the payload builder trait to abstract over payload attributes.
mod traits;
pub use traits::{PayloadBuilder, PayloadStoreExt};

pub use reth_payload_primitives::PayloadBuilderError;
4 changes: 4 additions & 0 deletions crates/payload/primitives/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,12 @@ workspace = true
[dependencies]
# reth
reth-chainspec.workspace = true
reth-errors.workspace = true
reth-primitives.workspace = true
reth-chain-state.workspace = true

revm-primitives.workspace = true

# alloy
alloy-eips.workspace = true
alloy-primitives.workspace = true
Expand All @@ -26,6 +29,7 @@ op-alloy-rpc-types-engine = { workspace = true, optional = true }
# misc
serde.workspace = true
thiserror.workspace = true
tokio = { workspace = true, default-features = false, features = ["sync"] }

[features]
op = ["dep:op-alloy-rpc-types-engine"]
53 changes: 53 additions & 0 deletions crates/payload/primitives/src/error.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,58 @@
//! Error types emitted by types or implementations of this crate.

use alloy_primitives::B256;
use reth_errors::{ProviderError, RethError};
use revm_primitives::EVMError;
use tokio::sync::oneshot;

/// Possible error variants during payload building.
#[derive(Debug, thiserror::Error)]
pub enum PayloadBuilderError {
/// Thrown when the parent header cannot be found
#[error("missing parent header: {0}")]
MissingParentHeader(B256),
/// Thrown when the parent block is missing.
#[error("missing parent block {0}")]
MissingParentBlock(B256),
/// An oneshot channels has been closed.
#[error("sender has been dropped")]
ChannelClosed,
/// If there's no payload to resolve.
#[error("missing payload")]
MissingPayload,
/// Other internal error
#[error(transparent)]
Internal(#[from] RethError),
/// Unrecoverable error during evm execution.
#[error("evm execution error: {0}")]
EvmExecutionError(EVMError<ProviderError>),
/// Any other payload building errors.
#[error(transparent)]
Other(Box<dyn core::error::Error + Send + Sync>),
}

impl PayloadBuilderError {
/// Create a new error from a boxed error.
pub fn other<E>(error: E) -> Self
where
E: core::error::Error + Send + Sync + 'static,
{
Self::Other(Box::new(error))
}
}

impl From<ProviderError> for PayloadBuilderError {
fn from(error: ProviderError) -> Self {
Self::Internal(RethError::Provider(error))
}
}

impl From<oneshot::error::RecvError> for PayloadBuilderError {
fn from(_: oneshot::error::RecvError) -> Self {
Self::ChannelClosed
}
}

/// Thrown when the payload or attributes are known to be invalid before processing.
///
/// This is used mainly for
Expand Down
2 changes: 1 addition & 1 deletion crates/payload/primitives/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]

mod error;
pub use error::{EngineObjectValidationError, VersionSpecificValidationError};
pub use error::{EngineObjectValidationError, PayloadBuilderError, VersionSpecificValidationError};

/// Contains traits to abstract over payload attributes types and default implementations of the
/// [`PayloadAttributes`] trait for ethereum mainnet and optimism types.
Expand Down

0 comments on commit 39ef38b

Please sign in to comment.