Primer Commit y Lectura

Esta guía te lleva a través de la ejecución de los demonios de Asset Core localmente, enviando un compromiso simple y leyendo el estado resultante.

Requisitos Previos

  • Cadena de herramientas de Rust (estable, a través de rustup)
  • Cliente HTTP (curl o similar)
  • Terminal con dos ventanas o pestañas

Paso 1 - Construir los demonios

Desde la raíz del repositorio de Asset Core:

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

Esto produce binarios en target/release/.

Paso 2 - Iniciar el daemon de escritura

En la primera terminal:

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

El daemon de escritura se inicia en http://127.0.0.1:8080 por defecto.

Verifique que esté en funcionamiento:

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

Respuesta esperada:

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

Paso 3 - Iniciar el daemon de lectura

En el segundo terminal:

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

El daemon de lectura sigue el mismo registro de commits que utiliza el daemon de escritura.

Verifique que esté en funcionamiento:

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

Paso 4 - Envía tu primer commit

Cree un contenedor y agregue un saldo fungible en una sola transacción:

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"
  }'

Respuesta esperada:

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

El global_seq confirma que su compromiso fue asignado con el número de secuencia 1.

Paso 5 - Leer de nuevo el estado

Consulta los saldos de los contenedores:

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

Respuesta esperada:

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

Los metadatos de freshness muestran que el daemon de lectura ha procesado todos los commits a través de la secuencia 1.

Solución de problemas

”Conexión rechazada” al hacer commit

El daemon de escritura no está en ejecución o está en un puerto diferente. Verifique la terminal en busca de errores y confirme que la ruta --config es correcta.

Saldos vacíos en lectura

El daemon de lectura no ha alcanzado al daemon de escritura. Verifique que ambos daemons utilicen la misma ruta del registro de confirmaciones. Los metadatos de frescura muestran el punto de control actual.

Error “ContainerNotFound”

El ID del contenedor en su consulta de lectura no coincide con lo que creó. Los IDs de contenedor son enteros, no cadenas.

Error “InvalidQuantity”

La cantidad debe ser mayor que cero. Verifique su operación AddFungible.

Próximos pasos