Flujo de trabajo confidencial de la aplicación CBDC al por mayor

El escenario confidencial de la moneda digital del banco central mayorista (CBDC) representa la moneda que se distribuye a través de una jerarquía estructurada de instituciones financieras, con información confidencial almacenada de forma privada.

La versión confidencial del escenario CBDC mayorista difiere en la forma en que se manejan los datos de transacción. La información no confidencial, como los detalles básicos de las transacciones y la información de las cuentas de la organización, se almacena en el libro mayor público. La información confidencial (como los ID de usuario, los valores de saldo reales y los factores de cegamiento) se almacena en la recopilación de datos privados de cada organización y se transfiere al código de cadena mediante una asignación transitoria, de modo que nunca se escribe en el libro mayor público. Los saldos de cuenta y los saldos retenidos se representan como valores de compromiso de Pedersen en el libro mayor público, lo que permite la verificación pública a través de pruebas de conocimiento cero sin exponer los importes subyacentes. En el nivel de banco central, las transferencias retenidas utilizan un proceso de confirmación en dos fases para una transacción atómica que requiere la ejecución simultánea de las API executeHoldTokensSender y executeHoldTokensReceiver, que mantiene la confidencialidad durante toda la transferencia. Las transferencias a nivel de institución financiera utilizan la API estándar única executeHoldTokens.

En el cuadro siguiente se resumen las diferencias clave entre las versiones no confidenciales y confidenciales del escenario de CBDC al por mayor.
Operación/Datos CBDC no confidencial CBDC confidencial
Transferencia entre organizaciones (el aprobador del banco central ejecuta la retención) API executeHoldTokens (una sola llamada) API executeHoldTokensSender y executeHoldTokensReceiver (dos llamadas simultáneas realizadas en confirmación en dos fases)
Transferencia intraorganización (el aprobador de la institución financiera ejecuta la retención) API executeHoldTokens (una sola llamada) API executeHoldTokens (una sola llamada, sin diferencias)
Datos de Transacción en Contabilidad Todos los datos almacenados en formato simple en el libro mayor público, sin separación de datos Datos no confidenciales en el libro mayor público, datos confidenciales (ID de usuario, saldos reales, factores de cegamiento) almacenados en la recopilación de datos privados de cada organización
Representación de balance Valores de balance reales almacenados directamente Saldos representados como valores de compromiso de Pedersen, importes reales no expuestos en la contabilidad pública
Método de Verificación Directo: los valores se pueden leer en el libro mayor Las pruebas de conocimiento cero permiten la verificación pública sin revelar los importes subyacentes
Manejo de datos confidenciales Almacenado en libro mayor público Se transfiere mediante una asignación transitoria al código de cadena, no se escribe en el libro mayor público

Note:

Las API executeHoldTokensSender y executeHoldTokensReceiver se deben llamar simultáneamente como parte de un proceso de confirmación en dos fases. Si solo se llama a uno sin el otro, se produce un error.
En la siguiente tabla, se resumen los actores de este escenario.
Actor Función Descripción
Administrator Administrador de token Inicializa el sistema y asigna roles.
Creador Minuto Solicita la extracción de tokens y recibe tokens extraídos.
Aprobador de banco central Notario Aprueba todas las operaciones a nivel de banco central.
Emisor ninguno Recibe tokens del creador, envía tokens al oficial de la institución financiera o al retirado.
Oficial de instituciones financieras ninguno Recibe tokens del emisor y los distribuye a los usuarios de instituciones financieras.
Aprobador de institución financiera Notario Permite aprobar transferencias de retención de funcionarios de instituciones financieras a usuarios de instituciones financieras.
Usuario de institución financiera ninguno Destinatario final de tokens transferidos en una institución financiera.
Baja Quemador Recibe tokens del emisor y envía solicitudes de grabación al aprobador del banco central.
El administrador realiza los siguientes pasos para inicializar el sistema.
  1. Inicialice el sistema CBDC mediante la API initializeCBDCToken.
  2. Registre organizaciones mediante la API registerOrg.
  3. Cree cuentas mediante la API createAccount.
  4. Asocie el token a las cuentas mediante la API associateTokenToAccount.
  5. Asigne el rol minter al creador, el rol notario al aprobador del banco central y el rol quemador al retirador mediante la API addRole.
Después de que se inicializa el sistema, un flujo de proceso típico sigue estos pasos básicos.
  1. Moneda de menta.
    1. El creador de tokens utiliza la API requestMint para enviar una solicitud para acuñar tokens de depósito.
    2. El aprobador del banco central utiliza la API approveMint para revisar y aprobar la solicitud de moneda. Los tokens se acreditan en la cuenta del creador. Como alternativa, el aprobador del banco central puede utilizar la API rejectMint para denegar la solicitud.
  2. Transferir tokens al emisor.
    • El creador utiliza la API transferTokens para enviar tokens al emisor.
  3. Transfiera tokens a los oficiales financieros.
    1. El emisor utiliza la API holdTokens para enviar tokens a un funcionario de la institución financiera.
    2. El aprobador del banco central utiliza las API executeHoldTokensSender y executeHoldTokensReceiver como parte de una confirmación en dos fases para validar y aprobar la solicitud de transferencia. Como alternativa, el aprobador del banco central puede usar la API releaseHold para rechazar la transferencia.
  4. Emitir tokens a los usuarios.
    1. El responsable de la institución financiera utiliza la API holdTokens para enviar tokens a un usuario de la institución financiera.
    2. El aprobador de la institución financiera utiliza la API executeHoldTokens para validar y aprobar la solicitud de transferencia. Como alternativa, el aprobador de la institución financiera puede usar la API releaseHold para rechazar la transferencia.
  5. Grabar tokens.
    1. El emisor utiliza la API transferTokens para transferir tokens al retirador.
    2. El retirador utiliza la API requestBurn para enviar una solicitud de grabación al aprobador del banco central.
    3. El aprobador del banco central utiliza la API approveBurn para aprobar la solicitud de grabación y los tokens se destruyen. Como alternativa, el aprobador del banco central puede usar la API rejectBurn para rechazar la solicitud.
  6. Verifique el saldo del token.
    • Los usuarios pueden utilizar la API getAccountBalance para obtener el número total de moneda que tienen.