@@ -41,29 +41,37 @@ import (
4141)
4242
4343const (
44- flagChainID = "chain-id"
45- flagNode = "node"
46- flagAPIAddr = "api-addr"
47- flagHome = "home"
48- flagVerbose = "verbose"
49- flagMnemonic = "mnemonic"
44+ flagChainID = "chain-id"
45+ flagNode = "node"
46+ flagAPIAddr = "api-addr"
47+ flagHome = "home"
48+ flagVerbose = "verbose"
49+ flagMnemonic = "mnemonic"
50+ flagBech32AccountPrefix = "bech32-account-prefix"
51+ flagBech32AccountPubkey = "bech32-account-pubkey"
52+ flagBech32ValidatorPrefix = "bech32-validator-prefix"
53+ flagBech32ValidatorPubkey = "bech32-validator-pubkey"
5054)
5155
5256// Config holds all configuration parameters for the attester
5357type Config struct {
54- ChainID string
55- Node string
56- APIAddr string
57- Home string
58- Verbose bool
59- Mnemonic string
58+ ChainID string
59+ Node string
60+ APIAddr string
61+ Home string
62+ Verbose bool
63+ Mnemonic string
64+ Bech32AccountPrefix string
65+ Bech32AccountPubkey string
66+ Bech32ValidatorPrefix string
67+ Bech32ValidatorPubkey string
6068}
6169
6270func main () {
6371 rootCmd := & cobra.Command {
64- Use : "attester_ws " ,
65- Short : "Attester client for Rollkit using websocket " ,
66- Long : `Attester client for Rollkit that joins the attester set and attests to blocks at the end of each epoch. ` ,
72+ Use : "attester " ,
73+ Short : "Attester client for Rollkit" ,
74+ Long : `Attester client for Rollkit that joins the attester set and attests to blocks` ,
6775 DisableFlagParsing : false ,
6876 SuggestionsMinimumDistance : 2 ,
6977 RunE : runAttester ,
@@ -76,6 +84,10 @@ func main() {
7684 rootCmd .Flags ().String (flagHome , "" , "Directory for config and data" )
7785 rootCmd .Flags ().Bool (flagVerbose , false , "Enable verbose output" )
7886 rootCmd .Flags ().String (flagMnemonic , "" , "Mnemonic for the private key" )
87+ rootCmd .Flags ().String (flagBech32AccountPrefix , "gm" , "Bech32 prefix for account addresses" )
88+ rootCmd .Flags ().String (flagBech32AccountPubkey , "gmpub" , "Bech32 prefix for account public keys" )
89+ rootCmd .Flags ().String (flagBech32ValidatorPrefix , "gmvaloper" , "Bech32 prefix for validator addresses" )
90+ rootCmd .Flags ().String (flagBech32ValidatorPubkey , "gmvaloperpub" , "Bech32 prefix for validator public keys" )
7991
8092 _ = rootCmd .MarkFlagRequired (flagChainID )
8193 _ = rootCmd .MarkFlagRequired (flagMnemonic )
@@ -119,13 +131,37 @@ func ParseFlags(cmd *cobra.Command) (*Config, error) {
119131 return nil , err
120132 }
121133
134+ bech32AccountPrefix , err := cmd .Flags ().GetString (flagBech32AccountPrefix )
135+ if err != nil {
136+ return nil , err
137+ }
138+
139+ bech32AccountPubkey , err := cmd .Flags ().GetString (flagBech32AccountPubkey )
140+ if err != nil {
141+ return nil , err
142+ }
143+
144+ bech32ValidatorPrefix , err := cmd .Flags ().GetString (flagBech32ValidatorPrefix )
145+ if err != nil {
146+ return nil , err
147+ }
148+
149+ bech32ValidatorPubkey , err := cmd .Flags ().GetString (flagBech32ValidatorPubkey )
150+ if err != nil {
151+ return nil , err
152+ }
153+
122154 return & Config {
123- ChainID : chainID ,
124- Node : node ,
125- APIAddr : apiAddr ,
126- Home : home ,
127- Verbose : verbose ,
128- Mnemonic : mnemonic ,
155+ ChainID : chainID ,
156+ Node : node ,
157+ APIAddr : apiAddr ,
158+ Home : home ,
159+ Verbose : verbose ,
160+ Mnemonic : mnemonic ,
161+ Bech32AccountPrefix : bech32AccountPrefix ,
162+ Bech32AccountPubkey : bech32AccountPubkey ,
163+ Bech32ValidatorPrefix : bech32ValidatorPrefix ,
164+ Bech32ValidatorPubkey : bech32ValidatorPubkey ,
129165 }, nil
130166}
131167
@@ -139,10 +175,18 @@ func runAttester(cmd *cobra.Command, _ []string) error {
139175 defer cancel ()
140176
141177 sdkConfig := sdk .GetConfig ()
142- sdkConfig .SetBech32PrefixForAccount ("gm" , "gmpub" )
143- sdkConfig .SetBech32PrefixForValidator ("gmvaloper" , "gmvaloperpub" )
178+ sdkConfig .SetBech32PrefixForAccount (config . Bech32AccountPrefix , config . Bech32AccountPubkey )
179+ sdkConfig .SetBech32PrefixForValidator (config . Bech32ValidatorPrefix , config . Bech32ValidatorPubkey )
144180 sdkConfig .Seal ()
145181
182+ if config .Verbose {
183+ fmt .Printf ("Bech32 Configuration:\n " )
184+ fmt .Printf (" Account prefix: %s\n " , config .Bech32AccountPrefix )
185+ fmt .Printf (" Account pubkey: %s\n " , config .Bech32AccountPubkey )
186+ fmt .Printf (" Validator prefix: %s\n " , config .Bech32ValidatorPrefix )
187+ fmt .Printf (" Validator pubkey: %s\n " , config .Bech32ValidatorPubkey )
188+ }
189+
146190 operatorPrivKey , err := privateKeyFromMnemonic (config .Mnemonic )
147191 if err != nil {
148192 return fmt .Errorf ("failed to create private key from mnemonic: %w" , err )
0 commit comments