Utilitzant el SDK de Python
Aquesta guia mostra com aconseguir el mateix resultat que l’inici ràpid d’HTTP utilitzant l’SDK de Python d’Asset Core amb operacions tipades. És el camí recomanat per a equips que volen una forta seguretat de tipus mentre es mantenen alineats amb el contracte HTTP públic.
Requisits previs
Assegureu-vos que els daemons estiguin en funcionament i que tingueu tokens vàlids per a l’accés de lectura i escriptura. El SDK no eludeix cap comprovació d’autorització; simplement embolica els mateixos punts finals HTTP.
- Python 3.11+
- Daemons d’Asset Core executant localment amb tokens de portador disponibles (vegeu First Commit and Read)
pipouvper a la instal·lació de paquets
Pas 1 - Instal·lar el SDK
Des de la carpeta arrel d’Asset Core:
cd sdk-python
pip install -e .
O amb uv:
uv venv --seed .venv-sdk
source .venv-sdk/bin/activate
cd sdk-python
uv pip install -e .
Pas 2 - Crear el client
import os
from assetcore_sdk import AssetCoreClient
write_client = AssetCoreClient(
base_url="http://127.0.0.1:8080",
api_key=os.environ["ASSETCORE_WRITE_TOKEN"],
)
read_client = AssetCoreClient(
base_url="http://127.0.0.1:8081",
api_key=os.environ["ASSETCORE_READ_TOKEN"],
)
El SDK és un client HTTP pur, així que utilitzeu instàncies separades per als tokens d’escriptura i lectura. Això reflecteix les implementacions en producció on els tokens d’escriptura i lectura tenen rols diferents.
Pas 3 - Operacions de construcció
Utilitzeu els constructors d’operacions tipades:
from assetcore_sdk.operations import CreateContainer, AddFungible
operations = [
CreateContainer(
container_id=1001,
kind={"type": "balance"},
owner=None,
policies=None,
),
AddFungible(
class_id=100,
key=1,
quantity=500,
location={"container_id": 1001, "kind": "balance"},
),
]
Cada constructor produeix una operació tipificada que el client converteix en l’envolta JSON. Això facilita la detecció de camps no vàlids abans que arribin al daemon.
Pas 4 - Enviar el commit
result = await write_client.commit_operations(
operations,
idempotency_key="sdk-first-commit-2026-01-15",
namespace_id=5001,
)
print(f"Committed at world seq {result.world_seq_start}")
O utilitzeu la versió sincrònica:
result = write_client.commit_operations_sync(
operations,
idempotency_key="sdk-first-commit-2026-01-15",
namespace_id=5001,
)
Pas 5 - Llegir l’estat
container = await read_client.get_container_balances(1001, namespace_id=5001)
for balance in container.balances:
print(f"Class {balance.class_id}: {balance.quantity}")
La resposta inclou camps tipats i metadades de frescor. Utilitzeu aquests camps de frescor per confirmar que el vostre camí de lectura està actualitzat amb el registre de compromisos.
Solució de problemes
”ModuleNotFoundError: assetcore_sdk”
El SDK no està instal·lat en el vostre entorn actual. Assegureu-vos d’haver activat el correcte entorn virtual i d’haver executat pip install -e . des del directori sdk-python.
Errors de connexió
Els daemons no s’estan executant o estan en ports diferents. El SDK genera assetcore_sdk.errors.HttpError amb detalls de transport.
Errors de validació
Els arguments d’operació no vàlids generen assetcore_sdk.errors.ValidationError amb el camp específic que ha fallat. Comproveu la referència de l’operació per als camps requerits.
Properes passes
- Python SDK - Referència i exemples de SDK tipat
- Referència d’Acció - Llista completa d’operacions
- Receipts - Patrons comuns de múltiples operacions