Fluxo de Trabalho do Aplicativo CBDC de Atacado Confidencial

O cenário de moeda digital do banco central atacadista confidencial (CBDC) representa a moeda que é distribuída por meio de uma hierarquia de instituição financeira estruturada, com informações confidenciais armazenadas de forma privada.

A versão confidencial do cenário de CBDC de atacado difere na forma como os dados da transação são tratados. Informações não confidenciais, como detalhes básicos da transação e informações da conta organizacional, são armazenadas no razão público. Informações confidenciais (como IDs de usuário, valores de saldo reais e fatores de ocultação) são armazenadas na coleta de dados privada de cada organização e transmitidas ao chaincode por meio de um mapa transitório, para que nunca sejam gravadas no razão público. Os saldos de conta e os saldos em retenção são representados como valores de compromisso Pedersen no razão público, permitindo a verificação pública por meio de provas de conhecimento zero sem expor os valores subjacentes. No nível do banco central, as transferências de retenção usam um processo de commit de duas fases para uma transação atômica que requer a execução simultânea das APIs executeHoldTokensSender e executeHoldTokensReceiver, que mantém a confidencialidade durante toda a transferência. As transferências no nível da instituição financeira usam a API executeHoldTokens única padrão.

A tabela a seguir resume as principais diferenças entre as versões não confidenciais e confidenciais do cenário de CBDC de atacado.
Operação/Dados CBDC Não Confidencial CBDC Confidencial
Transferência Interorganizações (aprovador do banco central executa retenção) API executeHoldTokens (chamada única) APIs executeHoldTokensSender e executeHoldTokensReceiver (duas chamadas simultâneas feitas em commit de duas fases)
Transferência Intraorganizações (aprovador da instituição financeira executa suspensão) API executeHoldTokens (chamada única) API executeHoldTokens (chamada única, sem diferença)
Dados da Transação no Razão Todos os dados armazenados em formato simples na contabilidade pública, sem separação de dados Dados não confidenciais no razão público, dados confidenciais (IDs de usuário, saldos reais, fatores de ocultação) armazenados na coleta de dados privada de cada organização
Representação de Saldo Valores de saldo reais armazenados diretamente Saldos representados como valores de compromisso Pedersen, valores reais não expostos no razão público
Método de Verificação Direto: os valores podem ser lidos no razão As provas de conhecimento zero permitem a verificação pública sem revelar os valores subjacentes
Tratamento de Dados Sigilosos Armazenado no razão público Transmitido por meio de mapa transitório para chaincode, não gravado no razão público

Observação:

As APIs executeHoldTokensSender e executeHoldTokensReceiver devem ser chamadas simultaneamente como parte de um processo de commit de duas fases. Chamar apenas um sem o outro resulta em um erro.
A tabela a seguir resume os atores neste cenário.
Ator Atribuição Descrição
Administrator Administração de token Inicializa o sistema e atribui funções.
Criador Minter Solicita cunhagem de tokens e recebe tokens cunhados.
Aprovador do Banco Central Notário Aprova todas as operações a nível do banco central.
Emissor nenhuma Recebe tokens do criador, encaminha tokens para o diretor da instituição financeira ou aposentador.
Diretor de Instituição Financeira nenhuma Recebe tokens do emissor, distribui tokens para usuários de instituições financeiras.
Aprovador da Instituição Financeira Notário Aprova transferências de retenção do oficial da instituição financeira para usuários da instituição financeira.
Usuário da instituição financeira nenhuma Destinatário final de tokens transferidos em uma instituição financeira.
Retirador Queimador Recebe tokens do emissor e envia solicitações de gravação para o aprovador do banco central.
O administrador conclui as etapas a seguir para inicializar o sistema.
  1. Inicialize o sistema CBDC usando a API initializeCBDCToken.
  2. Registre organizações usando a API registerOrg.
  3. Crie contas usando a API createAccount.
  4. Associe o token às contas usando a API associateTokenToAccount.
  5. Atribua a função de mineiro ao criador, a função de notário ao aprovador do banco central e a função de queimador ao recuperador usando a API addRole.
Depois que o sistema é inicializado, um fluxo de processo típico segue estas etapas básicas.
  1. Moeda da moeda.
    1. O criador do token usa a API requestMint para enviar uma solicitação para tokens de depósito de moeda.
    2. O aprovador do banco central usa a API approveMint para analisar e aprovar a solicitação de hortelã. Os tokens são creditados na conta do criador. Como alternativa, o aprovador do banco central pode usar a API rejectMint para recusar a solicitação.
  2. Transfira tokens para o emissor.
    • O criador usa os tokens de envio da API transferTokens para o emissor.
  3. Transfira tokens para funcionários financeiros.
    1. O emissor usa a API holdTokens para enviar tokens a um diretor de instituição financeira.
    2. O aprovador do banco central usa as APIs executeHoldTokensSender e executeHoldTokensReceiver como parte de um commit de duas fases para validar e aprovar a solicitação de transferência. Como alternativa, o aprovador do banco central pode usar a API releaseHold para rejeitar a transferência.
  4. Emitir tokens aos usuários.
    1. O diretor da instituição financeira usa a API holdTokens para enviar tokens a um usuário da instituição financeira.
    2. O aprovador da instituição financeira usa a API executeHoldTokens para validar e aprovar a solicitação de transferência. Como alternativa, o aprovador da instituição financeira pode usar a API releaseHold para rejeitar a transferência.
  5. Queimar tokens.
    1. O emissor usa a API transferTokens para transferir tokens para o aposentador.
    2. O aposentador usa a API requestBurn para enviar uma solicitação de gravação ao aprovador do banco central.
    3. O aprovador do banco central usa a API approveBurn para aprovar a solicitação de gravação, e os tokens são destruídos. Como alternativa, o aprovador do banco central pode usar a API rejectBurn para rejeitar a solicitação.
  6. Verifique o saldo do token.
    • Os usuários podem usar a API getAccountBalance para obter o número total de moedas que eles mantêm.