Flux de travail d'application Stablecoin

Un stablecoin est un jeton fongible qui représente la monnaie numérique avec une application de conformité intégrée.

Le scénario stablecoin applique les politiques relatives à votre client (KYC) et à la lutte contre le blanchiment d'argent (AML), les restrictions de transfert et les approbations multipartites. Le système prend en charge les transferts directs et les transferts basés sur des blocages, qui doivent être approuvés avant le transfert.

  • Des rôles d'intercalaire, de brûleur et de notaire sont requis.
  • La politique de compte applique les indicateurs KYC/AML et de restriction.
  • La politique d'approbation définit les seuils et les exigences séquentielles des approbateurs pour les transferts basés sur un blocage.
  • Les restrictions de transfert sont facultatives et peuvent être configurées à tout moment.
  • La mise en correspondance de la politique d'approbation permet de déterminer si des approbations sont requises lorsque l'API holdTokens est utilisée.
  • Les API d'historique des transactions prennent en charge la vérification et la surveillance.
Le tableau suivant résume les acteurs de ce scénario.
acteur Rôle Description
Administrateur Administrateur de jetons Initialise le système, affecte des rôles, crée des politiques de compte et d'approbation.
Minter Minter Demande de frappe de jetons.
Approbateur de la menthe Notaire Approuve ou rejette les demandes de mint.
Approbateur de consommation Notaire Approuve ou rejette les demandes de gravure.
Expéditeur aucune Sert à lancer des transferts directs ou basés sur un blocage.
Approbateur aucune Permet d'approuver les transactions dans une séquence définie. Les approbateurs sont des titulaires de comptes réguliers qui ont été définis comme approbateurs dans la politique d'approbation (et non par un rôle affecté).
Notaire Notaire Termine ou annule les transferts basés sur un blocage après approbation.
Récepteur aucune Reçoit les jetons transférés.
Vérificateur Vérificateur de jeton Interroge l'historique des transactions à des fins de conformité et de production de rapports.
L'administrateur effectue les étapes suivantes pour initialiser le système.
  1. Initialisez un stablecoin à l'aide de l'API initializeStablecoinToken.
  2. Enregistrez les organisations à l'aide de l'API registerOrg.
  3. Créez des comptes à l'aide des API createAccount et associateTokenToAccount.
  4. Affectez les rôles de serveur, de brûleur et de notaire aux comptes appropriés à l'aide de l'API addRole.
  5. Créez des politiques de compte à l'aide de l'API createStablecoinAccountPolicyCheck.
  6. Créez des politiques d'approbation à l'aide de l'API createApprovalPolicyCheck.
Une fois le système initialisé, un flux de traitement typique suit ces étapes de base.
  1. Mint stablecoins.
    1. Le processus de modification utilise l'API requestMint pour soumettre une demande de création de stablecoins.
    2. L'approbateur de menthe utilise l'API approveMint pour vérifier et approuver la demande de menthe stablecoins. Sinon, l'approbateur de menthe peut utiliser l'API rejectMint pour refuser la demande.
  2. Transférez des stablecoins sans approbation.
    • L'expéditeur utilise l'API transferTokens pour envoyer des stablecoins à un utilisateur.
  3. Transférer des stablecoins avec des approbations.
    1. L'expéditeur utilise l'API holdTokens pour demander le transfert des jetons.
    2. Si nécessaire, les approbateurs utilisent l'API approveTransaction pour approuver le transfert, comme indiqué par la politique d'approbation.
    3. Le notaire utilise l'API executeHoldTokens pour approuver la demande de transfert. Sinon, le notaire peut utiliser l'API releaseHold pour rejeter le transfert.
  4. Vérifier le solde du jeton.
    • Les utilisateurs peuvent utiliser l'API getAccountBalance pour obtenir la quantité de stablecoins qu'ils détiennent.
  5. Brûlez des jetons.
    1. Les utilisateurs peuvent utiliser l'API requestBurn pour soumettre une demande de gravure de leurs stablecoins.
    2. L'approbateur de consommation utilise l'API approveBurn pour vérifier et approuver la demande. L'approbateur de l'incrémentation peut également utiliser l'API rejectBurn pour refuser la demande.
  6. vérification de l'historique des transactions;
    • Les vérificateurs et les utilisateurs peuvent utiliser les API getAccountTransactionHistory et getAccountTransactionHistoryWithFilters pour obtenir l'historique des transactions aux fins de vérification et de production de rapports.

Validation de politique de compte

Les politiques de compte sont obligatoires pour tous les comptes qui transfèrent ou détiennent des stablecoins. Les politiques de compte sont validées dans les API suivantes : transferTokens, holdTokens, approveTransaction, executeHoldTokens.

Chaque politique de compte comprend trois paramètres : KYC, AML et restrictionFlag. Ceux-ci sont validés à la fois pour l'expéditeur et le destinataire avant le transfert des jetons.

KYC (Connaître le client)
Le transfert n'est autorisé que lorsque les valeurs Connaissance du client sont true pour les comptes d'expéditeur et de destinataire.
AML (Anti-Money Laundering)
Le transfert n'est autorisé que lorsque les valeurs de liste de fabricants approuvés sont true pour les comptes d'expéditeur et de destinataire.
restrictionFlag
Si l'indicateur de restriction est réglé à false pour le compte de l'expéditeur et du destinataire, la validation réussit. Si l'indicateur de restriction est réglé à true pour le compte de l'expéditeur ou du destinataire, pour les API holdTokens, approveTransaction et executeHoldTokens, le transfert n'est autorisé que si une politique d'approbation disponible la plus basse existe et si le montant est compris dans les limites de la politique. Sinon, le transfert est bloqué. Pour la méthode transferTokens, le transfert n'est autorisé que si le montant se trouve dans les limites inférieure et supérieure des limites de restriction de transfert.

Mise en correspondance de la politique d'approbation

La mise en correspondance de la politique d'approbation est déclenchée après un appel à l'API holdTokens. Les politiques d'approbation définissent les seuils de transaction, le nombre requis d'approbations et les détails de l'approbateur, et définissent la séquence des approbations à plusieurs niveaux. Une politique d'approbation est obligatoire pour une opération de blocage. Sans politique d'approbation, les utilisateurs ne peuvent pas bloquer ou transférer des jetons lorsque des restrictions s'appliquent.

La mise en correspondance de la politique d'approbation détermine si des approbations sont requises avant que le notaire puisse terminer le transfert de blocage. Si des approbations sont requises, la mise en correspondance de la politique d'approbation détermine quels approbateurs sont nécessaires et dans quelle séquence.

Si aucun indicateur de restriction n'est défini pour l'expéditeur et le destinataire, le montant de blocage est comparé à tous les seuils de politique d'approbation configurés pour trouver une correspondance. Si une correspondance est trouvée, les approbateurs et la séquence correspondants sont utilisés. Si aucune correspondance n'est trouvée, aucune approbation n'est requise et la transaction passe directement au notaire.

Si un indicateur de restriction est défini pour l'expéditeur ou le destinataire, la politique d'approbation la plus basse disponible est utilisée. Si aucune politique n'est disponible, la transaction est bloquée.

Une fois qu'une correspondance de politique est déterminée, les détails suivants sont extraits de la politique pour utilisation dans le traitement d'approbation :
  • approbateurs obligatoires;
  • séquence d'approbation
  • Nombre d'approbations requises

Approbation de transaction

La validation de l'approbation de transaction est déclenchée après un appel à l'API approveTransaction. La validation applique toutes les règles d'approbation définies dans la politique d'approbation qui ont été mises en correspondance lors de l'appel à l'API holdTokens. La validation s'exécute pour chaque approbateur en séquence selon les étapes suivantes.

  1. Valider l'identité de l'approbateur : Vérifie si l'utilisateur courant existe dans la liste d'approbateurs requise à partir de la politique d'approbation.
  2. Valider l'ordre de séquence : Vérifie si l'approbateur courant est l'approbateur attendu à la position de séquence courante.
  3. Rechercher une approbation en double : Empêche le même approbateur d'approuver la même transaction plusieurs fois.
  4. Validation de la politique de compte : Exécute à nouveau la validation de la politique de compte pour s'assurer que les statuts de compte de l'expéditeur et du destinataire n'ont pas été modifiés depuis la création du blocage.
  5. Record Approval (Approbation de l'enregistrement) : enregistre l'approbation avec un horodatage, incrémente le nombre d'approbations et vérifie si toutes les approbations requises sont terminées.
Si toutes les approbations sont enregistrées, la transaction est marquée comme prête à être exécutée par le notaire. Si d'autres approbations sont nécessaires, l'approbateur suivant dans l'ordre est en attente.