Os aplicativos podem interagir com a API Universal Ledger usando gRPC e Python. Essa abordagem envolve gerar e usar bibliotecas de cliente do Python compiladas com base nas definições de buffer de protocolo do serviço.
Neste tutorial, mostramos aos desenvolvedores que querem implementar um cliente para a API Universal Ledger como configurar um ambiente de desenvolvimento adequado, gerar as bibliotecas necessárias e fazer uma chamada gRPC usando Python.
Antes de começar
Para concluir este tutorial, você vai precisar de:
Um projeto do Google Cloud com a API Universal Ledger ativada.
Um papel do IAM, como
universalledger.googleapis.com/endpointViewer, para que você possa pelo menos visualizar os endpoints do Universal Ledger.Credenciais de autenticação local para sua conta de usuário. Execute o comando a seguir para configurar essas credenciais:
gcloud auth application-default login
Para saber mais sobre essas etapas, consulte o guia Primeiros passos.
Configurar o ambiente
As instruções neste tutorial foram escritas para um ambiente que executa o Ubuntu 25.04, que inclui o Python 3.13 por padrão. Talvez seja necessário modificar os comandos se você estiver usando um sistema operacional diferente.
Para configurar o ambiente de desenvolvimento, siga as etapas abaixo. Estas
etapas orientam você na instalação das ferramentas de linha de comando necessárias. Isso inclui
usar pipx para instalar grpcio-tools, que é usado para criar as vinculações
do gRPC. Para isolar as dependências do Python para este projeto, você também vai
criar e ativar um ambiente virtual do Python e, em seguida, instalar as
bibliotecas do Python necessárias usando pip.
Instale as dependências de base usando os comandos:
sudo apt updatesudo apt install git pipx python3.13-venvUse
pipxpara instalar o aplicativo de ferramentas gRPC e garantir que o diretório binário dele seja adicionado aoPATH:pipx install grpcio-toolspipx ensurepathFeche e reabra o terminal para concluir a ativação do
pipx.Crie um diretório pai para armazenar os arquivos deste tutorial.
mkdir gcul_tutorialcd gcul_tutorialA menos que especificado de outra forma, os comandos restantes precisam ser executados nesse novo diretório.
Crie um ambiente virtual do Python e instale as bibliotecas restantes:
python3 -m venv example_clientcd example_clientsource ./bin/activatepip3 install google-auth googleapis-common-protos grpcio requestscd ..Essas bibliotecas são:
google-auth: para processar a autenticação do Google Cloud .googleapis-common-protos: mensagens comuns de buffer de protocolo usadas nas APIs do Google.grpcio: a biblioteca gRPC para Python.requests: necessário para que algumas das dependências enviem solicitações HTTP.
Gerar as bibliotecas de buffer de protocolo
Para interagir com a API Universal Ledger usando gRPC, seu aplicativo Python precisa de
bibliotecas de cliente compiladas com base nas definições de
buffer de protocolo
(.proto) do serviço. Essas definições especificam os serviços, métodos e tipos de mensagem da API.
Nesta seção, mostramos como fazer o download desses arquivos .proto
do repositório googleapis e usar o grpcio-tools instalado para
gerar o código-fonte Python necessário.
Clone o repositório do GitHub googleapis, em que as definições de buffer de protocolo para as APIs do Google são publicadas.
git clone https://github.com/googleapis/googleapis.gitCrie as definições de buffer de protocolo e as vinculações gRPC para a API Universal Ledger.
python-grpc-tools-protoc --proto_path=googleapis/ \ --python_out=example_client \ --pyi_out=example_client \ --grpc_python_out=example_client \ google/cloud/universalledger/v1/universalledger.protopython-grpc-tools-protoc --proto_path=googleapis/ \ --python_out=example_client \ --pyi_out=example_client \ google/cloud/universalledger/v1/query.protopython-grpc-tools-protoc --proto_path=googleapis/ \ --python_out=example_client \ --pyi_out=example_client \ google/cloud/universalledger/v1/accounts.protopython-grpc-tools-protoc --proto_path=googleapis/ \ --python_out=example_client \ --pyi_out=example_client \ google/cloud/universalledger/v1/common.protopython-grpc-tools-protoc --proto_path=googleapis/ \ --python_out=example_client \ --pyi_out=example_client \ google/cloud/universalledger/v1/transactions.protopython-grpc-tools-protoc --proto_path=googleapis/ \ --python_out=example_client \ --pyi_out=example_client \ google/cloud/universalledger/v1/types.protopython-grpc-tools-protoc --proto_path=googleapis/ \ --python_out=example_client \ --pyi_out=example_client \ google/cloud/universalledger/v1/status_event.protoIsso vai criar vários arquivos no diretório
example_client/google/cloud/universalledger/v1.accounts_pb2.py accounts_pb2.pyi common_pb2.py common_pb2.pyi query_pb2.py query_pb2.pyi status_event_pb2.py status_event_pb2.pyi transactions_pb2.py transactions_pb2.pyi types_pb2.py types_pb2.pyi universalledger_pb2.py universalledger_pb2.pyi universalledger_pb2_grpc.py
Chamar a API Universal Ledger
Por fim, crie um script Python para chamar a API Universal Ledger usando as bibliotecas
geradas. Salve o código a seguir como example_client/endpoints.py.
No código, substitua os seguintes valores de marcador:
PROJECT_ID: o ID do projeto do Google Cloud , por exemplo,my-project.REGION: a região do Google Cloud em que o endpoint do Universal Ledger está localizado, por exemplo,us-east5.
"""Example calling the Universal Ledger API."""
import sys
import google.auth
import google.auth.transport.grpc
import google.auth.transport.requests
from google.cloud.universalledger.v1 import universalledger_pb2
from google.cloud.universalledger.v1 import universalledger_pb2_grpc
import grpc
PROJECT = "PROJECT_ID"
REGION = "REGION"
API_ENDPOINT = f"universalledger.{REGION}.rep.googleapis.com"
SCOPES = ["https://www.googleapis.com/auth/cloud-platform"]
def main() -> str | None:
# Get the application default credentials.
credentials, _ = google.auth.default(scopes=SCOPES)
# Get an HTTP request function to refresh credentials.
refresh_request = google.auth.transport.requests.Request()
# Create a secure channel to the API endpoint.
with google.auth.transport.grpc.secure_authorized_channel(
credentials, refresh_request, API_ENDPOINT
) as channel:
# Create the client stub using the generated code.
stub = universalledger_pb2_grpc.UniversalLedgerStub(channel)
# Parent location for GCUL network endpoints.
parent = f"projects/{PROJECT}/locations/{REGION}"
# Build the request message.
request = universalledger_pb2.ListEndpointsRequest(parent=parent)
# Make the gRPC call.
try:
metadata = [("x-goog-request-params", f"parent={parent}")]
response = stub.ListEndpoints(request, metadata=metadata)
except grpc.RpcError as exc:
return f"{exc.code().name}: {exc.details()}"
if not response.endpoints:
return f"No endpoints found under: {parent}"
print("Found the following endpoints:")
for endpoint in response.endpoints:
print("-", endpoint.name)
if __name__ == "__main__":
sys.exit(main())
Para executar o script, navegue até o diretório example_client.
O ambiente virtual ainda precisa estar ativo nas etapas de configuração.
Altere para o diretório do script:
cd example_clientO prompt do shell deve confirmar que o ambiente virtual está ativo (por exemplo, ele tem o prefixo
(example_client)).Execute o script Python:
python3 endpoints.py
Você verá uma saída como:
Found the following endpoints:
- projects/my-project/locations/us-east5/endpoint/gcul-pilot-testing
- projects/my-project/locations/us-east5/endpoint/gcul-user-testing
A seguir
- Confira todos os métodos na API Universal Ledger.
- Saiba mais sobre o suporte do gRPC em outras linguagens.
- Confira as definições de buffer de protocolo da API Universal Ledger.