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
- Usando el SDK de Python - Repita este flujo de trabajo con ayudantes de Python tipados
- Contenedores y Activos - Aprenda sobre los diferentes tipos de contenedores
- Transacciones - Referencia completa de la estructura de transacciones