Как проверить UpgradeCap перед выпуском пакета Sui

Сборка из правильного репозитория может всё же ссылаться на устаревший пакет или требовать изменения за пределами политики обновлений. Проверьте полномочия, которыми выполняется релиз.

Прочитайте пакет, версию и политику

В функции Move с неизменяемой ссылкой cap прочитайте все три значения до авторизации обновления. Сохраните ID объекта полномочий отдельно от ID пакета. При последовательных релизах framework обновляет ссылку на последний пакет в этих полномочиях.

let current_id = sui::package::upgrade_package(cap);
let current_version = sui::package::version(cap);
let allowed = sui::package::upgrade_policy(cap);

Проверьте работу с тикетом и квитанцией

Транзакция авторизует тикет для нужной политики и digest байткода, обновляет пакет и возвращает квитанцию полномочиям через commit. Внутри этой последовательности поле ID пакета может временно быть нулевым. Обновляйте реестр развёртываний по завершённой транзакции и итоговому состоянию полномочий.

Источники