Skip to content

Commit 5284935

Browse files
authored
[config] Handle node.staker.strategy and node.bold.strategy appropriately (#3582)
* Handle node.staker.strategy and node.bold.strategy appropriately * Update nitro-testnode
1 parent 7d93da0 commit 5284935

File tree

5 files changed

+26
-16
lines changed

5 files changed

+26
-16
lines changed

nitro-testnode

staker/bold/bold_staker.go

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ func init() {
5959
}
6060

6161
type BoldConfig struct {
62-
Strategy string `koanf:"strategy"`
6362
// How often to post assertions onchain.
6463
AssertionPostingInterval time.Duration `koanf:"assertion-posting-interval"`
6564
// How often to scan for newly created assertions onchain.
@@ -83,16 +82,10 @@ type BoldConfig struct {
8382
ParentChainBlockTime time.Duration `koanf:"parent-chain-block-time"`
8483
// How long to wait since parent assertion was created to post a new assertion
8584
MinimumGapToParentAssertion time.Duration `koanf:"minimum-gap-to-parent-assertion"`
86-
strategy legacystaker.StakerStrategy
8785
blockNum rpc.BlockNumber
8886
}
8987

9088
func (c *BoldConfig) Validate() error {
91-
strategy, err := legacystaker.ParseStrategy(c.Strategy)
92-
if err != nil {
93-
return err
94-
}
95-
c.strategy = strategy
9689
var blockNum rpc.BlockNumber
9790
switch strings.ToLower(c.RPCBlockNumber) {
9891
case "safe":
@@ -133,7 +126,6 @@ var DefaultStateProviderConfig = StateProviderConfig{
133126
}
134127

135128
var DefaultBoldConfig = BoldConfig{
136-
Strategy: "Watchtower",
137129
AssertionPostingInterval: time.Minute * 15,
138130
AssertionScanningInterval: time.Minute,
139131
AssertionConfirmingInterval: time.Minute,
@@ -163,7 +155,6 @@ var BoldModes = map[legacystaker.StakerStrategy]boldtypes.Mode{
163155
}
164156

165157
func BoldConfigAddOptions(prefix string, f *flag.FlagSet) {
166-
f.String(prefix+".strategy", DefaultBoldConfig.Strategy, "define the bold validator staker strategy, either watchtower, defensive, stakeLatest, or makeNodes")
167158
f.String(prefix+".rpc-block-number", DefaultBoldConfig.RPCBlockNumber, "define the block number to use for reading data onchain, either latest, safe, or finalized")
168159
f.Int64(prefix+".max-get-log-blocks", DefaultBoldConfig.MaxGetLogBlocks, "maximum size for chunk of blocks when using get logs rpc")
169160
f.Duration(prefix+".assertion-posting-interval", DefaultBoldConfig.AssertionPostingInterval, "assertion posting interval")
@@ -199,6 +190,7 @@ func DelegatedStakingConfigAddOptions(prefix string, f *flag.FlagSet) {
199190
type BOLDStaker struct {
200191
stopwaiter.StopWaiter
201192
config *BoldConfig
193+
strategy legacystaker.StakerStrategy
202194
chalManager *challengemanager.Manager
203195
blockValidator *staker.BlockValidator
204196
rollupAddress common.Address
@@ -223,6 +215,7 @@ func NewBOLDStaker(
223215
blockValidator *staker.BlockValidator,
224216
statelessBlockValidator *staker.StatelessBlockValidator,
225217
config *BoldConfig,
218+
strategy legacystaker.StakerStrategy,
226219
dataPoster *dataposter.DataPoster,
227220
wallet legacystaker.ValidatorWalletInterface,
228221
stakedNotifiers []legacystaker.LatestStakedNotifier,
@@ -236,12 +229,13 @@ func NewBOLDStaker(
236229
return nil, err
237230
}
238231
wrappedClient := util.NewBackendWrapper(l1Reader.Client(), rpc.LatestBlockNumber)
239-
manager, err := newBOLDChallengeManager(ctx, stack, rollupAddress, txOpts, l1Reader, wrappedClient, blockValidator, statelessBlockValidator, config, dataPoster, inboxTracker, inboxStreamer, inboxReader)
232+
manager, err := newBOLDChallengeManager(ctx, stack, rollupAddress, txOpts, l1Reader, wrappedClient, blockValidator, statelessBlockValidator, config, strategy, dataPoster, inboxTracker, inboxStreamer, inboxReader)
240233
if err != nil {
241234
return nil, err
242235
}
243236
return &BOLDStaker{
244237
config: config,
238+
strategy: strategy,
245239
chalManager: manager,
246240
blockValidator: blockValidator,
247241
rollupAddress: rollupAddress,
@@ -269,7 +263,7 @@ func (b *BOLDStaker) Initialize(ctx context.Context) error {
269263
if b.wallet.DataPoster() != nil {
270264
stakerAddr = b.wallet.DataPoster().Sender()
271265
}
272-
log.Info("running as validator", "txSender", stakerAddr, "actingAsWallet", walletAddressOrZero, "strategy", b.config.Strategy)
266+
log.Info("running as validator", "txSender", stakerAddr, "actingAsWallet", walletAddressOrZero, "strategy", b.strategy.ToString())
273267

274268
if b.blockValidator != nil && b.config.StartValidationFromStaked && !b.blockValidator.Started() {
275269
rollupUserLogic, err := boldrollup.NewRollupUserLogic(b.rollupAddress, b.client)
@@ -463,6 +457,7 @@ func newBOLDChallengeManager(
463457
blockValidator *staker.BlockValidator,
464458
statelessBlockValidator *staker.StatelessBlockValidator,
465459
config *BoldConfig,
460+
strategy legacystaker.StakerStrategy,
466461
dataPoster *dataposter.DataPoster,
467462
inboxTracker staker.InboxTrackerInterface,
468463
inboxStreamer staker.TransactionStreamerInterface,
@@ -586,7 +581,7 @@ func newBOLDChallengeManager(
586581

587582
stackOpts := []challengemanager.StackOpt{
588583
challengemanager.StackWithName(config.StateProviderConfig.ValidatorName),
589-
challengemanager.StackWithMode(BoldModes[config.strategy]),
584+
challengemanager.StackWithMode(BoldModes[strategy]),
590585
challengemanager.StackWithPollingInterval(scanningInterval),
591586
challengemanager.StackWithPostingInterval(postingInterval),
592587
challengemanager.StackWithConfirmationInterval(confirmingInterval),

staker/legacy/staker.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,23 @@ func ParseStrategy(strategy string) (StakerStrategy, error) {
118118
}
119119
}
120120

121+
func (s StakerStrategy) ToString() string {
122+
switch s {
123+
case WatchtowerStrategy:
124+
return "watchtower"
125+
case DefensiveStrategy:
126+
return "defensive"
127+
case StakeLatestStrategy:
128+
return "stakelatest"
129+
case ResolveNodesStrategy:
130+
return "resolvenodes"
131+
case MakeNodesStrategy:
132+
return "makenodes"
133+
default:
134+
return "Unknown"
135+
}
136+
}
137+
121138
func (c *L1ValidatorConfig) ValidatorRequired() bool {
122139
if !c.Enable {
123140
return false

staker/multi_protocol/multi_protocol_staker.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ func (m *MultiProtocolStaker) setupBoldStaker(
257257
m.blockValidator,
258258
m.statelessBlockValidator,
259259
m.boldConfig,
260+
m.legacyConfig().StrategyType(),
260261
m.wallet.DataPoster(),
261262
m.wallet,
262263
m.stakedNotifiers,

system_tests/bold_l3_support_test.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ func TestL3ChallengeProtocolBOLD(t *testing.T) {
4545
builder.nodeConfig.BlockValidator.Enable = true
4646
builder.nodeConfig.Staker.Enable = true
4747
builder.nodeConfig.Staker.Strategy = "MakeNodes"
48-
builder.nodeConfig.Bold.Strategy = "MakeNodes"
4948
builder.nodeConfig.Bold.RPCBlockNumber = "latest"
5049
builder.nodeConfig.Bold.StateProviderConfig.CheckBatchFinality = false
5150
builder.nodeConfig.Bold.StateProviderConfig.ValidatorName = "L2-validator"
@@ -59,7 +58,6 @@ func TestL3ChallengeProtocolBOLD(t *testing.T) {
5958
builder.l3Config.nodeConfig.Staker.Enable = true
6059
builder.l3Config.nodeConfig.BlockValidator.Enable = true
6160
builder.l3Config.nodeConfig.Staker.Strategy = "MakeNodes"
62-
builder.l3Config.nodeConfig.Bold.Strategy = "MakeNodes"
6361
builder.l3Config.nodeConfig.Bold.RPCBlockNumber = "latest"
6462
builder.l3Config.nodeConfig.Bold.StateProviderConfig.CheckBatchFinality = false
6563
builder.l3Config.nodeConfig.Bold.StateProviderConfig.ValidatorName = "L3-validator"
@@ -72,7 +70,6 @@ func TestL3ChallengeProtocolBOLD(t *testing.T) {
7270
secondNodeNodeConfig.BlockValidator.Enable = true
7371
secondNodeNodeConfig.Staker.Enable = true
7472
secondNodeNodeConfig.Staker.Strategy = "Watchtower"
75-
secondNodeNodeConfig.Bold.Strategy = "Watchtower"
7673
secondNodeNodeConfig.Bold.StateProviderConfig.CheckBatchFinality = false
7774
secondNodeNodeConfig.Bold.StateProviderConfig.ValidatorName = "Second-L2-validator"
7875
secondNodeNodeConfig.Bold.RPCBlockNumber = "latest"

0 commit comments

Comments
 (0)