informalsystems / hermes

IBC Relayer in Rust
https://hermes.informal.systems
Apache License 2.0
450 stars 329 forks source link

Domain-type validation for fee granter option #1657

Open adizere opened 2 years ago

adizere commented 2 years ago

I document the config.toml option in 16fc6a2 but left that segment of the configuration file commented-out. The reason for keeping this option a bit hidden is that it may be a source of misconfiguration. In particular, we don't validate the string in any way, and I suspect it should be a bech32-valid account identifier, but unclear how (if) we can validate that on Hermes side.

Currently, using a random string such as fee_granter = 'adi' will yield a very obscure error message (see below). Will open an issue to track this.

Error message when using invalid fee granter account > 2021-12-07T13:39:07.310229Z DEBUG ThreadId(21) [ibc-0] send_tx: max fee, for use in tx simulation: Fee { amount: "1001stake", gas_limit: 1000000 } 2021-12-07T13:39:07.345402Z ERROR ThreadId(21) [ibc-0] estimate_gas: failed to simulate tx with non-recoverable error: gRPC call failed with status: status: InvalidArgument, message: "recovered: decoding bech32 failed: invalid bech32 string length 3\nstack:\ngoroutine 1255 [running]:\nruntime/debug.Stack()\n\truntime/debug/stack.go:24 +0x65\ngithub.com/cosmos/cosmos-sdk/baseapp.newDefaultRecoveryMiddleware.func1({0x534f2e0, 0xc003934a20})\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/recovery.go:71 +0x27\ngithub.com/cosmos/cosmos-sdk/baseapp.newRecoveryMiddleware.func1({0x534f2e0, 0xc003934a20})\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/recovery.go:39 +0x30\ngithub.com/cosmos/cosmos-sdk/baseapp.processRecovery({0x534f2e0, 0xc003934a20}, 0xc003aa0240)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/recovery.go:28 +0x37\ngithub.com/cosmos/cosmos-sdk/baseapp.processRecovery({0x534f2e0, 0xc003934a20}, 0x59e5440)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/recovery.go:33 +0x5e\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx.func1()\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/baseapp.go:588 +0xfd\npanic({0x534f2e0, 0xc003934a20})\n\truntime/panic.go:1038 +0x215\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.SetUpContextDecorator.AnteHandle.func1()\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/setup.go:59 +0x1fd\npanic({0x534f2e0, 0xc003934a20})\n\truntime/panic.go:1038 +0x215\ngithub.com/cosmos/cosmos-sdk/x/auth/tx.(*wrapper).FeeGranter(0x2020202020202020)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/tx/builder.go:149 +0x65\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.RejectFeeGranterDecorator.AnteHandle({}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/fee_grant.go:22 +0x99\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.ConsumeTxSizeGasDecorator.AnteHandle({{_, _}}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/basic.go:142 +0x3c6\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.ValidateMemoDecorator.AnteHandle({{_, _}}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/basic.go:66 +0x2ee\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.TxTimeoutHeightDecorator.AnteHandle({}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/basic.go:199 +0x28e\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.ValidateBasicDecorator.AnteHandle({}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/basic.go:34 +0x1ce\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.MempoolFeeDecorator.AnteHandle({}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/fee.go:54 +0x306\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.RejectExtensionOptionsDecorator.AnteHandle({}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/ext.go:35 +0x12e\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.SetUpContextDecorator.AnteHandle({}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/setup.go:64 +0x68e\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx(0xc00058b520, 0x2, {0xc003893400, 0x276, 0x276})\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/baseapp.go:637 +0x63f\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).Simulate(...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/test_helpers.go:22\ngithub.com/cosmos/cosmos-sdk/x/auth/tx.txServer.Simulate({{{0x0, 0x0, 0x0}, {0x59fb700, 0xc000553220}, {0x0, 0x0}, {0x59cb530, 0xc000fa20e0}, {0x59d5f80, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/tx/service.go:108 +0xcf\ngithub.com/cosmos/cosmos-sdk/types/tx._Service_Simulate_Handler({0x545e260, 0xc001162000}, {0x59c33b8, 0xc00393d230}, 0xc00391c230, 0x0)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/tx/service.pb.go:732 +0x170\ngithub.com/cosmos/cosmos-sdk/baseapp.(*GRPCQueryRouter).RegisterService.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc0038ddbc0}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/grpcrouter.go:92 +0x23e\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).handleQueryGRPC(0x203000, 0xc00056c6c0, {{0xc003893180, 0x279, 0x279}, {0x5571086, 0x23}, 0x10, 0x0})\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/abci.go:574 +0x1ef\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).Query(0xc00058b520, {{0xc003893180, 0x279, 0x279}, {0x5571086, 0x23}, 0x10, 0x0})\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/abci.go:418 +0x713\ngithub.com/tendermint/tendermint/abci/client.(*localClient).QuerySync(0xc0005511a0, {{0xc003893180, 0x279, 0x279}, {0x5571086, 0x23}, 0x0, 0x0})\n\tgithub.com/tendermint/tendermint@v0.34.11/abci/client/local_client.go:250 +0x171\ngithub.com/tendermint/tendermint/proxy.(*appConnQuery).QuerySync(0x4, {{0xc003893180, 0x279, 0x279}, {0x5571086, 0x23}, 0x0, 0x0})\n\tgithub.com/tendermint/tendermint@v0.34.11/proxy/app_conn.go:159 +0x6e\ngithub.com/tendermint/tendermint/rpc/core.ABCIQuery(0x0, {0x5571086, 0x23}, {0xc003893180, 0x279, 0x279}, 0x3e9, 0x0)\n\tgithub.com/tendermint/tendermint@v0.34.11/rpc/core/abci.go:20 +0xf6\ngithub.com/tendermint/tendermint/rpc/client/local.(*Local).ABCIQueryWithOptions(0xc0038d79e8, {0x1, 0x0}, {0x5571086, 0xa}, {0xc003893180, 0x8, 0x52c5600}, {0x0, 0x0})\n\tgithub.com/tendermint/tendermint@v0.34.11/rpc/client/local/local.go:87 +0x45\ngithub.com/cosmos/cosmos-sdk/client.Context.queryABCI({{0x0, 0x0, 0x0}, {0x59fb700, 0xc000553220}, {0x0, 0x0}, {0x59cb530, 0xc000fa20e0}, {0x59d5f80, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/client/query.go:79 +0x19e\ngithub.com/cosmos/cosmos-sdk/client.Context.QueryABCI(...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/client/query.go:55\ngithub.com/cosmos/cosmos-sdk/client.RunGRPCQuery({{0x0, 0x0, 0x0}, {0x59fb700, 0xc000553220}, {0x0, 0x0}, {0x59cb530, 0xc000fa20e0}, {0x59d5f80, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/client/grpc_query.go:119 +0x31d\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).RegisterGRPCServer.func1({0x59c33b8, 0xc0039118f0}, {0x5493600, 0xc0005b96e0}, 0xc003934040, 0x0)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/grpcserver.go:41 +0x15e\ngithub.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1.1.1({0x59c33b8, 0xc0039118f0}, {0x5493600, 0xc0005b96e0})\n\tgithub.com/grpc-ecosystem/go-grpc-middleware@v1.3.0/chain.go:25 +0x3a\ngithub.com/grpc-ecosystem/go-grpc-middleware/recovery.UnaryServerInterceptor.func1({0x59c33b8, 0xc0039118f0}, {0x5493600, 0xc0005b96e0}, 0x18, 0xc003934040)\n\tgithub.com/grpc-ecosystem/go-grpc-middleware@v1.3.0/recovery/interceptors.go:33 +0xc8\ngithub.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1.1.1({0x59c33b8, 0xc0039118f0}, {0x5493600, 0xc0005b96e0})\n\tgithub.com/grpc-ecosystem/go-grpc-middleware@v1.3.0/chain.go:25 +0x3a\ngithub.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1({0x59c33b8, 0xc0039118f0}, {0x5493600, 0xc0005b96e0}, 0xc002e10b01, 0xc002e10b58)\n\tgithub.com/grpc-ecosystem/go-grpc-middleware@v1.3.0/chain.go:34 +0xbf\ngithub.com/cosmos/cosmos-sdk/types/tx._Service_Simulate_Handler({0x545e260, 0xc001162000}, {0x59c33b8, 0xc0039118f0}, 0xc0038ede60, 0xc003911920)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/tx/service.pb.go:741 +0x138\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).RegisterGRPCServer.func2({0x545e260, 0xc001162000}, {0x59c33b8, 0xc0039118f0}, 0x54f5180, 0xc0011fa600)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/grpcserver.go:90 +0xdc\ngoogle.golang.org/grpc.(*Server).processUnaryRPC(0xc00055b6c0, {0x59dd0b0, 0xc001241b00}, 0xc0011fa600, 0xc000d1ba10, 0xc002e007e0, 0x0)\n\tgoogle.golang.org/grpc@v1.37.0/server.go:1210 +0xc8f\ngoogle.golang.org/grpc.(*Server).handleStream(0xc00055b6c0, {0x59dd0b0, 0xc001241b00}, 0xc0011fa600, 0x0)\n\tgoogle.golang.org/grpc@v1.37.0/server.go:1533 +0xa2a\ngoogle.golang.org/grpc.(*Server).serveStreams.func1.2()\n\tgoogle.golang.org/grpc@v1.37.0/server.go:871 +0x98\ncreated by google.golang.org/grpc.(*Server).serveStreams.func1\n\tgoogle.golang.org/grpc@v1.37.0/server.go:869 +0x294\n: panic: invalid request", details: [], metadata: MetadataMap { headers: {"content-type": "application/grpc"} } Error: foreign client error: error raised while creating client for chain ibc-0: failed sending message to dst chain : gRPC call failed with status: status: InvalidArgument, message: "recovered: decoding bech32 failed: invalid bech32 string length 3\nstack:\ngoroutine 1255 [running]:\nruntime/debug.Stack()\n\truntime/debug/stack.go:24 +0x65\ngithub.com/cosmos/cosmos-sdk/baseapp.newDefaultRecoveryMiddleware.func1({0x534f2e0, 0xc003934a20})\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/recovery.go:71 +0x27\ngithub.com/cosmos/cosmos-sdk/baseapp.newRecoveryMiddleware.func1({0x534f2e0, 0xc003934a20})\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/recovery.go:39 +0x30\ngithub.com/cosmos/cosmos-sdk/baseapp.processRecovery({0x534f2e0, 0xc003934a20}, 0xc003aa0240)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/recovery.go:28 +0x37\ngithub.com/cosmos/cosmos-sdk/baseapp.processRecovery({0x534f2e0, 0xc003934a20}, 0x59e5440)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/recovery.go:33 +0x5e\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx.func1()\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/baseapp.go:588 +0xfd\npanic({0x534f2e0, 0xc003934a20})\n\truntime/panic.go:1038 +0x215\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.SetUpContextDecorator.AnteHandle.func1()\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/setup.go:59 +0x1fd\npanic({0x534f2e0, 0xc003934a20})\n\truntime/panic.go:1038 +0x215\ngithub.com/cosmos/cosmos-sdk/x/auth/tx.(*wrapper).FeeGranter(0x2020202020202020)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/tx/builder.go:149 +0x65\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.RejectFeeGranterDecorator.AnteHandle({}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/fee_grant.go:22 +0x99\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.ConsumeTxSizeGasDecorator.AnteHandle({{_, _}}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/basic.go:142 +0x3c6\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.ValidateMemoDecorator.AnteHandle({{_, _}}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/basic.go:66 +0x2ee\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.TxTimeoutHeightDecorator.AnteHandle({}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/basic.go:199 +0x28e\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.ValidateBasicDecorator.AnteHandle({}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/basic.go:34 +0x1ce\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.MempoolFeeDecorator.AnteHandle({}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/fee.go:54 +0x306\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.RejectExtensionOptionsDecorator.AnteHandle({}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/ext.go:35 +0x12e\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/x/auth/ante.SetUpContextDecorator.AnteHandle({}, {{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/ante/setup.go:64 +0x68e\ngithub.com/cosmos/cosmos-sdk/types.ChainAnteDecorators.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc003a5e600}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/handler.go:40 +0x158\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx(0xc00058b520, 0x2, {0xc003893400, 0x276, 0x276})\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/baseapp.go:637 +0x63f\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).Simulate(...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/test_helpers.go:22\ngithub.com/cosmos/cosmos-sdk/x/auth/tx.txServer.Simulate({{{0x0, 0x0, 0x0}, {0x59fb700, 0xc000553220}, {0x0, 0x0}, {0x59cb530, 0xc000fa20e0}, {0x59d5f80, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/x/auth/tx/service.go:108 +0xcf\ngithub.com/cosmos/cosmos-sdk/types/tx._Service_Simulate_Handler({0x545e260, 0xc001162000}, {0x59c33b8, 0xc00393d230}, 0xc00391c230, 0x0)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/tx/service.pb.go:732 +0x170\ngithub.com/cosmos/cosmos-sdk/baseapp.(*GRPCQueryRouter).RegisterService.func1({{0x59c3348, 0xc00012c008}, {0x59e5440, 0xc0038ddbc0}, {{0xb, 0x0}, {0xc00388d6f0, 0x5}, 0x10, {0x26552be0, ...}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/grpcrouter.go:92 +0x23e\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).handleQueryGRPC(0x203000, 0xc00056c6c0, {{0xc003893180, 0x279, 0x279}, {0x5571086, 0x23}, 0x10, 0x0})\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/abci.go:574 +0x1ef\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).Query(0xc00058b520, {{0xc003893180, 0x279, 0x279}, {0x5571086, 0x23}, 0x10, 0x0})\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/abci.go:418 +0x713\ngithub.com/tendermint/tendermint/abci/client.(*localClient).QuerySync(0xc0005511a0, {{0xc003893180, 0x279, 0x279}, {0x5571086, 0x23}, 0x0, 0x0})\n\tgithub.com/tendermint/tendermint@v0.34.11/abci/client/local_client.go:250 +0x171\ngithub.com/tendermint/tendermint/proxy.(*appConnQuery).QuerySync(0x4, {{0xc003893180, 0x279, 0x279}, {0x5571086, 0x23}, 0x0, 0x0})\n\tgithub.com/tendermint/tendermint@v0.34.11/proxy/app_conn.go:159 +0x6e\ngithub.com/tendermint/tendermint/rpc/core.ABCIQuery(0x0, {0x5571086, 0x23}, {0xc003893180, 0x279, 0x279}, 0x3e9, 0x0)\n\tgithub.com/tendermint/tendermint@v0.34.11/rpc/core/abci.go:20 +0xf6\ngithub.com/tendermint/tendermint/rpc/client/local.(*Local).ABCIQueryWithOptions(0xc0038d79e8, {0x1, 0x0}, {0x5571086, 0xa}, {0xc003893180, 0x8, 0x52c5600}, {0x0, 0x0})\n\tgithub.com/tendermint/tendermint@v0.34.11/rpc/client/local/local.go:87 +0x45\ngithub.com/cosmos/cosmos-sdk/client.Context.queryABCI({{0x0, 0x0, 0x0}, {0x59fb700, 0xc000553220}, {0x0, 0x0}, {0x59cb530, 0xc000fa20e0}, {0x59d5f80, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/client/query.go:79 +0x19e\ngithub.com/cosmos/cosmos-sdk/client.Context.QueryABCI(...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/client/query.go:55\ngithub.com/cosmos/cosmos-sdk/client.RunGRPCQuery({{0x0, 0x0, 0x0}, {0x59fb700, 0xc000553220}, {0x0, 0x0}, {0x59cb530, 0xc000fa20e0}, {0x59d5f80, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/client/grpc_query.go:119 +0x31d\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).RegisterGRPCServer.func1({0x59c33b8, 0xc0039118f0}, {0x5493600, 0xc0005b96e0}, 0xc003934040, 0x0)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/grpcserver.go:41 +0x15e\ngithub.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1.1.1({0x59c33b8, 0xc0039118f0}, {0x5493600, 0xc0005b96e0})\n\tgithub.com/grpc-ecosystem/go-grpc-middleware@v1.3.0/chain.go:25 +0x3a\ngithub.com/grpc-ecosystem/go-grpc-middleware/recovery.UnaryServerInterceptor.func1({0x59c33b8, 0xc0039118f0}, {0x5493600, 0xc0005b96e0}, 0x18, 0xc003934040)\n\tgithub.com/grpc-ecosystem/go-grpc-middleware@v1.3.0/recovery/interceptors.go:33 +0xc8\ngithub.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1.1.1({0x59c33b8, 0xc0039118f0}, {0x5493600, 0xc0005b96e0})\n\tgithub.com/grpc-ecosystem/go-grpc-middleware@v1.3.0/chain.go:25 +0x3a\ngithub.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1({0x59c33b8, 0xc0039118f0}, {0x5493600, 0xc0005b96e0}, 0xc002e10b01, 0xc002e10b58)\n\tgithub.com/grpc-ecosystem/go-grpc-middleware@v1.3.0/chain.go:34 +0xbf\ngithub.com/cosmos/cosmos-sdk/types/tx._Service_Simulate_Handler({0x545e260, 0xc001162000}, {0x59c33b8, 0xc0039118f0}, 0xc0038ede60, 0xc003911920)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/types/tx/service.pb.go:741 +0x138\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).RegisterGRPCServer.func2({0x545e260, 0xc001162000}, {0x59c33b8, 0xc0039118f0}, 0x54f5180, 0xc0011fa600)\n\tgithub.com/cosmos/cosmos-sdk@v0.42.9/baseapp/grpcserver.go:90 +0xdc\ngoogle.golang.org/grpc.(*Server).processUnaryRPC(0xc00055b6c0, {0x59dd0b0, 0xc001241b00}, 0xc0011fa600, 0xc000d1ba10, 0xc002e007e0, 0x0)\n\tgoogle.golang.org/grpc@v1.37.0/server.go:1210 +0xc8f\ngoogle.golang.org/grpc.(*Server).handleStream(0xc00055b6c0, {0x59dd0b0, 0xc001241b00}, 0xc0011fa600, 0x0)\n\tgoogle.golang.org/grpc@v1.37.0/server.go:1533 +0xa2a\ngoogle.golang.org/grpc.(*Server).serveStreams.func1.2()\n\tgoogle.golang.org/grpc@v1.37.0/server.go:871 +0x98\ncreated by google.golang.org/grpc.(*Server).serveStreams.func1\n\tgoogle.golang.org/grpc@v1.37.0/server.go:869 +0x294\n: panic: invalid request", details: [], metadata: MetadataMap { headers: {"content-type": "application/grpc"} }

Originally posted by @adizere in https://github.com/informalsystems/ibc-rs/issues/1634#issuecomment-987939308

dualsystems commented 2 years ago

as example tmkms trust bench32 in user-config: https://github.com/iqlusioninc/tmkms/blob/e50ebcb75c554ac7dd8da6df6450ae75eb86f50a/src/tx_signer.rs#L97

if the user entered the wrong bench32 sdk will return errors