Flusso di lavoro applicazione CBDC all'ingrosso riservato
Lo scenario della valuta digitale della banca centrale all'ingrosso riservata (CBDC) rappresenta una valuta distribuita attraverso una gerarchia strutturata di istituti finanziari, con informazioni riservate memorizzate privatamente.
La versione riservata dello scenario CBDC all'ingrosso è diversa dalla modalità di gestione dei dati delle transazioni. Le informazioni non riservate, come i dettagli delle transazioni di base e le informazioni sul conto organizzativo, vengono memorizzate nel libro contabile pubblico. Le informazioni riservate (ad esempio ID utente, valori di saldo effettivi e fattori di accecamento) vengono memorizzate nella raccolta dati privata di ciascuna organizzazione e passate al codice concatenato tramite una mappa transitoria, in modo che non vengano mai scritte nel libro mastro pubblico. I saldi contabili e i saldi in sospeso sono rappresentati come valori di impegno Pedersen nel registro pubblico, consentendo la verifica pubblica tramite prove a conoscenza zero senza esporre gli importi sottostanti. A livello di banca centrale, i trasferimenti di blocco utilizzano un processo di commit a due fasi per una transazione atomica che richiede l'esecuzione simultanea delle API executeHoldTokensSender e executeHoldTokensReceiver, che mantiene la riservatezza durante tutto il trasferimento. I trasferimenti a livello di istituto finanziario utilizzano l'API standard executeHoldTokens.
| Operazione/dati | CBDC non riservato | CBDC riservato |
|---|---|---|
| Trasferimento tra organizzazioni (l'approvatore della banca centrale esegue il blocco) | API executeHoldTokens (chiamata singola)
|
API executeHoldTokensSender e executeHoldTokensReceiver (due chiamate simultanee eseguite in commit a due fasi)
|
| Trasferimento intra-organizzazione (l'approvatore dell'istituto finanziario esegue il blocco) | API executeHoldTokens (chiamata singola)
|
API executeHoldTokens (chiamata singola, nessuna differenza)
|
| Dati transazione nel libro contabile | Tutti i dati memorizzati in formato normale sul libro contabile pubblico, nessuna separazione dei dati | Dati non sensibili su libri contabili pubblici, dati sensibili (ID utente, saldi effettivi, fattori di accecamento) memorizzati nella raccolta di dati privati di ciascuna organizzazione |
| Rappresentazione saldo | Valori saldo effettivi memorizzati direttamente | Saldi rappresentati come valori di impegno Pedersen, importi effettivi non esposti nel libro contabile pubblico |
| Metodo di verifica | Diretto: valori leggibili nel libro contabile | Le prove a conoscenza zero consentono la verifica pubblica senza rivelare gli importi sottostanti |
| Gestione dei dati sensibili | Memorizzato nel libro contabile pubblico | Passato tramite mappa transitoria al codice concatenato, non scritto nel libro contabile pubblico |
Nota
Le interfacce APIexecuteHoldTokensSender e executeHoldTokensReceiver devono essere richiamate contemporaneamente come parte di un processo di commit a due fasi. Chiamare solo uno senza l'altro comporta un errore.
| Attore | Ruolo | Descrizione |
|---|---|---|
| Administrator | Amministrazione token | Inizializza il sistema e assegna ruoli. |
| Autore | Minter | Richiede la creazione di token e riceve token coniati. |
| Approvatore banca centrale | Notaio | Approva tutte le operazioni a livello di banca centrale. |
| Emittente | nessuno | Riceve i token dal creatore, instrada i token al funzionario dell'istituto finanziario o al pensionato. |
| Funzionario istituto finanziario | nessuno | Riceve token dall'emittente, distribuisce token agli utenti dell'istituto finanziario. |
| Approvatore istituto finanziario | Notaio | Approva i trasferimenti di blocco dal funzionario dell'istituto finanziario agli utenti dell'istituto finanziario. |
| Utente istituto finanziario | nessuno | Destinatario finale dei token trasferiti presso un istituto finanziario. |
| Ritiro | Bruciatore | Riceve token dall'emittente e invia richieste di burn all'approvatore della banca centrale. |
- Inizializzare il sistema CBDC utilizzando l'API
initializeCBDCToken. - Registrare le organizzazioni utilizzando l'API
registerOrg. - Creare account utilizzando l'API
createAccount. - Associare il token agli account utilizzando l'API
associateTokenToAccount. - Assegnare il ruolo minore al creatore, il ruolo notaio all'approvatore della banca centrale e il ruolo masterizzatore al pensionato utilizzando l'API
addRole.
- Valuta della menta.
- L'autore del token utilizza l'API
requestMintper sottomettere una richiesta per creare token di deposito. - L'approvatore della banca centrale utilizza l'API
approveMintper rivedere e approvare la richiesta di zecca. I token vengono accreditati sull'account del creatore. In alternativa, l'approvatore della banca centrale può utilizzare l'APIrejectMintper negare la richiesta.
- L'autore del token utilizza l'API
- Trasferire i token all'emittente.
- L'autore utilizza l'API
transferTokensper inviare i token all'emittente.
- L'autore utilizza l'API
- Trasferire i token ai funzionari finanziari.
- L'emittente utilizza l'API
holdTokensper inviare token a un funzionario dell'istituto finanziario. - L'approvatore della banca centrale utilizza le API
executeHoldTokensSendereexecuteHoldTokensReceivercome parte di un commit in due fasi per convalidare e approvare la richiesta di trasferimento. In alternativa, l'approvatore della banca centrale può utilizzare l'APIreleaseHoldper rifiutare il trasferimento.
- L'emittente utilizza l'API
- Emettere token agli utenti.
- Il responsabile dell'istituto finanziario utilizza l'API
holdTokensper inviare i token a un utente dell'istituto finanziario. - L'approvatore dell'istituto finanziario utilizza l'API
executeHoldTokensper convalidare e approvare la richiesta di trasferimento. In alternativa, l'approvatore dell'istituto finanziario può utilizzare l'APIreleaseHoldper rifiutare il trasferimento.
- Il responsabile dell'istituto finanziario utilizza l'API
- Brucia i token.
- L'emittente utilizza l'API
transferTokensper trasferire i token allo smobilizzo. - Il pensionato utilizza l'API
requestBurnper inviare una richiesta di masterizzazione all'approvatore della banca centrale. - L'approvatore della banca centrale utilizza l'API
approveBurnper approvare la richiesta di masterizzazione e i token vengono eliminati. In alternativa, l'approvatore della banca centrale può utilizzare l'APIrejectBurnper rifiutare la richiesta.
- L'emittente utilizza l'API
- Verificare il saldo del token.
- Gli utenti possono utilizzare l'API
getAccountBalanceper ottenere il numero totale di valute in loro possesso.
- Gli utenti possono utilizzare l'API