Workflow de l'application CBDC de gros confidentiel

Le scénario confidentiel de devise numérique de la banque centrale de gros (CBDC) représente la devise qui est distribuée via une hiérarchie d'institutions financières structurée, avec des informations sensibles stockées en privé.

La version confidentielle du scénario CBDC de gros diffère dans la façon dont les données de transaction sont traitées. Les informations non sensibles telles que les détails de base des transactions et les informations de compte organisationnel sont stockées dans le grand livre public. Les informations sensibles (telles que les ID utilisateur, les valeurs d'accumulateur réel et les facteurs d'aveuglement) sont stockées dans la collecte de données privée de chaque organisation et transmises au code chaîne par le biais d'une carte non persistante, de sorte qu'elles ne sont jamais écrites dans le registre public. Les soldes des comptes et les soldes bloqués sont représentés sous la forme de valeurs d'engagement de Pedersen dans le grand livre public, ce qui permet de vérifier le public au moyen de preuves sans connaissance sans exposer les montants sous-jacents. Au niveau de la banque centrale, les transferts en attente utilisent un processus de validation en deux phases pour une transaction atomique qui nécessite l'exécution simultanée des API executeHoldTokensSender et executeHoldTokensReceiver, ce qui maintient la confidentialité tout au long du transfert. Les transferts au niveau de l'institution financière utilisent l'API executeHoldTokens unique standard.

Le tableau suivant résume les principales différences entre les versions non confidentielles et confidentielles du scénario CBDC de gros.
Opération/Données CBDC non confidentiel CBDC confidentiel
Transfert interorganisation (l'approbateur de la banque centrale exécute le blocage) API executeHoldTokens (appel unique) API executeHoldTokensSender et executeHoldTokensReceiver (deux appels simultanés effectués dans une validation en deux phases)
Transfert intraorganisation (l'approbateur de l'institution financière bloque) API executeHoldTokens (appel unique) API executeHoldTokens (appel unique, aucune différence)
Données de transaction dans Livre Toutes les données stockées sous forme brute dans le grand livre public, pas de séparation des données Données non sensibles sur le grand livre public, données sensibles (ID utilisateur, soldes réels, facteurs d'aveuglement) stockées dans la collecte de données privée de chaque organisation
Représentation du solde Valeurs de solde réelles stockées directement Soldes représentés sous forme de valeurs d'engagement Pedersen, montants réels non exposés dans le grand livre public
Méthode de vérification Direct : les valeurs sont lisibles dans le livre Les preuves sans connaissance permettent une vérification publique sans révéler les montants sous-jacents
Gestion des données confidentielles Stocké dans le grand livre public Transmis par une correspondance transitoire avec le code chaîne, non écrit dans le registre public

Remarques :

Les API executeHoldTokensSender et executeHoldTokensReceiver doivent être appelées simultanément dans le cadre d'un processus de validation en deux phases. L'appel d'un seul sans l'autre entraîne une erreur.
Le tableau suivant récapitule les acteurs de ce scénario.
Acteur Rôle Description
Administrateur Administration des jetons Initialise le système et affecte des rôles.
Créateur Minter Demande l'extraction des jetons et reçoit les jetons extraits.
Approbateur de la banque centrale Notaire Approuve toutes les opérations au niveau de la banque centrale.
Emetteur Aucun élément Reçoit des jetons du créateur, achemine les jetons vers l'agent de l'institution financière ou les retire.
Agent de l'institution financière Aucun élément Reçoit des jetons de l'émetteur, distribue des jetons aux utilisateurs des institutions financières.
Approbateur de l'institution financière Notaire Approuve les transferts bloqués du responsable de l'institution financière aux utilisateurs de l'institution financière.
Utilisateur institution financière Aucun élément Bénéficiaire final des jetons transférés dans une institution financière.
Retraité Brûleur Reçoit les jetons de l'émetteur et envoie les demandes de brûlure à l'approbateur de la banque centrale.
L'administrateur effectue les étapes suivantes pour initialiser le système.
  1. Initialisez le système CBDC à l'aide de l'API initializeCBDCToken.
  2. Inscrivez des organisations à l'aide de l'API registerOrg.
  3. Créez des comptes à l'aide de l'API createAccount.
  4. Associez le jeton aux comptes à l'aide de l'API associateTokenToAccount.
  5. Affectez le rôle de mineur au créateur, le rôle de notaire à l'approbateur de banque centrale et le rôle de brûleur au retrait à l'aide de l'API addRole.
Une fois le système initialisé, un flux de processus standard suit ces étapes de base.
  1. Monnaie.
    1. Le créateur de jeton utilise l'API requestMint pour soumettre une demande aux jetons de dépôt mint.
    2. L'approbateur de la banque centrale utilise l'API approveMint pour vérifier et approuver la demande de transaction. Les jetons sont crédités sur le compte du créateur. L'approbateur de la banque centrale peut également utiliser l'API rejectMint pour refuser la demande.
  2. Transférer les jetons à l'émetteur.
    • Le créateur utilise les jetons d'envoi d'API transferTokens à l'émetteur.
  3. Transférer des jetons aux agents financiers.
    1. L'émetteur utilise les jetons d'envoi de l'API holdTokens à un responsable d'institution financière.
    2. L'approbateur de la banque centrale utilise les API executeHoldTokensSender et executeHoldTokensReceiver dans le cadre d'une validation en deux phases pour valider et approuver la demande de transfert. L'approbateur de la banque centrale peut également utiliser l'API releaseHold pour rejeter le transfert.
  4. Emettre des jetons aux utilisateurs.
    1. Le responsable de l'institution financière utilise les jetons d'envoi de l'API holdTokens à un utilisateur de l'institution financière.
    2. L'approbateur de l'institution financière utilise l'API executeHoldTokens pour valider et approuver la demande de transfert. L'approbateur de l'institution financière peut également utiliser l'API releaseHold pour rejeter le transfert.
  5. Brûler les jetons.
    1. L'émetteur utilise l'API transferTokens pour transférer des jetons vers le retrait.
    2. Le retrait utilise l'API requestBurn pour envoyer une demande de brûlure à l'approbateur de la banque centrale.
    3. L'approbateur de la banque centrale utilise l'API approveBurn pour approuver la demande d'utilisation et les jetons sont détruits. L'approbateur de la banque centrale peut également utiliser l'API rejectBurn pour rejeter la demande.
  6. Vérifiez l'équilibre du jeton.
    • Les utilisateurs peuvent utiliser l'API getAccountBalance pour obtenir le nombre total de devises dont ils disposent.