@@ -253,28 +253,43 @@ $ %s debug addr cosmos1e0jnq2sun3dzjh8p2xq95kk0expwmd7shwjpfg
253253 Args : cobra .ExactArgs (1 ),
254254 RunE : func (cmd * cobra.Command , args []string ) error {
255255 addrString := args [0 ]
256- var addr []byte
257-
258256 // try hex, then bech32
259- var err error
260- addr , err = hex .DecodeString (addrString )
261- if err != nil {
262- var err2 error
263- addr , err2 = sdk .AccAddressFromBech32 (addrString )
264- if err2 != nil {
265- var err3 error
266- addr , err3 = sdk .ValAddressFromBech32 (addrString )
267-
268- if err3 != nil {
269- return fmt .Errorf ("expected hex or bech32. Got errors: hex: %v, bech32 acc: %v, bech32 val: %v" , err , err2 , err3 )
257+ var (
258+ addr []byte
259+ err error
260+ )
261+ decodeFns := []func (text string ) ([]byte , error ){
262+ hex .DecodeString ,
263+ func (text string ) ([]byte , error ) { return sdk .AccAddressFromBech32 (text ) },
264+ func (text string ) ([]byte , error ) { return sdk .ValAddressFromBech32 (text ) },
265+ func (text string ) ([]byte , error ) { return sdk .ConsAddressFromBech32 (text ) },
266+ }
267+ errs := make ([]any , 0 , len (decodeFns ))
268+ for _ , fn := range decodeFns {
269+ if addr , err = fn (addrString ); err == nil {
270+ break
271+ }
272+ errs = append (errs , err )
273+ }
274+ if len (errs ) == len (decodeFns ) {
275+ errTags := []string {
276+ "hex" , "bech32 acc" , "bech32 val" , "bech32 con" ,
277+ }
278+ format := ""
279+ for i := range errs {
280+ if format != "" {
281+ format += ", "
270282 }
283+ format += errTags [i ] + ": %w"
271284 }
285+ return fmt .Errorf ("expected hex or bech32. Got errors: " + format , errs ... )
272286 }
273287
274288 cmd .Println ("Address:" , addr )
275289 cmd .Printf ("Address (hex): %X\n " , addr )
276290 cmd .Printf ("Bech32 Acc: %s\n " , sdk .AccAddress (addr ))
277291 cmd .Printf ("Bech32 Val: %s\n " , sdk .ValAddress (addr ))
292+ cmd .Printf ("Bech32 Con: %s\n " , sdk .ConsAddress (addr ))
278293 return nil
279294 },
280295 }
0 commit comments