Sui.

Допис

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

article banner.
Meaning.Sui.
Jul 08, 2025
Стаття

📦 Поглиблений аналіз модуля `sui: :package`: Публікація та оновлення пакетів у Move

У стрімкій еволюції технології блокчейнуМова програмування Moveвиділяється своєюбезпекою,гнучкостьтааудиторность. Однією з основних його сильних сторін є** вдосконалене управління пакетами смарт-контрактів**.

Ця стаття глибоко занурюється в sui::packageмодуль - двигун, який стоїть за публікацією, модернізацією та обслуговуванням пакетів Move на блокчейні Sui.


🔍 Огляд модуля

sui::packageє наріжним каменем в екосистемі Move. Він надає розробникам надійні інструменти та інтерфейси для управління пакетамибезпечно та ефективно.

📦 Декларація та імпорт

module sui::package;

use std::ascii::String;
use std::type_name;
use sui::types;

Це визначає модуль і містить основні стандартні бібліотеки Move та вбудовані модулі SUI для складної логіки.


🧩 Основні структури та загальнодоступні інтерфейси

1. Publisher

Обробляєідентифікатор видавцяпакунка.

Ключові функції:

  • claim
  • claim_and_keep
  • burn_publisher

2. UpgradeCap

Керує можливістю оновлення**пакета.

Ключові поля:

  • package_id
  • version
  • policy(політика оновлення)

Ключові функції:

  • upgrade_package
  • restrict

3. UpgradeTicket

Надає дозвіл наконкретне оновлення.

Ключові функції:

  • ticket_package
  • ticket_policy
  • ticket_digest

4. UpgradeReceipt

Видається після успішного оновлення.

Ключові функції:

  • receipt_cap
  • receipt_package

🚨 Константи помилок

Допомагає розробникам налагодити чіткість.

-ENotOneTimeWitness: Одноразовий свідок є недійсним -ETooPermissive: Політика оновлення занадто поблажлива -EInvalidPackage: Наданий пакет недійсний


🔒 Константи стратегії оновлення

Контролює, як можуть розвиватися пакети:

-COMPATIBLE: Зворотно-сумісні оновлення -ADDITIVE: Додати нові функції, але не змінювати/видаляти існуючі -DEP_ONLY: Дозволені лише зміни залежності

Ці константи забезпечуютьбезпечні та контрольовані оновлення.


🧱 Визначення структури

Publisher

-адреса пакету: Унікально ідентифікує видавця -назва модуля: простір імен модуля видавця


UpgradeCap

-ідентифікатор пакету: Цільовий пакет -версія: Поточна версія -політика: застосовується політика оновлення


UpgradeTicket

-upgrade_cap_id: Посилання на контрольний UpgradeCap -ідентифікатор пакету: Цільовий пакет -політика: використовується політика оновлення -digest: підсумок байтового коду (вектор байтів)


UpgradeReceipt

-upgrade_cap_id: ідентичність контролера -ідентифікатор пакету: Оновлений пакет


🧠 Визначення основних функцій

claim

fun claim(otw: &OneTimeWitness) -> Publisher;

Претендує на ідентичність видавця за допомогою одноразового свідка (OTW). Забезпечує унікальність і довіру.


claim_and_keep

fun claim_and_keep(otw: &OneTimeWitness) -> Publisher;

Подібно доclaim, але надсилає об'єкт Publisher до облікового запису абонента.


burn_publisher

fun burn_publisher(publisher: &mut Publisher);

Знищує ідентифікацію видавця та всі пов'язані привілеї.


authorize_upgrade

fun authorize_upgrade(cap: &UpgradeCap, package_id: &PackageID, policy: u8, digest: &vector<u8>) -> UpgradeTicket {
    assert!(cap.package_id == *package_id, EInvalidPackage);
    assert!(cap.policy <= policy, ETooPermissive);
    UpgradeTicket {
        upgrade_cap_id: cap.id(),
        package_id: *package_id,
        policy: policy,
        digest: digest.clone()
    }
}

Перевіряє:

  • UpgradeCapЦе відповідає package_id
  • Політикане більш допустим, ніж дозволено Потім повертає підписанийUpgradeTicket.

upgrade_package

fun upgrade_package(ticket: &UpgradeTicket, data: &vector<u8>) -> UpgradeReceipt {
    // Upgrade logic
}
  • Перевіряє UpgradeTicket data- Замінює поточний код пакета новим байтовим кодом ()
  • Повертає UpgradeReceiptяк доказ успішного оновлення

restrict

fun restrict(cap: &mut UpgradeCap, policy: u8) {
    assert!(cap.policy < policy, ETooPermissive);
    cap.policy = policy;
}

Використовується для того, щобпосилити дозволи на оновлення. Не вдається знизити добільш допустимої політики.


🛡️ Функції безпеки та аудиту

sui::packageрозроблений з урахуваннямбезпеки та аудиторності:

-Одноразовий свідок (OTW): запобігає видаванню себе в публікаціях -Константи політики оновлення: запобігання несанкціонованому або зламаному оновленню -Твердження: Вбудовані охоронці для запобігання неправильному використанню або несподіваної логіці


🧪 Підтримка тестування та моделювання

Модуль включаєфункції лише для тестування, які захищені для середовищ розробки/тестування:

-TestOnly: Позначає логіку лише для тестування -publish: Імітує публікацію в тестах -upgrade: Імітує оновлення в тестах


✅ Резюме

sui::packageМодуль надає розробникам Move потужну, структуровану та безпечну**систему для:

  • Публікуйте пакети
  • Авторизація та виконання оновлень
  • Керуйте можливостями оновлення та політикою

Це гарантуєдовіру, гнучкістьтаремонтоспроможністьу розробці смарт-контрактів на Sui.

Завдяки таким модулямsui::package, мова Move продовжує демонструвати свою силу вмодульному дизайні,архітектурі, що насамперед безпека, таергономіці розробника, відкриваючи шлях для масштабованих, безпечних систем Web3.

  • Sui
  • Architecture
1
Поділитися
Коментарі
.