Skip to content

Commit fed0d7d

Browse files
committed
Change chain init roles
This changes the `validator` role to create a configuration for a network exposed validator. The previous setting, where `--role validator` set the parameters for an isolated validator behind a `sentry` mode can now be configured by using `--role isolated-validator`. This is now more in line with the setup used in https://github.com/shutter-network/snapshot-keyper which means less configuration changes are needed during the setup. It also allows for a simpler local docker compose test setup.
1 parent 2d0a35b commit fed0d7d

File tree

3 files changed

+19
-10
lines changed

3 files changed

+19
-10
lines changed

rolling-shutter/cmd/chain/init.go

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,17 @@ import (
2525
tmtime "github.com/tendermint/tendermint/libs/time"
2626
"github.com/tendermint/tendermint/privval"
2727
"github.com/tendermint/tendermint/types"
28+
"golang.org/x/exp/slices"
2829

2930
"github.com/shutter-network/rolling-shutter/rolling-shutter/app"
3031
)
3132

32-
const VALIDATOR = "validator"
33+
const (
34+
VALIDATOR = "validator"
35+
ISOLATEDVALIDATOR = "isolated-validator"
36+
SENTRY = "sentry"
37+
SEED = "seed"
38+
)
3339

3440
type Config struct {
3541
RootDir string `mapstructure:"root"`
@@ -67,7 +73,7 @@ func initCmd() *cobra.Command {
6773
cmd.PersistentFlags().Float64("blocktime", 1.0, "block time in seconds")
6874
cmd.PersistentFlags().StringSlice("genesis-keyper", nil, "genesis keyper address")
6975
cmd.PersistentFlags().String("listen-address", "tcp://127.0.0.1:26657", "tendermint RPC listen address")
70-
cmd.PersistentFlags().String("role", "validator", "tendermint node role (validator, sentry, seed)")
76+
cmd.PersistentFlags().String("role", "validator", "tendermint node role (validator, isolated-validator, sentry, seed)")
7177
cmd.PersistentFlags().Uint64("initial-eon", 0, "initial eon")
7278
return cmd
7379
}
@@ -97,7 +103,7 @@ func getArgFromViper[T interface{}](getter func(string) T, name string, required
97103
func initFiles(_ *cobra.Command, config *Config, _ []string) error {
98104
keypers := []common.Address{}
99105

100-
if config.Role == VALIDATOR {
106+
if slices.Contains([]string{VALIDATOR, ISOLATEDVALIDATOR}, config.Role) {
101107
for _, a := range config.GenesisKeyper {
102108
if !common.IsHexAddress(a) {
103109
return errors.Errorf("--genesis-keyper argument '%s' is not an address", a)
@@ -126,7 +132,6 @@ func initFiles(_ *cobra.Command, config *Config, _ []string) error {
126132
tendermintCfg.P2P.ListenAddress = p2pAddress
127133

128134
tendermintCfg.P2P.AllowDuplicateIP = true
129-
tendermintCfg.Mode = cfg.ModeValidator
130135

131136
tendermintCfg.SetRoot(config.RootDir)
132137
if err := tendermintCfg.ValidateBasic(); err != nil {
@@ -136,15 +141,19 @@ func initFiles(_ *cobra.Command, config *Config, _ []string) error {
136141

137142
// set up according to the network role: https://docs.tendermint.com/v0.34/tendermint-core/validators.html
138143
switch config.Role {
139-
case VALIDATOR:
144+
case VALIDATOR: // standard validator mode, network exposed
145+
tendermintCfg.P2P.PexReactor = true
146+
tendermintCfg.Mode = cfg.ModeValidator
147+
tendermintCfg.P2P.AddrBookStrict = true
148+
case ISOLATEDVALIDATOR: // validator mode behind a sentry node
140149
tendermintCfg.P2P.PexReactor = false
141150
tendermintCfg.Mode = cfg.ModeValidator
142151
tendermintCfg.P2P.AddrBookStrict = false
143-
case "sentry": // even though "sentry" nodes are documented, there is no special mode
152+
case SENTRY: // even though "sentry" nodes are documented, there is no special mode
144153
tendermintCfg.P2P.PexReactor = true
145154
tendermintCfg.Mode = cfg.ModeFull
146155
tendermintCfg.P2P.AddrBookStrict = false
147-
case "seed":
156+
case SEED:
148157
tendermintCfg.P2P.PexReactor = true
149158
tendermintCfg.Mode = cfg.ModeSeed
150159
tendermintCfg.P2P.AddrBookStrict = false
@@ -179,7 +188,7 @@ func adjustPort(address string, keyperIndex int) (string, error) {
179188

180189
func initFilesWithConfig(tendermintConfig *cfg.Config, config *Config, appState app.GenesisAppState) error {
181190
var err error
182-
if config.Role == VALIDATOR {
191+
if slices.Contains([]string{VALIDATOR, ISOLATEDVALIDATOR}, config.Role) {
183192
// private validator
184193
privValKeyFile := tendermintConfig.PrivValidator.KeyFile()
185194
privValStateFile := tendermintConfig.PrivValidator.StateFile()

rolling-shutter/docs/rolling-shutter_chain_init.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ rolling-shutter chain init [flags]
1616
--index int keyper index
1717
--initial-eon uint initial eon
1818
--listen-address string tendermint RPC listen address (default "tcp://127.0.0.1:26657")
19-
--role string tendermint node role (validator, sentry, seed) (default "validator")
19+
--role string tendermint node role (validator, isolated-validator, sentry, seed) (default "validator")
2020
--root string root directory
2121
```
2222

rolling-shutter/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ require (
4242
go.opentelemetry.io/otel/trace v1.14.0
4343
go.opentelemetry.io/proto/otlp v0.19.0
4444
golang.org/x/crypto v0.7.0
45+
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb
4546
golang.org/x/sync v0.1.0
4647
google.golang.org/protobuf v1.30.0
4748
gotest.tools v2.2.0+incompatible
@@ -215,7 +216,6 @@ require (
215216
go.uber.org/fx v1.19.3 // indirect
216217
go.uber.org/multierr v1.11.0 // indirect
217218
go.uber.org/zap v1.24.0 // indirect
218-
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb // indirect
219219
golang.org/x/mod v0.11.0 // indirect
220220
golang.org/x/net v0.8.0 // indirect
221221
golang.org/x/sys v0.11.0 // indirect

0 commit comments

Comments
 (0)