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
- Utilitzant el SDK de Python - Repeteix aquest flux de treball amb helpers de Python tipats
- Contenidors i Actius - Apreneu sobre diferents tipus de contenidors
- Transaccions - Referència completa de l’estructura de transacció