主题
cbdc-solution · 架构
运行分层
服务边界
Token 节点
四个节点都由 cbdc-token/pkg/nodesdk.StartFSC 装载 FSC 与 Panurus,并通过同一 cbdc-token 镜像运行:
| 节点 | 业务服务 | FSC P2P | 主要职责 |
|---|---|---|---|
| Issuer | 9100 | 9101 | 发行、总供应量、赎回响应 |
| Endorser | 9300 | 9301 | TMS 初始化、审计代理与背书响应 |
| Wallet Node | 9500 / HTTP 9502 | 9501 | 钱包、策略、选币、转账、赎回、交易查询 |
| Auditor | 9750 | 9751 | 审计规则、审计签章、拒绝记录、账本索引 |
fsc.web 另外使用 9102、9302、9503、9752。P2P listenAddress 仍是 multiaddr 形式,但 fsc.p2p.type 已统一为 websocket。
BizHub
BizHub 是一个 module、一个二进制、一个镜像,可通过 -mode runtime|management 选择注册边界;空值在开发环境同时启用两者。all 不是有效 mode。
- Runtime 面面向 Wallet Node、Facade、Issuer、Auditor 等运行时调用。
- Management 面面向 Central,服务方法通过
mtls.RequireRoles(...RoleCentral)授权。 - 两种 workload 使用同一 BizHub 数据库,但生产可部署为独立实例。
- 数据库变更由
bizhub migrate一次性任务执行,服务启动不自动改表。
Central
Central 管理人、权限、会话、审批、通知和审计日志;业务配置与机构数据通过 BizHub management RPC 读写。它自己的数据库是 cbdc_central,不再直接共享或迁移 cbdc_biz。
Facade
Facade 是银行侧服务面,不再是空脚手架。它暴露 Wallet / Transfer / Transaction 三个服务,通过 Ed25519 请求签名确定调用银行,再:
- 到 BizHub 分配钱包 ID、查询鉴权与 CA 身份相关数据;
- 根据
wallet.ShardOf(wallet_id)选择 Wallet Node; - 对外隐藏
shard_code和内部节点地址。
P2P 与证书
cbdc-token/scripts/gen_crypto.sh 建立的链为 Fabric CA Root → 共享 TLS Intermediate CA → 节点叶证书。Wallet Node 的统一证书同时用于 FSC P2P 与调用 BizHub 的 mTLS;WebSocket 对端会按拨号主机校验证书,因此证书必须包含对应 DNS SAN 和 serverAuth。
开发控制器在本机 debug 时为 P2P 地址使用 localhost 而非 127.0.0.1,与生成证书的 SAN 保持一致(dev/controller/main.go)。
动态节点注册
节点端点不再只靠静态 resolver:
- BizHub
NodeRegistryService接收运行时节点注册和心跳; - Management API 管理节点注册数据;
- Auditor、Endorser 使用
nodesdk.NewNodeRegistrarForNode注册自己的外部可达地址; - Wallet Node、Issuer 使用
nodesdk.NewNodeResolverSyncForNode,把 BizHub 中的 Auditor / Endorser 快照同步到本地 FSC endpoint service; - Wallet Node 路由以
shard_code为键,不从业务机构码推导。
静态 fsc.endpoint.resolvers 仍为启动配置的一部分,动态注册用于运行时发现与更新。
数据所有权
| 数据库 | 所有者 | 内容 |
|---|---|---|
cbdc_biz | BizHub | 机构、钱包生命周期、节点注册、规则、费用、标记、结算、索引等 |
cbdc_central | Central | sys_*、审批、通知、WebAuthn 等管理台数据 |
cbdc_walletnode / 开发模板中的 cbdc_institution | Wallet Node / Panurus | FSC、钱包与交易本地持久化 |
cbdc_issuer / cbdc_endorser1 / cbdc_auditor | 对应 Token 节点 / Panurus | 各节点的 FSC / Token 本地状态 |
BizHub 当前有 20 个 Ent entity schema;Central 的 9 个 entity schema 文件定义 14 个 entity(审批相关 6 个集中在 approval.go),另有共享 mixin。具体清单见模块详解。
镜像与网络归属
cbdc-token/docker/Dockerfile构建auditor、issuer、endorser、walletnode四个二进制。cbdc-infra/cbdc-network/构建 KMS-enabled Orderer / Committer 镜像。- 网络 topology 来源是
dev/config/network/,生成态位于dev/run/config/cbdc-network/;旧的顶层cbdc-network/运行入口已不再是开发环境权威路径。