Documentos de Asset Core

Documentación del motor de estado mundial determinista y referencias de API.

Documentos de Decision Gate

Referencia de Operaciones de Transacción de AssetCore

Generado a partir de Operations Manifest v1.0.0 (API 0.1.0)

Generado automáticamente a partir del manifiesto de operaciones el 2026-01-22

AssetCore es un sustrato de memoria determinista. Los contenedores son regiones de memoria persistente. Las operaciones son transformaciones de memoria atómicas. Las transacciones son compromisos de memoria reproducibles.

Las siguientes operaciones modifican regiones de memoria estructurada de una manera independiente del dominio.

Este documento proporciona una referencia completa para las 24 operaciones disponibles en los commits de AssetCore.

Tabla de Contenidos


Resumen

Todos los cambios de estado en el sustrato de memoria estructurada de AssetCore fluyen a través del punto final de confirmación como una secuencia de operaciones. Cada operación es una transformación atómica que puede combinarse con otras en una única transacción.

Estructura de Solicitud de Compromiso

{
  "operations": [
    { "op": "OperationName", "args": { ... } },
    { "op": "AnotherOperation", "args": { ... } }
  ],
  "idempotency_key": "optional-unique-key"
}

Las operaciones se ejecutan en orden dentro de una única transacción. Si alguna operación falla, se revierte todo el commit.


Sistema de Etiquetas

Las operaciones se categorizan en cuatro dimensiones:

Dominio

Qué tipo de entidad afecta la operación:

  • contenedor: Operaciones del ciclo de vida del contenedor
  • balance: Cantidad fungible y operaciones de pila
  • instancia: Operaciones de instancia únicas
  • slot: Operaciones de posicionamiento de espacios de slot
  • esquema: Operaciones de definición de clase y forma

Acción

¿Qué tipo de acción se realiza?

  • crear: Trae algo a la existencia
  • destruir: Elimina algo de la existencia
  • mover: Reubica entre ubicaciones
  • enlace: Establece o elimina relaciones
  • consolidar: Fusiona o reorganiza

Alcance

¿Cuántas entidades están afectadas?

  • único: Un objetivo principal
  • multi: Múltiples objetivos o contenedores

Impact

El radio de explosión de los efectos de la operación:

  • dirigido: Los cambios se limitan a entidades explícitamente referenciadas
  • fanout: Los cambios se distribuyen entre múltiples entidades en un lote o conjunto de coincidencias
  • cascada: Los cambios eliminan o invalidan implícitamente los contenidos anidados

Operaciones por Dominio

Operaciones de Contenedor

CrearContenedor

Crea un contenedor (región de memoria estructurada) con el tipo solicitado.

crear contenedor único dirigido

Crea un contenedor persistente del tipo solicitado (balance, cuadrícula, espacios, continuo 1D/2D). Proporciona external_id para reclamar un identificador externo estable; los IDs internos son densos, auto-asignados y nunca se exponen. Los IDs externos están limitados por el espacio de nombres y no deben existir ya.

Errores:

  • ContainerAlreadyExists: A container with that ID already exists. ContainerAlreadyExists: Ya existe un contenedor con ese ID. Example:
{
  "op": "CreateContainer",
  "args": {
  "external_id": "container-1000",
  "kind": {
    "quantization_inv": 100,
    "type": "balance"
  }
}
}

RemoveContainer

Elimina un contenedor después de drenar su contenido.

contenedor destruir único cascada

Elimina un contenedor después de que la transacción drene cualquier saldo, instancia y contenido de ranura. Esto es irreversible para el identificador del contenedor y preserva las regiones de memoria circundantes.

Errores:

  • ContainerNotFound: The specified container does not exist. ContainerNotFound: El contenedor especificado no existe. Ejemplo:
{
  "op": "RemoveContainer",
  "args": {
  "container_id": "container-1001"
}
}

Operaciones de Balance

AddFungible

Agrega una cantidad fungible a un saldo o a una celda de cuadrícula explícita.

balance crear único dirigido

Aumenta la cantidad fungible para un par de clase/clave. Al dirigirse a un contenedor de saldo, la cantidad se añade al saldo agregado. Al dirigirse a una celda de la cuadrícula, la operación crea o aumenta una pila en el ancla especificada, aplicando formas y rotaciones registradas para la colocación.

Errores:

  • InvalidQuantity: La cantidad debe ser mayor que cero.
  • WrongContainerKind: Los contenedores de slots no pueden contener activos fungibles.
  • ContainerNotFound: El contenedor de destino no existe.
  • UnregisteredClass: La clase no está registrada en el espacio de nombres.
  • UnregisteredClassShape: Las adiciones de cuadrícula requieren una forma registrada para la clase y la clave.
  • PositionOccupied: The requested grid anchor overlaps an existing placement. PositionOccupied: El ancla de cuadrícula solicitada se superpone a una colocación existente. Example:
{
  "op": "AddFungible",
  "args": {
  "class_id": "class-100",
  "key": 1,
  "location": {
    "container_id": "container-2001",
    "kind": "grid_cell",
    "position": 5,
    "rotation": "none"
  },
  "quantity": "500"
}
}

RemoveFungible

Elimina una cantidad fungible de un saldo o de una celda de cuadrícula explícita.

balance destruir único dirigido

Disminuye la cantidad fungible para un par de clase/clave dentro de un contenedor. Soporta la quema desde saldos o la limpieza de una pila de cuadrícula en un ancla específica. Cuando una pila alcanza cero, puede ser eliminada, manteniendo el sustrato determinista.

Errores:

  • InvalidQuantity: La cantidad debe ser mayor que cero.
  • WrongContainerKind: Los contenedores de slots no pueden contener activos fungibles.
  • ContainerNotFound: El contenedor de destino no existe.
  • UnregisteredClass: La clase no está registrada en el espacio de nombres.
  • InsufficientBalance: La cantidad solicitada excede el saldo disponible.
  • PositionEmpty: No stack exists at the requested grid anchor. PositionEmpty: No existe ninguna pila en el ancla de cuadrícula solicitado. Ejemplo:
{
  "op": "RemoveFungible",
  "args": {
  "class_id": "class-100",
  "from": {
    "container_id": "container-1001",
    "kind": "balance"
  },
  "key": 1,
  "quantity": "100"
}
}

MoverFungible

Mueve una cantidad fungible entre saldos o celdas de la cuadrícula.

movimiento de balance multi objetivo

Transfiere una cantidad fungible de un lugar a otro. Soporta movimientos balance<->balance, balance<->grid y grid<->grid mientras hace cumplir las formas registradas para destinos de grid y asegura que las cantidades de origen sean suficientes.

Errores:

  • InvalidQuantity: La cantidad debe ser mayor que cero.
  • WrongContainerKind: Los contenedores de slots no pueden participar en movimientos fungibles.
  • ContainerNotFound: Uno de los contenedores no existe.
  • UnregisteredClass: La clase no está registrada en el espacio de nombres.
  • InsufficientBalance: La ubicación de origen carece de la cantidad solicitada.
  • PositionEmpty: No existe una pila en el ancla de cuadrícula solicitada.
  • PositionOccupied: El ancla de la cuadrícula de destino se superpone a una colocación existente.
  • UnregisteredClassShape: Grid destinations require a registered shape for the class and key. UnregisteredClassShape: Los destinos de cuadrícula requieren una forma registrada para la clase y la clave. Ejemplo:
{
  "op": "MoveFungible",
  "args": {
  "class_id": "class-100",
  "from": {
    "container_id": "container-1001",
    "kind": "balance"
  },
  "key": 1,
  "quantity": "50",
  "to": {
    "container_id": "container-2001",
    "kind": "grid_cell",
    "position": 4,
    "rotation": "clockwise90"
  }
}
}

TransferirFungible

Transfiere una cantidad fungible entre contenedores estructurados.

movimiento de balance multi objetivo

Mueve una cantidad fungible de un contenedor a otro en una sola transacción. Ambos contenedores deben existir, soportar saldos para la clase/par de claves, y la fuente debe contener la cantidad solicitada. El registro de forma se aplica cuando se requiere la colocación en la cuadrícula.

Errores:

  • InvalidQuantity: La cantidad debe ser mayor que cero.
  • InvalidOperation: Las transferencias de identidad o el desbordamiento aritmético son inválidos.
  • ContainerNotFound: Uno de los contenedores no existe.
  • WrongContainerKind: Los contenedores de ranuras no pueden participar en transferencias fungibles.
  • UnregisteredClass: La clase no está registrada en el espacio de nombres.
  • InsufficientBalance: El contenedor de origen carece de la cantidad solicitada.
  • UnregisteredClassShape: Grid destinations require a registered shape for the class and key. UnregisteredClassShape: Los destinos de cuadrícula requieren una forma registrada para la clase y la clave. Ejemplo:
{
  "op": "TransferFungible",
  "args": {
  "class_id": "class-100",
  "from_container": "container-1001",
  "key": 1,
  "quantity": "250",
  "to_container": "container-1002"
}
}

TransferirMuchos

Transfiere múltiples cantidades fungibles entre contenedores en un solo lote.

balance movimiento multi fanout

Ejecuta un lote ordenado de transferencias de contenedor a contenedor con semántica atómica de todo o nada. Cada entrada valida los tipos de contenedor, el registro de clases y los saldos suficientes antes de que ocurran mutaciones.

Errores:

  • InvalidQuantity: La cantidad debe ser mayor que cero.
  • InvalidOperation: Las transferencias de identidad o la estructura de lote inválida fueron rechazadas.
  • ContainerNotFound: Uno de los contenedores no existe.
  • WrongContainerKind: Los contenedores de ranuras no pueden participar en transferencias fungibles.
  • UnregisteredClass: La clase no está registrada en el espacio de nombres.
  • InsufficientBalance: El contenedor de origen carece de la cantidad solicitada.
  • UnregisteredClassShape: Grid destinations require a registered shape for the class and key. UnregisteredClassShape: Los destinos de cuadrícula requieren una forma registrada para la clase y la clave. Ejemplo:
{
  "op": "TransferMany",
  "args": {
  "transfers": [
    {
      "class_id": "class-100",
      "from_container": "container-1001",
      "key": 1,
      "quantity": "25",
      "to_container": "container-1002"
    },
    {
      "class_id": "class-101",
      "from_container": "container-1002",
      "quantity": "10",
      "to_container": "container-1003"
    }
  ]
}
}

Distribuir

Distribuye una cantidad fungible de una fuente a múltiples destinos.

balance movimiento multi fanout

Divide una única cantidad de origen entre múltiples contenedores de destino en un solo lote atómico. La fuente debe contener la cantidad total solicitada en todas las entradas de distribución.

Errores:

  • InvalidQuantity: Cada cantidad de distribución debe ser mayor que cero.
  • InvalidOperation: Los totales deben ajustarse dentro de los límites de saldo para la fuente.
  • ContainerNotFound: Uno de los contenedores no existe.
  • WrongContainerKind: Los contenedores de ranuras no pueden participar en la distribución fungible.
  • UnregisteredClass: La clase no está registrada en el espacio de nombres.
  • InsufficientBalance: El contenedor de origen carece de la cantidad total solicitada.
  • UnregisteredClassShape: Grid destinations require a registered shape for the class and key. UnregisteredClassShape: Los destinos de cuadrícula requieren una forma registrada para la clase y la clave. Ejemplo:
{
  "op": "Distribute",
  "args": {
  "class_id": "class-100",
  "distributions": [
    {
      "quantity": "10",
      "to_container": "container-2001"
    },
    {
      "quantity": "15",
      "to_container": "container-2002"
    }
  ],
  "from_container": "container-1001",
  "key": 1
}
}

MergeStacks

Fusiona una pila fungible en otra dentro de un contenedor.

balance consolidar multi dirigido

Combina la pila de origen en la pila de destino en el mismo contenedor de cuadrícula. Las pilas deben compartir la identidad de clase y clave. Las cantidades se suman de manera determinista y la pila de origen se elimina.

Errores:

  • InvalidOperation: Las auto-fusiones, fusiones entre contenedores o desbordamientos son rechazados.
  • ContainerNotFound: El contenedor de la cuadrícula desapareció antes de que se completara la fusión.
  • WrongContainerKind: Solo los contenedores de cuadrícula contienen entidades de pila.
  • StackNotFound: Uno de los stacks referenciados ya no exists.
  • IncompatibleStacks: Stacks must share the same class and key to merge. IncompatibleStacks: Las pilas deben compartir la misma clase y clave para fusionarse. Ejemplo:
{
  "op": "MergeStacks",
  "args": {
  "dst_stack": "stack-5001",
  "src_stack": "stack-5002"
}
}

ConsolidarPilas

Consolida todos los montones fungibles coincidentes dentro de un contenedor.

balance consolidar multi fanout

Encuentra cada pila en un contenedor que coincida con el par de clase/clave y las colapsa en una sola pila. Normaliza los saldos fragmentados que se acumularon a través de múltiples operaciones mientras preserva los totales.

Errores:

  • ContainerNotFound: El contenedor especificado no existe.
  • WrongContainerKind: Solo los contenedores de cuadrícula pueden contener pilas para consolidación.
  • UnregisteredClass: La clase no está registrada en el espacio de nombres.
  • InvalidOperation: No se encontraron pilas o la cantidad total desbordó u64.
  • StackNotFound: A stack disappeared during consolidation. StackNotFound: Una pila desapareció durante la consolidación. Ejemplo:
{
  "op": "ConsolidateStacks",
  "args": {
  "class_id": "class-100",
  "container_id": "container-1001",
  "key": 1
}
}

MoverMuchos

Mueve múltiples pilas entre contenedores de cuadrícula en un solo lote.

balance movimiento multi fanout

Ejecuta un lote de movimientos de pilas a través de contenedores de Grid. Cada entrada especifica un identificador de pila, contenedor de destino y cantidad; los movimientos parciales dividen las pilas mientras que los movimientos completos las reubican.

Errores:

  • InvalidQuantity: La cantidad de movimiento debe ser mayor que cero.
  • InvalidOperation: Se rechazaron pilas duplicadas o destinos inválidos.
  • ContainerNotFound: Uno de los contenedores no existe.
  • WrongContainerKind: Las pilas solo pueden moverse entre contenedores de cuadrícula.
  • StackNotFound: Uno de los stacks referenciados ya no exists.
  • InsufficientBalance: Una pila carece de la cantidad solicitada para el movimiento.
  • StackLimitExceeded: Destination container exceeds stack limits. StackLimitExceeded: El contenedor de destino excede los límites de la pila. Ejemplo:
{
  "op": "MoveMany",
  "args": {
  "moves": [
    {
      "quantity": "3",
      "stack": "stack-5001",
      "to_container": "container-2001"
    },
    {
      "quantity": "5",
      "stack": "stack-5002",
      "to_container": "container-2002"
    }
  ]
}
}

Operaciones de Instancia

AddInstance

Crea una nueva instancia y la coloca en una ubicación objetivo.

instancia crear única dirigida

Crea una instancia única para la clase/variante especificada y la coloca en un espacio, ancla de cuadrícula o coordenada continua. Valida el tipo de contenedor, las reglas de forma/rotación y la colisión antes de la colocación.

Errores:

  • ContainerNotFound: El contenedor de destino no existe.
  • UnregisteredClass: La clase no está registrada en el espacio de nombres.
  • WrongContainerKind: Las ubicaciones de cuadrícula requieren contenedores de cuadrícula; las ubicaciones de ranura requieren contenedores de ranuras; las ubicaciones continuas requieren contenedores continuos.
  • SlotOutOfBounds: El índice de ranura excede la capacidad del contenedor.
  • SlotOccupied: El slot solicitado ya está ocupado.
  • PositionOccupied: El ancla de la cuadrícula se superpone a una colocación existente.
  • PositionOutOfBounds: La colocación excedería los límites de la cuadrícula.
  • ContinuousPlacementOutOfBounds: La colocación continua se extiende más allá de los límites del contenedor.
  • UnregisteredClassShape: Grid placements require a registered shape for the class/key. UnregisteredClassShape: Las ubicaciones en la cuadrícula requieren una forma registrada para la clase/clave. Ejemplo:
{
  "op": "AddInstance",
  "args": {
  "class_id": "class-200",
  "key": 1,
  "location": {
    "container_id": "container-500",
    "kind": "slot",
    "slot_index": 1
  }
}
}

MoveInstance

Mueve una instancia existente a una nueva ubicación.

instancia mover único dirigido

Reubica una instancia previamente acuñada en un espacio, ancla de cuadrícula o coordenada continua. Valida las reglas de forma/rotación y previene la superposición en contenedores de cuadrícula y continuos.

Errores:

  • InstanceNotFound: La instancia no existe.
  • WrongContainerKind: El tipo de contenedor de destino no admite el movimiento solicitado.
  • SlotOutOfBounds: El índice de ranura excede la capacidad del contenedor.
  • SlotOccupied: El slot de destino ya está ocupado.
  • PositionOccupied: El ancla de la cuadrícula de destino se superpone a una colocación existente.
  • PositionOutOfBounds: El ancla de la cuadrícula de destino excede los límites.
  • ContinuousPlacementOutOfBounds: La colocación continua se extiende más allá de los límites del contenedor.
  • UnregisteredClassShape: Los destinos de cuadrícula requieren una forma registrada para la clase/clave de instancia.
  • ContinuousPlacementOverlap: Continuous destination overlaps an existing placement. ContinuousPlacementOverlap: El destino continuo se superpone a una colocación existente. Ejemplo:
{
  "op": "MoveInstance",
  "args": {
  "instance": "instance-9001",
  "to": {
    "container_id": "container-2001",
    "kind": "grid_cell",
    "position": 5,
    "rotation": "none"
  }
}
}

RemoveInstance

Quema una instancia del mundo.

instancia destruir único dirigido

Elimina una instancia independientemente de su ubicación actual. La instancia no puede tener hijos adjuntos. Las referencias de cuadrícula o de ranura se borran como parte de la eliminación.

Errores:

  • InstanceNotFound: El ID de instancia objetivo no existe.
  • HasChildren: Children must be detached before burning the instance. HasChildren: Los hijos deben ser separados antes de quemar la instancia. Ejemplo:
{
  "op": "RemoveInstance",
  "args": {
  "instance": "instance-9001"
}
}

BurnInstance

Elimina una instancia única permanentemente del sustrato.

instancia destruir único dirigido

Elimina permanentemente una instancia única. La instancia no debe estar adjunta a otras instancias ni colocada en un slot. El identificador nunca se reutiliza una vez quemado.

Errores:

  • InstanceNotFound: El ID de instancia objetivo no existe.
  • HasChildren: Children must be detached before burning the instance. HasChildren: Los hijos deben ser separados antes de quemar la instancia. Ejemplo:
{
  "op": "BurnInstance",
  "args": {
  "instance_id": "instance-9001"
}
}

Adjuntar

Adjunta una instancia hija a un padre para movimiento vinculado.

enlace de instancia multi dirigido

Crea una relación de padre-hijo entre dos instancias para que se muevan juntas. El hijo solo puede tener un padre, y se rechazan los ciclos para mantener el grafo de instancias acíclico.

Errores:

  • InvalidOperation: El hijo y el padre deben ser diferentes y se rechazan los ciclos.
  • InstanceNotFound: La instancia hija o padre no existe.
  • AlreadyAttached: El niño ya tiene un padre.
  • WouldCreateCycle: Attachment would create a cycle in the hierarchy. WouldCreateCycle: El adjunto crearía un ciclo en la jerarquía. Ejemplo:
{
  "op": "Attach",
  "args": {
  "child_instance": "instance-9002",
  "parent_instance": "instance-9001"
}
}

Desconectar

Desvincula una instancia hija de su instancia padre.

enlace de instancia único dirigido

Elimina la relación de padre-hijo para que el hijo se vuelva independiente mientras permanece en el sustrato de memoria. El hijo retiene su ID y puede ser reanexado en otro lugar.

Errores:

  • InstanceNotFound: La instancia especificada no existe.
  • NotAttached: The instance has no parent to detach from. NotAttached: La instancia no tiene un padre del cual desasociarse. Example:
{
  "op": "Detach",
  "args": {
  "child_instance": "instance-9002"
}
}

Operaciones de tragamonedas

PlaceInSlot

Posiciona una instancia en un espacio direccionable dentro de un contenedor.

movimiento de ranura único dirigido

Coloca una instancia única en una ranura específica en un contenedor que admite diseños de ranuras. La ranura debe estar vacía y el tipo de contenedor debe permitir la colocación de ranuras, preservando la posición determinista.

Errores:

  • ContainerNotFound: El contenedor de destino no existe.
  • WrongContainerKind: Solo los contenedores de Slots admiten la colocación de slots.
  • SlotOutOfBounds: El índice de ranura excede la capacidad del contenedor.
  • InstanceNotFound: La instancia que se está colocando no existe.
  • SlotOccupied: The requested slot is already occupied. SlotOccupied: El slot solicitado ya está ocupado. Ejemplo:
{
  "op": "PlaceInSlot",
  "args": {
  "container_id": "container-1001",
  "instance_id": "instance-9001",
  "slot_index": 1
}
}

RemoveFromSlot

Elimina una instancia de una ranura de contenedor.

movimiento de ranura único dirigido

Limpia un espacio y deja la instancia sin colocar. La instancia permanece en el sustrato de memoria, pero ya no ocupa ese enlace posicional, lo que permite el reubicado.

Errores:

  • ContainerNotFound: El contenedor no existe.
  • WrongContainerKind: Solo los contenedores de Slots admiten la eliminación de slots.
  • SlotOutOfBounds: El índice de ranura excede la capacidad del contenedor.
  • SlotEmpty: The slot does not contain an instance to remove. SlotEmpty: El slot no contiene una instancia para eliminar. Ejemplo:
{
  "op": "RemoveFromSlot",
  "args": {
  "container_id": "container-1001",
  "slot_index": 1
}
}

SwapSlots

Intercambia el contenido de dos ranuras ocupadas de manera atómica.

movimiento de ranura multi objetivo

Intercambia atómicamente el contenido de dos espacios, que pueden residir en el mismo o en diferentes contenedores. Ambos espacios deben existir y estar ocupados. El intercambio preserva los invariantes posicionales a través de los contenedores.

Errores:

  • InvalidOperation: No se puede intercambiar un espacio con sí mismo en el mismo contenedor.
  • ContainerNotFound: Uno de los contenedores no existe.
  • WrongContainerKind: Ambos contenedores deben ser del tipo Slots.
  • SlotOutOfBounds: Uno de los índices de ranura excede la capacidad del contenedor.
  • SlotEmpty: A slot is empty and cannot be swapped. SlotEmpty: Un slot está vacío y no se puede intercambiar. Example:
{
  "op": "SwapSlots",
  "args": {
  "container_a": "container-1001",
  "container_b": "container-1001",
  "slot_a": 1,
  "slot_b": 5
}
}

Operaciones de Esquema

RegisterClass

Registra una definición de clase para que las operaciones futuras puedan hacer referencia a ella.

crear esquema único dirigido

Registra un ID externo de clase y un nombre para que las transacciones puedan hacer referencia a la clase y aplicar sus reglas de validación. Los IDs externos son de ámbito de espacio de nombres e inmutables una vez registrados; los IDs internos se asignan automáticamente y nunca se exponen.

Errores:

  • ClassAlreadyExists: El class_id proporcionado (identificador externo) ya está en uso.
  • ClassCapacityExceeded: The global class registry has reached its configured limit. ClassCapacityExceeded: El registro global de clases ha alcanzado su límite configurado. Example:
{
  "op": "RegisterClass",
  "args": {
  "request": {
    "class_id": "class-100",
    "flags": 2,
    "name": "ExampleClass"
  }
}
}

RegisterClassShape

Registra una huella de forma de cuadrícula para una clase o variante de clase.

crear esquema único dirigido

Define la forma de ancho/alto para un class_id (identificador externo) y un stack_key opcional para que las ubicaciones en la cuadrícula puedan validar la ocupación y la rotación. Las formas son necesarias antes de colocar instancias o pilas en contenedores de cuadrícula para esa clase. Volver a registrar una forma idéntica se considera una operación sin efecto.

Errores:

  • ClassNotFound: La clase con el class_id (identificador externo) referenciado no ha sido registrada.
  • ShapeAlreadyDefined: The shape_id already exists for the class. ShapeAlreadyDefined: El shape_id ya existe para la clase. Ejemplo:
{
  "op": "RegisterClassShape",
  "args": {
  "request": {
    "class_id": "class-200",
    "shape": {
      "height": 3,
      "width": 2
    }
  }
}
}

RegisterClassContinuousShape2d

Registra un rectángulo 2D continuo para una clase o variante de clase.

crear esquema único dirigido

Define el rectángulo de punto fijo para un class_id (identificador externo) y un stack_key opcional para que las colocaciones continuas en 2D puedan validar colisiones y rotaciones. Requerido antes de colocar en contenedores continuous_grid_2d para esa clase. Volver a registrar un rectángulo idéntico se trata como una operación sin efecto.

Errores:

  • ClassNotFound: La clase con el class_id (identificador externo) referenciado no ha sido registrada.
  • ContinuousShapeAlreadyDefined: The continuous shape is already registered for the class/key. ContinuousShapeAlreadyDefined: La forma continua ya está registrada para la clase/clave. Example:
{
  "op": "RegisterClassContinuousShape2d",
  "args": {
  "request": {
    "class_id": "class-200",
    "rect": {
      "height": 8,
      "width": 10
    }
  }
}
}

RegisterClassContinuousShape1d

Registra un rango continuo 1D para una clase o variante de clase.

crear esquema único dirigido

Define la longitud del rango de punto fijo para un class_id (identificador externo) y un stack_key opcional para que las colocaciones continuas 1D puedan validar colisiones. Requerido antes de colocar en contenedores continuous_line_1d para esa clase. Volver a registrar un rango idéntico se trata como una operación sin efecto.

Errores:

  • ClassNotFound: La clase con el class_id (identificador externo) referenciado no ha sido registrada.
  • ContinuousShapeAlreadyDefined: The continuous shape is already registered for the class/key. ContinuousShapeAlreadyDefined: La forma continua ya está registrada para la clase/clave. Example:
{
  "op": "RegisterClassContinuousShape1d",
  "args": {
  "request": {
    "class_id": "class-200",
    "span": {
      "length": 10
    }
  }
}
}


Recetas

Mover saldo fungible entre contenedores

Mover una cantidad fungible de un contenedor a otro en una única operación semántica.

Operaciones:

  • MoverFungible

Ejemplo:

{
  "namespace_id": 1,
  "operations": [
    {
      "op": "MoveFungible",
      "args": {
        "class_id": "class-100",
        "key": 1,
        "quantity": "50",
        "from": {
          "kind": "balance",
          "container_id": "container-1001"
        },
        "to": {
          "kind": "balance",
          "container_id": "container-1002"
        }
      }
    }
  ]
}

Mover Instancia Entre Slots

Elimina una instancia de un slot y colócala en otro slot direccionable dentro del mismo contenedor, manteniendo la transacción atómica.

Operaciones:

  • EliminarDeSlot
  • ColocarEnRanura

Ejemplo:

{
  "namespace_id": 1,
  "operations": [
    {
      "op": "RemoveFromSlot",
      "args": {
        "container_id": "container-1001",
        "slot_index": 1
      }
    },
    {
      "op": "PlaceInSlot",
      "args": {
        "container_id": "container-1001",
        "slot_index": 2,
        "instance_id": "instance-9001"
      }
    }
  ]
}

Registrar Clase con Forma

Registre una nueva clase de activo y declare inmediatamente una forma de cuadrícula para que las reglas de colocación estén disponibles para contenedores estructurados.

Operaciones:

  • RegisterClass
  • RegisterClassShape

Ejemplo:

{
  "namespace_id": 1,
  "operations": [
    {
      "op": "RegisterClass",
      "args": {
        "request": {
          "class_id": "class-100",
          "name": "ExampleClass",
          "flags": 2
        }
      }
    },
    {
      "op": "RegisterClassShape",
      "args": {
        "request": {
          "class_id": "class-100",
          "shape": {
            "width": 2,
            "height": 3
          }
        }
      }
    }
  ]
}

Referencia Rápida

OperaciónDominioAcciónResumen
CreateContainercontainercreateCrea un contenedor (región de memoria estructurada) con el tipo solicitado
RemoveContainercontainerdestroyElimina un contenedor después de drenar su contenido
AddFungiblebalancecreateAñade una cantidad fungible a un balance o a una celda de cuadrícula explícita
RemoveFungiblebalancedestroyElimina una cantidad fungible de un balance o de una celda de cuadrícula explícita
MoveFungiblebalancemoveMueve una cantidad fungible entre balances o celdas de cuadrícula
TransferFungiblebalancemoveTransfiere una cantidad fungible entre contenedores estructurados
TransferManybalancemoveTransfiere múltiples cantidades fungibles entre contenedores en un solo lote
DistributebalancemoveDistribuye una cantidad fungible de una fuente a múltiples destinos
MergeStacksbalanceconsolidateFusiona una pila fungible en otra dentro de un contenedor
ConsolidateStacksbalanceconsolidateConsolida todas las pilas fungibles coincidentes dentro de un contenedor
MoveManybalancemoveMueve múltiples pilas entre contenedores de cuadrícula en un solo lote
AddInstanceinstancecreateCrea una nueva instancia y la coloca en una ubicación objetivo
MoveInstanceinstancemoveMueve una instancia existente a una nueva ubicación
RemoveInstanceinstancedestroyElimina una instancia del mundo
BurnInstanceinstancedestroyElimina una instancia única permanentemente del sustrato
AttachinstancelinkAdjunta una instancia hija a una instancia padre para movimiento vinculado
DetachinstancelinkDesvincula una instancia hija de su instancia padre
PlaceInSlotslotmovePosiciona una instancia en un slot direccionable dentro de un contenedor
RemoveFromSlotslotmoveElimina una instancia de un slot de contenedor
SwapSlotsslotmoveIntercambia el contenido de dos slots ocupados de manera atómica
RegisterClassschemacreateRegistra una definición de clase para que las operaciones futuras puedan referenciarla
RegisterClassShapeschemacreateRegistra una huella de forma de cuadrícula para una clase o variante de clase
RegisterClassContinuousShape2dschemacreateRegistra un rectángulo continuo 2D para una clase o variante de clase
RegisterClassContinuousShape1dschemacreateRegistra un intervalo continuo 1D para una clase o variante de clase

Este documento fue generado automáticamente a partir del manifiesto de operación de AssetCore.