Как расширить состояние пакета Aptos с сохранением формата ресурса
Совместимое обновление пакета должно сохранять формат существующих ресурсов. Добавление отображаемого поля прямо в развёрнутую структуру может нарушить проверку совместимости.
Сохраните прежний ресурс и добавьте сопутствующий тип
Пусть Position с полем units уже опубликован. Оставьте поля неизменными и определите отдельный ресурс PositionLabel. Опубликуйте его по нужному адресу через уполномоченный signer. Существующие Position сохранят исходный формат.
struct Position has key { units: u64 }
struct PositionLabel has key { label: vector<u8> }
Учтите держателей без новых данных
У прежнего держателя может быть Position без PositionLabel. Проверяйте наличие метки и возвращайте предусмотренное значение по умолчанию. Перед релизом прочитайте запись пакета в code::PackageRegistry и проверьте политику обновления. Неизменяемый пакет не допускает такого дополнения путём обновления существующего пакета.