Primer compromís i lectura

Aquesta guia et guia a través de l’execució dels daemons d’Asset Core localment, enviant un compromís simple i llegint l’estat resultant.

Requisits previs

  • Toolchain de Rust (estable, a través de rustup)
  • Client HTTP (curl o similar)
  • Terminal amb dues finestres o pestanyes

Pas 1 - Construir els daemons

Des de l’arrel del repositori d’Asset Core:

cargo build --release -p assetcored-write -p assetcored-read

Això produeix binaris a target/release/.

Pas 2 - Iniciar el daemon d’escriptura

En el primer terminal:

./target/release/assetcored-write --config daemon-write/config/default.toml

El daemon d’escriptura s’inicia per defecte a http://127.0.0.1:8080.

Verifiqueu que s’està executant:

curl http://127.0.0.1:8080/v1/health

Resposta esperada:

{
  "status": "healthy",
  "commit_log": { ... }
}

Pas 3 - Iniciar el daemon de lectura

En el segon terminal:

./target/release/assetcored-read \
  --listen 127.0.0.1:8081 \
  --commit_log commit_log.log \
  --checkpoint read.checkpoint.json

El daemon de lectura segueix el mateix registre de commits que utilitza el daemon d’escriptura.

Verifiqueu que s’està executant:

curl http://127.0.0.1:8081/v1/health

Pas 4 - Envia el teu primer commit

Creeu un contenidor i afegiu un saldo fungible en una sola transacció:

curl -X POST http://127.0.0.1:8080/v1/commit \
  -H "Content-Type: application/json" \
  -d '{
    "operations": [
      {
        "op": "CreateContainer",
        "args": {
          "container_id": 1001,
          "kind": "Standard",
          "owner": null
        }
      },
      {
        "op": "AddFungible",
        "args": {
          "container_id": 1001,
          "class_id": 100,
          "key": 1,
          "quantity": 500
        }
      }
    ],
    "idempotency_key": "first-commit"
  }'

Resposta esperada:

{
  "global_seq": 1,
  "batch_seq": 1,
  "minted_instances": [],
  "metadata": {
    "idempotency_key": "first-commit"
  }
}

El global_seq confirma que el teu compromís va ser assignat amb el número de seqüència 1.

Pas 5 - Llegir l’estat de nou

Consulta els saldos dels contenidors:

curl http://127.0.0.1:8081/v1/read/container/1001/balances

Resposta esperada:

{
  "container_id": 1001,
  "balances": [
    {
      "class_id": 100,
      "key": 1,
      "quantity": 500
    }
  ],
  "freshness": {
    "checkpoint_seq": 1,
    "commit_log_seq": 1
  }
}

La metadada freshness mostra que el daemon de lectura ha processat tots els commits a través de la seqüència 1.

Resolució de problemes

”Connexió rebutjada” en el compromís

El daemon d’escriptura no s’està executant o està en un port diferent. Comproveu el terminal per errors i verifiqueu que el camí --config sigui correcte.

Saldo buit en lectura

El daemon de lectura no ha assolit el daemon d’escriptura. Comproveu que ambdós daemons utilitzin la mateixa ruta del registre de confirmacions. La metadada de frescor mostra el punt de control actual.

Error “ContainerNotFound”

L’ID del contenidor en la vostra consulta de lectura no coincideix amb el que heu creat. Els IDs de contenidor són enters, no cadenes.

Error “InvalidQuantity”

La quantitat ha de ser superior a zero. Comproveu la vostra operació AddFungible.

Properes passes