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:
EliminarDeSlotColocarEnRanura
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:
RegisterClassRegisterClassShape
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ón | Dominio | Acción | Resumen |
|---|---|---|---|
| CreateContainer | container | create | Crea un contenedor (región de memoria estructurada) con el tipo solicitado |
| RemoveContainer | container | destroy | Elimina un contenedor después de drenar su contenido |
| AddFungible | balance | create | Añade una cantidad fungible a un balance o a una celda de cuadrícula explícita |
| RemoveFungible | balance | destroy | Elimina una cantidad fungible de un balance o de una celda de cuadrícula explícita |
| MoveFungible | balance | move | Mueve una cantidad fungible entre balances o celdas de cuadrícula |
| TransferFungible | balance | move | Transfiere una cantidad fungible entre contenedores estructurados |
| TransferMany | balance | move | Transfiere múltiples cantidades fungibles entre contenedores en un solo lote |
| Distribute | balance | move | Distribuye una cantidad fungible de una fuente a múltiples destinos |
| MergeStacks | balance | consolidate | Fusiona una pila fungible en otra dentro de un contenedor |
| ConsolidateStacks | balance | consolidate | Consolida todas las pilas fungibles coincidentes dentro de un contenedor |
| MoveMany | balance | move | Mueve múltiples pilas entre contenedores de cuadrícula en un solo lote |
| AddInstance | instance | create | Crea una nueva instancia y la coloca en una ubicación objetivo |
| MoveInstance | instance | move | Mueve una instancia existente a una nueva ubicación |
| RemoveInstance | instance | destroy | Elimina una instancia del mundo |
| BurnInstance | instance | destroy | Elimina una instancia única permanentemente del sustrato |
| Attach | instance | link | Adjunta una instancia hija a una instancia padre para movimiento vinculado |
| Detach | instance | link | Desvincula una instancia hija de su instancia padre |
| PlaceInSlot | slot | move | Posiciona una instancia en un slot direccionable dentro de un contenedor |
| RemoveFromSlot | slot | move | Elimina una instancia de un slot de contenedor |
| SwapSlots | slot | move | Intercambia el contenido de dos slots ocupados de manera atómica |
| RegisterClass | schema | create | Registra una definición de clase para que las operaciones futuras puedan referenciarla |
| RegisterClassShape | schema | create | Registra una huella de forma de cuadrícula para una clase o variante de clase |
| RegisterClassContinuousShape2d | schema | create | Registra un rectángulo continuo 2D para una clase o variante de clase |
| RegisterClassContinuousShape1d | schema | create | Registra 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.