From 4daa132011fca2b3552011e3ed1bf935ed514bab Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Thu, 16 Jan 2025 11:05:40 +0100 Subject: [PATCH 1/5] Change RejectStargateQuerier from factory function to free function --- x/wasm/keeper/query_plugins.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/x/wasm/keeper/query_plugins.go b/x/wasm/keeper/query_plugins.go index a1e69120e..ce6335219 100644 --- a/x/wasm/keeper/query_plugins.go +++ b/x/wasm/keeper/query_plugins.go @@ -121,7 +121,7 @@ func DefaultQueryPlugins( Custom: NoCustomQuerier, IBC: IBCQuerier(wasm, channelKeeper), Staking: StakingQuerier(staking, distKeeper), - Stargate: RejectStargateQuerier(), + Stargate: RejectStargateQuerier, Grpc: RejectGrpcQuerier, Wasm: WasmQuerier(wasm), Distribution: DistributionQuerier(distKeeper), @@ -376,10 +376,8 @@ func AcceptListGrpcQuerier(acceptList AcceptedQueries, queryRouter GRPCQueryRout } // RejectStargateQuerier rejects all stargate queries -func RejectStargateQuerier() func(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) { - return func(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) { - return nil, wasmvmtypes.UnsupportedRequest{Kind: "Stargate queries are disabled"} - } +func RejectStargateQuerier(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) { + return nil, wasmvmtypes.UnsupportedRequest{Kind: "Stargate queries are disabled"} } // AcceptedQueries defines accepted Stargate or gRPC queries as a map where the key is the query path From 5a146160f04a75672176ada63f28857aa06fd918 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Thu, 16 Jan 2025 11:12:21 +0100 Subject: [PATCH 2/5] Clarify error message to help contract developers --- x/wasm/keeper/query_plugins.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x/wasm/keeper/query_plugins.go b/x/wasm/keeper/query_plugins.go index ce6335219..d12c4699f 100644 --- a/x/wasm/keeper/query_plugins.go +++ b/x/wasm/keeper/query_plugins.go @@ -333,7 +333,7 @@ func IBCQuerier(wasm contractMetaDataSource, channelKeeper types.ChannelKeeper) } func RejectGrpcQuerier(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.Message, error) { - return nil, wasmvmtypes.UnsupportedRequest{Kind: "gRPC queries are disabled"} + return nil, wasmvmtypes.UnsupportedRequest{Kind: "gRPC queries are disabled on this chain"} } // AcceptListGrpcQuerier supports a preconfigured set of gRPC queries only. @@ -377,7 +377,7 @@ func AcceptListGrpcQuerier(acceptList AcceptedQueries, queryRouter GRPCQueryRout // RejectStargateQuerier rejects all stargate queries func RejectStargateQuerier(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) { - return nil, wasmvmtypes.UnsupportedRequest{Kind: "Stargate queries are disabled"} + return nil, wasmvmtypes.UnsupportedRequest{Kind: "Stargate queries are disabled on this chain"} } // AcceptedQueries defines accepted Stargate or gRPC queries as a map where the key is the query path From d256a5ffe75a70629a75b27a6e75a6125f5ff1f7 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Thu, 16 Jan 2025 11:15:19 +0100 Subject: [PATCH 3/5] Streamline and improve documentation for RejectGrpcQuerier --- x/wasm/keeper/query_plugins.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/x/wasm/keeper/query_plugins.go b/x/wasm/keeper/query_plugins.go index d12c4699f..1a80f5a51 100644 --- a/x/wasm/keeper/query_plugins.go +++ b/x/wasm/keeper/query_plugins.go @@ -332,6 +332,9 @@ func IBCQuerier(wasm contractMetaDataSource, channelKeeper types.ChannelKeeper) } } +// RejectGrpcQuerier is a querier that rejects all gRPC queries. +// +// Use AcceptListGrpcQuerier instead to create a list of accepted query types. func RejectGrpcQuerier(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.Message, error) { return nil, wasmvmtypes.UnsupportedRequest{Kind: "gRPC queries are disabled on this chain"} } @@ -375,7 +378,9 @@ func AcceptListGrpcQuerier(acceptList AcceptedQueries, queryRouter GRPCQueryRout } } -// RejectStargateQuerier rejects all stargate queries +// RejectStargateQuerier is a querier that rejects all stargate queries. +// +// Use AcceptListStargateQuerier instead to create a list of accepted query types. func RejectStargateQuerier(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) { return nil, wasmvmtypes.UnsupportedRequest{Kind: "Stargate queries are disabled on this chain"} } From 7f313dc26b2ad2657a6af6ffaeb89ff2a89c38e2 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Thu, 16 Jan 2025 11:26:22 +0100 Subject: [PATCH 4/5] Pull out function signatures --- x/wasm/keeper/query_plugins.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/x/wasm/keeper/query_plugins.go b/x/wasm/keeper/query_plugins.go index 1a80f5a51..581f374f4 100644 --- a/x/wasm/keeper/query_plugins.go +++ b/x/wasm/keeper/query_plugins.go @@ -84,13 +84,16 @@ func (q QueryHandler) GasConsumed() uint64 { type CustomQuerier func(ctx sdk.Context, request json.RawMessage) ([]byte, error) +type stargateQuerierFn func(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) +type grpcQuerierFn func(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.Message, error) + type QueryPlugins struct { Bank func(ctx sdk.Context, request *wasmvmtypes.BankQuery) ([]byte, error) Custom CustomQuerier IBC func(ctx sdk.Context, caller sdk.AccAddress, request *wasmvmtypes.IBCQuery) ([]byte, error) Staking func(ctx sdk.Context, request *wasmvmtypes.StakingQuery) ([]byte, error) - Stargate func(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) - Grpc func(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.Message, error) + Stargate stargateQuerierFn + Grpc grpcQuerierFn Wasm func(ctx sdk.Context, request *wasmvmtypes.WasmQuery) ([]byte, error) Distribution func(ctx sdk.Context, request *wasmvmtypes.DistributionQuery) ([]byte, error) } @@ -339,6 +342,8 @@ func RejectGrpcQuerier(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.M return nil, wasmvmtypes.UnsupportedRequest{Kind: "gRPC queries are disabled on this chain"} } +var _ grpcQuerierFn = RejectGrpcQuerier // just a type check + // AcceptListGrpcQuerier supports a preconfigured set of gRPC queries only. // All arguments must be non nil. // @@ -347,7 +352,7 @@ func RejectGrpcQuerier(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.M // // These queries can be set via WithQueryPlugins option in the wasm keeper constructor: // WithQueryPlugins(&QueryPlugins{Grpc: AcceptListGrpcQuerier(acceptList, queryRouter, codec)}) -func AcceptListGrpcQuerier(acceptList AcceptedQueries, queryRouter GRPCQueryRouter, codec codec.Codec) func(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.Message, error) { +func AcceptListGrpcQuerier(acceptList AcceptedQueries, queryRouter GRPCQueryRouter, codec codec.Codec) grpcQuerierFn { return func(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.Message, error) { protoResponseFn, accepted := acceptList[request.Path] if !accepted { @@ -385,6 +390,8 @@ func RejectStargateQuerier(ctx sdk.Context, request *wasmvmtypes.StargateQuery) return nil, wasmvmtypes.UnsupportedRequest{Kind: "Stargate queries are disabled on this chain"} } +var _ stargateQuerierFn = RejectStargateQuerier // just a type check + // AcceptedQueries defines accepted Stargate or gRPC queries as a map where the key is the query path // and the value is a function returning a proto.Message. // @@ -403,7 +410,7 @@ type AcceptedQueries map[string]func() proto.Message // // These queries can be set via WithQueryPlugins option in the wasm keeper constructor: // WithQueryPlugins(&QueryPlugins{Stargate: AcceptListStargateQuerier(acceptList, queryRouter, codec)}) -func AcceptListStargateQuerier(acceptList AcceptedQueries, queryRouter GRPCQueryRouter, codec codec.Codec) func(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) { +func AcceptListStargateQuerier(acceptList AcceptedQueries, queryRouter GRPCQueryRouter, codec codec.Codec) stargateQuerierFn { return func(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) { protoResponseFn, accepted := acceptList[request.Path] if !accepted { From 4d27351baa99665f8a2119bd6e8ce69408055a0d Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Thu, 16 Jan 2025 10:29:40 +0000 Subject: [PATCH 5/5] [autofix.ci] apply automated fixes --- x/wasm/keeper/query_plugins.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/x/wasm/keeper/query_plugins.go b/x/wasm/keeper/query_plugins.go index 581f374f4..0392a4855 100644 --- a/x/wasm/keeper/query_plugins.go +++ b/x/wasm/keeper/query_plugins.go @@ -84,8 +84,10 @@ func (q QueryHandler) GasConsumed() uint64 { type CustomQuerier func(ctx sdk.Context, request json.RawMessage) ([]byte, error) -type stargateQuerierFn func(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) -type grpcQuerierFn func(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.Message, error) +type ( + stargateQuerierFn func(ctx sdk.Context, request *wasmvmtypes.StargateQuery) ([]byte, error) + grpcQuerierFn func(ctx sdk.Context, request *wasmvmtypes.GrpcQuery) (proto.Message, error) +) type QueryPlugins struct { Bank func(ctx sdk.Context, request *wasmvmtypes.BankQuery) ([]byte, error)