diff --git a/x/qgb/client/query.go b/x/qgb/client/query.go index 1ba2ec12d8..5a45b6d1b7 100644 --- a/x/qgb/client/query.go +++ b/x/qgb/client/query.go @@ -24,7 +24,7 @@ func GetQueryCmd() *cobra.Command { RunE: client.ValidateCmd, } - cmd.AddCommand(CmdQueryAttestationByNonce()) + cmd.AddCommand(CmdQueryAttestationByNonce(), CmdQueryEVMAddress()) return cmd } @@ -76,6 +76,35 @@ func CmdQueryAttestationByNonce() *cobra.Command { return cmd } +func CmdQueryEVMAddress() *cobra.Command { + cmd := &cobra.Command{ + Use: "evm ", + Short: "query the evm address corresponding to a validator bech32 valoper address", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + queryClient := types.NewQueryClient(clientCtx) + + res, err := queryClient.EVMAddress( + cmd.Context(), + &types.QueryEVMAddressRequest{ValidatorAddress: args[0]}, + ) + if err != nil { + return err + } + if res.EvmAddress == "" { + return types.ErrEVMAddressNotFound + } + fmt.Println(res.EvmAddress) + return nil + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + // unmarshallAttestation unmarshal a wrapper protobuf `Any` type to an `AttestationRequestI`. func unmarshallAttestation(attestation *codectypes.Any) (types.AttestationRequestI, error) { var unmarshalledAttestation types.AttestationRequestI diff --git a/x/qgb/types/errors.go b/x/qgb/types/errors.go index 626d76eed7..fdb73e33da 100644 --- a/x/qgb/types/errors.go +++ b/x/qgb/types/errors.go @@ -26,4 +26,5 @@ var ( ErrUnknownAttestationType = errors.Register(ModuleName, 35, "unknown attestation type") ErrEVMAddressNotHex = errors.Register(ModuleName, 36, "the provided evm address is not a valid hex address") ErrEVMAddressAlreadyExists = errors.Register(ModuleName, 37, "the provided evm address already exists") + ErrEVMAddressNotFound = errors.Register(ModuleName, 38, "EVM address not found") )