Sui.

Publicación

Comparte tu conocimiento.

article banner.
harry phan.
Apr 12, 2025
Artículo

✏️ Objetos entre padres e hijos en Sui Move

En Sui Move, los objetos pueden poseer otros objetos al igual que las cuentas poseen objetos. Esto abre nuevos patrones de diseño (y algunos errores) para los desarrolladores. En esta guía, desglosaré los conceptos de objetos entre padres e hijos en Sui Move en cuatro partes: 1.Introducción a los conceptos entre padres e hijos en Sui Move 2.Mecánica de recepción y control de acceso a objetos 3.Gestión infantil entre módulos con public_receive 4.Lógica vinculante y patrón de recibo de devuelta

Al final, sabrás cómo anidar objetos, recuperar objetos secundarios mediante transfer: :receive, gestionar objetos secundarios en distintos módulos con public_receive e incluso crear objetos enlazados con el alma que devuelven a su propietario un bumerán.

Introducción a los conceptos entre padres e hijos en Sui Move

###** ¿Qué son los objetos para padres e hijos?**

En Sui, cada objeto tiene una identificación única y un propietario. Normalmenteel propietario es una dirección(como la cuenta de un usuario), pero el propietario también puede ser otro objeto.

Si el objeto A es propietario del objeto B, llamamos a A el padre y a B el hijo. El hijo es propiedad del objeto y no de la dirección.

Transferencia a objetos: en realidad, Sui no distingue entre una dirección y un ID de objeto; ambos son solo identificadores de 32 bytes, lo que significa que puedes transferir un objeto al ID de otro objeto de la misma manera que lo harías con la dirección de un usuario. Cuando haces esto, estás anidando un objeto dentro de un objeto principal. El tiempo de ejecución de Sui establece el campo de propietario del niño en el ID del padre (en lugar de una dirección)

Entonces, ¿por qué es genial?

Porque el niño conserva su propia identificación única y existe de forma independiente en el almacenamiento, pero ahora está vinculado al padre. Es como regalarle a tu amigo un objeto de colección único para que lo guarde en su casillero: el objeto de colección conserva su identidad y se puede rastrear, pero el casillero de tu amigo ahora aparece como propietario.

Es importante distinguir entreObjetos únicos y objetos anidados y objetos secundarios:

-Objeto único (propiedad de la dirección) :Un objeto normal que pertenece a una dirección (por ejemplo, la cuenta de un usuario). Este es el caso predeterminado: piense en los NFT, las monedas, etc., que se encuentran directamente en la billetera del usuario. Cada uno tiene un identificador único y es de alto nivel de almacenamiento. -Objeto anidado (envuelto): Objeto que se almacena dentro de los datos de otro objeto (por ejemplo, como un campo de una estructura). En este caso, el objeto interno está envolvido ynoes una entidad de nivel superior independiente. No aparece por su ID en el almacenamiento global porque forma parte del contenido en bytes de la entidad principal. En Sui, si colocas un objeto como un campo en otro sin ningún tratamiento especial, queda envuelto. -**Objeto secundario (propiedad del objeto) :**Un objeto que pertenece a otro objeto pero que no está incluido directamente en sus campos. El objeto secundario sigue siendo un objeto de nivel superior independiente almacenado (con su propio identificador y datos), y el identificador del padre se registra como propietario en los metadatos del hijo. Esto significa que puedes consultar o acceder al niño por su ID (con los permisos correctos). No está incrustado físicamente en el contenido de los padres, sino que es de propiedad lógica. Usando nuestra analogía, es como si le hubieras regalado a un amigo tu objeto coleccionable para que lo guardara. Sigue etiquetándolo individualmente y se puede rastrear, solo que lo guarda en su casillero.

La ventaja de convertir a un niño en un objeto (por transferencia) en lugar de envolverlo es que el carné de identidad del niño permanece accesible desde el exterior. Por ejemplo, los exploradores o los monederos pueden mostrar un objeto secundario por identificador, mientras que un objeto envuelto es invisible fuera de su objeto principal.

Los objetos infantiles también mantienen su identidad estable incluso cuando se mueven de un propietario a otro o se anidan en casas de padres distintos. Esto es ideal para cosas como el inventario en cadena o los patrones de «cartera dentro de otra billetera», en los que quieres que un objeto contenedor contenga muchos objetos a los que otros puedan seguir consultando de forma individual

Propiedad y acceso: si un objeto es propiedad de otro objeto, normalmente solo el propietario del objeto principal puede acceder al objeto secundario o usarlo. Se trata de una forma de autorización dinámica. Por ejemplo, si Alicia es propietaria de un objeto principal P y P es propietaria del objeto secundario C, solo Alicia (o las transacciones que ella firme) pueden manipular C. Sui impone esta regla para que ser propietario de un padre sea como tener las llaves de todos sus hijos 🔑.

Tal vez sepas:

La función de transferencia a objeto de Sui básicamente nos otorga una propiedad de objetos similar a la de un árbol*. Un padre puede tener muchos hijos (y esos hijos pueden tener sus propios hijos, formando una jerarquía). Esto se logra tratando los ID de objetos como direcciones para las transferencias. Tenemos:

-Objetos propiedad de la dirección(objetos únicos normales), -Objetos propiedad de objetos(objetos secundarios, que siguen siendo de nivel superior pero están vinculados a un objeto principal), -Objetos envolvidos(anidados dentro de los datos de otro objeto, no de nivel superior).

En los próximos artículos, veremos cómo recuperar objetos secundarios o interactuar con ellos (ya que no se puede acceder a ellos directamente como los que pertenecen a una dirección) y cómo hacer cumplir las reglas que los rigen.

  • Sui
  • Move
3
Cuota
Comentarios
.
Usamos cookies para asegurarnos de que obtenga la mejor experiencia en nuestro sitio web.
Más información