机密批发 CBDC 应用程序工作流
机密的中央银行数字货币 (CBDC) 方案表示通过结构化金融机构层次结构分配的货币,敏感信息私下存储。
批发 CBDC 方案的机密版本在处理交易数据的方式方面有所不同。基本事务处理详细信息和组织账户信息等非敏感信息存储在公共分类账中。敏感信息(例如用户 ID、实际余额值和致盲因子)存储在每个组织的专用数据收集中,并通过瞬态映射传递到链代码,以便永远不会将其写入公共分类账。账户余额和暂挂余额在公共分类账上表示为 Pedersen 承付款值,允许通过零知识证明进行公开验证,而无需公开基础金额。在中央银行级别,暂挂转移对原子事务处理使用两阶段提交流程,该流程需要同时执行 executeHoldTokensSender 和 executeHoldTokensReceiver API,从而在整个转移过程中保持机密性。金融机构级别的传输使用标准单个 executeHoldTokens API。
下表汇总了批发 CBDC 方案的非机密版本与机密版本之间的主要差异。
| 操作/数据 | 非机密 CBDC | 机密 CBDC |
|---|---|---|
| 组织间转移(中央银行审批人执行暂挂) | executeHoldTokens API(单个调用)
|
executeHoldTokensSender 和 executeHoldTokensReceiver API(在两阶段提交中同时执行两次调用)
|
| 组织内转移(金融机构审批人执行暂挂) | executeHoldTokens API(单个调用)
|
executeHoldTokens API(单次调用,无差异)
|
| 分类账上的事务处理数据 | 所有数据以纯形式存储在公共分类账中,无数据分离 | 公共分类账上的非敏感数据、存储在每个组织的专用数据收集中的敏感数据(用户 ID、实际余额、致盲因子) |
| 余额表示 | 直接存储的实际余额值 | 表示为 Pedersen 承付款值的余额,公共分类账上未公开的实际金额 |
| 验证方式 | 直接:值在分类账上可读 | 零知识证明可以在不透露潜在金额的情况下进行公共验证 |
| 敏感数据处理 | 存储在公共分类账上 | 通过瞬态映射传递到链代码,而不是写入公共分类账 |
注意:
在两阶段提交过程中,必须同时调用executeHoldTokensSender 和 executeHoldTokensReceiver API。仅调用一个而不调用另一个会导致错误。
下表汇总了此方案中的角色。
| 操作者 | 角色 | 说明 |
|---|---|---|
| Administrator | 令牌管理 | 初始化系统,指定角色。 |
| 创建者 | 矿工 | 请求铸造代币并接收铸造代币。 |
| 中央银行审批人 | 公证人 | 批准中央银行级别的所有操作。 |
| 发布者 | 无 | 从创建者处接收令牌,向金融机构官员或退休人员发送令牌。 |
| 金融机构干事 | 无 | 接收来自发行者的令牌,向金融机构用户分发令牌。 |
| 金融机构审批人 | 公证人 | 批准从金融机构负责人到金融机构用户的暂挂转移。 |
| 金融机构用户 | 无 | 金融机构转移代币的最终接收人。 |
| 报废者 | 燃烧器 | 从发行人处接收代币并将烧毁请求发送给中央银行批准人。 |
管理员完成以下步骤来初始化系统。
- 使用
initializeCBDCTokenAPI 初始化 CBDC 系统。 - 使用
registerOrgAPI 注册组织。 - 使用
createAccountAPI 创建账户。 - 使用
associateTokenToAccountAPI 将令牌关联到帐户。 - 使用
addRoleAPI 将矿工角色分配给创建者,将公证角色分配给中央银行审批者,将燃烧器角色分配给退休人员。
初始化系统后,典型流程将遵循这些基本步骤。
- Mint 货币。
- 令牌创建者使用
requestMintAPI 提交用于铸造存款令牌的请求。 - 央行批准人使用
approveMintAPI 来审核和批准 mint 请求。令牌将贷记到创建者的账户中。或者,中央银行批准人可以使用rejectMintAPI 拒绝请求。
- 令牌创建者使用
- 将令牌传输给发布者。
- 创建者使用
transferTokensAPI 向发布者发送令牌。
- 创建者使用
- 将代币转移给财务人员。
- 发行人使用
holdTokensAPI 向金融机构官员发送令牌。 - 央行批准人使用
executeHoldTokensSender和executeHoldTokensReceiverAPI 作为两阶段提交的一部分,以验证和批准传输请求。或者,中央银行批准人可以使用releaseHoldAPI 拒绝转账。
- 发行人使用
- 向用户发放令牌。
- 金融机构负责人使用
holdTokensAPI 向金融机构用户发送令牌。 - 金融机构审批人使用
executeHoldTokensAPI 验证和批准调动请求。或者,金融机构审批人可以使用releaseHoldAPI 拒绝调动。
- 金融机构负责人使用
- 烧毁代币。
- 发布者使用
transferTokensAPI 将令牌传输给报废者。 - 退休人员使用
requestBurnAPI 向中央银行审批人发送消耗请求。 - 央行批准人使用
approveBurnAPI 来批准消耗请求,令牌将被销毁。或者,中央银行批准人可以使用rejectBurnAPI 拒绝请求。
- 发布者使用
- 验证令牌余额。
- 用户可以使用
getAccountBalanceAPI 获取他们所持有的货币总数。
- 用户可以使用