Operaciones por Dominio
Asset Core proporciona 16 operaciones en 5 dominios. Esta referencia documenta cada operación con sus argumentos, errores y ejemplos.
Visión general
Las operaciones se categorizan según el tipo de entidad que afectan. Cada operación tiene:
- Etiquetas que describen dominio, acción, alcance y reversibilidad
- Argumentos específicos para la operación
- Errores que pueden ser devueltos
- Ejemplo que muestra el uso típico
Estructura
Todas las operaciones utilizan el mismo sobre:
{
"op": "OperationName",
"args": { ... }
}
Campos
Definiciones de Etiquetas
Dominio: Qué tipo de entidad se ve afectado
container,balance,instance,slot,schema
Acción: Qué tipo de cambio
crear,destruir,mover,enlazar,consolidar
Alcance: Cuántas entidades
único,múltiple
Reversibilidad: ¿Se puede deshacer?
reversible,destructive,neutral
Ejemplos
Operaciones de Contenedor
CrearContenedor
Crea un nuevo contenedor para almacenar activos.
Etiquetas: container create single reversible
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
container_id | entero | Sí | Identificador único del contenedor |
kind | cadena | Sí | Tipo de contenedor: Standard, Slots o Grid |
owner | entero | No | Identificador de propietario opcional |
Errores: ContainerAlreadyExists
{
"op": "CreateContainer",
"args": {
"container_id": 1001,
"kind": "Standard",
"owner": null
}
}
RemoveContainer
Elimina un contenedor vacío.
Etiquetas: container destroy single destructive
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
container_id | entero | Sí | Contenedor a eliminar |
Errores: ContainerNotFound
{
"op": "RemoveContainer",
"args": {
"container_id": 1001
}
}
Operaciones de Balance
AddFungible
Agrega cantidad a un saldo fungible.
Etiquetas: balance crear único reversible
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
container_id | entero | Sí | Contenedor objetivo |
class_id | entero | Sí | Clase de activo |
key | entero | Sí | Clave de saldo |
quantity | entero | Sí | Cantidad a añadir |
Errores: InvalidQuantity, ContainerNotFound, WrongContainerKind, UnregisteredClassShape, InvalidOperation
{
"op": "AddFungible",
"args": {
"container_id": 1001,
"class_id": 100,
"key": 1,
"quantity": 500
}
}
RemoveFungible
Elimina cantidad de un saldo fungible.
Etiquetas: balance destroy single destructive
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
container_id | entero | Sí | Contenedor objetivo |
class_id | entero | Sí | Clase de activo |
key | entero | Sí | Clave de saldo |
quantity | entero | Sí | Cantidad a eliminar |
Errores: InvalidQuantity, ContainerNotFound, WrongContainerKind, InsufficientBalance
{
"op": "RemoveFungible",
"args": {
"container_id": 1001,
"class_id": 100,
"key": 1,
"quantity": 100
}
}
TransferFungible
Mueve una cantidad fungible entre contenedores.
Etiquetas: balance move multi neutral
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
from_container | entero | Sí | Contenedor de origen |
to_container | entero | Sí | Contenedor de destino |
class_id | entero | Sí | Clase de activo |
key | entero | Sí | Clave de saldo |
quantity | entero | Sí | Cantidad a transferir |
Errores: InvalidQuantity, InvalidOperation, ContainerNotFound, WrongContainerKind, InsufficientBalance, UnregisteredClassShape
{
"op": "TransferFungible",
"args": {
"from_container": 1001,
"to_container": 1002,
"class_id": 100,
"key": 1,
"quantity": 250
}
}
MergeStacks
Combina dos pilas fungibles en una.
Etiquetas: balance consolidar multi reversible
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
src_stack | entero | Sí | Pila de la que fusionar |
dst_stack | entero | Sí | Pila en la que fusionar |
Errores: InvalidOperation, ContainerNotFound, WrongContainerKind, StackNotFound, IncompatibleStacks
ConsolidarPilas
Fusiona todas las pilas coincidentes en un contenedor.
Etiquetas: balance consolidar multi reversible
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
container_id | entero | Sí | Contenedor a consolidar |
class_id | entero | Sí | Clase de activo |
key | entero | Sí | Clave de saldo |
Errores: ContainerNotFound, WrongContainerKind, InvalidOperation, StackNotFound
Operaciones de Instancia
MintInstance
Crea una nueva instancia única.
Etiquetas: instancia crear único reversible
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
class_id | entero | Sí | Clase de instancia |
key | entero | Sí | Clave de instancia |
Errores: IntegerOverflow
{
"op": "MintInstance",
"args": {
"class_id": 200,
"key": 1
}
}
El ID de instancia acuñado se devuelve en minted_instances.
BurnInstance
Destruye una instancia única de forma permanente.
Etiquetas: instancia destruir único destructivo
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
instance_id | entero | Sí | Instancia a destruir |
Errores: InstanceNotFound, HasChildren
Adjuntar
Adjunta una instancia hija a un padre.
Etiquetas: instance link multi reversible
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
child_instance | entero | Sí | Instancia a adjuntar |
parent_instance | entero | Sí | Instancia padre |
Errores: InvalidOperation, InstanceNotFound, AlreadyAttached, WouldCreateCycle
Desconectar
Desvincula una instancia de su padre.
Etiquetas: instancia enlace único destructivo
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
child_instance | entero | Sí | Instancia a desacoplar |
Errores: InstanceNotFound, NotAttached
Operaciones de Slot
PlaceInSlot
Coloca una instancia en un espacio de contenedor.
Etiquetas: slot move single reversible
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
container_id | entero | Sí | Contenedor objetivo |
instance_id | entero | Sí | Instancia a colocar |
slot_index | entero | Sí | Posición del slot |
Errores: ContainerNotFound, WrongContainerKind, SlotOutOfBounds, InstanceNotFound, SlotOccupied
{
"op": "PlaceInSlot",
"args": {
"container_id": 1001,
"instance_id": 9001,
"slot_index": 0
}
}
RemoveFromSlot
Elimina una instancia de un slot.
Etiquetas: slot move single destructive
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
container_id | entero | Sí | Contenedor objetivo |
slot_index | entero | Sí | Posición de la ranura |
Errores: ContainerNotFound, WrongContainerKind, SlotOutOfBounds, SlotEmpty
SwapSlots
Intercambia contenidos entre dos espacios.
Etiquetas: slot move multi neutral
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
container_a | entero | Sí | Primer contenedor |
slot_a | entero | Sí | Primer espacio |
container_b | entero | Sí | Segundo contenedor |
slot_b | entero | Sí | Segundo espacio |
Errores: InvalidOperation, ContainerNotFound, WrongContainerKind, SlotOutOfBounds, SlotEmpty
Operaciones de Esquema
RegisterClass
Registra una nueva definición de clase de activo.
Etiquetas: schema create single reversible
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
request.class_id | entero | Sí | Identificador único de la clase |
request.name | cadena | Sí | Nombre legible por humanos |
request.fungible | booleano | Sí | Si los activos son fungibles |
Errores: ClassAlreadyExists, ClassCapacityExceeded
{
"op": "RegisterClass",
"args": {
"request": {
"class_id": 100,
"name": "Gold Coin",
"fungible": true
}
}
}
RegisterClassShape
Agrega una configuración de forma a una clase existente.
Etiquetas: schema create single reversible
| Argumento | Tipo | Requerido | Descripción |
|---|---|---|---|
request.class_id | entero | Sí | Clase a configurar |
request.shape_id | entero | Sí | Identificador único de la forma |
request.width | entero | Sí | Ancho de la forma |
request.height | entero | Sí | Altura de la forma |
Errores: ClassNotFound, ShapeAlreadyDefined
{
"op": "RegisterClassShape",
"args": {
"request": {
"class_id": 200,
"shape_id": 1,
"width": 2,
"height": 3
}
}
}
Referencias relacionadas
- Transacciones - Estructura de la solicitud
- Recetas - Patrones de múltiples operaciones
- Modelo de Error - Manejo de errores