Lançar um token de fidelidade/loop fechado

Sui CLT com transferências controladas por lista de permissão + pausa. Os detentores movem pontos apenas entre endereços que você pré-aprovou.

Pontos de fidelidade e créditos no aplicativo funcionam melhor quando permanecem no ecossistema que você controla. Esta predefinição implanta um Token Sui Closed-Loop onde o implementador mantém uma lista de permissão de endereços de receptores aprovados (comerciantes, parceiros, carteiras de operadores). Tokens cunhados para usuários podem fluir apenas para essa lista de permissão — não há rota de fuga através de carteiras arbitrárias, não há troca para uma Moeda genérica, não há listagem de DEX por padrão.

O que está incluído

Por que esta pilha

O Token Closed-Loop `sui::token` do Sui é o único primitivo Move convencional que controla as transferências no nível do sistema de tipos — os detentores recebem `Token<T>` (sem capacidade `store`, sem `public_transfer`) e cada transferência produz um ActionRequest que deve ser aprovado contra o TokenPolicy implantado. A regra de lista de permissão é uma configuração `VecSet<address>` que o implementador gerencia através de duas funções de administrador controladas por TokenPolicyCap (add_to_allowlist, remove_from_allowlist). Pausa cobre o caso onde o loop fechado em si precisa de uma parada de emergência.

Posso tornar os tokens dos detentores permanentemente soulbound?

Sim — remova a política de loop fechado do pacote e ative não-transferível. Isso registra um TokenPolicy vazio: cada ActionRequest de transferência é interrompido em confirm_request. A predefinição não-transferível + Identity-SBT no Sui cobre esse caso.

Como adiciono endereços à lista de permissão após a implantação?

O módulo Move implantado expõe `add_to_allowlist(policy, cap, addr, ctx)` e `remove_from_allowlist`. Chame-os na página de gerenciamento ou em qualquer carteira que detenha o TokenPolicyCap — a mesma carteira que implantou o token por padrão.

O que acontece com os tokens enviados para endereços não aprovados?

A chamada `token::transfer` retorna um ActionRequest; `verify_allowlist_transfer` afirma que o receptor está na lista, caso contrário a transação é interrompida. Tokens nunca saem do endereço do remetente — não há saldo com falha e estagnado para limpar.