Как добавить новый ресурс в уже существующий объект Aptos

Для публикации ресурса по адресу объекта нужен signer с этим адресом. Сохранённый при создании ExtendRef позволяет получить его под контролем модуля.

Сохраните ExtendRef при создании

При создании объекта получите ExtendRef из ConstructorRef и поместите его в закрытый управляющий ресурс модуля. В примере позже добавляется Calibration. Signer самого пользователя разместил бы ресурс на адресе пользователя.

let object_signer = object::generate_signer_for_extending(&control.extension);
move_to(&object_signer, Calibration { revision: 2 });

Проверьте отсутствие ресурса и полномочия

Повторный move_to для того же типа Calibration по этому адресу завершится ошибкой. Для перехода с ревизии 2 на 3 изменяйте существующий ресурс через определяющий его модуль. Ограничьте публичные операции с сохранённым ExtendRef: одного дескриптора Object недостаточно для произвольного создания signer.

Источники