主题
BUS-02 批发赎回与销毁
BUS-02.1 目标与 DTS 依据
验证商业银行发起批发赎回、NBKR 批准、RTGS(测试环境)确认法币流动性预留后,WalletNode 准备 Burn 并预留账本输入,银行受保护 Idemix Holder 对准确 prepared request 签名,平台在 NBKR 控制下提交 Burn 达成账本最终性,随后凭预留完成 RTGS 结算、GL 负债减少与三方对账。
| 追溯项 | 依据 |
|---|---|
| DTS 功能场景 | §14.3 场景 11「Redemption/Burn」(A 类核心平台场景) |
| DTS 章节 | §12 生命周期、§16.4 赎回流程(先预留、Burn 先于结算)、§16.5 操作状态、§16.6 会计分录、§16.9 异常控制 |
| DTS 测试目录 | TC-RED-001–006;RTGS 接口 TC-INT-RTGS-001–005 |
| 需求依据 | 《技术描述》附录 1 §4.1;附录 2 §1.1.2 |
| 追溯登记 | 附录 A |
BUS-02.2 参与角色
| 角色 | 职责 |
|---|---|
| 商业银行(银行 A)操作员 | 提交赎回申请;核验 prepared Burn 业务结果;驱动 Idemix Holder 签名并提交 |
| 银行 A 受保护 Idemix Holder | 保护关系 Idemix Secret 与 Credential,对准确 prepared Burn request 签名 |
| NBKR 审批操作员 | 批准赎回;Burn 提交由 NBKR 控制 |
| WalletNode / 归属分片 | 选择并预留账本输入,构建交易范围 ZKAT 证明与规范 prepared Burn request,保存 NBKR 私有审计包 |
| 平台 | 校验共同绑定、凭据、签名、审批、预留引用后提交 Burn;驱动 RTGS 结算、GL 过账、对账 |
| RTGS / GL(测试环境) | 法币预留与结算 / 负债减少分录的权威来源 |
BUS-02.3 前置条件
- BUS-01 已通过:银行 A 批发钱包持有充足可花费 Digital Som(赎回金额 ≤ 可用余额);
- 银行 A 批发钱包
ACTIVE;关系 Idemix 凭据有效;RTGS 测试账户已启用; - NBKR 赎回审批角色已配置;
- 记录赎回前基线:账本总供应量、批发钱包余额与 UTXO 清单、GL 负债科目余额。
BUS-02.4 测试数据
| 数据项 | 要求 | 记录值 |
|---|---|---|
| 赎回金额与币种 | 小于批发钱包可用余额且触发找零(不等于任一单个 UTXO 面额) | 待执行时填写 |
| 来源批发钱包 ID | 银行 A 批发钱包 | 待执行时填写 |
| 银行业务参考号 | 端点范围内唯一;重复用例复用 | 待执行时填写 |
| 第二笔小额赎回数据 | 用于取消用例(TC-CAN 路径) | 待执行时填写 |
BUS-02.5 执行步骤
| 步骤 | 执行方 | 操作 | 预期结果 | 实际结果 | 证据编号 | 状态 |
|---|---|---|---|---|---|---|
| 1 | 银行 A 操作员 | 提交批发赎回申请(金额、币种、来源批发钱包、银行业务参考号) | 平台建立平台交易标识与全链路关联标识;状态 REQUESTED → VALIDATED | 待执行 | 待填写 | 待执行 |
| 2 | NBKR 审批操作员 | 批准赎回 | 状态 APPROVAL_PENDING → APPROVED;审批入审计 | 待执行 | 待填写 | 待执行 |
| 3 | 平台 | 请求 RTGS 预留赎回法币流动性 | 预留确认与预留引用记录在案;状态 RTGS_RESERVED | 待执行 | 待填写 | 待执行 |
| 4 | WalletNode | 选择并预留账本输入,构建 ZKAT 证明与规范 prepared Burn request,保存 NBKR 私有审计包 | 返回 tx_id、选定输入引用、待签请求、预留引用与业务结果;状态 AWAITING_SIGNATURE;被选 UTXO 进入交易范围输入锁 | 待执行 | 待填写 | 待执行 |
| 5 | 银行 A | 核验返回的金额、钱包与赎回结果;受保护 Idemix Holder 对准确 prepared request 签名 | 签名绑定该 prepared transaction | 待执行 | 待填写 | 待执行 |
| 6 | 银行 A | 提交 preparation 引用、关系/member 引用及 Idemix 签名 | 平台重新校验调用方、共同交易绑定、凭据、签名、已保存 ZKAT 证明、审批、操作标识、业务引用、预留引用、金额与当前输入状态 | 待执行 | 待填写 | 待执行 |
| 7 | 平台(NBKR 控制) | 提交 Burn 至权威账本 | 状态 BURN_PENDING → BURNED;返回账本引用;供应量减少恰为赎回金额;找零 UTXO 归还批发钱包 | 待执行 | 待填写 | 待执行 |
| 8 | 平台 | 凭预留引用、原业务引用提交 RTGS 结算 | RTGS 返回最终成功;状态 RTGS_CONFIRMED | 待执行 | 待填写 | 待执行 |
| 9 | 平台 | 创建赎回会计事件并交付 GL | 借:NBKR 数字索姆负债,贷:银行 A 准备金/往来账户;GL_POSTED | 待执行 | 待填写 | 待执行 |
| 10 | 平台 | 三方对账 | 状态 RECONCILED;对账结果 MATCHED | 待执行 | 待填写 | 待执行 |
| 11 | 银行 A 操作员 | 状态查询与余额核对 | 查询返回终态与全部引用;批发钱包余额减少 = 赎回金额 + 已归还找零核对一致 | 待执行 | 待填写 | 待执行 |
BUS-02.6 预期核对点
- 顺序门控:已确认 RTGS 预留先于 Burn 准备;Burn 最终性先于 RTGS 结算;赎回结算凭预留执行(§16.4);
- 赎回恒等式(§16.8):获批金额 = 最终 Burn 金额 = 最终 RTGS 赎回金额 = GL 负债减少额;累计 Mint − 累计 Burn = 账本供应量;
- 双预留联动:
AWAITING_SIGNATURE期间账本输入锁与 RTGS 资金预留同时保持;取消时两项预留同时释放; - 授权闭环:Burn 由 NBKR 审批 + 已确认 RTGS 预留 + 银行 Idemix 签名 + 账本校验共同门控,缺一不可;
- 审计:prepared request、ZKAT 证明验证、Idemix 签名验证、NBKR 私有审计包留存、Burn 提交与结算逐一可追溯。
BUS-02.7 负向与异常用例
| 用例 | 操作 | 预期结果 | 实际结果 | 证据编号 | 状态 |
|---|---|---|---|---|---|
TC-RED-002 | 提交超过可用余额的赎回,或在输入已被在途交易锁定时提交 | REJECTED;不准备 Burn、不锁定新输入 | 待执行 | 待填写 | 待执行 |
TC-RED-003a | 使 RTGS 拒绝流动性预留 | 平台不准备也不提交 Burn;账本无输入锁 | 待执行 | 待填写 | 待执行 |
TC-RED-003b | Burn 最终后使 RTGS 结算暂时不可用,随后恢复 | 保持参考状态,以原业务引用查询/重试同一结算;不产生第二次 Burn 或第二笔结算 | 待执行 | 待填写 | 待执行 |
TC-RED-004 | 篡改 prepared request 后签名提交,或使用无效/停用的 Idemix 凭据 | REJECTED;产生安全与审计事件;不提交记账 | 待执行 | 待填写 | 待执行 |
TC-RED-005 | Burn 提交后中断响应(结果未知),再恢复 | 平台仅查询账本原交易;绝不提交第二次 Burn;Burn 最终性明确前不结算法币 | 待执行 | 待填写 | 待执行 |
| 取消用例 | 第二笔赎回推进至 AWAITING_SIGNATURE 后由银行取消 | 状态 CANCELLED;账本输入锁与 RTGS 资金预留同时释放;供应量不变 | 待执行 | 待填写 | 待执行 |
TC-RED-006 | 以同一银行业务参考号重复提交 | 返回既有业务;对账无重复记录 | 待执行 | 待填写 | 待执行 |
BUS-02.8 执行信息、结果与签署
| 项目 | 记录 |
|---|---|
| 原型版本与镜像摘要 | 待执行时填写 |
| 测试环境(含 RTGS/GL 模式) | 待执行时填写 |
| 执行日期与参与人员 | 待执行时填写 |
平台交易标识/tx_id/全链路关联标识 | 待执行时填写 |
| 账本 Burn 引用/RTGS 结算引用/GL 分录标识 | 待执行后填写 |
| 执行结果 | 待执行 |
| 问题/偏差(附录 F 编号) | 待填写 |
| 复测结论 | 待填写 |
| 甲方业务代表签署 | 待填写 |
| 服务商执行代表签署 | 待填写 |