From 603aae8adc2afda686f3de468391d0cf64a14d90 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Thu, 28 Nov 2024 17:36:41 +0100 Subject: [PATCH 1/6] fix: return correct type from attestation validation when using cache --- .../src/chain/validation/attestation.ts | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/packages/beacon-node/src/chain/validation/attestation.ts b/packages/beacon-node/src/chain/validation/attestation.ts index 305cbba3fbd..1ee9d869485 100644 --- a/packages/beacon-node/src/chain/validation/attestation.ts +++ b/packages/beacon-node/src/chain/validation/attestation.ts @@ -510,27 +510,31 @@ async function validateAttestationNoSignatureCheck( } // no signature check, leave that for step1 - const indexedAttestationContent = { + const indexedAttestation: IndexedAttestation = { attestingIndices, data: attData, signature, }; - const indexedAttestation = - ForkSeq[fork] >= ForkSeq.electra - ? (indexedAttestationContent as electra.IndexedAttestation) - : (indexedAttestationContent as phase0.IndexedAttestation); - const attestationContent = attestationOrCache.attestation ?? { - aggregationBits, - data: attData, - committeeIndex, - signature, - }; - - const attestation = - ForkSeq[fork] >= ForkSeq.electra - ? (attestationContent as SingleAttestation) - : (attestationContent as SingleAttestation); + let attestation: SingleAttestation; + if (attestationOrCache.attestation) { + attestation = attestationOrCache.attestation; + } else { + if (!isForkPostElectra(fork)) { + attestation = { + aggregationBits, + data: attData, + signature, + } as SingleAttestation; + } else { + attestation = { + committeeIndex, + attesterIndex: validatorIndex, + data: attData, + signature, + } as SingleAttestation; + } + } return { attestation, From 33255b300c3cafdac993c8c09ca25139d9733e41 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Fri, 29 Nov 2024 11:10:47 +0100 Subject: [PATCH 2/6] Remove type casts --- packages/beacon-node/src/chain/validation/attestation.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/beacon-node/src/chain/validation/attestation.ts b/packages/beacon-node/src/chain/validation/attestation.ts index 1ee9d869485..a09866603f8 100644 --- a/packages/beacon-node/src/chain/validation/attestation.ts +++ b/packages/beacon-node/src/chain/validation/attestation.ts @@ -525,14 +525,14 @@ async function validateAttestationNoSignatureCheck( aggregationBits, data: attData, signature, - } as SingleAttestation; + }; } else { attestation = { committeeIndex, attesterIndex: validatorIndex, data: attData, signature, - } as SingleAttestation; + }; } } From bdaf3b049c35de9dff0f0fa4831339ad954e16a5 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Fri, 29 Nov 2024 11:13:35 +0100 Subject: [PATCH 3/6] Remove unused import --- packages/beacon-node/src/chain/validation/attestation.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/beacon-node/src/chain/validation/attestation.ts b/packages/beacon-node/src/chain/validation/attestation.ts index a09866603f8..bfe9e540d9c 100644 --- a/packages/beacon-node/src/chain/validation/attestation.ts +++ b/packages/beacon-node/src/chain/validation/attestation.ts @@ -30,7 +30,6 @@ import { SingleAttestation, Slot, ValidatorIndex, - electra, isElectraSingleAttestation, phase0, ssz, From 73b6c0cc94b60cbfc969df762bbe84ddbdf9226f Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Fri, 29 Nov 2024 11:16:32 +0100 Subject: [PATCH 4/6] Use ternary operator instead of if-else --- .../src/chain/validation/attestation.ts | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/packages/beacon-node/src/chain/validation/attestation.ts b/packages/beacon-node/src/chain/validation/attestation.ts index bfe9e540d9c..f2699c14d57 100644 --- a/packages/beacon-node/src/chain/validation/attestation.ts +++ b/packages/beacon-node/src/chain/validation/attestation.ts @@ -515,25 +515,20 @@ async function validateAttestationNoSignatureCheck( signature, }; - let attestation: SingleAttestation; - if (attestationOrCache.attestation) { - attestation = attestationOrCache.attestation; - } else { - if (!isForkPostElectra(fork)) { - attestation = { - aggregationBits, - data: attData, - signature, - }; - } else { - attestation = { - committeeIndex, - attesterIndex: validatorIndex, - data: attData, - signature, - }; - } - } + const attestation: SingleAttestation = attestationOrCache.attestation + ? attestationOrCache.attestation + : !isForkPostElectra(fork) + ? { + aggregationBits, + data: attData, + signature, + } + : { + committeeIndex, + attesterIndex: validatorIndex, + data: attData, + signature, + }; return { attestation, From 0b5bcb38de2b7b9d46029d25bbcc096e2c7e2e97 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Fri, 29 Nov 2024 13:03:58 +0100 Subject: [PATCH 5/6] Fix aggregationBits type issue --- packages/beacon-node/src/chain/validation/attestation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/beacon-node/src/chain/validation/attestation.ts b/packages/beacon-node/src/chain/validation/attestation.ts index f2699c14d57..f1713bb065e 100644 --- a/packages/beacon-node/src/chain/validation/attestation.ts +++ b/packages/beacon-node/src/chain/validation/attestation.ts @@ -519,7 +519,7 @@ async function validateAttestationNoSignatureCheck( ? attestationOrCache.attestation : !isForkPostElectra(fork) ? { - aggregationBits, + aggregationBits: aggregationBits as BitArray, data: attData, signature, } From e0be1ea648eb60520e3f5178aeaf689c31b9a42a Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Fri, 29 Nov 2024 16:25:37 +0100 Subject: [PATCH 6/6] Add comment --- packages/beacon-node/src/chain/validation/attestation.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/beacon-node/src/chain/validation/attestation.ts b/packages/beacon-node/src/chain/validation/attestation.ts index 438f8284a15..df57a685501 100644 --- a/packages/beacon-node/src/chain/validation/attestation.ts +++ b/packages/beacon-node/src/chain/validation/attestation.ts @@ -523,6 +523,7 @@ async function validateAttestationNoSignatureCheck( ? attestationOrCache.attestation : !isForkPostElectra(fork) ? { + // Aggregation bits are already asserted above to not be null aggregationBits: aggregationBits as BitArray, data: attData, signature,