From fa33577bce79581bf8450ecccff63d84e61d13d9 Mon Sep 17 00:00:00 2001 From: Eitan Seri- Levi Date: Wed, 4 Feb 2026 11:19:30 -0800 Subject: [PATCH] Remove TODO --- beacon_node/beacon_chain/src/beacon_chain.rs | 36 +++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index 77a252b9e2..1a0e1cb702 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -22,10 +22,12 @@ pub use crate::canonical_head::CanonicalHead; use crate::chain_config::ChainConfig; use crate::custody_context::CustodyContextSsz; use crate::data_availability_checker::{ - Availability, AvailabilityCheckError, AvailableBlock, AvailableBlockData, + Availability as BlockAvailability, AvailabilityCheckError, AvailableBlock, AvailableBlockData, DataAvailabilityChecker, DataColumnReconstructionResult, }; -use crate::data_availability_checker_v2::DataAvailabilityChecker as DataAvailabilityCheckerV2; +use crate::data_availability_checker_v2::{ + Availability as PayloadAvailability, DataAvailabilityChecker as DataAvailabilityCheckerV2, +}; use crate::data_availability_router::{ AvailabilityOutcome, DataAvailabilityRouter, ReconstructionOutcome, }; @@ -3792,20 +3794,44 @@ impl BeaconChain { match availability { AvailabilityOutcome::Block(availability) => { match availability { - Availability::Available(block) => { + BlockAvailability::Available(block) => { publish_fn()?; // Block is fully available, import into fork choice self.import_available_block(block).await } - Availability::MissingComponents(block_root) => Ok( + BlockAvailability::MissingComponents(block_root) => Ok( AvailabilityProcessingStatus::MissingComponents(slot, block_root), ), } } - AvailabilityOutcome::Payload(_availability) => todo!(), + AvailabilityOutcome::Payload(availability) => match availability { + PayloadAvailability::Available(available_payload_data) => { + // TODO(gloas) execution publish_fn + // publish_fn()?; + + // Payload data is fully available + let (block_root, data_columns) = *available_payload_data; + self.import_available_payload_data(block_root, data_columns) + .await + } + PayloadAvailability::MissingComponents(block_root) => Ok( + AvailabilityProcessingStatus::MissingComponents(slot, block_root), + ), + }, } } + #[instrument(skip_all)] + pub async fn import_available_payload_data( + self: &Arc, + block_root: Hash256, + _data_columns: Vec>>, + ) -> Result { + // TODO(gloas) this is just a stub implementation + // this function should mark payload data as available somehow + Ok(AvailabilityProcessingStatus::Imported(block_root)) + } + #[instrument(skip_all)] pub async fn import_available_block( self: &Arc,