From e66a5c30b73316439237b84ea24a809694b87f7c Mon Sep 17 00:00:00 2001 From: Eitan Seri-Levi Date: Fri, 22 May 2026 16:15:11 +0300 Subject: [PATCH 1/2] Post gloas we cannot enforce that peers who have imported a block also have columns available --- .../network/src/sync/network_context/custody.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/beacon_node/network/src/sync/network_context/custody.rs b/beacon_node/network/src/sync/network_context/custody.rs index 620962b40b..af92e04f7d 100644 --- a/beacon_node/network/src/sync/network_context/custody.rs +++ b/beacon_node/network/src/sync/network_context/custody.rs @@ -305,7 +305,16 @@ impl ActiveCustodyRequest { // must have its columns in custody. In that case, set `true = enforce max_requests` // and downscore if data_columns_by_root does not return the expected custody // columns. For the rest of peers, don't downscore if columns are missing. - lookup_peers.contains(&peer_id), + // + // Post-Gloas, blocks and payload envelopes are decoupled. A peer may + // have the block but not yet imported the envelope and data columns. + // Don't enforce max_responses in this case. + lookup_peers.contains(&peer_id) + && !cx + .chain + .spec + .fork_name_at_epoch(cx.chain.epoch().unwrap_or_default()) + .gloas_enabled(), ) .map_err(Error::SendFailed)?; From c2004854c95ba8595d4aebcf0789a021604f9016 Mon Sep 17 00:00:00 2001 From: Eitan Seri-Levi Date: Sun, 24 May 2026 09:45:44 +0300 Subject: [PATCH 2/2] cleanup --- beacon_node/network/src/sync/network_context/custody.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/beacon_node/network/src/sync/network_context/custody.rs b/beacon_node/network/src/sync/network_context/custody.rs index af92e04f7d..2b96800e37 100644 --- a/beacon_node/network/src/sync/network_context/custody.rs +++ b/beacon_node/network/src/sync/network_context/custody.rs @@ -310,11 +310,7 @@ impl ActiveCustodyRequest { // have the block but not yet imported the envelope and data columns. // Don't enforce max_responses in this case. lookup_peers.contains(&peer_id) - && !cx - .chain - .spec - .fork_name_at_epoch(cx.chain.epoch().unwrap_or_default()) - .gloas_enabled(), + && !cx.fork_context.current_fork_name().gloas_enabled(), ) .map_err(Error::SendFailed)?;