Sui CLT con transferencias controladas por lista de permitidos + pausa. Los titulares mueven puntos solo entre direcciones que haya aprobado previamente.
Los puntos de fidelización y los créditos dentro de la aplicación funcionan mejor cuando permanecen en el ecosistema que controla. Este preset implementa un Token Sui Closed-Loop donde el implementador mantiene una lista de permitidos de direcciones de receptores aprobadas (comerciantes, socios, billeteras de operadores). Los tokens acuñados para usuarios solo pueden fluir hacia esa lista de permitidos — no hay ruta de escape a través de billeteras arbitrarias, no hay intercambio a una Moneda genérica, no hay listado de DEX por defecto.
El `sui::token` Closed-Loop Token de Sui es el único primitivo Move convencional que controla las transferencias a nivel del sistema de tipos — los titulares reciben `Token<T>` (sin capacidad `store`, sin `public_transfer`) y cada transferencia produce un ActionRequest que debe ser aprobado contra la TokenPolicy implementada. La regla de lista de permitidos es una configuración `VecSet<address>` que el implementador administra a través de dos funciones administrativas controladas por TokenPolicyCap (add_to_allowlist, remove_from_allowlist). La pausa cubre el caso donde el bucle cerrado en sí necesita una parada de emergencia.
Sí — elimine la política de bucle cerrado del paquete y habilite non-transferable. Esto registra una TokenPolicy vacía: cada ActionRequest de transferencia se cancela en confirm_request. El preset non-transferable + Identity-SBT en Sui cubre ese caso.
El módulo Move implementado expone `add_to_allowlist(policy, cap, addr, ctx)` y `remove_from_allowlist`. Llámelos desde la página de administración o desde cualquier billetera que tenga el TokenPolicyCap — la misma billetera que implementó el token por defecto.
La llamada `token::transfer` devuelve un ActionRequest; `verify_allowlist_transfer` afirma que el destinatario está en la lista, de lo contrario la transacción se cancela. Los tokens nunca salen de la dirección del remitente — no hay saldo fallido y estancado para limpiar.