Skip to content

Commit

Permalink
fix broken conditional checks
Browse files Browse the repository at this point in the history
  • Loading branch information
nisdas committed Mar 14, 2022
1 parent d197a70 commit e118db6
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 21 deletions.
16 changes: 4 additions & 12 deletions beacon-chain/blockchain/optimistic_sync.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
"github.com/prysmaticlabs/prysm/config/params"
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
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/runtime/version"
"github.com/sirupsen/logrus"
Expand Down Expand Up @@ -80,7 +79,7 @@ func (s *Service) notifyForkchoiceUpdate(ctx context.Context, headBlk block.Beac
}

// notifyForkchoiceUpdate signals execution engine on a new payload
func (s *Service) notifyNewPayload(ctx context.Context, preStateVersion int, header *ethpb.ExecutionPayloadHeader, postState state.BeaconState, blk block.SignedBeaconBlock) error {
func (s *Service) notifyNewPayload(ctx context.Context, preStateIsMerged, postStateIsMerged bool, postState state.BeaconState, blk block.SignedBeaconBlock) error {
if postState == nil {
return errors.New("pre and post states must not be nil")
}
Expand All @@ -92,11 +91,7 @@ func (s *Service) notifyNewPayload(ctx context.Context, preStateVersion int, hea
return err
}
body := blk.Block().Body()
enabled, err := blocks.ExecutionEnabled(postState, blk.Block().Body())
if err != nil {
return errors.Wrap(err, "could not determine if execution is enabled")
}
if !enabled {
if !postStateIsMerged {
return nil
}
payload, err := body.ExecutionPayload()
Expand All @@ -118,13 +113,10 @@ func (s *Service) notifyNewPayload(ctx context.Context, preStateVersion int, hea
}

// During the transition event, the transition block should be verified for sanity.
if isPreBellatrix(preStateVersion) {
if isPreBellatrix(postState.Version()) {
return nil
}
atTransition, err := blocks.IsMergeTransitionBlockUsingPayloadHeader(header, body)
if err != nil {
return errors.Wrap(err, "could not check if merge block is terminal")
}
atTransition := !preStateIsMerged && postStateIsMerged
if !atTransition {
return nil
}
Expand Down
36 changes: 27 additions & 9 deletions beacon-chain/blockchain/process_block.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"time"

"github.com/pkg/errors"
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
"github.com/prysmaticlabs/prysm/beacon-chain/core/feed"
statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state"
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
Expand Down Expand Up @@ -98,16 +99,24 @@ func (s *Service) onBlock(ctx context.Context, signed block.SignedBeaconBlock, b
if err != nil {
return err
}

preStateVersion, preStateHeader, err := getStateVersionAndPayload(preState)
if err != nil {
return err
preStateIsMerged, postStateIsMerged := false, false
if preState.Version() >= version.Bellatrix {
preStateIsMerged, err = blocks.MergeTransitionComplete(preState)
if err != nil {
return err
}
}
postState, err := transition.ExecuteStateTransition(ctx, preState, signed)
if err != nil {
return err
}
if err := s.notifyNewPayload(ctx, preStateVersion, preStateHeader, postState, signed); err != nil {
if postState.Version() >= version.Bellatrix {
postStateIsMerged, err = blocks.MergeTransitionComplete(postState)
if err != nil {
return err
}
}
if err := s.notifyNewPayload(ctx, preStateIsMerged, postStateIsMerged, postState, signed); err != nil {
return errors.Wrap(err, "could not verify new payload")
}
// TODO(10261) Check optimistic status
Expand Down Expand Up @@ -310,15 +319,24 @@ func (s *Service) onBlockBatch(ctx context.Context, blks []block.SignedBeaconBlo
var set *bls.SignatureBatch
boundaries := make(map[[32]byte]state.BeaconState)
for i, b := range blks {
preStateVersion, preStateHeader, err := getStateVersionAndPayload(preState)
if err != nil {
return nil, nil, nil, err
preStateIsMerged, postStateIsMerged := false, false
if preState.Version() >= version.Bellatrix {
preStateIsMerged, err = blocks.MergeTransitionComplete(preState)
if err != nil {
return nil, nil, nil, err
}
}
set, preState, err = transition.ExecuteStateTransitionNoVerifyAnySig(ctx, preState, b)
if err != nil {
return nil, nil, nil, err
}
if err := s.notifyNewPayload(ctx, preStateVersion, preStateHeader, preState, b); err != nil {
if preState.Version() >= version.Bellatrix {
postStateIsMerged, err = blocks.MergeTransitionComplete(preState)
if err != nil {
return nil, nil, nil, err
}
}
if err := s.notifyNewPayload(ctx, preStateIsMerged, postStateIsMerged, preState, b); err != nil {
return nil, nil, nil, err
}

Expand Down

0 comments on commit e118db6

Please sign in to comment.