Flux de travail de demande CBDC de gros confidentiel

Le scénario CBDC (devise numérique de la banque centrale de gros confidentielle) représente la devise qui est distribuée au moyen d'une hiérarchie structurée d'institutions financières, 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 transaction de base et les informations de compte organisationnel sont stockées dans le grand livre public. Les informations sensibles (notamment les ID utilisateur, les valeurs de solde réel et les facteurs de masquage) sont stockées dans la collecte de données privée de chaque organisation et transmises au code de chaîne au moyen d'une carte transitoire, de sorte qu'elles ne soient jamais écrites dans le livre public. Les soldes de comptes et les soldes bloqués sont représentés sous forme de valeurs d'engagement Pedersen sur le grand livre public, ce qui permet une vérification publique par des preuves de connaissance zéro sans exposer les montants sous-jacents. Au niveau de la banque centrale, le blocage des transferts utilise 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 assure 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 lors de la validation en deux phases)
Transfert intraorganisation (l'approbateur de l'institution financière exécute le blocage) API executeHoldTokens (appel unique) API executeHoldTokens (appel unique, aucune différence)
Données de transaction sur le livre Toutes les données stockées sous forme simple sur le grand livre public, sans 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ées de chaque organisation
Représentation du solde Valeurs de solde réel stockées directement Soldes représentés par des valeurs d'engagement Pedersen, montants réels non exposés sur le grand livre public
Méthode de vérification Direct : les valeurs sont lisibles sur le livre Les preuves sans connaissance permettent une vérification publique sans révéler les montants sous-jacents
Traitement des données sensibles Stocké dans le livre public Transmis par une carte transitoire vers du code de chaîne, non écrit dans le livre public

Note :

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ésume les acteurs de ce scénario.
acteur Rôle Description
Administrateur Administrateur de jetons Initialise le système, affecte des rôles.
Créateur Minter Demande la frappe de jetons et reçoit des jetons frappés.
Approbateur de la banque centrale Notaire Approuve toutes les opérations au niveau de la banque centrale.
Émetteur aucune Reçoit les jetons du créateur, achemine les jetons au responsable de l'institution financière ou les retire.
Agent d'institution financière aucune Reçoit des jetons de l'émetteur et les distribue aux utilisateurs d'institutions financières.
Approbateur de l'institution financière Notaire Permet d'approuver les transferts d'agent d'institution financière aux utilisateurs d'institution financière.
Utilisateur de l'institution financière aucune Destinataire final des jetons transférés dans une institution financière.
Retraité Brûleur Reçoit des jetons de l'émetteur et envoie des demandes de brûlage à 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. Enregistrez les 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 d'initiateur au créateur, le rôle de notaire à l'approbateur de la banque centrale et le rôle de brûleur à retirer à l'aide de l'API addRole.
Une fois le système initialisé, un flux de traitement typique suit ces étapes de base.
  1. Monnaie.
    1. Le créateur du jeton utilise l'API requestMint pour soumettre une demande d'extraction de jetons de dépôt.
    2. L'approbateur de la banque centrale utilise l'API approveMint pour vérifier et approuver la demande de menthe. 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 des jetons à l'émetteur.
    • Le créateur utilise l'API transferTokens pour envoyer des jetons à l'émetteur.
  3. Transférer des jetons aux agents financiers.
    1. L'émetteur utilise l'API holdTokens pour envoyer des jetons à un agent 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. Émettre des jetons aux utilisateurs.
    1. Le responsable de l'institution financière utilise l'API holdTokens pour envoyer des jetons à un utilisateur d'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ûlez des jetons.
    1. L'émetteur utilise l'API transferTokens pour transférer les jetons vers le retrait.
    2. La suppression utilise l'API requestBurn pour envoyer une demande de gravure à l'approbateur de la banque centrale.
    3. L'approbateur de la banque centrale utilise l'API approveBurn pour approuver la demande de gravure et les jetons sont détruits. L'approbateur de la banque centrale peut également utiliser l'API rejectBurn pour rejeter la demande.
  6. Vérifier le solde du jeton.
    • Les utilisateurs peuvent utiliser l'API getAccountBalance pour obtenir le nombre total de devises qu'ils détiennent.