diff --git a/crates/engine/tree/src/tree/mod.rs b/crates/engine/tree/src/tree/mod.rs index a353883da5..4c81cb403f 100644 --- a/crates/engine/tree/src/tree/mod.rs +++ b/crates/engine/tree/src/tree/mod.rs @@ -456,12 +456,21 @@ where } } + /// Attempts to make the given target canonical. + /// + /// This will update the tracked canonical in memory state and do the necessary housekeeping. + const fn make_canonical(&self, target: B256) { + // TODO: implement state updates and shift canonical state + } + /// Handles a tree event. fn on_tree_event(&self, event: TreeEvent) { match event { - TreeEvent::TreeAction(action) => { - // TODO: handle - } + TreeEvent::TreeAction(action) => match action { + TreeAction::MakeCanonical(target) => { + self.make_canonical(target); + } + }, TreeEvent::BackfillAction(action) => { self.emit_event(EngineApiEvent::BackfillAction(action)); } @@ -977,6 +986,9 @@ where ) -> ProviderResult> { if let Some(on_updated) = self.pre_validate_forkchoice_update(state)? { self.state.forkchoice_state_tracker.set_latest(state, on_updated.forkchoice_status()); + + // TODO: make canonical and process payload attributes if valid + return Ok(TreeOutcome::new(on_updated)) }