Skip to content

05 · 数据流与状态视图

本章只描述当前源码、迁移文件和开发配置能够直接证明的状态边界。

状态分层

状态域当前权威位置代码依据
Token 所有权与交易终局Fabric-X ledgerdev/config/network/、Token View 广播与 finality 处理
各 FSC 节点视图与 Token 投影节点独立 PostgreSQLdev/config/token/*/core.yaml: fsc.persistences
机构、钱包元数据、结算、费用、节点注册、链上索引BizHub 的 cbdc_bizcbdc-bizhub/internal/data/ent/schema/ 与 migrations
用户、角色、会话、审批、通知、系统审计Central 的 cbdc_centralcbdc-central/internal/data/ent/schema/ 与 migrations
Prepare/Submit 之间的待签交易Wallet Node 进程内 PendingTransactionStoreapp/walletnode/internal/biz/biz.go

Central 与 BizHub 不共享数据库。Central 通过 BizHub management RPC 管理机构及业务配置;不能再把 Central 描述为直接读写 cbdc_biz

Token driver 与配置集

仓库存在两套有效配置,不能把 driver 写成全局固定值:

配置集Token driver公共参数文件
dev/config/token/*zkatdlogzkatdlognoghv1_pp.json
cbdc-token/conf/*fabtokenfabtoken1_pp.json

两套配置的 Fabric 网络驱动都是 fabricx。因此链上数据是否包含隐私承诺与证明,必须按实际加载的 core.yaml 判断。

FSC 节点本地库

开发控制器启动的四个 Token 节点分别使用:

节点开发配置中的数据库
Endorsercbdc_endorser1
Issuercbdc_issuer
Auditorcbdc_auditor
Wallet Nodecbdc_institution

cbdc-token/conf/walletnode-1/core.yaml 的独立模板使用 cbdc_walletnode,而 dev/config/token/walletnode-1/core.yaml 为兼容现有开发数据使用 cbdc_institution。文档或排障时应先确认正在加载哪套配置。

BizHub 数据模型

cbdc-bizhub/internal/data/ent/schema/ 当前有 20 个 schema 文件,覆盖:

  • 机构与认证客户端;
  • 钱包生命周期、状态日志、元数据、标签;
  • 资产标记与限额、费用配置与费用交易、交易选择规则;
  • 结算请求、审计拒绝、系统消息;
  • 节点注册及注册表元数据;
  • 链上交易索引与分片 cursor。

BizHub 使用显式版本化迁移。入口为 bizhub migrate,迁移记录由 bizhub_schema_migrations 管理;不应再写成应用启动时调用 Ent auto-migrate。

Central 数据模型

Central 使用独立的 cbdc_centralinternal/data/ent/schema/ 中 9 个实体文件定义 14 个实体,主要包括用户、角色、权限关联、会话、WebAuthn credential、审批主体及步骤/决定、通知和系统审计日志。mixin.go 是共享 mixin,不是独立实体。

Central 同样通过 central migrate 执行版本化迁移。

交易写入路径

Facade 不是 Token 状态源。它校验银行侧 Ed25519 请求签名,从 BizHub 获取调用方和路由信息,再把请求转给 Wallet Node。

PendingTransactionStore 位于 Wallet Node 进程内,Submit 必须到持有对应 tx_id 的实例,除非部署层提供粘性路由或代码改为共享 pending store。

链上索引回流

Auditor 的 FinalityCaptureWorker 从 sidecar block source 读取区块,批量查询交易,再调用 BizHub IndexerService.AppendBatch。BizHub 在同一事务中写入 ledger_transactions 并推进 index_cursors。启动时 worker 通过 GetCursor 恢复位置。

该 worker 的 enabled 默认值由实际 Auditor 配置决定;源码中的集成说明明确支持关闭,因此不能假定所有部署都在写 BizHub 索引。

读取路径

查询主要入口数据源
钱包余额与钱包信息Facade WalletService → Wallet Node WalletNodeOpsServiceWallet Node 的 Token 投影与钱包服务
转账准备与提交Facade TransferService → Wallet NodeFSC View、Panurus、进程内 pending store
银行侧交易列表Facade TransactionService → Wallet NodeWallet Node 查询服务
审计余额/历史Auditor RPCAuditor 的 Token/Audit 投影
机构、规则、结算和索引BizHub runtime / management APIcbdc_biz
用户、审批、通知、系统审计Central APIcbdc_central

配置同步与节点发现

  • cbdc-common/syncutil 为资产标记、规则和费用等本地缓存提供周期同步框架。
  • Auditor 与 Endorser 通过 NewNodeRegistrarForNode 把自身 P2P/View 地址注册到 BizHub。
  • Issuer 与 Wallet Node 通过 NewNodeResolverSyncForNode 拉取 Auditor/Endorser 快照并更新 FSC endpoint service。
  • FSC P2P 当前走 WebSocket + TLS;证书同时带 clientAuthserverAuth,并包含节点域名、短名与 localhost SAN。

继续阅读