*.protoファイルからさまざまな言語へのコード生成を含む、さまざまなユースケース向けのツールが開発されています。これらのツールにより、クライアントを簡単に構築できます。多くの場合、クライアント接続(トランスポート)は簡単にプラグインおよび置換できます。ここでは一般的なトランスポート方法であるgRPCについて説明します。
コード生成ライブラリは技術スタックに大きく依存するため、ここでは2つの方法のみを紹介します:
- 汎用的なデバッグおよびテスト用の
grpcurl - Go、Python、またはTSによるプログラム的な方法
grpcurl
grpcurlは、gRPC版のcurlです。GoライブラリとしてもGoから利用可能ですが、ここではデバッグおよびテスト目的のCLIコマンドとしてのみ使用します。インストール方法については、上記リンクの手順に従ってください。
ローカルノードが稼働している場合(localnetまたはライブネットワークに接続済み)、以下のコマンドを実行して利用可能なProtobufサービスの一覧を取得できます。localhost:9090は、app.tomlのgrpc.addressフィールドで設定された別のノードのgRPCサーバーエンドポイントに置き換えることができます:
cosmos.bank.v1beta1.QueryのようなgRPCサービスの一覧が表示されます。これはリフレクションと呼ばれ、利用可能なすべてのエンドポイントの説明を返すProtobufエンドポイントです。これらはそれぞれ異なるProtobufサービスを表し、各サービスはクエリ可能な複数のRPCメソッドを公開しています。
サービスの詳細を取得するには、以下のコマンドを実行します:
grpcurlを使用した過去のstateのクエリ
gRPCリクエストにgRPCメタデータを渡すことで、過去のデータをクエリすることもできます。x-cosmos-block-heightメタデータにクエリ対象のブロックを含める必要があります。grpcurlを使用する場合、コマンドは以下のようになります:
