Documentació d'Asset Core

Documentació del motor d'estat del món determinista i referències de l'API.

Decision Gate docs

Referència d’Operacions de Transacció d’AssetCore

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

Generat automàticament a partir del manifest d’operacions el 2026-01-22

AssetCore és un substrat de memòria determinista. Els contenidors són regions de memòria persistent. Les operacions són transformacions de memòria atòmiques. Les transaccions són compromisos de memòria reproduïbles.

Les següents operacions modifiquen regions de memòria estructurada d’una manera independent del domini.

Aquest document proporciona una referència completa per a les 24 operacions disponibles en els compromisos d’AssetCore.

Taula de continguts


Visió general

Tots els canvis d’estat en el substrat de memòria estructurada d’AssetCore flueixen a través del punt final de confirmació com una seqüència d’operacions. Cada operació és una transformació atòmica que es pot combinar amb altres en una única transacció.

Estructura de la Sol·licitud de Compromís

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

Les operacions s’executen en ordre dins d’una única transacció. Si alguna operació falla, tota la confirmació es desfa.


Sistema de Etiquetes

Les operacions es classifiquen en quatre dimensions:

Domini

Quin tipus d’entitat afecta l’operació:

  • contenidor: Operacions del cicle de vida del contenidor
  • balance: Quantitat fungible i operacions de pila
  • instància: Operacions d’instància úniques
  • slot: Operacions de posicionament d’slots espacials
  • schema: Operacions de definició de classe i forma

Acció

Quin tipus d’acció s’executa:

  • crear: Fa que alguna cosa existeixi
  • destruir: Elimina alguna cosa de l’existència
  • moure: Reubica entre ubicacions
  • enllaç: Estableix o elimina relacions
  • consolidar: Fusiona o reorganitza

Abast

Quantes entitats estan afectades:

  • individual: Un objectiu principal
  • multi: Múltiples objectius o contenidors

Impact

L’abast de l’impacte dels efectes de l’operació:

  • dirigit: Els canvis es limiten a entitats referenciades explícitament
  • fanout: Els canvis es distribueixen entre múltiples entitats en un lot o conjunt de coincidències
  • cascada: Els canvis eliminen o invaliden implícitament continguts anidats

Operacions per Domini

Operacions de contenidor

CreateContainer

Crea un contenidor (regió de memòria estructurada) amb el tipus sol·licitat.

contenidor crear únic dirigit

Crea un contenidor persistent del tipus sol·licitat (balance, graella, slots, continu 1D/2D). Proporciona external_id per reclamar un identificador extern estable; els IDs interns són densos, auto-assignats i mai exposats. Els IDs externs són d’àmbit de namespace i no han d’existir ja.

Errors:

  • ContainerAlreadyExists: A container with that ID already exists. ContainerAlreadyExists: Ja existeix un contenidor amb aquest ID. Example:
{
  "op": "CreateContainer",
  "args": {
  "external_id": "container-1000",
  "kind": {
    "quantization_inv": 100,
    "type": "balance"
  }
}
}

RemoveContainer

Elimina un contenidor després de drenar el seu contingut.

contenidor destruir únic cascada

Elimina un contenidor després que la transacció dreni qualsevol saldo, instàncies i contingut de slots. Això és irreversible per a l’identificador del contenidor i preserva les regions de memòria circumdants.

Errors:

  • ContainerNotFound: The specified container does not exist. ContainerNotFound: El contenidor especificat no existeix. Example:
{
  "op": "RemoveContainer",
  "args": {
  "container_id": "container-1001"
}
}

Operacions de Balanceig

AddFungible

Afegeix una quantitat fungible a un saldo o a una cel·la de graella explícita.

balance crear únic dirigit

Augmenta la quantitat fungible per a un parell de classe/clau. Quan es dirigeix a un contenidor de saldo, la quantitat s’afegeix al saldo agregat. Quan es dirigeix a una cel·la de la graella, l’operació crea o fa créixer una pila a l’ancoratge especificat, imposant formes registrades i rotació per a la col·locació.

Errors:

  • InvalidQuantity: La quantitat ha de ser superior a zero.
  • WrongContainerKind: Els contenidors de slots no poden contenir actius fungibles.
  • ContainerNotFound: El contenidor objectiu no existeix.
  • UnregisteredClass: La classe no està registrada en l’espai de noms.
  • UnregisteredClassShape: Les addicions de la graella requereixen una forma registrada per a la classe i la clau.
  • PositionOccupied: The requested grid anchor overlaps an existing placement. PositionOccupied: L’ancoratge de graella sol·licitat s’obre a una ubicació existent. 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 quantitat fungible d’un saldo o d’una cel·la de graella explícita.

equilibri destruir únic dirigit

Disminueix la quantitat fungible per a un parell de classe/clau dins d’un contenidor. Suporta la crema de balances o la neteja d’una pila de graells en un ancoratge específic. Quan una pila arriba a zero, es pot eliminar, mantenint el substrat determinista.

Errors:

  • InvalidQuantity: La quantitat ha de ser superior a zero.
  • WrongContainerKind: Els contenidors de slots no poden contenir actius fungibles.
  • ContainerNotFound: El contenidor objectiu no existeix.
  • UnregisteredClass: La classe no està registrada en l’espai de noms.
  • InsufficientBalance: La quantitat sol·licitada supera el saldo disponible.
  • PositionEmpty: No stack exists at the requested grid anchor. PositionEmpty: No hi ha cap pila a l’ancoratge de graella sol·licitat. Example:
{
  "op": "RemoveFungible",
  "args": {
  "class_id": "class-100",
  "from": {
    "container_id": "container-1001",
    "kind": "balance"
  },
  "key": 1,
  "quantity": "100"
}
}

MoveFungible

Mou quantitat fungible entre saldos o cel·les de la graella.

moviment de balanç multi objectiu

Transfereix una quantitat fungible d’una ubicació a una altra. Suporta moviments de saldo<->saldo, saldo<->reix, i reix<->reix mentre aplica formes registrades per a les destinacions de reix i assegura que les quantitats d’origen siguin suficients.

Errors:

  • InvalidQuantity: La quantitat ha de ser superior a zero.
  • WrongContainerKind: Els contenidors de slots no poden participar en moviments fungibles.
  • ContainerNotFound: Un dels contenidors no existeix.
  • UnregisteredClass: La classe no està registrada en l’espai de noms.
  • InsufficientBalance: La ubicació d’origen no té la quantitat sol·licitada.
  • PositionEmpty: No hi ha cap pila a l’ancoratge de graella sol·licitat.
  • PositionOccupied: L’ancoratge de la graella de destinació es superposa a una col·locació existent.
  • UnregisteredClassShape: Grid destinations require a registered shape for the class and key. UnregisteredClassShape: Les destinacions de la quadrícula requereixen una forma registrada per a la classe i la clau. Exemple:
{
  "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"
  }
}
}

TransferFungible

Transfereix una quantitat fungible entre contenidors estructurats.

moviment de balanç multi objectiu

Mou una quantitat fungible d’un contenidor a un altre en una única transacció. Ambdós contenidors han d’existir, suportar saldos per al parell de classe/clau, i la font ha de contenir l’import sol·licitat. El registre de forma s’aplica quan es requereix la col·locació en graella.

Errors:

  • InvalidQuantity: La quantitat ha de ser superior a zero.
  • InvalidOperation: Les transferències d’identitat o l’overflow aritmètic són invàlids.
  • ContainerNotFound: Un dels contenidors no existeix.
  • WrongContainerKind: Els contenidors de slots no poden participar en transferències fungibles.
  • UnregisteredClass: La classe no està registrada en l’espai de noms.
  • InsufficientBalance: El contenidor d’origen no té la quantitat sol·licitada.
  • UnregisteredClassShape: Grid destinations require a registered shape for the class and key. UnregisteredClassShape: Les destinacions de la quadrícula requereixen una forma registrada per a la classe i la clau. Exemple:
{
  "op": "TransferFungible",
  "args": {
  "class_id": "class-100",
  "from_container": "container-1001",
  "key": 1,
  "quantity": "250",
  "to_container": "container-1002"
}
}

TransferMany

Transfereix múltiples quantitats fungibles entre contenidors en un sol lot.

balance move multi fanout

Executa un lot ordenat de transferències de contenidor a contenidor amb semàntica atòmica de tot o res. Cada entrada valida els tipus de contenidor, el registre de classes i els saldos suficients abans que es produeixin qualsevol mutació.

Errors:

  • InvalidQuantity: La quantitat ha de ser superior a zero.
  • InvalidOperation: Les transferències d’identitat o l’estructura de lot no vàlida han estat rebutjades.
  • ContainerNotFound: Un dels contenidors no existeix.
  • WrongContainerKind: Els contenidors de slots no poden participar en transferències fungibles.
  • UnregisteredClass: La classe no està registrada en l’espai de noms.
  • InsufficientBalance: El contenidor d’origen no té la quantitat sol·licitada.
  • UnregisteredClassShape: Grid destinations require a registered shape for the class and key. UnregisteredClassShape: Les destinacions de la quadrícula requereixen una forma registrada per a la classe i la clau. Exemple:
{
  "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"
    }
  ]
}
}

Distribueix

Distribueix una quantitat fungible d’una font a múltiples destinacions.

balance move multi fanout

Divideix una única quantitat font entre múltiples contenidors de destí en un únic lot atòmic. La font ha de contenir la quantitat total sol·licitada a través de totes les entrades de distribució.

Errors:

  • InvalidQuantity: Cada quantitat de distribució ha de ser superior a zero.
  • InvalidOperation: Els totals han d’ajustar-se dins dels límits de saldo per a la font.
  • ContainerNotFound: Un dels contenidors no existeix.
  • WrongContainerKind: Els contenidors de slots no poden participar en la distribució fungible.
  • UnregisteredClass: La classe no està registrada en l’espai de noms.
  • InsufficientBalance: El contenidor d’origen no té la quantitat total sol·licitada.
  • UnregisteredClassShape: Grid destinations require a registered shape for the class and key. UnregisteredClassShape: Les destinacions de la quadrícula requereixen una forma registrada per a la classe i la clau. Exemple:
{
  "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 una altra dins d’un contenidor.

balance consolidat multi objectiu

Combina la pila font a la pila de destinació dins del mateix contenidor de graella. Les piles han de compartir la classe i la identitat de clau. Les quantitats es sumen de manera determinista i la pila font es retira.

Errors:

  • InvalidOperation: Les auto-fusions, les fusiones entre contenidors o els desbordaments són rebutjats.
  • ContainerNotFound: El contenidor de la graella va desaparèixer abans que la fusió es completés.
  • WrongContainerKind: Només els contenidors de graella contenen entitats d’apilament.
  • StackNotFound: Una de les piles referenciades ja no existeix.
  • IncompatibleStacks: Stacks must share the same class and key to merge. IncompatibleStacks: Les piles han de compartir la mateixa classe i clau per fusionar-se. Exemple:
{
  "op": "MergeStacks",
  "args": {
  "dst_stack": "stack-5001",
  "src_stack": "stack-5002"
}
}

ConsolidarPiles

Consolida totes les piles fungibles coincidents dins d’un contenidor.

balance consolidat multi fanout

Troba cada pila en un contenidor que coincideix amb el parell de classe/clau i les col·lapsa en una sola pila. Normalitza els saldos fragmentats que s’han acumulat a través de múltiples operacions mentre preserva els totals.

Errors:

  • ContainerNotFound: El contenidor especificat no existeix.
  • WrongContainerKind: Només els contenidors de graella poden contenir piles per a la consolidació.
  • UnregisteredClass: La classe no està registrada en l’espai de noms.
  • InvalidOperation: No s’han trobat piles o la quantitat total ha desbordat u64.
  • StackNotFound: A stack disappeared during consolidation. StackNotFound: Una pila ha desaparegut durant la consolidació. Exemple:
{
  "op": "ConsolidateStacks",
  "args": {
  "class_id": "class-100",
  "container_id": "container-1001",
  "key": 1
}
}

MoveMany

Mou múltiples piles entre contenidors de la reixa en un sol lot.

balance move multi fanout

Executa un lot de moviments de pila a través de contenidors Grid. Cada entrada especifica un identificador de pila, un contenidor de destinació i una quantitat; els moviments parcials divideixen les piles mentre que els moviments complets les reubiquen.

Errors:

  • InvalidQuantity: La quantitat de moviment ha de ser superior a zero.
  • InvalidOperation: S’han rebutjat piles duplicades o destinacions no vàlides.
  • ContainerNotFound: Un dels contenidors no existeix.
  • WrongContainerKind: Les piles només poden moure’s entre contenidors de reixeta.
  • StackNotFound: Una de les piles referenciades ja no existeix.
  • InsufficientBalance: Una pila no té la quantitat sol·licitada per al moviment.
  • StackLimitExceeded: Destination container exceeds stack limits. StackLimitExceeded: El contenidor de destinació supera els límits de la pila. Example:
{
  "op": "MoveMany",
  "args": {
  "moves": [
    {
      "quantity": "3",
      "stack": "stack-5001",
      "to_container": "container-2001"
    },
    {
      "quantity": "5",
      "stack": "stack-5002",
      "to_container": "container-2002"
    }
  ]
}
}

Operacions d’Instància

AddInstance

Crea una nova instància i la col·loca en una ubicació objectiu.

instància crear única dirigida

Crea una instància única per a la classe/variant especificada i la col·loca en una ranura, ancoratge de graella o coordenada contínua. Valida el tipus de contenidor, les regles de forma/rotació i la col·lisió abans de la col·locació.

Errors:

  • ContainerNotFound: El contenidor objectiu no existeix.
  • UnregisteredClass: La classe no està registrada en l’espai de noms.
  • WrongContainerKind: Les col·locacions de reixeta requereixen contenidors de reixeta; les col·locacions de ranura requereixen contenidors de ranura; les col·locacions continuades requereixen contenidors continus.
  • SlotOutOfBounds: L’índex de slot excedeix la capacitat del contenidor.
  • SlotOccupied: El slot sol·licitat ja està ocupat.
  • PositionOccupied: L’ancoratge de la graella s’overposa a una ubicació existent.
  • PositionOutOfBounds: La col·locació excediria els límits de la graella.
  • ContinuousPlacementOutOfBounds: La col·locació contínua s’estén més enllà dels límits del contenidor.
  • UnregisteredClassShape: Grid placements require a registered shape for the class/key. UnregisteredClassShape: Les ubicacions de la graella requereixen una forma registrada per a la classe/clau. Exemple:
{
  "op": "AddInstance",
  "args": {
  "class_id": "class-200",
  "key": 1,
  "location": {
    "container_id": "container-500",
    "kind": "slot",
    "slot_index": 1
  }
}
}

MoveInstance

Mou una instància existent a una nova ubicació.

instància mou única dirigida

Recol·loca una instància anteriorment emesa en un slot, ancoratge de graella o coordenada contínua. Valida les regles de forma/rotació i impedeix la superposició en contenidors de graella i continus.

Errors:

  • InstanceNotFound: La instància no existeix.
  • WrongContainerKind: El tipus de contenidor de destinació no suporta el moviment sol·licitat.
  • SlotOutOfBounds: L’índex de slot excedeix la capacitat del contenidor.
  • SlotOccupied: El slot de destinació ja està ocupat.
  • PositionOccupied: L’ancoratge de la graella de destinació es superposa a una col·locació existent.
  • PositionOutOfBounds: L’ancoratge de la graella de destinació supera els límits.
  • ContinuousPlacementOutOfBounds: La col·locació contínua s’estén més enllà dels límits del contenidor.
  • UnregisteredClassShape: Les destinacions de la graella requereixen una forma registrada per a la classe/clau de la instància.
  • ContinuousPlacementOverlap: Continuous destination overlaps an existing placement. ContinuousPlacementOverlap: La destinació contínua solapa una col·locació existent. Example:
{
  "op": "MoveInstance",
  "args": {
  "instance": "instance-9001",
  "to": {
    "container_id": "container-2001",
    "kind": "grid_cell",
    "position": 5,
    "rotation": "none"
  }
}
}

RemoveInstance

Crema una instància del món.

instància destruir única dirigida

Elimina una instància independentment de la seva ubicació actual. L’instància no pot tenir fills adjunts. Les referències de la graella o del slot es netegen com a part de la crema.

Errors:

  • InstanceNotFound: L’ID de la instància de destinació no existeix.
  • HasChildren: Children must be detached before burning the instance. HasChildren: Els fills han d’estar desconnectats abans de cremar la instància. Exemple:
{
  "op": "RemoveInstance",
  "args": {
  "instance": "instance-9001"
}
}

BurnInstance

Elimina una instància única de manera permanent del substrat.

instància destruir única dirigida

Elimina permanentment una instància única. L’instància no ha d’estar adjunta a altres instàncies ni col·locada en una ranura. L’identificador mai no es reutilitza un cop cremat.

Errors:

  • InstanceNotFound: L’ID de la instància de destinació no existeix.
  • HasChildren: Children must be detached before burning the instance. HasChildren: Els fills han d’estar desconnectats abans de cremar la instància. Exemple:
{
  "op": "BurnInstance",
  "args": {
  "instance_id": "instance-9001"
}
}

Adjuntar

Adjunta una instància fill a un pare per a un moviment vinculat.

enllaç d’instància multi objectiu

Crea una relació de pare-fill entre dues instàncies perquè es moguin juntes. El fill només pot tenir un pare, i els cicles es rebutgen per mantenir el gràfic d’instàncies acíclic.

Errors:

  • InvalidOperation: El fill i el pare han de ser diferents i els cicles són rebutjats.
  • InstanceNotFound: La instància fill o pare no existeix.
  • AlreadyAttached: El nen ja té un pare.
  • WouldCreateCycle: Attachment would create a cycle in the hierarchy. WouldCreateCycle: L’adjunt crearia un cicle en la jerarquia. Example:
{
  "op": "Attach",
  "args": {
  "child_instance": "instance-9002",
  "parent_instance": "instance-9001"
}
}

Desconnectar

Desconnecta una instància fill de la seva instància pare.

enllaç d’instància únic dirigit

Elimina la relació de parentiu perquè el fill esdevingui independent mentre roman en el substrat de memòria. El fill conserva la seva ID i pot ser reassignat en un altre lloc.

Errors:

  • InstanceNotFound: La instància especificada no existeix.
  • NotAttached: The instance has no parent to detach from. NotAttached: La instància no té cap pare del qual desconnectar-se. Example:
{
  "op": "Detach",
  "args": {
  "child_instance": "instance-9002"
}
}

Operacions de màquines escurabutxaques

PlaceInSlot

Posiciona una instància en una posició adreçable dins d’un contenidor.

moviment de slot individual dirigit

Col·loca una instància única en un espai específic dins d’un contenidor que admet dissenys d’espai. L’espai ha d’estar buit i el tipus de contenidor ha de permetre la col·locació d’espais, preservant una posició determinista.

Errors:

  • ContainerNotFound: El contenidor de destinació no existeix.
  • WrongContainerKind: Només els contenidors Slots suporten la col·locació de slots.
  • SlotOutOfBounds: L’índex de slot excedeix la capacitat del contenidor.
  • InstanceNotFound: La instància que s’està col·locant no existeix.
  • SlotOccupied: The requested slot is already occupied. SlotOccupied: El slot sol·licitat ja està ocupat. Example:
{
  "op": "PlaceInSlot",
  "args": {
  "container_id": "container-1001",
  "instance_id": "instance-9001",
  "slot_index": 1
}
}

RemoveFromSlot

Elimina una instància d’una ranura de contenidor.

moviment de slot individual dirigit

Esborra una slot i deixa la instància sense col·locar. L’instància roman en el substrat de memòria però ja no ocupa aquest vincle posicional, permetent el reubicament.

Errors:

  • ContainerNotFound: El contenidor no existeix.
  • WrongContainerKind: Només els contenidors de Slots suporten la eliminació de slots.
  • SlotOutOfBounds: L’índex de slot excedeix la capacitat del contenidor.
  • SlotEmpty: The slot does not contain an instance to remove. SlotEmpty: El slot no conté una instància per eliminar. Example:
{
  "op": "RemoveFromSlot",
  "args": {
  "container_id": "container-1001",
  "slot_index": 1
}
}

SwapSlots

Intercanvia el contingut de dues ranures ocupades de manera atòmica.

moviment de ranura multi objectiu

Intercanvia atòmicament el contingut de dues ranures, que poden residir en el mateix o en diferents contenidors. Ambdues ranures han d’existir i estar ocupades. L’intercanvi preserva invariants posicionals a través dels contenidors.

Errors:

  • InvalidOperation: No es pot intercanviar una ranura amb ella mateixa al mateix contenidor.
  • ContainerNotFound: Un dels contenidors no existeix.
  • WrongContainerKind: Ambdós contenidors han de ser de tipus Slots.
  • SlotOutOfBounds: Un dels índexs de la ranura supera la capacitat del contenidor.
  • SlotEmpty: A slot is empty and cannot be swapped. SlotEmpty: Un slot està buit i no es pot intercanviar. Exemple:
{
  "op": "SwapSlots",
  "args": {
  "container_a": "container-1001",
  "container_b": "container-1001",
  "slot_a": 1,
  "slot_b": 5
}
}

Operacions d’Esquema

RegisterClass

Registra una definició de classe perquè les operacions futures la puguin referenciar.

esquema crear únic dirigit

Registra un ID extern de classe i un nom perquè les transaccions puguin fer referència a la classe i aplicar les seves regles de validació. Els IDs externs són de l’espai de noms i immutables un cop registrats; els IDs interns són assignats automàticament i mai no s’exposen.

Errors:

  • ClassAlreadyExists: L’identificador de classe proporcionat (class_id) ja està en ús.
  • ClassCapacityExceeded: The global class registry has reached its configured limit. ClassCapacityExceeded: El registre global de classes ha arribat al seu límit configurat. Example:
{
  "op": "RegisterClass",
  "args": {
  "request": {
    "class_id": "class-100",
    "flags": 2,
    "name": "ExampleClass"
  }
}
}

RegisterClassShape

Registra una empremta de forma de graella per a una classe o variant de classe.

esquema crear únic dirigit

Defineix la forma d’amplada/alçada per a un class_id (identificador extern) i un stack_key opcional perquè les ubicacions de la graella puguin validar l’ocupació i la rotació. Les formes són necessàries abans de col·locar instàncies o piles dins dels contenidors de la graella per a aquella classe. Tornar a registrar una forma idèntica es tracta com una no-op.

Errors:

  • ClassNotFound: La classe referenciada class_id (identificador extern) no s’ha registrat.
  • ShapeAlreadyDefined: The shape_id already exists for the class. ShapeAlreadyDefined: El shape_id ja existeix per a la classe. Example:
{
  "op": "RegisterClassShape",
  "args": {
  "request": {
    "class_id": "class-200",
    "shape": {
      "height": 3,
      "width": 2
    }
  }
}
}

RegisterClassContinuousShape2d

Registra un rectangle 2D continu per a una classe o variant de classe.

esquema crear únic dirigit

Defineix el rectangle de punt fixe per a un class_id (identificador extern) i un stack_key opcional perquè les col·locacions 2D continuades puguin validar les col·lisions i les rotacions. Requerit abans de col·locar en contenidors continuous_grid_2d per a aquesta classe. Tornar a registrar un rectangle idèntic es tracta com una operació sense efecte.

Errors:

  • ClassNotFound: La classe referenciada class_id (identificador extern) no s’ha registrat.
  • ContinuousShapeAlreadyDefined: The continuous shape is already registered for the class/key. ContinuousShapeAlreadyDefined: La forma contínua ja està registrada per a la classe/clau. Exemple:
{
  "op": "RegisterClassContinuousShape2d",
  "args": {
  "request": {
    "class_id": "class-200",
    "rect": {
      "height": 8,
      "width": 10
    }
  }
}
}

RegisterClassContinuousShape1d

Registra un interval 1D continu per a una classe o variant de classe.

esquema crear únic dirigit

Defineix la longitud de l’interval de punt fix per a un class_id (identificador extern) i un stack_key opcional perquè les col·locacions contínues 1D puguin validar les col·lisions. Requerit abans de col·locar en contenidors continuous_line_1d per a aquesta classe. Tornar a registrar un interval idèntic es considera una operació sense efecte.

Errors:

  • ClassNotFound: La classe referenciada class_id (identificador extern) no s’ha registrat.
  • ContinuousShapeAlreadyDefined: The continuous shape is already registered for the class/key. ContinuousShapeAlreadyDefined: La forma contínua ja està registrada per a la classe/clau. Exemple:
{
  "op": "RegisterClassContinuousShape1d",
  "args": {
  "request": {
    "class_id": "class-200",
    "span": {
      "length": 10
    }
  }
}
}


Receptes

Moure l’Equilibri Fungible Entre Contenidors

Moure una quantitat fungible d’un contenidor a un altre en una única operació semàntica.

Operacions:

  • MoveFungible

Exemple:

{
  "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"
        }
      }
    }
  ]
}

Moure la instància entre slots

Elimina una instància d’una ranura i col·loca-la en una altra ranura adreçable dins del mateix contenidor mentre mantens la transacció atòmica.

Operacions:

  • RemoveFromSlot
  • PlaceInSlot

Exemple:

{
  "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 classe amb Shape

Registreu una nova classe d’actius i declareu immediatament una forma de graella perquè les regles de col·locació estiguin disponibles per a contenidors estructurats.

Operacions:

  • RegisterClass
  • RegisterClassShape

Exemple:

{
  "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
          }
        }
      }
    }
  ]
}

Referència ràpida

OperacióDominiAccióResum
CreateContainercontenidorcrearCrea un contenidor (regió de memòria estructurada) amb el tipus sol·licitat
RemoveContainercontenidordestruirElimina un contenidor després de drenar el seu contingut
AddFungiblesaldocrearAfegeix una quantitat fungible a un saldo o a una cel·la de graella explícita
RemoveFungiblesaldodestruirElimina una quantitat fungible d’un saldo o d’una cel·la de graella explícita
MoveFungiblesaldomoureMou una quantitat fungible entre saldos o cel·les de graella
TransferFungiblesaldomoureTransfereix una quantitat fungible entre contenidors estructurats
TransferManysaldomoureTransfereix múltiples quantitats fungibles entre contenidors en un sol lot
DistributesaldomoureDistribueix una quantitat fungible d’una font a múltiples destinacions
MergeStackssaldoconsolidarFusiona una pila fungible en una altra dins d’un contenidor
ConsolidateStackssaldoconsolidarConsolida totes les piles fungibles coincidents dins d’un contenidor
MoveManysaldomoureMou múltiples piles entre contenidors de graella en un sol lot
AddInstanceinstànciacrearCrea una nova instància i la col·loca en una ubicació objectiu
MoveInstanceinstànciamoureMou una instància existent a una nova ubicació
RemoveInstanceinstànciadestruirElimina una instància del món
BurnInstanceinstànciadestruirElimina una instància única de manera permanent del substrat
AttachinstànciaenllaçarAdjunta una instància fill a un pare per a un moviment enllaçat
DetachinstànciaenllaçarDesadjunta una instància fill de la seva instància pare
PlaceInSlotslotmourePosiciona una instància en un slot adreçable dins d’un contenidor
RemoveFromSlotslotmoureElimina una instància d’un slot de contenidor
SwapSlotsslotmoureIntercanvia el contingut de dos slots ocupats de manera atòmica
RegisterClassesquemacrearRegistra una definició de classe perquè les operacions futures la puguin referenciar
RegisterClassShapeesquemacrearRegistra una empremta de forma de graella per a una classe o variant de classe
RegisterClassContinuousShape2desquemacrearRegistra un rectangle continu 2D per a una classe o variant de classe
RegisterClassContinuousShape1desquemacrearRegistra un interval continu 1D per a una classe o variant de classe

Aquest document es va generar automàticament a partir del manifest d’operació d’AssetCore.