From 22e01aa9f249df130b8ee0a2ee96fac0581b1162 Mon Sep 17 00:00:00 2001 From: terence tsao Date: Sun, 12 Jan 2020 14:32:33 -0800 Subject: [PATCH] Filter attestation with ProcessAttestationNoSignatureVerify (#4513) * Use no sig verify and comment * Fixed all tests Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> --- beacon-chain/rpc/validator/proposer.go | 6 +++++- beacon-chain/rpc/validator/proposer_test.go | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/beacon-chain/rpc/validator/proposer.go b/beacon-chain/rpc/validator/proposer.go index ecb05e4bc29..2706a04ecac 100644 --- a/beacon-chain/rpc/validator/proposer.go +++ b/beacon-chain/rpc/validator/proposer.go @@ -358,7 +358,11 @@ func (vs *Server) filterAttestationsForBlockInclusion(ctx context.Context, slot break } - if _, err := blocks.ProcessAttestation(ctx, bState, att); err != nil { + // TODO(4512): Until we align bls lib to latest IETF spec with `FastAggregateVerify`, + // we assume complete honest model and skip attestation's signature verification before + // including in block. We do verify everything about the attestation and just not + // its signature. + if _, err := blocks.ProcessAttestationNoVerify(ctx, bState, att); err != nil { inValidAtts = append(inValidAtts, att) continue diff --git a/beacon-chain/rpc/validator/proposer_test.go b/beacon-chain/rpc/validator/proposer_test.go index 0fd6131216d..259f512d779 100644 --- a/beacon-chain/rpc/validator/proposer_test.go +++ b/beacon-chain/rpc/validator/proposer_test.go @@ -1050,7 +1050,7 @@ func TestFilterAttestation_OK(t *testing.T) { aggBits.SetBitAt(0, true) atts[i] = ðpb.Attestation{Data: ðpb.AttestationData{ CommitteeIndex: uint64(i), - Target: ðpb.Checkpoint{}, + Target: ðpb.Checkpoint{Epoch: 1}, Source: ðpb.Checkpoint{Root: params.BeaconConfig().ZeroHash[:]}}, AggregationBits: aggBits, } @@ -1075,7 +1075,7 @@ func TestFilterAttestation_OK(t *testing.T) { } atts[i].Signature = bls.AggregateSignatures(sigs).Marshal()[:] } - + atts[0].Data.Target.Epoch = 0 received, err = proposerServer.filterAttestationsForBlockInclusion(context.Background(), 1, atts) if err != nil { t.Fatal(err)