Anwendungen können über gRPC und Python mit der Universal Ledger API interagieren. Bei diesem Ansatz werden Python-Clientbibliotheken generiert und verwendet, die aus den Protocol Buffer-Definitionen des Dienstes kompiliert wurden.
In dieser Anleitung wird Entwicklern, die einen Client für die Universal Ledger API implementieren möchten, gezeigt, wie sie eine geeignete Entwicklungsumgebung einrichten, die erforderlichen Bibliotheken generieren und einen gRPC-Aufruf mit Python ausführen.
Hinweis
Für diese Anleitung benötigen Sie Folgendes:
Ein Google Cloud -Projekt mit aktivierter Universal Ledger API.
Eine IAM-Rolle wie
universalledger.googleapis.com/endpointViewer, damit Sie zumindest Universal Ledger-Endpunkte aufrufen können.Lokale Anmeldedaten zur Authentifizierung für Ihr Nutzerkonto. Führen Sie den folgenden Befehl aus, um diese Anmeldedaten zu konfigurieren:
gcloud auth application-default login
Weitere Informationen zu diesen Schritten finden Sie im Onboarding-Leitfaden für die private Vorschau.
Umgebung einrichten
Die Anleitung in diesem Tutorial ist für eine Umgebung mit Ubuntu 25.04 geschrieben, in der standardmäßig Python 3.13 enthalten ist. Wenn Sie ein anderes Betriebssystem verwenden, müssen Sie die Befehle möglicherweise anpassen.
Führen Sie die folgenden Schritte aus, um Ihre Entwicklungsumgebung einzurichten. In diesen Schritten wird beschrieben, wie Sie die erforderlichen Befehlszeilentools installieren. Dazu gehört die Verwendung von pipx zur Installation von grpcio-tools, das zum Erstellen der gRPC-Bindungen verwendet wird. Um die Python-Abhängigkeiten für dieses Projekt zu isolieren, erstellen und aktivieren Sie außerdem eine virtuelle Python-Umgebung und installieren dann die erforderlichen Python-Bibliotheken mit pip.
Installieren Sie die Basisabhängigkeiten mit den folgenden Befehlen:
sudo apt updatesudo apt install git pipx python3.13-venvVerwenden Sie
pipx, um die gRPC-Tools-Anwendung zu installieren und dafür zu sorgen, dass ihr Binärverzeichnis zu IhremPATHhinzugefügt wird:pipx install grpcio-toolspipx ensurepathSchließen Sie das Terminal und öffnen Sie es wieder, um die Aktivierung von
pipxabzuschließen.Erstellen Sie ein übergeordnetes Verzeichnis für die Dateien dieser Anleitung.
mkdir gcul_tutorialcd gcul_tutorialSofern nicht anders angegeben, sollten die verbleibenden Befehle in diesem neuen Verzeichnis ausgeführt werden.
Erstellen Sie eine virtuelle Python-Umgebung und installieren Sie die verbleibenden Bibliotheken:
python3 -m venv example_clientcd example_clientsource ./bin/activatepip3 install google-auth googleapis-common-protos grpcio requestscd ..Dazu gehören:
google-auth: für die Verarbeitung der Google Cloud Authentifizierung.googleapis-common-protos: Allgemeine Protokollpuffernachrichten, die in Google APIs verwendet werden.grpcio: Die gRPC-Bibliothek für Python.requests: Wird von einigen Abhängigkeiten benötigt, um HTTP-Anfragen zu senden.
Protocol Buffer-Bibliotheken generieren
Wenn Sie mit der Universal Ledger API über gRPC interagieren möchten, benötigt Ihre Python-Anwendung Clientbibliotheken, die aus den Protocol Buffer-Definitionen (.proto) des Dienstes kompiliert wurden. Diese Definitionen geben die Dienste, Methoden und Nachrichtentypen der API an.
In diesem Abschnitt wird beschrieben, wie Sie diese .proto-Dateien aus dem googleapis-Repository herunterladen und mit dem installierten grpcio-tools den erforderlichen Python-Quellcode generieren.
Klonen Sie das GitHub-Repository googleapis, in dem Protocol Buffer-Definitionen für Google-APIs veröffentlicht werden.
git clone https://github.com/googleapis/googleapis.gitErstellen Sie die Protocol Buffer-Definitionen und gRPC-Bindungen für die Universal Ledger API.
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.protoDadurch sollten mehrere Dateien im Verzeichnis
example_client/google/cloud/universalledger/v1erstellt werden.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
Universal Ledger API aufrufen
Erstellen Sie schließlich ein Python-Skript, um die Universal Ledger API mit den generierten Bibliotheken aufzurufen. Speichern Sie den folgenden Code als example_client/endpoints.py.
Ersetzen Sie im Code die folgenden Platzhalterwerte:
PROJECT_ID: Ihre Google Cloud Projekt-ID, z. B.my-project.REGION: Die Google Cloud Region, in der sich Ihr Universal Ledger-Endpunkt befindet, z. B.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
API_ENDPOINT = "universalledger.googleapis.com"
PROJECT = "PROJECT_ID"
REGION = "REGION"
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())
Wechseln Sie zum Ausführen des Skripts in das Verzeichnis example_client.
Die virtuelle Umgebung sollte noch aus den Einrichtungsschritten aktiv sein.
Wechseln Sie in das Skriptverzeichnis:
cd example_clientIn der Shell-Eingabeaufforderung sollte bestätigt werden, dass die virtuelle Umgebung aktiv ist (z. B. durch das Präfix
(example_client)).Führen Sie das Python-Skript aus:
python3 endpoints.py
Die Ausgabe sollte in etwa so aussehen:
Found the following endpoints:
- projects/my-project/locations/us-east5/endpoint/gcul-pilot-testing
- projects/my-project/locations/us-east5/endpoint/gcul-user-testing
Nächste Schritte
- Alle Methoden in der Universal Ledger API
- Informationen zur gRPC-Unterstützung in anderen Sprachen
- Universal Ledger API-Protokollpufferdefinitionen