Documentació d'Asset Core

Documentació del motor d'estat del món determinista i referències de l'API.

Decision Gate docs

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)
  • pip o uv per 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