Le applicazioni possono interagire con l'API Universal Ledger utilizzando gRPC e Python. Questo approccio prevede la generazione e l'utilizzo di librerie client Python compilate dalle definizioni dei buffer di protocollo del servizio.
Questo tutorial mostra agli sviluppatori che vogliono implementare un client per l'API Universal Ledger come configurare un ambiente di sviluppo adatto, generare le librerie necessarie ed effettuare una chiamata gRPC utilizzando Python.
Prima di iniziare
Per completare questo tutorial, avrai bisogno di:
Un progetto Google Cloud con l'API Universal Ledger abilitata.
Un ruolo IAM come
universalledger.googleapis.com/endpointViewerper poter almeno visualizzare gli endpoint di Universal Ledger.Credenziali di autenticazione locali per il tuo account utente. Esegui il comando seguente per configurare queste credenziali:
gcloud auth application-default login
Per scoprire di più su questi passaggi, consulta la guida Inizia.
Configura l'ambiente
Le istruzioni di questo tutorial sono scritte per un ambiente che esegue Ubuntu 25.04, che include Python 3.13 per impostazione predefinita. Se utilizzi un sistema operativo diverso, potresti dover modificare i comandi.
Per configurare l'ambiente di sviluppo, completa i seguenti passaggi. Questi passaggi ti guideranno nell'installazione degli strumenti a riga di comando necessari. Ciò include l'utilizzo di pipx per installare grpcio-tools, che viene utilizzato per creare i binding gRPC. Per isolare le dipendenze Python per questo progetto, creerai e attiverai anche un ambiente virtuale Python, quindi installerai le librerie Python richieste utilizzando pip.
Installa le dipendenze di base utilizzando i comandi:
sudo apt updatesudo apt install git pipx python3.13-venvUtilizza
pipxper installare l'applicazione degli strumenti gRPC e assicurati che la relativa directory binaria venga aggiunta alla tuaPATH:pipx install grpcio-toolspipx ensurepathChiudi e riapri il terminale per completare l'attivazione di
pipx.Crea una directory principale in cui inserire i file di questo tutorial.
mkdir gcul_tutorialcd gcul_tutorialSe non diversamente specificato, i comandi rimanenti devono essere eseguiti all'interno di questa nuova directory.
Crea un ambiente virtuale Python e installa le librerie rimanenti:
python3 -m venv example_clientcd example_clientsource ./bin/activatepip3 install google-auth googleapis-common-protos grpcio requestscd ..Queste librerie sono:
google-auth: per la gestione dell'autenticazione Google Cloud .googleapis-common-protos: messaggi buffer di protocollo comuni utilizzati nelle API di Google.grpcio: la libreria gRPC per Python.requests: richiesto da alcune dipendenze per inviare richieste HTTP.
Genera le librerie di buffer di protocollo
Per interagire con l'API Universal Ledger utilizzando gRPC, la tua applicazione Python deve avere librerie client compilate dalle definizioni del buffer di protocollo (.proto) del servizio. Queste definizioni specificano i servizi, i metodi e i tipi di messaggi dell'API.
Questa sezione mostra come scaricare questi file .proto dal repository googleapis e utilizzare grpcio-tools installato per generare il codice sorgente Python necessario.
Clona il repository GitHub googleapis in cui sono pubblicate le definizioni dei buffer di protocollo per le API di Google.
git clone https://github.com/googleapis/googleapis.gitCrea le definizioni dei buffer di protocollo e le associazioni gRPC per l'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.protoDovrebbero essere creati diversi file nella directory
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
Chiama l'API Universal Ledger
Infine, crea uno script Python per chiamare l'API Universal Ledger utilizzando le librerie generate. Salva il seguente codice come example_client/endpoints.py.
Nel codice, sostituisci i seguenti valori segnaposto:
PROJECT_ID: il tuo ID progetto Google Cloud , ad esempiomy-project.REGION: la regione Google Cloud in cui si trova l'endpoint Universal Ledger, ad esempious-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())
Per eseguire lo script, vai alla directory example_client.
L'ambiente virtuale dovrebbe essere ancora attivo dai passaggi di configurazione.
Passa alla directory degli script:
cd example_clientIl prompt della shell dovrebbe confermare che l'ambiente virtuale è attivo (ad esempio, è preceduto da
(example_client)).Esegui lo script Python:
python3 endpoints.py
Dovresti visualizzare un output simile al seguente:
Found the following endpoints:
- projects/my-project/locations/us-east5/endpoint/gcul-pilot-testing
- projects/my-project/locations/us-east5/endpoint/gcul-user-testing
Passaggi successivi
- Consulta tutti i metodi nell'API Universal Ledger.
- Scopri di più sul supporto di gRPC in altri linguaggi.
- Esplora le definizioni dei buffer di protocollo dell'API Universal Ledger.