Lancer un jeton de fidélité / boucle fermée

Sui CLT avec transferts contrôlés par liste blanche + pause. Les détenteurs déplacent les points uniquement entre les adresses que vous avez préalablement approuvées.

Les points de fidélité et les crédits intégrés fonctionnent mieux lorsqu'ils restent dans l'écosystème que vous contrôlez. Ce preset déploie un Token Sui Closed-Loop où le déployeur maintient une liste blanche d'adresses de destinataires approuvées (commerçants, partenaires, portefeuilles d'opérateurs). Les jetons frappés aux utilisateurs ne peuvent circuler que dans cette liste blanche — aucune échappatoire via des portefeuilles arbitraires, aucun échange vers une Pièce générique, aucune cotation DEX par défaut.

Ce qui est inclus

Pourquoi cette pile

Le Token Closed-Loop `sui::token` de Sui est le seul primitif Move grand public qui contrôle les transferts au niveau du système de type — les détenteurs reçoivent `Token<T>` (pas de capacité `store`, pas de `public_transfer`) et chaque transfert produit une ActionRequest qui doit être approuvée par rapport à la TokenPolicy déployée. La règle de liste blanche est une configuration `VecSet<address>` que le déployeur gère via deux fonctions administrateur contrôlées par TokenPolicyCap (add_to_allowlist, remove_from_allowlist). La pause couvre le cas où la boucle fermée elle-même a besoin d'un arrêt d'urgence.

Puis-je rendre les jetons des détenteurs en permanence soulbound à la place?

Oui — supprimez la politique de boucle fermée du lot et activez non-transférable. Cela enregistre une TokenPolicy vide : chaque ActionRequest de transfert s'interrompt à confirm_request. Le preset non-transférable + Identity-SBT sur Sui couvre ce cas.

Comment ajoute-je des adresses à la liste blanche après le déploiement?

Le module Move déployé expose `add_to_allowlist(policy, cap, addr, ctx)` et `remove_from_allowlist`. Appelez-les depuis la page de gestion ou depuis n'importe quel portefeuille détenant le TokenPolicyCap — le même portefeuille qui a déployé le jeton par défaut.

Que se passe-t-il pour les jetons envoyés à des adresses non approuvées?

L'appel `token::transfer` retourne une ActionRequest ; `verify_allowlist_transfer` affirme que le destinataire est sur la liste, sinon la transaction s'interrompt. Les jetons ne quittent jamais l'adresse de l'expéditeur — aucun solde défaillant et stagnant à nettoyer.