Move.

Допис

Діліться своїми знаннями.

Jeff .
Aug 15, 2025
Обговорення

Захист на майбутнє Переміщайте модулі без порушення сумісності

_Оскільки модулі Move не змінюються після публікації, планування оновлень є важливою частиною розробки. Я бачив шаблони, де розробники зберігають «головний об'єкт», який вказує на поточну логічну версію, але мені цікаво, які стратегії найкраще працюють на практиці. _

  • Move CLI
  • Move
  • Move Module
  • Move Script
0
1
Поділитися
Коментарі
.

Відповіді

1
Genius4ever.
Aug 15 2025, 17:44

Щоб захистити свої модулі Move на Sui, не порушуючи сумісності, вам потрібно ретельно планувати оновлення, оскільки опубліковані модулі незмінні, але система оновлення пакетів Sui дозволяє запускати нові версії, які підтримують сумісність під час додавання або налаштування функціональності. Однією з найкращих стратегій є використання шаблону «головний об'єкт», де центральний об'єкт (наприклад, об'єкт Version або Config) зберігає поточну версію логіки та покажчики на активні модулі, що дозволяє перенаправляти виклики на оновлену логіку без зміни існуючих інтерфейсів. Ви можете визначити цей об'єкт у початковому модулі за допомогою поля версії та функції оновлення, як-от public fun update_version (config: &mut Config, new_package: address), гарантуючи, що його можна викликати лише уповноваженими сторонами (наприклад, за допомогою UpgradeCap). Це забезпечує стабільність публічного API вашого додатка, тому користувачі чи інші контракти не порушуються, коли ви публікуєте новий пакет з оновленою логікою. Інший підхід полягає у розробці модулів з модульними, адитивними змінами — зберігайте підписи публічних функцій та структури даних незмінними в нових версіях, додаючи лише нові функції або поля, а також використовуйте перевірки сумісності (sui upgrade --verify-compatibility) для виявлення проблем перед розгортанням. Для спільних об'єктів включіть теги версій та логіку міграції, щоб безперебійно обробляти оновлення даних, наприклад, перенесення залишків на нові структури. На практиці шаблон головного об'єкта сяє для складних програм, таких як протоколи DeFi, як це видно в таких проектах, як Cetus, де він спрощує логічні заміни, не порушуючи користувачів. Будьте обережні щодо ризиків безпеки — обмежте дозволи на оновлення жорстко, в ідеалі за допомогою мультиsig або DAO, щоб запобігти шкідливим змінам, і протестуйте оновлення в тест-мережі Sui, щоб імітувати вплив у реальному світі. Уникайте надмірного покладення на спільні об'єкти, оскільки вони можуть ускладнити міграцію через вимоги консенсусу.

0
Коментарі
.

Ви знаєте відповідь?

Будь ласка, увійдіть та поділіться нею.

Move is an executable bytecode language used to implement custom transactions and smart contracts.

152Пости259Відповіді
Sui.X.Peera.

Зароби свою частку з 1000 Sui

Заробляй бали репутації та отримуй винагороди за допомогу в розвитку спільноти Sui.

Кампанія винагородСерпень