Allow optimistic payload verification for GLOaS envelopes

Remove the OptimisticSyncNotSupported check in into_executed_payload_envelope.
When the EL returns SYNCING (optimistic) for a payload envelope's newPayload
call, the envelope import should proceed rather than being rejected. This
commonly occurs after range sync imports blocks that the EL hasn't yet
validated - subsequent envelopes arriving via gossip would be rejected because
the EL is still catching up.

The downstream import path already handles optimistic status correctly:
- fork choice marks the payload as received regardless of EL status
- the payload_verification_status is propagated to SSE events/metrics
- if the payload is later found invalid, the normal invalidation mechanism
  handles it (same as for blocks)
This commit is contained in:
Eitan Seri-Levi
2026-05-07 14:53:36 +00:00
parent f818612795
commit c52cee9d95

View File

@@ -192,13 +192,11 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
.map_err(BeaconChainError::TokioJoin)?
.ok_or(BeaconChainError::RuntimeShutdown)??;
// TODO(gloas): optimistic sync is not supported for Gloas, maybe we could re-add it
if payload_verification_outcome
.payload_verification_status
.is_optimistic()
{
return Err(BlockError::OptimisticSyncNotSupported { block_root });
}
// NOTE: We allow optimistic (SYNCING) payload verification status here.
// This can happen when the EL is still catching up (e.g., after range sync imports
// blocks that the EL hasn't validated yet). The envelope import will proceed and
// fork choice will mark the payload as received. If the payload is later found to
// be invalid, the normal invalidation mechanism will handle it.
Ok(AvailabilityPendingExecutedEnvelope::new(
signed_envelope,