Publicación
Comparte tu conocimiento.
Módulos Move preparados para el futuro sin romper la compatibilidad
_Dado que los módulos de Move son inmutables después de su publicación, la planificación de las actualizaciones es una parte fundamental del desarrollo. He visto patrones en los que los desarrolladores mantienen un «objeto maestro» que apunta a la versión lógica actual, pero me pregunto qué estrategias funcionan mejor en la práctica. _
- Move CLI
- Move
- Move Module
- Move Script
Respuestas
1Para preparar tus módulos de Move en Sui para el futuro sin romper la compatibilidad, debes planificar las actualizaciones con cuidado, ya que los módulos publicados son inmutables, pero el sistema de actualización de paquetes de Sui te permite lanzar nuevas versiones que mantienen la compatibilidad y, al mismo tiempo, añaden o modifican la funcionalidad. Una de las mejores estrategias es utilizar un patrón de «objeto maestro», en el que un objeto central (como un objeto Version o Config) almacena la versión lógica actual y apunta a los módulos activos, lo que permite redirigir las llamadas a la lógica actualizada sin cambiar las interfaces existentes. Puedes definir este objeto en tu módulo inicial con un campo de versión y una función de actualización, como public fun update_version (config: &mut Config, new_package: address), asegurándote de que solo puedan llamarlo las partes autorizadas (por ejemplo, mediante un UpgradeCap). Esto mantiene estable la API pública de tu aplicación, de modo que los contratos de los usuarios y de otro tipo no se rompan cuando publicas un paquete nuevo con una lógica actualizada. Otro enfoque consiste en diseñar los módulos con cambios modulares y aditivos: no modifique las estructuras de datos y las firmas de las funciones públicas en las nuevas versiones, solo añada funciones o campos nuevos, y utilice comprobaciones de compatibilidad (sui upgrade --verify-compatibility) para detectar los problemas antes de la implementación. En el caso de los objetos compartidos, incluye etiquetas de versión y lógica de migración para gestionar las actualizaciones de datos sin problemas, por ejemplo, para transferir saldos a estructuras nuevas. En la práctica, el patrón de objetos maestros destaca en aplicaciones complejas como los protocolos DeFi, como ocurre en proyectos como Cetus, donde simplifica los cambios lógicos sin molestar a los usuarios. Tenga cuidado con los riesgos de seguridad: restrinja estrictamente los permisos de actualización, idealmente con una firma múltiple o una DAO, para evitar cambios malintencionados, y pruebe las actualizaciones en la red de pruebas de Sui para simular los impactos en el mundo real. Evite confiar demasiado en los objetos compartidos, ya que pueden complicar las migraciones debido a los requisitos de consenso.
Sabes la respuesta?
Inicie sesión y compártalo.
Move is an executable bytecode language used to implement custom transactions and smart contracts.
Gana tu parte de 1000 Sui
Gana puntos de reputación y obtén recompensas por ayudar a crecer a la comunidad de Sui.
