Documentació d'Asset Core

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

Decision Gate docs

Receptes

Les receptes són patrons comuns de múltiples operacions que aconsegueixen fluxos de treball típics. Utilitzeu-les com a plantilles per a les vostres transaccions i ajusteu els IDs i metadades per adaptar-los al vostre domini.

Requisits previs

Aquestes receptes assumeixen que ja teniu els fonaments establerts. Si us falta algun requisit previ, completeu primer aquest pas per evitar errors de validació.

  • Comprensió de operacions
  • Classes d’actius registrades per al vostre domini
  • Contenidors creats per a la font i la destinació

Pas 1 - Transferència de Saldo Fungible Entre Contenidors

Mou una quantitat fungible d’un contenidor a un altre utilitzant operacions de eliminar i afegir. Aquest és el patró més segur quan es vol un control explícit sobre cada pas.

Quan utilitzar: Moure recursos, transferir saldos, reequilibrar inventari.

Operacions: RemoveFungible, AddFungible

{
  "operations": [
    {
      "op": "RemoveFungible",
      "args": {
        "class_id": 200,
        "key": 1,
        "quantity": 150,
        "from": {
          "container_id": 1001,
          "kind": "balance"
        }
      }
    },
    {
      "op": "AddFungible",
      "args": {
        "class_id": 200,
        "key": 1,
        "quantity": 150,
        "location": {
          "container_id": 1002,
          "kind": "balance"
        }
      }
    }
  ],
  "idempotency_key": "transfer-balance-2026-01-15-1001-1002"
}

Alternativament, utilitzeu TransferFungible per a una transferència d’una sola operació:

{
  "operations": [
    {
      "op": "TransferFungible",
      "args": {
        "from_container": 1001,
        "to_container": 1002,
        "class_id": 200,
        "key": 1,
        "quantity": 150
      }
    }
  ]
}

Pas 2 - Moure la Instància Entre Slots

Relocar una instància única d’un slot a un altre dins dels mateixos o diferents contenidors. Aquest patró preserva l’auditoria i evita un estat parcial durant els canvis d’equip.

Quan utilitzar: Reorganitzar l’inventari, moure equipament, reposicionar articles.

Operacions: RemoveFromSlot, PlaceInSlot

{
  "operations": [
    {
      "op": "RemoveFromSlot",
      "args": {
        "container_id": 1001,
        "slot_index": 1
      }
    },
    {
      "op": "PlaceInSlot",
      "args": {
        "container_id": 1001,
        "slot_index": 2,
        "instance_id": 9001
      }
    }
  ],
  "idempotency_key": "slot-move-2026-01-15-9001"
}

Per intercanviar dues places ocupades, utilitzeu SwapSlots en el seu lloc.

Pas 3 - Registrar la Classe amb Shape

Defineix una nova classe d’actius i configura immediatament la seva forma de graella en una sola transacció.

Quan utilitzar: Configurar nous tipus d’actius que es col·locaran en contenidors de graella.

Operacions: RegisterClass, RegisterClassShape

{
  "operations": [
    {
      "op": "RegisterClass",
      "args": {
        "request": {
          "class_id": 300,
          "flags": 2,
          "name": "Battle Tank"
        }
      }
    },
    {
      "op": "RegisterClassShape",
      "args": {
        "request": {
          "class_id": 300,
          "stack_key": null,
          "shape": {
            "width": 3,
            "height": 2
          }
        }
      }
    }
  ],
  "idempotency_key": "class-with-shape-2026-01-15-300"
}

Pas 4 - Afegir i Col·locar Instància

Creeu una nova instància única i col·loqueu-la immediatament en una ranura.

Quan utilitzar: Generar articles, crear equipament, afegir mostres.

Operacions: AddInstance

{
  "operations": [
    {
      "op": "AddInstance",
      "args": {
        "class_id": 200,
        "key": 1,
        "location": {
          "container_id": 1001,
          "kind": "slot",
          "slot_index": 1
        }
      }
    }
  ]
}

Nota: La resposta del commit llista els IDs d’instància creats sota created_entities.instances, que podeu utilitzar en operacions posteriors.

Pas 5 - Configurar el contenidor amb saldo inicial

Creeu un contenidor i ompliu-lo amb recursos inicials.

Quan utilitzar: Inicialitzar inventaris de jugadors, crear nou emmagatzematge, configurar experiments.

Operacions: CreateContainer, AddFungible

{
  "operations": [
    {
      "op": "CreateContainer",
      "args": {
        "container_id": 2001,
        "kind": { "type": "balance" },
        "owner": null,
        "policies": null
      }
    },
    {
      "op": "AddFungible",
      "args": {
        "class_id": 100,
        "key": 1,
        "quantity": 1000,
        "location": {
          "container_id": 2001,
          "kind": "balance"
        }
      }
    },
    {
      "op": "AddFungible",
      "args": {
        "class_id": 101,
        "key": 1,
        "quantity": 500,
        "location": {
          "container_id": 2001,
          "kind": "balance"
        }
      }
    }
  ],
  "idempotency_key": "init-container-2026-01-15-2001"
}

Pas 6 - Adjuntar Equip a Personatge

Creeu relacions de pare-fill entre instàncies per a equips o components.

Quan utilitzar: Equipar articles, adjuntar components, construir jerarquies.

Operacions: Adjuntar

{
  "operations": [
    {
      "op": "Attach",
      "args": {
        "child_instance": 9002,
        "parent_instance": 9001
      }
    }
  ]
}

Per eliminar equip, utilitzeu Detach seguit de la ubicació desitjada.

Solució de problemes

L’ordre és important

Les operacions s’executen de manera seqüencial. Assegureu-vos que les operacions anteriors creen l’estat del qual depenen les operacions posteriors.

Utilitzeu claus d’idempotència

Sempre inclou claus d’idempotència per a operacions que modifiquen l’estat. Això evita compromisos duplicats en reintents.

Comprovar els tipus de contenidors

Les operacions de balance necessiten contenidors de balance o de xarxa. Les operacions de slot necessiten contenidors de slots. Tipus no coincidents causen errors WrongContainerKind.

Validar quantitats

Assegureu-vos que els contenidors d’origen tinguin un saldo suficient abans de les transferències. Un saldo insuficient provoca que tota la transacció es reverti.

Properes passes