Skip to content

Commit 7abcce6

Browse files
authored
fix(lib/babe): add --babe-lead flag, update epoch handling logic (#1895)
1 parent 5e42215 commit 7abcce6

File tree

22 files changed

+159
-60
lines changed

22 files changed

+159
-60
lines changed

chain/dev/config.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ unlock = ""
2424
roles = 4
2525
babe-authority = true
2626
grandpa-authority = true
27+
babe-lead = true
2728

2829
[network]
2930
port = 7001

chain/gssmr/config.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ port = 7001
3030
nobootstrap = false
3131
nomdns = false
3232
discovery-interval = 10
33+
min-peers = 1
3334

3435
[rpc]
3536
enabled = false

chain/gssmr/defaults.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ var (
8181
DefaultNoBootstrap = false
8282
// DefaultNoMDNS disables mDNS discovery
8383
DefaultNoMDNS = false
84+
// DefaultMinPeers is the default minimum desired peer count
85+
DefaultMinPeers = 1
8486

8587
// DefaultDiscoveryInterval is the default interval for searching for DHT peers
8688
DefaultDiscoveryInterval = time.Second * 10

cmd/gossamer/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,7 @@ func setDotCoreConfig(ctx *cli.Context, tomlCfg ctoml.CoreConfig, cfg *dot.CoreC
555555
cfg.Roles = tomlCfg.Roles
556556
cfg.BabeAuthority = tomlCfg.Roles == types.AuthorityRole
557557
cfg.GrandpaAuthority = tomlCfg.Roles == types.AuthorityRole
558+
cfg.BABELead = ctx.GlobalBool(BABELeadFlag.Name)
558559

559560
// check --roles flag and update node configuration
560561
if roles := ctx.GlobalString(RolesFlag.Name); roles != "" {

cmd/gossamer/config_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,7 @@ func TestNetworkConfigFromFlags(t *testing.T) {
390390
NoBootstrap: testCfg.Network.NoBootstrap,
391391
NoMDNS: testCfg.Network.NoMDNS,
392392
DiscoveryInterval: time.Second * 10,
393+
MinPeers: testCfg.Network.MinPeers,
393394
},
394395
},
395396
{
@@ -403,6 +404,7 @@ func TestNetworkConfigFromFlags(t *testing.T) {
403404
NoBootstrap: testCfg.Network.NoBootstrap,
404405
NoMDNS: testCfg.Network.NoMDNS,
405406
DiscoveryInterval: time.Second * 10,
407+
MinPeers: testCfg.Network.MinPeers,
406408
},
407409
},
408410
{
@@ -416,6 +418,7 @@ func TestNetworkConfigFromFlags(t *testing.T) {
416418
NoBootstrap: testCfg.Network.NoBootstrap,
417419
NoMDNS: testCfg.Network.NoMDNS,
418420
DiscoveryInterval: time.Second * 10,
421+
MinPeers: testCfg.Network.MinPeers,
419422
},
420423
},
421424
{
@@ -429,6 +432,7 @@ func TestNetworkConfigFromFlags(t *testing.T) {
429432
NoBootstrap: true,
430433
NoMDNS: testCfg.Network.NoMDNS,
431434
DiscoveryInterval: time.Second * 10,
435+
MinPeers: testCfg.Network.MinPeers,
432436
},
433437
},
434438
{
@@ -442,6 +446,7 @@ func TestNetworkConfigFromFlags(t *testing.T) {
442446
NoBootstrap: testCfg.Network.NoBootstrap,
443447
NoMDNS: true,
444448
DiscoveryInterval: time.Second * 10,
449+
MinPeers: testCfg.Network.MinPeers,
445450
},
446451
},
447452
}
@@ -816,6 +821,7 @@ func TestUpdateConfigFromGenesisData(t *testing.T) {
816821
NoBootstrap: testCfg.Network.NoBootstrap,
817822
NoMDNS: testCfg.Network.NoMDNS,
818823
DiscoveryInterval: testCfg.Network.DiscoveryInterval,
824+
MinPeers: testCfg.Network.MinPeers,
819825
},
820826
RPC: testCfg.RPC,
821827
System: testCfg.System,

cmd/gossamer/export.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ func dotConfigToToml(dcfg *dot.Config) *ctoml.Config {
122122
NoBootstrap: dcfg.Network.NoBootstrap,
123123
NoMDNS: dcfg.Network.NoMDNS,
124124
DiscoveryInterval: int(dcfg.Network.DiscoveryInterval / time.Second),
125+
MinPeers: dcfg.Network.MinPeers,
126+
MaxPeers: dcfg.Network.MaxPeers,
125127
}
126128

127129
cfg.RPC = ctoml.RPCConfig{

cmd/gossamer/export_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ func TestExportCommand(t *testing.T) {
8787
NoBootstrap: testCfg.Network.NoBootstrap,
8888
NoMDNS: testCfg.Network.NoMDNS,
8989
DiscoveryInterval: testCfg.Network.DiscoveryInterval,
90+
MinPeers: testCfg.Network.MinPeers,
9091
},
9192
RPC: testCfg.RPC,
9293
},
@@ -119,6 +120,7 @@ func TestExportCommand(t *testing.T) {
119120
NoBootstrap: testCfg.Network.NoBootstrap,
120121
NoMDNS: testCfg.Network.NoMDNS,
121122
DiscoveryInterval: testCfg.Network.DiscoveryInterval,
123+
MinPeers: testCfg.Network.MinPeers,
122124
},
123125
RPC: testCfg.RPC,
124126
},
@@ -151,6 +153,7 @@ func TestExportCommand(t *testing.T) {
151153
NoBootstrap: testCfg.Network.NoBootstrap,
152154
NoMDNS: testCfg.Network.NoMDNS,
153155
DiscoveryInterval: testCfg.Network.DiscoveryInterval,
156+
MinPeers: testCfg.Network.MinPeers,
154157
},
155158
RPC: testCfg.RPC,
156159
},

cmd/gossamer/flags.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,14 @@ var (
316316
}
317317
)
318318

319+
// BABE flags
320+
var (
321+
BABELeadFlag = cli.BoolFlag{
322+
Name: "babe-lead",
323+
Usage: `specify whether node should build block 1 of the network. only used when starting a new network`,
324+
}
325+
)
326+
319327
// flag sets that are shared by multiple commands
320328
var (
321329
// GlobalFlags are flags that are valid for use with the root command and all subcommands
@@ -366,6 +374,9 @@ var (
366374

367375
// telemetry flags
368376
NoTelemetryFlag,
377+
378+
// BABE flags
379+
BABELeadFlag,
369380
}
370381
)
371382

dot/config.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ type NetworkConfig struct {
9898
type CoreConfig struct {
9999
Roles byte
100100
BabeAuthority bool
101+
BABELead bool
101102
GrandpaAuthority bool
102103
WasmInterpreter string
103104
}
@@ -183,6 +184,7 @@ func GssmrConfig() *Config {
183184
NoBootstrap: gssmr.DefaultNoBootstrap,
184185
NoMDNS: gssmr.DefaultNoMDNS,
185186
DiscoveryInterval: gssmr.DefaultDiscoveryInterval,
187+
MinPeers: gssmr.DefaultMinPeers,
186188
},
187189
RPC: RPCConfig{
188190
Port: gssmr.DefaultRPCHTTPPort,

dot/config/toml/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ type CoreConfig struct {
8282
SlotDuration uint64 `toml:"slot-duration,omitempty"`
8383
EpochLength uint64 `toml:"epoch-length,omitempty"`
8484
WasmInterpreter string `toml:"wasm-interpreter,omitempty"`
85+
BABELead bool `toml:"babe-lead,omitempty"`
8586
}
8687

8788
// RPCConfig is to marshal/unmarshal toml RPC config vars

0 commit comments

Comments
 (0)