mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
feat: fix WASM build for crates dependent on reth-payload-primitives (#12610)
This commit is contained in:
7
.github/assets/check_wasm.sh
vendored
7
.github/assets/check_wasm.sh
vendored
@ -15,7 +15,6 @@ exclude_crates=(
|
|||||||
reth-beacon-consensus
|
reth-beacon-consensus
|
||||||
reth-bench
|
reth-bench
|
||||||
reth-blockchain-tree
|
reth-blockchain-tree
|
||||||
reth-chain-state
|
|
||||||
reth-cli
|
reth-cli
|
||||||
reth-cli-commands
|
reth-cli-commands
|
||||||
reth-cli-runner
|
reth-cli-runner
|
||||||
@ -26,13 +25,11 @@ exclude_crates=(
|
|||||||
reth-dns-discovery
|
reth-dns-discovery
|
||||||
reth-downloaders
|
reth-downloaders
|
||||||
reth-e2e-test-utils
|
reth-e2e-test-utils
|
||||||
reth-engine-primitives
|
|
||||||
reth-engine-service
|
reth-engine-service
|
||||||
reth-engine-tree
|
reth-engine-tree
|
||||||
reth-engine-util
|
reth-engine-util
|
||||||
reth-eth-wire
|
reth-eth-wire
|
||||||
reth-ethereum-cli
|
reth-ethereum-cli
|
||||||
reth-ethereum-engine-primitives
|
|
||||||
reth-ethereum-payload-builder
|
reth-ethereum-payload-builder
|
||||||
reth-etl
|
reth-etl
|
||||||
reth-exex
|
reth-exex
|
||||||
@ -41,7 +38,6 @@ exclude_crates=(
|
|||||||
reth-net-nat
|
reth-net-nat
|
||||||
reth-network
|
reth-network
|
||||||
reth-node-api
|
reth-node-api
|
||||||
reth-node-types
|
|
||||||
reth-node-builder
|
reth-node-builder
|
||||||
reth-node-core
|
reth-node-core
|
||||||
reth-node-ethereum
|
reth-node-ethereum
|
||||||
@ -51,9 +47,6 @@ exclude_crates=(
|
|||||||
reth-optimism-node
|
reth-optimism-node
|
||||||
reth-optimism-payload-builder
|
reth-optimism-payload-builder
|
||||||
reth-optimism-rpc
|
reth-optimism-rpc
|
||||||
reth-payload-builder
|
|
||||||
reth-payload-builder-primitives
|
|
||||||
reth-payload-primitives
|
|
||||||
reth-rpc
|
reth-rpc
|
||||||
reth-rpc-api
|
reth-rpc-api
|
||||||
reth-rpc-api-testing-util
|
reth-rpc-api-testing-util
|
||||||
|
|||||||
8
Cargo.lock
generated
8
Cargo.lock
generated
@ -8479,15 +8479,10 @@ dependencies = [
|
|||||||
name = "reth-payload-builder-primitives"
|
name = "reth-payload-builder-primitives"
|
||||||
version = "1.1.1"
|
version = "1.1.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"alloy-primitives",
|
|
||||||
"alloy-rpc-types-engine",
|
"alloy-rpc-types-engine",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"pin-project",
|
"pin-project",
|
||||||
"reth-errors",
|
|
||||||
"reth-payload-primitives",
|
"reth-payload-primitives",
|
||||||
"reth-transaction-pool",
|
|
||||||
"revm-primitives",
|
|
||||||
"thiserror 1.0.69",
|
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-stream",
|
"tokio-stream",
|
||||||
"tracing",
|
"tracing",
|
||||||
@ -8503,9 +8498,12 @@ dependencies = [
|
|||||||
"op-alloy-rpc-types-engine",
|
"op-alloy-rpc-types-engine",
|
||||||
"reth-chain-state",
|
"reth-chain-state",
|
||||||
"reth-chainspec",
|
"reth-chainspec",
|
||||||
|
"reth-errors",
|
||||||
"reth-primitives",
|
"reth-primitives",
|
||||||
|
"revm-primitives",
|
||||||
"serde",
|
"serde",
|
||||||
"thiserror 1.0.69",
|
"thiserror 1.0.69",
|
||||||
|
"tokio",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
@ -27,7 +27,7 @@ alloy-primitives.workspace = true
|
|||||||
alloy-consensus.workspace = true
|
alloy-consensus.workspace = true
|
||||||
|
|
||||||
# async
|
# 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"] }
|
tokio-stream = { workspace = true, features = ["sync"] }
|
||||||
|
|
||||||
# tracing
|
# tracing
|
||||||
|
|||||||
@ -397,9 +397,11 @@ where
|
|||||||
// only determine cancun fields when active
|
// only determine cancun fields when active
|
||||||
if chain_spec.is_cancun_active_at_timestamp(attributes.timestamp) {
|
if chain_spec.is_cancun_active_at_timestamp(attributes.timestamp) {
|
||||||
// grab the blob sidecars from the executed txs
|
// grab the blob sidecars from the executed txs
|
||||||
blob_sidecars = pool.get_all_blobs_exact(
|
blob_sidecars = pool
|
||||||
executed_txs.iter().filter(|tx| tx.is_eip4844()).map(|tx| tx.hash).collect(),
|
.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) {
|
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();
|
let parent_excess_blob_gas = parent_header.excess_blob_gas.unwrap_or_default();
|
||||||
|
|||||||
@ -13,13 +13,9 @@ workspace = true
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# reth
|
# reth
|
||||||
reth-errors.workspace = true
|
|
||||||
reth-payload-primitives.workspace = true
|
reth-payload-primitives.workspace = true
|
||||||
reth-transaction-pool.workspace = true
|
|
||||||
revm-primitives.workspace = true
|
|
||||||
|
|
||||||
# alloy
|
# alloy
|
||||||
alloy-primitives.workspace = true
|
|
||||||
alloy-rpc-types-engine = { workspace = true, features = ["serde"] }
|
alloy-rpc-types-engine = { workspace = true, features = ["serde"] }
|
||||||
|
|
||||||
# async
|
# async
|
||||||
@ -29,5 +25,4 @@ tokio = { workspace = true, features = ["sync"] }
|
|||||||
tokio-stream.workspace = true
|
tokio-stream.workspace = true
|
||||||
|
|
||||||
# misc
|
# misc
|
||||||
thiserror.workspace = true
|
|
||||||
tracing.workspace = true
|
tracing.workspace = true
|
||||||
|
|||||||
@ -1,58 +0,0 @@
|
|||||||
//! Error types emitted by types or implementations of this crate.
|
|
||||||
|
|
||||||
use alloy_primitives::B256;
|
|
||||||
use reth_errors::{ProviderError, RethError};
|
|
||||||
use reth_transaction_pool::BlobStoreError;
|
|
||||||
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,
|
|
||||||
/// Error occurring in the blob store.
|
|
||||||
#[error(transparent)]
|
|
||||||
BlobStore(#[from] BlobStoreError),
|
|
||||||
/// 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -8,12 +8,11 @@
|
|||||||
#![cfg_attr(not(test), warn(unused_crate_dependencies))]
|
#![cfg_attr(not(test), warn(unused_crate_dependencies))]
|
||||||
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
|
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
|
||||||
|
|
||||||
mod error;
|
|
||||||
pub use error::PayloadBuilderError;
|
|
||||||
|
|
||||||
mod events;
|
mod events;
|
||||||
pub use crate::events::{Events, PayloadEvents};
|
pub use crate::events::{Events, PayloadEvents};
|
||||||
|
|
||||||
/// Contains the payload builder trait to abstract over payload attributes.
|
/// Contains the payload builder trait to abstract over payload attributes.
|
||||||
mod traits;
|
mod traits;
|
||||||
pub use traits::{PayloadBuilder, PayloadStoreExt};
|
pub use traits::{PayloadBuilder, PayloadStoreExt};
|
||||||
|
|
||||||
|
pub use reth_payload_primitives::PayloadBuilderError;
|
||||||
|
|||||||
@ -14,9 +14,12 @@ workspace = true
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
# reth
|
# reth
|
||||||
reth-chainspec.workspace = true
|
reth-chainspec.workspace = true
|
||||||
|
reth-errors.workspace = true
|
||||||
reth-primitives.workspace = true
|
reth-primitives.workspace = true
|
||||||
reth-chain-state.workspace = true
|
reth-chain-state.workspace = true
|
||||||
|
|
||||||
|
revm-primitives.workspace = true
|
||||||
|
|
||||||
# alloy
|
# alloy
|
||||||
alloy-eips.workspace = true
|
alloy-eips.workspace = true
|
||||||
alloy-primitives.workspace = true
|
alloy-primitives.workspace = true
|
||||||
@ -26,6 +29,7 @@ op-alloy-rpc-types-engine = { workspace = true, optional = true }
|
|||||||
# misc
|
# misc
|
||||||
serde.workspace = true
|
serde.workspace = true
|
||||||
thiserror.workspace = true
|
thiserror.workspace = true
|
||||||
|
tokio = { workspace = true, default-features = false, features = ["sync"] }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
op = ["dep:op-alloy-rpc-types-engine"]
|
op = ["dep:op-alloy-rpc-types-engine"]
|
||||||
@ -1,5 +1,58 @@
|
|||||||
//! Error types emitted by types or implementations of this crate.
|
//! 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.
|
/// Thrown when the payload or attributes are known to be invalid before processing.
|
||||||
///
|
///
|
||||||
/// This is used mainly for
|
/// This is used mainly for
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
|
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
|
||||||
|
|
||||||
mod error;
|
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
|
/// Contains traits to abstract over payload attributes types and default implementations of the
|
||||||
/// [`PayloadAttributes`] trait for ethereum mainnet and optimism types.
|
/// [`PayloadAttributes`] trait for ethereum mainnet and optimism types.
|
||||||
|
|||||||
Reference in New Issue
Block a user