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.

Requisits previs

  • 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

Moure una quantitat fungible d’un contenidor a un altre utilitzant operacions de eliminar i afegir.

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

Operacions: RemoveFungible, AddFungible

{
  "operations": [
    {
      "op": "RemoveFungible",
      "args": {
        "container_id": 1001,
        "class_id": 200,
        "key": 1,
        "quantity": 150
      }
    },
    {
      "op": "AddFungible",
      "args": {
        "container_id": 1002,
        "class_id": 200,
        "key": 1,
        "quantity": 150
      }
    }
  ],
  "idempotency_key": "transfer-balance-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

Reubiqueu una instància única d’una ranura a una altra dins dels mateixos o diferents contenidors.

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

Operacions: RemoveFromSlot, PlaceInSlot

{
  "operations": [
    {
      "op": "RemoveFromSlot",
      "args": {
        "container_id": 1001,
        "slot_index": 0
      }
    },
    {
      "op": "PlaceInSlot",
      "args": {
        "container_id": 1001,
        "slot_index": 1,
        "instance_id": 9001
      }
    }
  ],
  "idempotency_key": "slot-move-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,
          "name": "Battle Tank",
          "fungible": false
        }
      }
    },
    {
      "op": "RegisterClassShape",
      "args": {
        "request": {
          "class_id": 300,
          "shape_id": 1,
          "width": 3,
          "height": 2
        }
      }
    }
  ],
  "idempotency_key": "class-with-shape-300"
}

Pas 4 - Menta i Col·loca 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: MintInstance, PlaceInSlot

{
  "operations": [
    {
      "op": "MintInstance",
      "args": {
        "class_id": 200,
        "key": 1
      }
    },
    {
      "op": "PlaceInSlot",
      "args": {
        "container_id": 1001,
        "instance_id": 9001,
        "slot_index": 0
      }
    }
  ]
}

Nota: Cal que coneguis l’ID de la instància que es crearà. Utilitza un esquema d’assignació determinista o envia la creació i la ubicació com a transaccions separades.

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": "Standard",
        "owner": null
      }
    },
    {
      "op": "AddFungible",
      "args": {
        "container_id": 2001,
        "class_id": 100,
        "key": 1,
        "quantity": 1000
      }
    },
    {
      "op": "AddFungible",
      "args": {
        "container_id": 2001,
        "class_id": 101,
        "key": 1,
        "quantity": 500
      }
    }
  ],
  "idempotency_key": "init-container-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: MintInstance, Attach

{
  "operations": [
    {
      "op": "MintInstance",
      "args": {
        "class_id": 300,
        "key": 1
      }
    },
    {
      "op": "Attach",
      "args": {
        "child_instance": 9002,
        "parent_instance": 9001
      }
    }
  ]
}

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

Resolució 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 balanceig requereixen contenidors Standard o Grid. Les operacions de slots requereixen contenidors Slots. Els 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

  1. Operacions per Domini - Referència completa d’operacions