diff --git a/packages/beacon-node/src/network/processor/index.ts b/packages/beacon-node/src/network/processor/index.ts index ea26d58259c2..e3588c6ff0c4 100644 --- a/packages/beacon-node/src/network/processor/index.ts +++ b/packages/beacon-node/src/network/processor/index.ts @@ -185,8 +185,8 @@ export class NetworkProcessor { // we may not receive the block for messages like Attestation and SignedAggregateAndProof messages, in that case PendingGossipsubMessage needs // to be stored in this Map and reprocessed once the block comes private readonly awaitingMessagesByBlockRoot: MapDef>; - // we may not receive the payload for messages like payload_attestation_message messages, in that case PendingGossipsubMessage needs - // to be stored in this Map and reprocessed once the payload comes + // we may not receive the payload for messages that require the FULL payload variant to be processed, + // in that case PendingGossipsubMessage needs to be stored in this Map and reprocessed once the payload comes private readonly awaitingMessagesByPayloadBlockRoot: MapDef>; private unknownBlocksBySlot = new MapDef>(() => new Set()); private unknownEnvelopesBySlot = new MapDef>(() => new Set()); @@ -417,12 +417,14 @@ export class NetworkProcessor { if (root == null) break; const payloadPresent = getPayloadPresentFromPayloadAttestationMessageSerialized(message.msg.data); if (payloadPresent && !this.chain.forkChoice.hasPayloadHexUnsafe(root)) { + // payload attestation votes that the payload is available but it is not yet known this.searchUnknownEnvelope( {slot, root}, BlockInputSource.network_processor, message.propagationSource.toString() ); - preprocessResult = {action: PreprocessAction.AwaitEnvelope, root}; + // do not await the envelope, payload attestation processing only requires that the block is known + // also do not reset preprocessResult, we may already await for the block } break; }