메인 콘텐츠로 건너뛰기
Protobuf 생태계는 *.proto 파일에서 다양한 언어로 코드를 생성하는 도구를 포함하여 여러 사용 사례를 위한 도구를 개발했습니다. 이러한 도구를 통해 클라이언트를 쉽게 구축할 수 있습니다. 종종 클라이언트 연결(즉, 전송)은 쉽게 교체할 수 있습니다. 인기 있는 전송 방법인 gRPC를 살펴보겠습니다. 코드 생성 라이브러리는 대부분 여러분의 기술 스택에 따라 다르므로, 두 가지 대안만 제시합니다:
  • 일반적인 디버깅 및 테스트를 위한 grpcurl
  • Go, Python 또는 TS를 통한 프로그래밍 방식

grpcurl

grpcurlcurl과 비슷하지만 gRPC용입니다. Go 라이브러리로도 사용할 수 있지만, 여기서는 디버깅 및 테스트 목적의 CLI 명령으로만 사용합니다. 설치하려면 이전 링크의 지침을 따르세요. 로컬 노드가 실행 중이라고 가정하면(로컬넷이든 라이브 네트워크에 연결되어 있든), 다음 명령을 실행하여 사용 가능한 Protobuf 서비스를 나열할 수 있습니다. localhost:9090을 다른 노드의 gRPC 서버 엔드포인트로 대체할 수 있으며, 이는 app.toml 내의 grpc.address 필드에서 구성됩니다:
grpcurl -plaintext localhost:9090 list
cosmos.bank.v1beta1.Query와 같은 gRPC 서비스 목록이 표시됩니다. 이것을 리플렉션이라고 하며, 사용 가능한 모든 엔드포인트에 대한 설명을 반환하는 Protobuf 엔드포인트입니다. 이들 각각은 서로 다른 Protobuf 서비스를 나타내며, 각 서비스는 쿼리할 수 있는 여러 RPC 메서드를 노출합니다. 서비스에 대한 설명을 얻으려면 다음 명령을 실행하세요:
# 검사하려는 서비스
grpcurl \
    localhost:9090 \
    describe cosmos.bank.v1beta1.Query                  
노드에서 정보를 쿼리하기 위해 RPC 호출을 실행할 수도 있습니다:
grpcurl \
    -plaintext
    -d '{"address":"$MY_VALIDATOR"}' \
    localhost:9090 \
    cosmos.bank.v1beta1.Query/AllBalances

grpcurl을 사용한 과거 상태 쿼리

일부 gRPC 메타데이터를 쿼리에 전달하여 과거 데이터를 쿼리할 수도 있습니다: x-cosmos-block-height 메타데이터에 쿼리할 블록이 포함되어야 합니다. 위의 grpcurl을 사용하면 명령은 다음과 같습니다:
grpcurl \
    -plaintext \
    -H "x-cosmos-block-height: 279256" \
    -d '{"address":"$MY_VALIDATOR"}' \
    localhost:9090 \
    cosmos.bank.v1beta1.Query/AllBalances
해당 블록의 상태가 아직 노드에서 정리되지 않았다면, 이 쿼리는 비어 있지 않은 응답을 반환해야 합니다.

트랜잭션 전송

gRPC 및 REST를 사용하여 트랜잭션을 전송하려면 몇 가지 추가 단계가 필요합니다: 트랜잭션 생성, 서명, 그리고 마지막으로 브로드캐스트. 자세한 내용은 트랜잭션에서 확인할 수 있습니다.