Recetas

Las recetas son patrones comunes de múltiples operaciones que logran flujos de trabajo típicos. Utilice estos como plantillas para sus transacciones.

Requisitos Previos

  • Comprensión de operaciones
  • Clases de activos registradas para su dominio
  • Contenedores creados para origen y destino

Paso 1 - Transferir el saldo fungible entre contenedores

Mueva una cantidad fungible de un contenedor a otro utilizando operaciones de eliminar y agregar.

Cuándo usar: Mover recursos, transferir saldos, reequilibrar inventario.

Operaciones: 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"
}

Alternativamente, use TransferFungible para una transferencia de operación única:

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

Paso 2 - Mover Instancia Entre Slots

Reubique una instancia única de un slot a otro dentro de los mismos o diferentes contenedores.

Cuándo usar: Reorganizar inventario, mover equipos, reposicionar artículos.

Operaciones: 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"
}

Para intercambiar dos espacios ocupados, utilice SwapSlots en su lugar.

Paso 3 - Registrar Clase con Shape

Defina una nueva clase de activo y configure inmediatamente su forma de cuadrícula en una sola transacción.

Cuándo usar: Configuración de nuevos tipos de activos que se colocarán en contenedores de cuadrícula.

Operaciones: 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"
}

Paso 4 - Acuñar y Colocar Instancia

Cree una nueva instancia única y colóquela inmediatamente en un espacio.

Cuándo usar: Generación de elementos, creación de equipos, adición de muestras.

Operaciones: MintInstance, PlaceInSlot

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

Nota: Necesita conocer el ID de instancia que se va a acuñar. Utilice un esquema de asignación determinista o envíe la acuñación y la colocación como transacciones separadas.

Paso 5 - Configurar Contenedor con Saldo Inicial

Cree un contenedor y pobléelo con recursos iniciales.

Cuándo usar: Inicializando inventarios de jugadores, creando nuevo almacenamiento, configurando experimentos.

Operaciones: 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"
}

Paso 6 - Adjuntar Equipos al Personaje

Cree relaciones de padre-hijo entre instancias para equipos o componentes.

Cuándo usar: Equipar elementos, adjuntar componentes, construir jerarquías.

Operaciones: MintInstance, Attach

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

Para eliminar el equipo, utilice Detach seguido de la ubicación deseada.

Solución de problemas

El orden importa

Las operaciones se ejecutan secuencialmente. Asegúrese de que las operaciones anteriores creen el estado del cual dependen las operaciones posteriores.

Utilizar claves de idempotencia

Siempre incluya claves de idempotencia para las operaciones que modifican el estado. Esto previene compromisos duplicados en caso de reintentos.

Verificar tipos de contenedores

Las operaciones de balance requieren contenedores Standard o Grid. Las operaciones de slot requieren contenedores Slots. Los tipos desajustados causan errores WrongContainerKind.

Validar cantidades

Asegúrese de que los contenedores de origen tengan un saldo suficiente antes de las transferencias. Un saldo insuficiente provoca que toda la transacción se revierta.

Próximos pasos

  1. Operaciones por Dominio - Referencia completa de operaciones