From 8cecd4e8bfd568132384e13d0bb146e46770c2c3 Mon Sep 17 00:00:00 2001 From: terence tsao Date: Tue, 15 Mar 2022 07:02:39 -0700 Subject: [PATCH] Log bellatrix fields (#10365) * Log bellatrix fields * Update log.go Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> --- beacon-chain/blockchain/log.go | 19 +++++++++++++++---- beacon-chain/blockchain/log_test.go | 18 +++++++++++++++++- beacon-chain/blockchain/receive_block.go | 4 +++- validator/client/propose.go | 10 ++++++++++ 4 files changed, 45 insertions(+), 6 deletions(-) diff --git a/beacon-chain/blockchain/log.go b/beacon-chain/blockchain/log.go index 38d5a89a65..13ed99a4a8 100644 --- a/beacon-chain/blockchain/log.go +++ b/beacon-chain/blockchain/log.go @@ -6,6 +6,7 @@ import ( "time" "github.com/prysmaticlabs/prysm/config/params" + "github.com/prysmaticlabs/prysm/encoding/bytesutil" ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/block" "github.com/prysmaticlabs/prysm/runtime/version" @@ -17,7 +18,7 @@ import ( var log = logrus.WithField("prefix", "blockchain") // logs state transition related data every slot. -func logStateTransitionData(b block.BeaconBlock) { +func logStateTransitionData(b block.BeaconBlock) error { log := log.WithField("slot", b.Slot()) if len(b.Body().Attestations()) > 0 { log = log.WithField("attestations", len(b.Body().Attestations())) @@ -34,13 +35,23 @@ func logStateTransitionData(b block.BeaconBlock) { if len(b.Body().VoluntaryExits()) > 0 { log = log.WithField("voluntaryExits", len(b.Body().VoluntaryExits())) } - if b.Version() == version.Altair { + if b.Version() == version.Altair || b.Version() == version.Bellatrix { agg, err := b.Body().SyncAggregate() - if err == nil { - log = log.WithField("syncBitsCount", agg.SyncCommitteeBits.Count()) + if err != nil { + return err } + log = log.WithField("syncBitsCount", agg.SyncCommitteeBits.Count()) + } + if b.Version() == version.Bellatrix { + p, err := b.Body().ExecutionPayload() + if err != nil { + return err + } + log = log.WithField("payloadHash", fmt.Sprintf("%#x", bytesutil.Trunc(p.BlockHash))) + log = log.WithField("txCount", len(p.Transactions)) } log.Info("Finished applying state transition") + return nil } func logBlockSyncStatus(block block.BeaconBlock, blockRoot [32]byte, finalized *ethpb.Checkpoint, receivedTime time.Time, genesisTime uint64) error { diff --git a/beacon-chain/blockchain/log_test.go b/beacon-chain/blockchain/log_test.go index 9b4dcbeb5a..1dc517496a 100644 --- a/beacon-chain/blockchain/log_test.go +++ b/beacon-chain/blockchain/log_test.go @@ -3,6 +3,7 @@ package blockchain import ( "testing" + enginev1 "github.com/prysmaticlabs/prysm/proto/engine/v1" ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/block" "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/wrapper" @@ -11,6 +12,17 @@ import ( ) func Test_logStateTransitionData(t *testing.T) { + payloadBlk := ðpb.BeaconBlockBellatrix{ + Body: ðpb.BeaconBlockBodyBellatrix{ + SyncAggregate: ðpb.SyncAggregate{}, + ExecutionPayload: &enginev1.ExecutionPayload{ + BlockHash: []byte{1, 2, 3}, + Transactions: [][]byte{{}, {}}, + }, + }, + } + wrappedPayloadBlk, err := wrapper.WrappedBeaconBlock(payloadBlk) + require.NoError(t, err) tests := []struct { name string b block.BeaconBlock @@ -55,11 +67,15 @@ func Test_logStateTransitionData(t *testing.T) { VoluntaryExits: []*ethpb.SignedVoluntaryExit{{}}}}), want: "\"Finished applying state transition\" attestations=1 attesterSlashings=1 deposits=1 prefix=blockchain proposerSlashings=1 slot=0 voluntaryExits=1", }, + {name: "has payload", + b: wrappedPayloadBlk, + want: "\"Finished applying state transition\" payloadHash=0x010203 prefix=blockchain slot=0 syncBitsCount=0 txCount=2", + }, } for _, tt := range tests { hook := logTest.NewGlobal() t.Run(tt.name, func(t *testing.T) { - logStateTransitionData(tt.b) + require.NoError(t, logStateTransitionData(tt.b)) require.LogsContain(t, hook, tt.want) }) } diff --git a/beacon-chain/blockchain/receive_block.go b/beacon-chain/blockchain/receive_block.go index 14bafc54d0..7892a65693 100644 --- a/beacon-chain/blockchain/receive_block.go +++ b/beacon-chain/blockchain/receive_block.go @@ -64,7 +64,9 @@ func (s *Service) ReceiveBlock(ctx context.Context, block block.SignedBeaconBloc return err } // Log state transition data. - logStateTransitionData(blockCopy.Block()) + if err := logStateTransitionData(blockCopy.Block()); err != nil { + return err + } return nil } diff --git a/validator/client/propose.go b/validator/client/propose.go index f682386e8f..2ac3b4201b 100644 --- a/validator/client/propose.go +++ b/validator/client/propose.go @@ -146,6 +146,16 @@ func (v *validator) ProposeBlock(ctx context.Context, slot types.Slot, pubKey [f trace.Int64Attribute("numAttestations", int64(len(blk.Block().Body().Attestations()))), ) + if blk.Version() == version.Bellatrix { + p, err := blk.Block().Body().ExecutionPayload() + if err != nil { + log.WithError(err).Error("Failed to get execution payload") + return + } + log = log.WithField("payloadHash", fmt.Sprintf("%#x", bytesutil.Trunc(p.BlockHash))) + log = log.WithField("txCount", len(p.Transactions)) + } + blkRoot := fmt.Sprintf("%#x", bytesutil.Trunc(blkResp.BlockRoot)) log.WithFields(logrus.Fields{ "slot": blk.Block().Slot(),