From 9c2c665e92de3be8b3955ac08f013e75ae40b5dd Mon Sep 17 00:00:00 2001 From: Potuz Date: Fri, 16 Sep 2022 13:05:30 -0300 Subject: [PATCH] Remove optimistic sync candidate check (#11453) * Remove optimistic sync candidate check Since we know we have merged and the chain has advanced 128 slots, there's no possible forkchoice Poissoning attack anymore, removing the check and allowing any block to be imported optimistically. * fix test * fix test Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> --- beacon-chain/blockchain/execution_engine.go | 37 +---- .../blockchain/execution_engine_test.go | 150 ------------------ beacon-chain/blockchain/process_block_test.go | 8 - beacon-chain/node/config.go | 11 -- beacon-chain/node/config_test.go | 14 -- beacon-chain/node/node.go | 3 - beacon-chain/rpc/eth/beacon/config_test.go | 2 - config/params/config.go | 32 ++-- config/params/configset_test.go | 1 - config/params/mainnet_config.go | 1 - config/params/testnet_config_test.go | 1 - 11 files changed, 17 insertions(+), 243 deletions(-) diff --git a/beacon-chain/blockchain/execution_engine.go b/beacon-chain/blockchain/execution_engine.go index 661cd5290c..e41b448034 100644 --- a/beacon-chain/blockchain/execution_engine.go +++ b/beacon-chain/blockchain/execution_engine.go @@ -83,10 +83,6 @@ func (s *Service) notifyForkchoiceUpdate(ctx context.Context, arg *notifyForkcho "headPayloadBlockHash": fmt.Sprintf("%#x", bytesutil.Trunc(headPayload.BlockHash())), "finalizedPayloadBlockHash": fmt.Sprintf("%#x", bytesutil.Trunc(finalizedHash[:])), }).Info("Called fork choice updated with optimistic block") - err := s.optimisticCandidateBlock(ctx, headBlk) - if err != nil { - log.WithError(err).Error("Optimistic block failed to be candidate") - } return payloadID, nil case execution.ErrInvalidPayloadStatus: forkchoiceUpdatedInvalidNodeCount.Inc() @@ -222,7 +218,7 @@ func (s *Service) notifyNewPayload(ctx context.Context, postStateVersion int, "slot": blk.Block().Slot(), "payloadBlockHash": fmt.Sprintf("%#x", bytesutil.Trunc(payload.BlockHash())), }).Info("Called new payload with optimistic block") - return false, s.optimisticCandidateBlock(ctx, blk.Block()) + return false, nil case execution.ErrInvalidPayloadStatus: newPayloadInvalidNodeCount.Inc() root, err := blk.Block().HashTreeRoot() @@ -253,37 +249,6 @@ func (s *Service) notifyNewPayload(ctx context.Context, postStateVersion int, } } -// optimisticCandidateBlock returns an error if this block can't be optimistically synced. -// It replaces boolean in spec code with `errNotOptimisticCandidate`. -// -// Spec pseudocode definition: -// def is_optimistic_candidate_block(opt_store: OptimisticStore, current_slot: Slot, block: BeaconBlock) -> bool: -// if is_execution_block(opt_store.blocks[block.parent_root]): -// return True -// -// if block.slot + SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY <= current_slot: -// return True -// -// return False -func (s *Service) optimisticCandidateBlock(ctx context.Context, blk interfaces.BeaconBlock) error { - if blk.Slot()+params.BeaconConfig().SafeSlotsToImportOptimistically <= s.CurrentSlot() { - return nil - } - parent, err := s.getBlock(ctx, blk.ParentRoot()) - if err != nil { - return err - } - parentIsExecutionBlock, err := blocks.IsExecutionBlock(parent.Block().Body()) - if err != nil { - return err - } - if parentIsExecutionBlock { - return nil - } - - return errNotOptimisticCandidate -} - // getPayloadAttributes returns the payload attributes for the given state and slot. // The attribute is required to initiate a payload build process in the context of an `engine_forkchoiceUpdated` call. func (s *Service) getPayloadAttribute(ctx context.Context, st state.BeaconState, slot types.Slot) (bool, *enginev1.PayloadAttributes, types.ValidatorIndex, error) { diff --git a/beacon-chain/blockchain/execution_engine_test.go b/beacon-chain/blockchain/execution_engine_test.go index 8eff36f797..9ffd50d9eb 100644 --- a/beacon-chain/blockchain/execution_engine_test.go +++ b/beacon-chain/blockchain/execution_engine_test.go @@ -32,7 +32,6 @@ import ( ) func Test_NotifyForkchoiceUpdate(t *testing.T) { - params.BeaconConfig().SafeSlotsToImportOptimistically = 0 ctx := context.Background() beaconDB := testDB.SetupDB(t) altairBlk := util.SaveBlock(t, ctx, beaconDB, util.NewBeaconBlockAltair()) @@ -862,155 +861,6 @@ func Test_NotifyNewPayload_SetOptimisticToValid(t *testing.T) { require.Equal(t, true, validated) } -func Test_IsOptimisticCandidateBlock(t *testing.T) { - params.SetupTestConfigCleanup(t) - params.OverrideBeaconConfig(params.MainnetConfig()) - - ctx := context.Background() - beaconDB := testDB.SetupDB(t) - fcs := doublylinkedtree.New() - opts := []Option{ - WithDatabase(beaconDB), - WithStateGen(stategen.New(beaconDB)), - WithForkChoiceStore(fcs), - } - - service, err := NewService(ctx, opts...) - require.NoError(t, err) - - params.BeaconConfig().SafeSlotsToImportOptimistically = 128 - service.genesisTime = time.Now().Add(-time.Second * 12 * 2 * 128) - - parentBlk := util.NewBeaconBlockBellatrix() - wrappedParentBlock, err := consensusblocks.NewSignedBeaconBlock(parentBlk) - require.NoError(t, err) - parentRoot, err := wrappedParentBlock.Block().HashTreeRoot() - require.NoError(t, err) - - tests := []struct { - name string - blk interfaces.BeaconBlock - justified interfaces.SignedBeaconBlock - err error - }{ - { - name: "deep block", - blk: func(tt *testing.T) interfaces.BeaconBlock { - blk := util.NewBeaconBlockBellatrix() - blk.Block.Slot = 1 - blk.Block.ParentRoot = parentRoot[:] - wr, err := consensusblocks.NewBeaconBlock(blk.Block) - require.NoError(tt, err) - return wr - }(t), - justified: func(tt *testing.T) interfaces.SignedBeaconBlock { - blk := util.NewBeaconBlockBellatrix() - blk.Block.Slot = 32 - blk.Block.ParentRoot = parentRoot[:] - wr, err := consensusblocks.NewSignedBeaconBlock(blk) - require.NoError(tt, err) - return wr - }(t), - err: nil, - }, - { - name: "shallow block, Altair justified chkpt", - blk: func(tt *testing.T) interfaces.BeaconBlock { - blk := util.NewBeaconBlockAltair() - blk.Block.Slot = 200 - blk.Block.ParentRoot = parentRoot[:] - wr, err := consensusblocks.NewBeaconBlock(blk.Block) - require.NoError(tt, err) - return wr - }(t), - justified: func(tt *testing.T) interfaces.SignedBeaconBlock { - blk := util.NewBeaconBlockAltair() - blk.Block.Slot = 32 - blk.Block.ParentRoot = parentRoot[:] - wr, err := consensusblocks.NewSignedBeaconBlock(blk) - require.NoError(tt, err) - return wr - }(t), - err: errNotOptimisticCandidate, - }, - { - name: "shallow block, Bellatrix justified chkpt without execution", - blk: func(tt *testing.T) interfaces.BeaconBlock { - blk := util.NewBeaconBlockBellatrix() - blk.Block.Slot = 200 - blk.Block.ParentRoot = parentRoot[:] - wr, err := consensusblocks.NewBeaconBlock(blk.Block) - require.NoError(tt, err) - return wr - }(t), - justified: func(tt *testing.T) interfaces.SignedBeaconBlock { - blk := util.NewBeaconBlockBellatrix() - blk.Block.Slot = 32 - blk.Block.ParentRoot = parentRoot[:] - wr, err := consensusblocks.NewSignedBeaconBlock(blk) - require.NoError(tt, err) - return wr - }(t), - err: errNotOptimisticCandidate, - }, - } - for _, tt := range tests { - require.NoError(t, service.cfg.BeaconDB.SaveBlock(ctx, tt.justified)) - require.NoError(t, service.cfg.BeaconDB.SaveBlock(ctx, wrappedParentBlock)) - - err = service.optimisticCandidateBlock(ctx, tt.blk) - if tt.err != nil { - require.Equal(t, tt.err.Error(), err.Error()) - } else { - require.NoError(t, err) - } - } -} - -func Test_IsOptimisticShallowExecutionParent(t *testing.T) { - params.SetupTestConfigCleanup(t) - params.OverrideBeaconConfig(params.MainnetConfig()) - - ctx := context.Background() - beaconDB := testDB.SetupDB(t) - opts := []Option{ - WithDatabase(beaconDB), - WithStateGen(stategen.New(beaconDB)), - } - - service, err := NewService(ctx, opts...) - require.NoError(t, err) - - params.BeaconConfig().SafeSlotsToImportOptimistically = 128 - service.genesisTime = time.Now().Add(-time.Second * 12 * 2 * 128) - payload := &v1.ExecutionPayload{ - ParentHash: make([]byte, 32), - FeeRecipient: make([]byte, 20), - StateRoot: make([]byte, 32), - ReceiptsRoot: make([]byte, 32), - LogsBloom: make([]byte, 256), - PrevRandao: make([]byte, 32), - BaseFeePerGas: bytesutil.PadTo([]byte{1, 2, 3, 4}, fieldparams.RootLength), - BlockHash: make([]byte, 32), - BlockNumber: 100, - } - body := ðpb.BeaconBlockBodyBellatrix{ExecutionPayload: payload} - b := ðpb.BeaconBlockBellatrix{Body: body, Slot: 200} - rawSigned := ðpb.SignedBeaconBlockBellatrix{Block: b} - blk := util.HydrateSignedBeaconBlockBellatrix(rawSigned) - wr := util.SaveBlock(t, ctx, service.cfg.BeaconDB, blk) - blkRoot, err := wr.Block().HashTreeRoot() - require.NoError(t, err) - - childBlock := util.NewBeaconBlockBellatrix() - childBlock.Block.ParentRoot = blkRoot[:] - // shallow block - childBlock.Block.Slot = 201 - wrappedChild := util.SaveBlock(t, ctx, service.cfg.BeaconDB, childBlock) - err = service.optimisticCandidateBlock(ctx, wrappedChild.Block()) - require.NoError(t, err) -} - func Test_GetPayloadAttribute(t *testing.T) { ctx := context.Background() beaconDB := testDB.SetupDB(t) diff --git a/beacon-chain/blockchain/process_block_test.go b/beacon-chain/blockchain/process_block_test.go index 23ce1b0fa8..94f81d1c6f 100644 --- a/beacon-chain/blockchain/process_block_test.go +++ b/beacon-chain/blockchain/process_block_test.go @@ -1820,7 +1820,6 @@ func TestStore_NoViableHead_FCU_Protoarray(t *testing.T) { config.SlotsPerEpoch = 6 config.AltairForkEpoch = 1 config.BellatrixForkEpoch = 2 - config.SafeSlotsToImportOptimistically = 0 params.OverrideBeaconConfig(config) ctx := context.Background() @@ -1980,7 +1979,6 @@ func TestStore_NoViableHead_FCU_DoublyLinkedTree(t *testing.T) { config.SlotsPerEpoch = 6 config.AltairForkEpoch = 1 config.BellatrixForkEpoch = 2 - config.SafeSlotsToImportOptimistically = 0 params.OverrideBeaconConfig(config) ctx := context.Background() @@ -2140,7 +2138,6 @@ func TestStore_NoViableHead_NewPayload_DoublyLinkedTree(t *testing.T) { config.SlotsPerEpoch = 6 config.AltairForkEpoch = 1 config.BellatrixForkEpoch = 2 - config.SafeSlotsToImportOptimistically = 0 params.OverrideBeaconConfig(config) ctx := context.Background() @@ -2300,7 +2297,6 @@ func TestStore_NoViableHead_NewPayload_Protoarray(t *testing.T) { config.SlotsPerEpoch = 6 config.AltairForkEpoch = 1 config.BellatrixForkEpoch = 2 - config.SafeSlotsToImportOptimistically = 0 params.OverrideBeaconConfig(config) ctx := context.Background() @@ -2461,7 +2457,6 @@ func TestStore_NoViableHead_Liveness_DoublyLinkedTree(t *testing.T) { config.SlotsPerEpoch = 6 config.AltairForkEpoch = 1 config.BellatrixForkEpoch = 2 - config.SafeSlotsToImportOptimistically = 0 params.OverrideBeaconConfig(config) ctx := context.Background() @@ -2671,7 +2666,6 @@ func TestStore_NoViableHead_Liveness_Protoarray(t *testing.T) { config.SlotsPerEpoch = 6 config.AltairForkEpoch = 1 config.BellatrixForkEpoch = 2 - config.SafeSlotsToImportOptimistically = 0 params.OverrideBeaconConfig(config) ctx := context.Background() @@ -2902,7 +2896,6 @@ func noViableHead_Reboot(t *testing.T, newfc newForkChoicer) { config.SlotsPerEpoch = 6 config.AltairForkEpoch = 1 config.BellatrixForkEpoch = 2 - config.SafeSlotsToImportOptimistically = 0 params.OverrideBeaconConfig(config) ctx := context.Background() @@ -3127,7 +3120,6 @@ func TestStore_NoViableHead_Reboot_Protoarray(t *testing.T) { config.SlotsPerEpoch = 6 config.AltairForkEpoch = 1 config.BellatrixForkEpoch = 2 - config.SafeSlotsToImportOptimistically = 0 params.OverrideBeaconConfig(config) ctx := context.Background() diff --git a/beacon-chain/node/config.go b/beacon-chain/node/config.go index 4849757c1c..e83bed05fa 100644 --- a/beacon-chain/node/config.go +++ b/beacon-chain/node/config.go @@ -54,17 +54,6 @@ func configureHistoricalSlasher(cliCtx *cli.Context) error { return nil } -func configureSafeSlotsToImportOptimistically(cliCtx *cli.Context) error { - if cliCtx.IsSet(flags.SafeSlotsToImportOptimistically.Name) { - c := params.BeaconConfig().Copy() - c.SafeSlotsToImportOptimistically = types.Slot(cliCtx.Int(flags.SafeSlotsToImportOptimistically.Name)) - if err := params.SetActive(c); err != nil { - return err - } - } - return nil -} - func configureBuilderCircuitBreaker(cliCtx *cli.Context) error { if cliCtx.IsSet(flags.MaxBuilderConsecutiveMissedSlots.Name) { c := params.BeaconConfig().Copy() diff --git a/beacon-chain/node/config_test.go b/beacon-chain/node/config_test.go index 5b11d27037..96e25a27d2 100644 --- a/beacon-chain/node/config_test.go +++ b/beacon-chain/node/config_test.go @@ -39,20 +39,6 @@ func TestConfigureHistoricalSlasher(t *testing.T) { ) } -func TestConfigureSafeSlotsToImportOptimistically(t *testing.T) { - params.SetupTestConfigCleanup(t) - - app := cli.App{} - set := flag.NewFlagSet("test", 0) - set.Int(flags.SafeSlotsToImportOptimistically.Name, 0, "") - require.NoError(t, set.Set(flags.SafeSlotsToImportOptimistically.Name, strconv.Itoa(128))) - cliCtx := cli.NewContext(&app, set, nil) - - require.NoError(t, configureSafeSlotsToImportOptimistically(cliCtx)) - - assert.Equal(t, types.Slot(128), params.BeaconConfig().SafeSlotsToImportOptimistically) -} - func TestConfigureSlotsPerArchivedPoint(t *testing.T) { params.SetupTestConfigCleanup(t) diff --git a/beacon-chain/node/node.go b/beacon-chain/node/node.go index 6694f3e527..dc8c10d8e0 100644 --- a/beacon-chain/node/node.go +++ b/beacon-chain/node/node.go @@ -131,9 +131,6 @@ func New(cliCtx *cli.Context, opts ...Option) (*BeaconNode, error) { if err := configureHistoricalSlasher(cliCtx); err != nil { return nil, err } - if err := configureSafeSlotsToImportOptimistically(cliCtx); err != nil { - return nil, err - } err := configureBuilderCircuitBreaker(cliCtx) if err != nil { return nil, err diff --git a/beacon-chain/rpc/eth/beacon/config_test.go b/beacon-chain/rpc/eth/beacon/config_test.go index a8c161f731..3009bfe564 100644 --- a/beacon-chain/rpc/eth/beacon/config_test.go +++ b/beacon-chain/rpc/eth/beacon/config_test.go @@ -31,7 +31,6 @@ func TestGetSpec(t *testing.T) { config.HysteresisQuotient = 9 config.HysteresisDownwardMultiplier = 10 config.HysteresisUpwardMultiplier = 11 - config.SafeSlotsToImportOptimistically = 128 config.SafeSlotsToUpdateJustified = 12 config.Eth1FollowDistance = 13 config.TargetAggregatorsPerCommittee = 14 @@ -356,7 +355,6 @@ func TestGetSpec(t *testing.T) { case "INTERVALS_PER_SLOT": assert.Equal(t, "3", v) case "SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY": - assert.Equal(t, "128", v) default: t.Errorf("Incorrect key: %s", k) } diff --git a/config/params/config.go b/config/params/config.go index 60911f9ec9..645933f0ac 100644 --- a/config/params/config.go +++ b/config/params/config.go @@ -49,22 +49,22 @@ type BeaconChainConfig struct { ZeroHash [32]byte // ZeroHash is used to represent a zeroed out 32 byte array. // Time parameters constants. - GenesisDelay uint64 `yaml:"GENESIS_DELAY" spec:"true"` // GenesisDelay is the minimum number of seconds to delay starting the Ethereum Beacon Chain genesis. Must be at least 1 second. - MinAttestationInclusionDelay types.Slot `yaml:"MIN_ATTESTATION_INCLUSION_DELAY" spec:"true"` // MinAttestationInclusionDelay defines how many slots validator has to wait to include attestation for beacon block. - SecondsPerSlot uint64 `yaml:"SECONDS_PER_SLOT" spec:"true"` // SecondsPerSlot is how many seconds are in a single slot. - SlotsPerEpoch types.Slot `yaml:"SLOTS_PER_EPOCH" spec:"true"` // SlotsPerEpoch is the number of slots in an epoch. - SqrRootSlotsPerEpoch types.Slot // SqrRootSlotsPerEpoch is a hard coded value where we take the square root of `SlotsPerEpoch` and round down. - MinSeedLookahead types.Epoch `yaml:"MIN_SEED_LOOKAHEAD" spec:"true"` // MinSeedLookahead is the duration of randao look ahead seed. - MaxSeedLookahead types.Epoch `yaml:"MAX_SEED_LOOKAHEAD" spec:"true"` // MaxSeedLookahead is the duration a validator has to wait for entry and exit in epoch. - EpochsPerEth1VotingPeriod types.Epoch `yaml:"EPOCHS_PER_ETH1_VOTING_PERIOD" spec:"true"` // EpochsPerEth1VotingPeriod defines how often the merkle root of deposit receipts get updated in beacon node on per epoch basis. - SlotsPerHistoricalRoot types.Slot `yaml:"SLOTS_PER_HISTORICAL_ROOT" spec:"true"` // SlotsPerHistoricalRoot defines how often the historical root is saved. - MinValidatorWithdrawabilityDelay types.Epoch `yaml:"MIN_VALIDATOR_WITHDRAWABILITY_DELAY" spec:"true"` // MinValidatorWithdrawabilityDelay is the shortest amount of time a validator has to wait to withdraw. - ShardCommitteePeriod types.Epoch `yaml:"SHARD_COMMITTEE_PERIOD" spec:"true"` // ShardCommitteePeriod is the minimum amount of epochs a validator must participate before exiting. - MinEpochsToInactivityPenalty types.Epoch `yaml:"MIN_EPOCHS_TO_INACTIVITY_PENALTY" spec:"true"` // MinEpochsToInactivityPenalty defines the minimum amount of epochs since finality to begin penalizing inactivity. - Eth1FollowDistance uint64 `yaml:"ETH1_FOLLOW_DISTANCE" spec:"true"` // Eth1FollowDistance is the number of eth1.0 blocks to wait before considering a new deposit for voting. This only applies after the chain as been started. - SafeSlotsToUpdateJustified types.Slot `yaml:"SAFE_SLOTS_TO_UPDATE_JUSTIFIED" spec:"true"` // SafeSlotsToUpdateJustified is the minimal slots needed to update justified check point. - SafeSlotsToImportOptimistically types.Slot `yaml:"SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY" spec:"true"` // SafeSlotsToImportOptimistically is the minimal number of slots to wait before importing optimistically a pre-merge block - SecondsPerETH1Block uint64 `yaml:"SECONDS_PER_ETH1_BLOCK" spec:"true"` // SecondsPerETH1Block is the approximate time for a single eth1 block to be produced. + GenesisDelay uint64 `yaml:"GENESIS_DELAY" spec:"true"` // GenesisDelay is the minimum number of seconds to delay starting the Ethereum Beacon Chain genesis. Must be at least 1 second. + MinAttestationInclusionDelay types.Slot `yaml:"MIN_ATTESTATION_INCLUSION_DELAY" spec:"true"` // MinAttestationInclusionDelay defines how many slots validator has to wait to include attestation for beacon block. + SecondsPerSlot uint64 `yaml:"SECONDS_PER_SLOT" spec:"true"` // SecondsPerSlot is how many seconds are in a single slot. + SlotsPerEpoch types.Slot `yaml:"SLOTS_PER_EPOCH" spec:"true"` // SlotsPerEpoch is the number of slots in an epoch. + SqrRootSlotsPerEpoch types.Slot // SqrRootSlotsPerEpoch is a hard coded value where we take the square root of `SlotsPerEpoch` and round down. + MinSeedLookahead types.Epoch `yaml:"MIN_SEED_LOOKAHEAD" spec:"true"` // MinSeedLookahead is the duration of randao look ahead seed. + MaxSeedLookahead types.Epoch `yaml:"MAX_SEED_LOOKAHEAD" spec:"true"` // MaxSeedLookahead is the duration a validator has to wait for entry and exit in epoch. + EpochsPerEth1VotingPeriod types.Epoch `yaml:"EPOCHS_PER_ETH1_VOTING_PERIOD" spec:"true"` // EpochsPerEth1VotingPeriod defines how often the merkle root of deposit receipts get updated in beacon node on per epoch basis. + SlotsPerHistoricalRoot types.Slot `yaml:"SLOTS_PER_HISTORICAL_ROOT" spec:"true"` // SlotsPerHistoricalRoot defines how often the historical root is saved. + MinValidatorWithdrawabilityDelay types.Epoch `yaml:"MIN_VALIDATOR_WITHDRAWABILITY_DELAY" spec:"true"` // MinValidatorWithdrawabilityDelay is the shortest amount of time a validator has to wait to withdraw. + ShardCommitteePeriod types.Epoch `yaml:"SHARD_COMMITTEE_PERIOD" spec:"true"` // ShardCommitteePeriod is the minimum amount of epochs a validator must participate before exiting. + MinEpochsToInactivityPenalty types.Epoch `yaml:"MIN_EPOCHS_TO_INACTIVITY_PENALTY" spec:"true"` // MinEpochsToInactivityPenalty defines the minimum amount of epochs since finality to begin penalizing inactivity. + Eth1FollowDistance uint64 `yaml:"ETH1_FOLLOW_DISTANCE" spec:"true"` // Eth1FollowDistance is the number of eth1.0 blocks to wait before considering a new deposit for voting. This only applies after the chain as been started. + SafeSlotsToUpdateJustified types.Slot `yaml:"SAFE_SLOTS_TO_UPDATE_JUSTIFIED" spec:"true"` // SafeSlotsToUpdateJustified is the minimal slots needed to update justified check point. + DeprecatedSafeSlotsToImportOptimistically types.Slot `yaml:"SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY" spec:"true"` // SafeSlotsToImportOptimistically is the minimal number of slots to wait before importing optimistically a pre-merge block + SecondsPerETH1Block uint64 `yaml:"SECONDS_PER_ETH1_BLOCK" spec:"true"` // SecondsPerETH1Block is the approximate time for a single eth1 block to be produced. // Fork choice algorithm constants. ProposerScoreBoost uint64 `yaml:"PROPOSER_SCORE_BOOST" spec:"true"` // ProposerScoreBoost defines a value that is a % of the committee weight for fork-choice boosting. diff --git a/config/params/configset_test.go b/config/params/configset_test.go index db4e131d3b..0321abab90 100644 --- a/config/params/configset_test.go +++ b/config/params/configset_test.go @@ -113,7 +113,6 @@ func compareConfigs(t *testing.T, expected, actual *BeaconChainConfig) { require.DeepEqual(t, expected.MinEpochsToInactivityPenalty, actual.MinEpochsToInactivityPenalty) require.DeepEqual(t, expected.Eth1FollowDistance, actual.Eth1FollowDistance) require.DeepEqual(t, expected.SafeSlotsToUpdateJustified, actual.SafeSlotsToUpdateJustified) - require.DeepEqual(t, expected.SafeSlotsToImportOptimistically, actual.SafeSlotsToImportOptimistically) require.DeepEqual(t, expected.SecondsPerETH1Block, actual.SecondsPerETH1Block) require.DeepEqual(t, expected.ProposerScoreBoost, actual.ProposerScoreBoost) require.DeepEqual(t, expected.IntervalsPerSlot, actual.IntervalsPerSlot) diff --git a/config/params/mainnet_config.go b/config/params/mainnet_config.go index f0cf0483a9..9fdab50c5a 100644 --- a/config/params/mainnet_config.go +++ b/config/params/mainnet_config.go @@ -112,7 +112,6 @@ var mainnetBeaconConfig = &BeaconChainConfig{ MinEpochsToInactivityPenalty: 4, Eth1FollowDistance: 2048, SafeSlotsToUpdateJustified: 8, - SafeSlotsToImportOptimistically: 128, // Fork choice algorithm constants. ProposerScoreBoost: 40, diff --git a/config/params/testnet_config_test.go b/config/params/testnet_config_test.go index a04de7281f..dbd2425c70 100644 --- a/config/params/testnet_config_test.go +++ b/config/params/testnet_config_test.go @@ -77,7 +77,6 @@ func compareConfigs(t *testing.T, expected, actual *params.BeaconChainConfig) { require.DeepEqual(t, expected.MinEpochsToInactivityPenalty, actual.MinEpochsToInactivityPenalty) require.DeepEqual(t, expected.Eth1FollowDistance, actual.Eth1FollowDistance) require.DeepEqual(t, expected.SafeSlotsToUpdateJustified, actual.SafeSlotsToUpdateJustified) - require.DeepEqual(t, expected.SafeSlotsToImportOptimistically, actual.SafeSlotsToImportOptimistically) require.DeepEqual(t, expected.SecondsPerETH1Block, actual.SecondsPerETH1Block) require.DeepEqual(t, expected.ProposerScoreBoost, actual.ProposerScoreBoost) require.DeepEqual(t, expected.IntervalsPerSlot, actual.IntervalsPerSlot)