diff --git a/examples/custom-platform.rs b/examples/custom-platform.rs index 1d4f756..5fab523 100644 --- a/examples/custom-platform.rs +++ b/examples/custom-platform.rs @@ -60,7 +60,7 @@ impl Platform for CustomPlatform { provider: &dyn StateProvider, ) -> Result, PayloadBuilderError> where - P: traits::PlatformExecBounds, + P: traits::PlatformExecCtxBounds, { Optimism::build_payload::

(payload, provider) } diff --git a/src/pipelines/mod.rs b/src/pipelines/mod.rs index 5384f02..0e18c2b 100644 --- a/src/pipelines/mod.rs +++ b/src/pipelines/mod.rs @@ -434,6 +434,19 @@ pub mod traits { > { } + + // equal to `PlatformExecBounds` but with stricter checkpoint context + pub trait PlatformExecCtxBounds: + PlatformExecBounds

+ + Platform> + { + } + + impl PlatformExecCtxBounds for P where + P: PlatformExecBounds + + Platform> + { + } } // internal utilities diff --git a/src/platform/mod.rs b/src/platform/mod.rs index 1be8152..cbef2b2 100644 --- a/src/platform/mod.rs +++ b/src/platform/mod.rs @@ -122,7 +122,7 @@ pub trait Platform: provider: &dyn StateProvider, ) -> Result, PayloadBuilderError> where - P: traits::PlatformExecBounds; + P: traits::PlatformExecCtxBounds; } /// This is an optional extension trait for platforms that want to provide info diff --git a/src/platform/optimism/mod.rs b/src/platform/optimism/mod.rs index 18e198e..60993c7 100644 --- a/src/platform/optimism/mod.rs +++ b/src/platform/optimism/mod.rs @@ -93,7 +93,7 @@ impl Platform for Optimism { provider: &dyn StateProvider, ) -> Result, PayloadBuilderError> where - P: traits::PlatformExecBounds, + P: traits::PlatformExecCtxBounds, { let block = payload.block(); let transactions = extract_external_txs(&payload); diff --git a/src/platform/types.rs b/src/platform/types.rs index 48caa6e..b3222b2 100644 --- a/src/platform/types.rs +++ b/src/platform/types.rs @@ -103,6 +103,9 @@ pub type DefaultLimits = P::DefaultLimits; /// Extracts the type that can provide additional limits. pub type ExtraLimits = P::ExtraLimits; +/// Extracts the type that contains the checkpoint context. +pub type CheckpointContext = P::CheckpointContext; + /// The result of executing a transaction in the EVM. pub type TransactionExecutionResult = ExecutionResult>;