pub struct BuildTask {
pub engine: Arc<EngineClient>,
pub cfg: Arc<RollupConfig>,
pub attributes: OpAttributesWithParent,
pub is_attributes_derived: bool,
pub payload_tx: Option<Sender<OpExecutionPayloadEnvelope>>,
}Expand description
Task for building new blocks with automatic forkchoice synchronization.
The BuildTask handles the complete block building workflow, including:
- Automatic Forkchoice Updates: Performs initial
engine_forkchoiceUpdatedcall with payload attributes to initiate block building on the execution layer - Payload Construction: Retrieves the built payload using
engine_getPayload - Block Import: Imports the payload using
InsertTaskfor canonicalization
§Forkchoice Integration
Unlike previous versions where forkchoice updates required separate tasks,
BuildTask now handles forkchoice synchronization automatically as part of
the block building process. This eliminates the need for explicit forkchoice
management and ensures atomic block building operations.
§Error Handling
The task uses EngineBuildError for build-specific failures during the forkchoice
update phase, and delegates to InsertTaskError for payload import failures.
Fields§
§engine: Arc<EngineClient>The engine API client.
cfg: Arc<RollupConfig>The RollupConfig.
attributes: OpAttributesWithParentThe OpAttributesWithParent to instruct the execution layer to build.
is_attributes_derived: boolWhether or not the payload was derived, or created by the sequencer.
payload_tx: Option<Sender<OpExecutionPayloadEnvelope>>An optional channel to send the built OpExecutionPayloadEnvelope to, after the block
has been built, imported, and canonicalized.
Implementations§
Source§impl BuildTask
impl BuildTask
Sourcepub const fn new(
engine: Arc<EngineClient>,
cfg: Arc<RollupConfig>,
attributes: OpAttributesWithParent,
is_attributes_derived: bool,
payload_tx: Option<Sender<OpExecutionPayloadEnvelope>>,
) -> Self
pub const fn new( engine: Arc<EngineClient>, cfg: Arc<RollupConfig>, attributes: OpAttributesWithParent, is_attributes_derived: bool, payload_tx: Option<Sender<OpExecutionPayloadEnvelope>>, ) -> Self
Creates a new block building task.
Trait Implementations§
Source§impl EngineTaskExt for BuildTask
impl EngineTaskExt for BuildTask
Source§type Error = BuildTaskError
type Error = BuildTaskError
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 mut EngineState,
) -> Pin<Box<dyn Future<Output = Result<(), BuildTaskError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 mut EngineState,
) -> Pin<Box<dyn Future<Output = Result<(), BuildTaskError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
self.Auto Trait Implementations§
impl Freeze for BuildTask
impl !RefUnwindSafe for BuildTask
impl Send for BuildTask
impl Sync for BuildTask
impl Unpin for BuildTask
impl !UnwindSafe for BuildTask
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more