机密批发 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。仅调用一个而不调用另一个会导致错误。
下图显示了使用机密批发 CBDC 链代码示例时的典型流程流。
