gRPC support targets Cosmos SDK chains exclusively because Cosmos is the only blockchain ecosystem with native gRPC as a first-class query interface.
| Blockchain | Query Interface |
|---|---|
| Cosmos SDK (Osmosis, Celestia, Pocket, etc.) | gRPC, REST, CometBFT RPC |
| Ethereum/EVM | JSON-RPC only |
| Solana | JSON-RPC only |
| Bitcoin | JSON-RPC only |
| Polkadot/Substrate | JSON-RPC, WebSocket |
Cosmos SDK uses Protocol Buffers throughout its architecture—state encoding, transactions, and queries. Every Cosmos module (bank, staking, gov, auth) auto-generates gRPC query endpoints from proto definitions. gRPC is not an add-on; it's fundamental to how Cosmos works.
Other ecosystems standardized on JSON-RPC before gRPC existed or chose HTTP/JSON for simplicity. There's no native gRPC to support.
This is why gRPC handling lives in qos/cosmos/ rather than a generic gRPC service.
plan.md- Overall plan, reasoning, dependencies, and implementation orderpoktroll.md- Changes required in poktroll (stake config reader)relayminer.md- Changes required in Relayminer (trailer support, HTTP/2 server)path.md- Changes required in PATH (QoS, protocol, config)implementation.md- Step-by-step implementation guide for PATH
Add gRPC support for Cosmos blockchains across the stack:
- Shannon SDK: Add
Trailerfield toPOKTHTTPResponseproto (prerequisite) - poktroll: Update stake config reader to parse GRPC endpoint type
- Relayminer: Add trailer capture, HTTP/2 server support (h2c)
- PATH: Add gRPC detection, validation, response handling, and endpoint routing
Scope: gRPC-Web + native gRPC, unary + server streaming.
Shannon SDK (POKTHTTPResponse.Trailer)
↓
Relayminer (trailer capture + h2c server)
↓
PATH (gRPC detection + trailer handling)
types/http.proto- AddTrailerfield toPOKTHTTPResponse
x/supplier/config/supplier_configs_reader.go- Add GRPC toparseEndpointRPCType()
pkg/relayer/proxy/http_utils.go- Capture trailers inSerializeHTTPResponsepkg/relayer/proxy/http_server.go- Add h2c (HTTP/2 cleartext) support
qos/cosmos/rpctype_grpc.goqos/cosmos/request_validator_grpc.goqos/cosmos/response_grpc.goqos/cosmos/grpc_stream.gogateway/grpc_web.go
qos/cosmos/request_validator.goqos/cosmos/request_validator_jsonrpc.goprotocol/shannon/endpoint.goprotocol/shannon/protocol.goproto/path/qos/cosmos_request.protoconfig/service_qos_config.gonetwork/http/http_client.go