Как принять SignerCapability ресурсного аккаунта Aptos

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

Передайте signer ресурсного аккаунта и адрес создателя

Вызовите получение в инициализаторе, рассчитанном на эту схему развёртывания. Signer принадлежит новому ресурсному аккаунту. Второй аргумент обозначает исходный аккаунт с Container, который хранит полномочия. Определите Control в своём модуле для их хранения.

let cap = aptos_framework::resource_account::retrieve_resource_account_cap(
    resource_account_signer, source_address
);
move_to(resource_account_signer, Control { cap });

Проверьте полномочия до открытия рабочих операций

Получение удаляет запись и устанавливает нулевой ключ аутентификации ресурсного аккаунта. Повторный вызов с тем же источником не создаст полномочия заново. Протестируйте закрытую операцию, которая получает signer из сохранённого объекта, и сверьте адрес. Выдача signer или полномочий произвольному вызывающему передаст ему власть над аккаунтом.

Источники