gRPCurl
grpcurl is like curl but for gRPC. It is also available as a Go library, but we will use it only as a CLI command for debugging and testing purposes. Follow the instructions in the previous link to install it.
Assuming you already installed sentinelhub, you should be able to run the following command to list the Protobuf services available (you can replace grpc.sentinel.co:9090 by the gRPC server endpoint of another node such as another provider or your own node).
Listing all the methods from the mainnet
grpcurl -plaintext grpc.sentinel.co:9090 list
Output will look like:
cosmos.auth.v1beta1.Query
cosmos.authz.v1beta1.Query
cosmos.bank.v1beta1.Query
cosmos.base.reflection.v1beta1.ReflectionService
cosmos.base.reflection.v2alpha1.ReflectionService
cosmos.base.tendermint.v1beta1.Service
cosmos.distribution.v1beta1.Query
cosmos.evidence.v1beta1.Query
cosmos.feegrant.v1beta1.Query
cosmos.gov.v1beta1.Query
cosmos.mint.v1beta1.Query
cosmos.params.v1beta1.Query
cosmos.slashing.v1beta1.Query
cosmos.staking.v1beta1.Query
cosmos.tx.v1beta1.Service
cosmos.upgrade.v1beta1.Query
cosmwasm.wasm.v1.Query
grpc.reflection.v1alpha.ServerReflection
ibc.applications.fee.v1.Query
ibc.applications.interchain_accounts.controller.v1.Query
ibc.applications.interchain_accounts.host.v1.Query
ibc.applications.transfer.v1.Query
ibc.core.channel.v1.Query
ibc.core.client.v1.Query
ibc.core.connection.v1.Query
sentinel.deposit.v1.QueryService
sentinel.node.v2.QueryService
sentinel.plan.v2.QueryService
sentinel.provider.v2.QueryService
sentinel.session.v2.QueryService
sentinel.subscription.v2.QueryService
sentinel.swap.v1.QueryService
You should see a list of gRPC services, such as cosmos.bank.v1beta1.Query. This is called reflection, which is a Protobuf endpoint returning a description of all available endpoints. Each of these represents a different Protobuf service, and each service exposes multiple RPC methods you can query against.
In order to get a description of the service you can run the following command:
grpcurl -plaintext \
grpc.sentinel.co:9090 \
describe <grpc_service>
The methods for every gRPC service are the followings:
sentinel.deposit.v1.QueryService
These are the methods of sentinel.deposit.v1.QueryService
service QueryService {
rpc QueryDeposit ( .sentinel.deposit.v1.QueryDepositRequest ) returns ( .sentinel.deposit.v1.QueryDepositResponse ) {
option (.google.api.http) = { get: "/sentinel/deposits/{address}" };
}
rpc QueryDeposits ( .sentinel.deposit.v1.QueryDepositsRequest ) returns ( .sentinel.deposit.v1.QueryDepositsResponse ) {
option (.google.api.http) = { get: "/sentinel/deposits" };
}
}
sentinel.node.v2.QueryService
These are the methods of sentinel.node.v2.QueryService
service QueryService {
rpc QueryNode ( .sentinel.node.v2.QueryNodeRequest ) returns ( .sentinel.node.v2.QueryNodeResponse ) {
option (.google.api.http) = { get: "/sentinel/nodes/{address}" };
}
rpc QueryNodes ( .sentinel.node.v2.QueryNodesRequest ) returns ( .sentinel.node.v2.QueryNodesResponse ) {
option (.google.api.http) = { get: "/sentinel/nodes" };
}
rpc QueryNodesForPlan ( .sentinel.node.v2.QueryNodesForPlanRequest ) returns ( .sentinel.node.v2.QueryNodesForPlanResponse ) {
option (.google.api.http) = { get: "/sentinel/plans/{id}/nodes" };
}
rpc QueryParams ( .sentinel.node.v2.QueryParamsRequest ) returns ( .sentinel.node.v2.QueryParamsResponse ) {
option (.google.api.http) = { get: "/sentinel/modules/node/params" };
}
}
sentinel.plan.v2.QueryService
These are the methods of sentinel.plan.v2.QueryService
service QueryService {
rpc QueryPlan ( .sentinel.plan.v2.QueryPlanRequest ) returns ( .sentinel.plan.v2.QueryPlanResponse ) {
option (.google.api.http) = { get: "/sentinel/plans/{id}" };
}
rpc QueryPlans ( .sentinel.plan.v2.QueryPlansRequest ) returns ( .sentinel.plan.v2.QueryPlansResponse ) {
option (.google.api.http) = { get: "/sentinel/plans" };
}
rpc QueryPlansForProvider ( .sentinel.plan.v2.QueryPlansForProviderRequest ) returns ( .sentinel.plan.v2.QueryPlansForProviderResponse ) {
option (.google.api.http) = { get: "/sentinel/providers/{address}/plans" };
}
}