Запустите токен лояльности / замкнутого цикла

Sui CLT с передачами, управляемыми списком разрешений + пауза. Держатели перемещают баллы только между предварительно одобренными вами адресами.

Баллы лояльности и кредиты в приложении работают лучше всего, когда остаются в контролируемой вами экосистеме. Эта предустановка развертывает токен Sui Closed-Loop, где развертывающий ведет список разрешений одобренных адресов получателя (торговцы, партнеры, кошельки операторов). Токены, отчеканенные для пользователей, могут течь только в этот список разрешений — нет пути спасения через произвольные кошельки, нет обмена на универсальный Coin, нет листинга DEX по умолчанию.

Что входит

Почему этот стек

Токен Closed-Loop `sui::token` Sui — единственный основной примитив Move, который контролирует передачи на уровне системы типов — держатели получают `Token<T>` (нет возможности `store`, нет `public_transfer`), и каждая передача производит ActionRequest, который должен быть одобрен в отношении развернутого TokenPolicy. Правило списка разрешений — это конфигурация `VecSet<address>`, которую развертывающий управляет через две функции администратора, контролируемые TokenPolicyCap (add_to_allowlist, remove_from_allowlist). Пауза охватывает случай, когда сам замкнутый цикл требует экстренной остановки.

Могу ли я вместо этого сделать токены держателей постоянно soulbound?

Да — удалите политику замкнутого цикла из пакета и включите non-transferable. Это регистрирует пустой TokenPolicy: каждый ActionRequest передачи прерывается на confirm_request. Предустановка non-transferable + Identity-SBT на Sui охватывает этот случай.

Как я добавляю адреса в список разрешений после развертывания?

Развернутый модуль Move раскрывает `add_to_allowlist(policy, cap, addr, ctx)` и `remove_from_allowlist`. Вызовите их со страницы управления или из любого кошелька, в котором находится TokenPolicyCap — то же самое, которое развернуло токен по умолчанию.

Что происходит с токенами, отправленными на неодобренные адреса?

Вызов `token::transfer` возвращает ActionRequest; `verify_allowlist_transfer` утверждает, что получатель находится в списке, иначе транзакция прерывается. Токены никогда не покидают адрес отправителя — нет неудачного и застойного баланса для очистки.