From 111e5bdc139f3401691be754b4a8b0a70a87a911 Mon Sep 17 00:00:00 2001 From: Jordan Schalm Date: Wed, 29 Jan 2025 10:14:01 -0800 Subject: [PATCH 1/2] remove protocol version --- access/api.go | 7 ++++--- cmd/bootstrap/cmd/finalize.go | 1 - cmd/bootstrap/cmd/intermediary.go | 1 - cmd/bootstrap/cmd/rootblock.go | 20 ++++++++++++-------- cmd/bootstrap/cmd/rootblock_test.go | 3 +-- cmd/scaffold.go | 3 +-- engine/access/rpc/backend/backend.go | 8 +++++--- integration/testnet/network.go | 1 - module/metrics/node_info.go | 12 ++++-------- module/metrics/node_info_test.go | 7 ++----- state/protocol/badger/params.go | 7 ------- state/protocol/badger/snapshot_test.go | 5 ----- state/protocol/badger/state.go | 6 ------ state/protocol/inmem/convert.go | 6 +----- state/protocol/inmem/encodable.go | 1 - state/protocol/inmem/params.go | 4 ---- state/protocol/invalid/params.go | 4 ---- state/protocol/mock/global_params.go | 18 ------------------ state/protocol/mock/params.go | 18 ------------------ state/protocol/params.go | 4 ---- storage/badger/operation/spork.go | 13 ------------- storage/badger/operation/spork_test.go | 16 ---------------- utils/unittest/mocks/protocol_state.go | 4 ---- 23 files changed, 30 insertions(+), 139 deletions(-) diff --git a/access/api.go b/access/api.go index 2e1bf8d4425..43f946af9dd 100644 --- a/access/api.go +++ b/access/api.go @@ -314,9 +314,10 @@ type CompatibleRange struct { // NodeVersionInfo contains information about node, such as semver, commit, sporkID, protocolVersion, etc type NodeVersionInfo struct { - Semver string - Commit string - SporkId flow.Identifier + Semver string + Commit string + SporkId flow.Identifier + // TODO: should we replicate protocol state version here, or just remove this field? ProtocolVersion uint64 SporkRootBlockHeight uint64 NodeRootBlockHeight uint64 diff --git a/cmd/bootstrap/cmd/finalize.go b/cmd/bootstrap/cmd/finalize.go index 9b3079aec72..ed7863180fd 100644 --- a/cmd/bootstrap/cmd/finalize.go +++ b/cmd/bootstrap/cmd/finalize.go @@ -189,7 +189,6 @@ func finalize(cmd *cobra.Command, args []string) { result, seal, rootQC, - intermediaryData.ProtocolVersion, func(epochStateID flow.Identifier) (protocol_state.KVStoreAPI, error) { return kvstore.NewDefaultKVStore( intermediaryData.FinalizationSafetyThreshold, diff --git a/cmd/bootstrap/cmd/intermediary.go b/cmd/bootstrap/cmd/intermediary.go index 7ce11f5c34f..00f498e6254 100644 --- a/cmd/bootstrap/cmd/intermediary.go +++ b/cmd/bootstrap/cmd/intermediary.go @@ -18,7 +18,6 @@ type IntermediaryBootstrappingData struct { // like the root block). // This is used to pass data between the rootblock command and the finalize command. type IntermediaryParamsData struct { - ProtocolVersion uint FinalizationSafetyThreshold uint64 EpochExtensionViewCount uint64 } diff --git a/cmd/bootstrap/cmd/rootblock.go b/cmd/bootstrap/cmd/rootblock.go index 1e808ec68e3..22c0b123388 100644 --- a/cmd/bootstrap/cmd/rootblock.go +++ b/cmd/bootstrap/cmd/rootblock.go @@ -23,11 +23,14 @@ import ( ) var ( - flagRootChain string - flagRootParent string - flagRootHeight uint64 - flagRootTimestamp string - flagProtocolVersion uint + flagRootChain string + flagRootParent string + flagRootHeight uint64 + flagRootTimestamp string + // Deprecated: Replaced by ProtocolState KVStore version + // Historically, this flag set a spork-scoped version number, by convention equal to the major software version. + // Now that we have HCUs which change the major software version mid-spork, this is no longer useful. + deprecatedFlagProtocolVersion uint flagFinalizationSafetyThreshold uint64 flagEpochExtensionViewCount uint64 flagCollectionClusters uint @@ -92,14 +95,13 @@ func addRootBlockCmdFlags() { rootBlockCmd.Flags().StringVar(&flagRootParent, "root-parent", "0000000000000000000000000000000000000000000000000000000000000000", "ID for the parent of the root block") rootBlockCmd.Flags().Uint64Var(&flagRootHeight, "root-height", 0, "height of the root block") rootBlockCmd.Flags().StringVar(&flagRootTimestamp, "root-timestamp", time.Now().UTC().Format(time.RFC3339), "timestamp of the root block (RFC3339)") - rootBlockCmd.Flags().UintVar(&flagProtocolVersion, "protocol-version", flow.DefaultProtocolVersion, "major software version used for the duration of this spork") + rootBlockCmd.Flags().UintVar(&deprecatedFlagProtocolVersion, "protocol-version", 0, "deprecated: this flag will be ignored and remove in a future release") rootBlockCmd.Flags().Uint64Var(&flagFinalizationSafetyThreshold, "finalization-safety-threshold", 500, "defines finalization safety threshold") rootBlockCmd.Flags().Uint64Var(&flagEpochExtensionViewCount, "epoch-extension-view-count", 100_000, "length of epoch extension in views, default is 100_000 which is approximately 1 day") cmd.MarkFlagRequired(rootBlockCmd, "root-chain") cmd.MarkFlagRequired(rootBlockCmd, "root-parent") cmd.MarkFlagRequired(rootBlockCmd, "root-height") - cmd.MarkFlagRequired(rootBlockCmd, "protocol-version") cmd.MarkFlagRequired(rootBlockCmd, "finalization-safety-threshold") cmd.MarkFlagRequired(rootBlockCmd, "epoch-extension-view-count") @@ -134,6 +136,9 @@ func rootBlock(cmd *cobra.Command, args []string) { log.Fatal().Msg("cannot use both --partner-stakes and --partner-weights flags (use only --partner-weights)") } } + if deprecatedFlagProtocolVersion != 0 { + log.Warn().Msg("using deprecated flag --protocol-version; please remove this flag from your workflow, it is ignored and will be removed in a future release") + } // validate epoch configs err := validateEpochConfig() @@ -226,7 +231,6 @@ func rootBlock(cmd *cobra.Command, args []string) { intermediaryParamsData := IntermediaryParamsData{ FinalizationSafetyThreshold: flagFinalizationSafetyThreshold, EpochExtensionViewCount: flagEpochExtensionViewCount, - ProtocolVersion: flagProtocolVersion, } intermediaryData := IntermediaryBootstrappingData{ IntermediaryEpochData: intermediaryEpochData, diff --git a/cmd/bootstrap/cmd/rootblock_test.go b/cmd/bootstrap/cmd/rootblock_test.go index ac1e9724d98..06317c5a139 100644 --- a/cmd/bootstrap/cmd/rootblock_test.go +++ b/cmd/bootstrap/cmd/rootblock_test.go @@ -24,7 +24,6 @@ const rootBlockHappyPathLogs = "collecting partner network and staking keys" + `remove internal partner nodes` + `removed 0 internal partner nodes` + `checking constraints on consensus nodes` + - `assembling network and staking keys` + `wrote file \S+/node-infos.pub.json` + `running DKG for consensus nodes` + @@ -68,7 +67,7 @@ func TestRootBlock_HappyPath(t *testing.T) { flagNumViewsInStakingAuction = 50_000 flagNumViewsInDKGPhase = 2_000 flagFinalizationSafetyThreshold = 1_000 - flagProtocolVersion = 42 + deprecatedFlagProtocolVersion = 42 flagUseDefaultEpochTargetEndTime = true flagEpochTimingRefCounter = 0 flagEpochTimingRefTimestamp = 0 diff --git a/cmd/scaffold.go b/cmd/scaffold.go index 7d3578bb5f6..0b5bd06a940 100644 --- a/cmd/scaffold.go +++ b/cmd/scaffold.go @@ -949,8 +949,7 @@ func (fnb *FlowNodeBuilder) initMetrics() error { // metrics enabled, report node info metrics as post init event fnb.PostInit(func(nodeConfig *NodeConfig) error { nodeInfoMetrics := metrics.NewNodeInfoCollector() - protocolVersion := fnb.RootSnapshot.Params().ProtocolVersion() - nodeInfoMetrics.NodeInfo(build.Version(), build.Commit(), nodeConfig.SporkID.String(), protocolVersion) + nodeInfoMetrics.NodeInfo(build.Version(), build.Commit(), nodeConfig.SporkID.String()) return nil }) } diff --git a/engine/access/rpc/backend/backend.go b/engine/access/rpc/backend/backend.go index 5ed2232b87b..d887d2f6452 100644 --- a/engine/access/rpc/backend/backend.go +++ b/engine/access/rpc/backend/backend.go @@ -311,10 +311,12 @@ func (b *Backend) Ping(ctx context.Context) error { // GetNodeVersionInfo returns node version information such as semver, commit, sporkID, protocolVersion, etc func (b *Backend) GetNodeVersionInfo(_ context.Context) (*access.NodeVersionInfo, error) { sporkID := b.stateParams.SporkID() - protocolVersion := b.stateParams.ProtocolVersion() sporkRootBlockHeight := b.stateParams.SporkRootBlockHeight() - nodeRootBlockHeader := b.stateParams.SealedRoot() + protocolSnapshot, err := b.state.Final().ProtocolState() + if err != nil { + return nil, fmt.Errorf("could not read finalized protocol kvstore: %w", err) + } var compatibleRange *access.CompatibleRange @@ -330,7 +332,7 @@ func (b *Backend) GetNodeVersionInfo(_ context.Context) (*access.NodeVersionInfo Semver: build.Version(), Commit: build.Commit(), SporkId: sporkID, - ProtocolVersion: uint64(protocolVersion), + ProtocolVersion: protocolSnapshot.GetProtocolStateVersion(), SporkRootBlockHeight: sporkRootBlockHeight, NodeRootBlockHeight: nodeRootBlockHeader.Height, CompatibleRange: compatibleRange, diff --git a/integration/testnet/network.go b/integration/testnet/network.go index 97113073ca9..c60d91b4731 100644 --- a/integration/testnet/network.go +++ b/integration/testnet/network.go @@ -1275,7 +1275,6 @@ func BootstrapNetwork(networkConf NetworkConfig, bootstrapDir string, chainID fl result, seal, qc, - flow.DefaultProtocolVersion, networkConf.KVStoreFactory, ) if err != nil { diff --git a/module/metrics/node_info.go b/module/metrics/node_info.go index aa24cdb919c..7c3a5d788ac 100644 --- a/module/metrics/node_info.go +++ b/module/metrics/node_info.go @@ -1,8 +1,6 @@ package metrics import ( - "strconv" - "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" ) @@ -14,10 +12,9 @@ type NodeInfoCollector struct { } const ( - sporkIDLabel = "spork_id" - versionLabel = "version" - commitLabel = "commit" - protocolVersionLabel = "protocol_version" + sporkIDLabel = "spork_id" + versionLabel = "version" + commitLabel = "commit" ) func NewNodeInfoCollector() *NodeInfoCollector { @@ -32,9 +29,8 @@ func NewNodeInfoCollector() *NodeInfoCollector { return collector } -func (sc *NodeInfoCollector) NodeInfo(version, commit, sporkID string, protocolVersion uint) { +func (sc *NodeInfoCollector) NodeInfo(version, commit, sporkID string) { sc.nodeInfo.WithLabelValues(versionLabel, version) sc.nodeInfo.WithLabelValues(commitLabel, commit) sc.nodeInfo.WithLabelValues(sporkIDLabel, sporkID) - sc.nodeInfo.WithLabelValues(protocolVersionLabel, strconv.FormatUint(uint64(protocolVersion), 10)) } diff --git a/module/metrics/node_info_test.go b/module/metrics/node_info_test.go index c7cf5d6d2ae..6f45ec80b3a 100644 --- a/module/metrics/node_info_test.go +++ b/module/metrics/node_info_test.go @@ -1,7 +1,6 @@ package metrics import ( - "strconv" "testing" "github.com/prometheus/client_golang/prometheus" @@ -19,8 +18,7 @@ func TestNodeInfoCollector_NodeInfo(t *testing.T) { version := "0.29" commit := "63cec231136914941e2358de2054a6ef71ea3c99" sporkID := unittest.IdentifierFixture().String() - protocolVersion := uint(10076) - collector.NodeInfo(version, commit, sporkID, protocolVersion) + collector.NodeInfo(version, commit, sporkID) metricsFamilies, err := reg.Gather() require.NoError(t, err) @@ -35,8 +33,7 @@ func TestNodeInfoCollector_NodeInfo(t *testing.T) { assert.Failf(t, "metric not found", "except to find value %s", value) } - protocolVersionAsString := strconv.FormatUint(uint64(protocolVersion), 10) - for _, value := range []string{version, commit, sporkID, protocolVersionAsString} { + for _, value := range []string{version, commit, sporkID} { assertReported(value) } } diff --git a/state/protocol/badger/params.go b/state/protocol/badger/params.go index 47773ccdc93..9da21111ade 100644 --- a/state/protocol/badger/params.go +++ b/state/protocol/badger/params.go @@ -131,12 +131,6 @@ func ReadGlobalParams(db *badger.DB) (*inmem.Params, error) { return nil, fmt.Errorf("could not get spork root block height: %w", err) } - var version uint - err = db.View(operation.RetrieveProtocolVersion(&version)) - if err != nil { - return nil, fmt.Errorf("could not get protocol version: %w", err) - } - root, err := ReadFinalizedRoot(db) // retrieve root header if err != nil { return nil, fmt.Errorf("could not get root: %w", err) @@ -147,7 +141,6 @@ func ReadGlobalParams(db *badger.DB) (*inmem.Params, error) { ChainID: root.ChainID, SporkID: sporkID, SporkRootBlockHeight: sporkRootBlockHeight, - ProtocolVersion: version, }, ), nil } diff --git a/state/protocol/badger/snapshot_test.go b/state/protocol/badger/snapshot_test.go index 7231f516dbc..a4af3913f34 100644 --- a/state/protocol/badger/snapshot_test.go +++ b/state/protocol/badger/snapshot_test.go @@ -111,7 +111,6 @@ func TestSnapshot_Params(t *testing.T) { expectedChainID := rootSnapshot.Params().ChainID() expectedSporkID := rootSnapshot.Params().SporkID() - expectedProtocolVersion := rootSnapshot.Params().ProtocolVersion() rootHeader, err := rootSnapshot.Head() require.NoError(t, err) @@ -142,10 +141,6 @@ func TestSnapshot_Params(t *testing.T) { sporkID := snapshot.Params().SporkID() assert.Equal(t, expectedSporkID, sporkID) }) - t.Run("should be able to get protocol version from snapshot", func(t *testing.T) { - protocolVersion := snapshot.Params().ProtocolVersion() - assert.Equal(t, expectedProtocolVersion, protocolVersion) - }) } }) } diff --git a/state/protocol/badger/state.go b/state/protocol/badger/state.go index 2e8ebb35aaa..8b500a451c3 100644 --- a/state/protocol/badger/state.go +++ b/state/protocol/badger/state.go @@ -586,12 +586,6 @@ func bootstrapSporkInfo(root protocol.Snapshot) func(*transaction.Tx) error { return fmt.Errorf("could not insert spork root block height: %w", err) } - version := params.ProtocolVersion() - err = operation.InsertProtocolVersion(version)(bdtx) - if err != nil { - return fmt.Errorf("could not insert protocol version: %w", err) - } - return nil } } diff --git a/state/protocol/inmem/convert.go b/state/protocol/inmem/convert.go index 79cc835423d..3e51b35cc9c 100644 --- a/state/protocol/inmem/convert.go +++ b/state/protocol/inmem/convert.go @@ -55,7 +55,6 @@ func FromParams(from protocol.GlobalParams) (*Params, error) { ChainID: from.ChainID(), SporkID: from.SporkID(), SporkRootBlockHeight: from.SporkRootBlockHeight(), - ProtocolVersion: from.ProtocolVersion(), } return &Params{params}, nil } @@ -69,12 +68,11 @@ func ClusterFromEncodable(enc EncodableCluster) (*Cluster, error) { // root bootstrap state. This is used to bootstrap the protocol state for // genesis or post-spork states. func SnapshotFromBootstrapState(root *flow.Block, result *flow.ExecutionResult, seal *flow.Seal, qc *flow.QuorumCertificate) (*Snapshot, error) { - version := flow.DefaultProtocolVersion safetyParams, err := protocol.DefaultEpochSafetyParams(root.Header.ChainID) if err != nil { return nil, fmt.Errorf("could not get default epoch commit safety threshold: %w", err) } - return SnapshotFromBootstrapStateWithParams(root, result, seal, qc, version, func(epochStateID flow.Identifier) (protocol_state.KVStoreAPI, error) { + return SnapshotFromBootstrapStateWithParams(root, result, seal, qc, func(epochStateID flow.Identifier) (protocol_state.KVStoreAPI, error) { return kvstore.NewDefaultKVStore(safetyParams.FinalizationSafetyThreshold, safetyParams.EpochExtensionViewCount, epochStateID) }) } @@ -86,7 +84,6 @@ func SnapshotFromBootstrapStateWithParams( result *flow.ExecutionResult, seal *flow.Seal, qc *flow.QuorumCertificate, - protocolVersion uint, kvStoreFactory func(epochStateID flow.Identifier) (protocol_state.KVStoreAPI, error), ) (*Snapshot, error) { setup, ok := result.ServiceEvents[0].Event.(*flow.EpochSetup) @@ -123,7 +120,6 @@ func SnapshotFromBootstrapStateWithParams( ChainID: root.Header.ChainID, // chain ID must match the root block SporkID: root.ID(), // use root block ID as the unique spork identifier SporkRootBlockHeight: root.Header.Height, // use root block height as the spork root block height - ProtocolVersion: protocolVersion, // major software version for this spork } rootMinEpochState := EpochProtocolStateFromServiceEvents(setup, commit) diff --git a/state/protocol/inmem/encodable.go b/state/protocol/inmem/encodable.go index d6a9a8c0cf1..e9dc043764b 100644 --- a/state/protocol/inmem/encodable.go +++ b/state/protocol/inmem/encodable.go @@ -119,5 +119,4 @@ type EncodableParams struct { ChainID flow.ChainID SporkID flow.Identifier SporkRootBlockHeight uint64 - ProtocolVersion uint } diff --git a/state/protocol/inmem/params.go b/state/protocol/inmem/params.go index 5a2c2750b93..71536a0efc9 100644 --- a/state/protocol/inmem/params.go +++ b/state/protocol/inmem/params.go @@ -28,7 +28,3 @@ func (p Params) SporkID() flow.Identifier { func (p Params) SporkRootBlockHeight() uint64 { return p.enc.SporkRootBlockHeight } - -func (p Params) ProtocolVersion() uint { - return p.enc.ProtocolVersion -} diff --git a/state/protocol/invalid/params.go b/state/protocol/invalid/params.go index 0b62a73e8ad..9e8fb788d21 100644 --- a/state/protocol/invalid/params.go +++ b/state/protocol/invalid/params.go @@ -20,7 +20,3 @@ func (p Params) SporkID() flow.Identifier { func (p Params) SporkRootBlockHeight() uint64 { return 0 } - -func (p Params) ProtocolVersion() uint { - return 0 -} diff --git a/state/protocol/mock/global_params.go b/state/protocol/mock/global_params.go index e46bb97c1e4..ecb7cae1f7c 100644 --- a/state/protocol/mock/global_params.go +++ b/state/protocol/mock/global_params.go @@ -30,24 +30,6 @@ func (_m *GlobalParams) ChainID() flow.ChainID { return r0 } -// ProtocolVersion provides a mock function with given fields: -func (_m *GlobalParams) ProtocolVersion() uint { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for ProtocolVersion") - } - - var r0 uint - if rf, ok := ret.Get(0).(func() uint); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(uint) - } - - return r0 -} - // SporkID provides a mock function with given fields: func (_m *GlobalParams) SporkID() flow.Identifier { ret := _m.Called() diff --git a/state/protocol/mock/params.go b/state/protocol/mock/params.go index 24520486e10..c06f21ae043 100644 --- a/state/protocol/mock/params.go +++ b/state/protocol/mock/params.go @@ -50,24 +50,6 @@ func (_m *Params) FinalizedRoot() *flow.Header { return r0 } -// ProtocolVersion provides a mock function with given fields: -func (_m *Params) ProtocolVersion() uint { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for ProtocolVersion") - } - - var r0 uint - if rf, ok := ret.Get(0).(func() uint); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(uint) - } - - return r0 -} - // Seal provides a mock function with given fields: func (_m *Params) Seal() *flow.Seal { ret := _m.Called() diff --git a/state/protocol/params.go b/state/protocol/params.go index f100dcc9cb8..b7ee167e551 100644 --- a/state/protocol/params.go +++ b/state/protocol/params.go @@ -50,8 +50,4 @@ type GlobalParams interface { // If node uses a sealing segment for bootstrapping then this value will be carried over // as part of snapshot. SporkRootBlockHeight() uint64 - - // ProtocolVersion returns the protocol version, the major software version - // of the protocol software. - ProtocolVersion() uint } diff --git a/storage/badger/operation/spork.go b/storage/badger/operation/spork.go index 02b16852118..508fab5d9b8 100644 --- a/storage/badger/operation/spork.go +++ b/storage/badger/operation/spork.go @@ -29,16 +29,3 @@ func InsertSporkRootBlockHeight(height uint64) func(*badger.Txn) error { func RetrieveSporkRootBlockHeight(height *uint64) func(*badger.Txn) error { return retrieve(makePrefix(codeSporkRootBlockHeight), height) } - -// InsertProtocolVersion inserts the protocol version for the present spork. -// A single database and protocol state instance spans at most one spork, and -// a spork has exactly one protocol version for its duration, so this is -// inserted exactly once, when bootstrapping the state. -func InsertProtocolVersion(version uint) func(*badger.Txn) error { - return insert(makePrefix(codeProtocolVersion), version) -} - -// RetrieveProtocolVersion retrieves the protocol version for the present spork. -func RetrieveProtocolVersion(version *uint) func(*badger.Txn) error { - return retrieve(makePrefix(codeProtocolVersion), version) -} diff --git a/storage/badger/operation/spork_test.go b/storage/badger/operation/spork_test.go index e3ccd7ca9da..148ee059861 100644 --- a/storage/badger/operation/spork_test.go +++ b/storage/badger/operation/spork_test.go @@ -1,7 +1,6 @@ package operation import ( - "math/rand" "testing" "github.com/dgraph-io/badger/v2" @@ -26,18 +25,3 @@ func TestSporkID_InsertRetrieve(t *testing.T) { assert.Equal(t, sporkID, actual) }) } - -func TestProtocolVersion_InsertRetrieve(t *testing.T) { - unittest.RunWithBadgerDB(t, func(db *badger.DB) { - version := uint(rand.Uint32()) - - err := db.Update(InsertProtocolVersion(version)) - require.NoError(t, err) - - var actual uint - err = db.View(RetrieveProtocolVersion(&actual)) - require.NoError(t, err) - - assert.Equal(t, version, actual) - }) -} diff --git a/utils/unittest/mocks/protocol_state.go b/utils/unittest/mocks/protocol_state.go index 79174c04f0b..8b7082e9a2a 100644 --- a/utils/unittest/mocks/protocol_state.go +++ b/utils/unittest/mocks/protocol_state.go @@ -54,10 +54,6 @@ func (p *Params) SporkRootBlockHeight() uint64 { return 0 } -func (p *Params) ProtocolVersion() uint { - return 0 -} - func (p *Params) EpochFallbackTriggered() (bool, error) { return false, fmt.Errorf("not implemented") } From c95fd0c61e0051b13d271253a8d337ce933b4e6b Mon Sep 17 00:00:00 2001 From: Jordan Schalm Date: Wed, 29 Jan 2025 10:22:49 -0800 Subject: [PATCH 2/2] don't set deprecated flag --- cmd/bootstrap/cmd/rootblock_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/cmd/bootstrap/cmd/rootblock_test.go b/cmd/bootstrap/cmd/rootblock_test.go index 06317c5a139..3b0c2be33c6 100644 --- a/cmd/bootstrap/cmd/rootblock_test.go +++ b/cmd/bootstrap/cmd/rootblock_test.go @@ -67,7 +67,6 @@ func TestRootBlock_HappyPath(t *testing.T) { flagNumViewsInStakingAuction = 50_000 flagNumViewsInDKGPhase = 2_000 flagFinalizationSafetyThreshold = 1_000 - deprecatedFlagProtocolVersion = 42 flagUseDefaultEpochTargetEndTime = true flagEpochTimingRefCounter = 0 flagEpochTimingRefTimestamp = 0