8db9d33694
- A.1 备案对接: BindFiling/QueryFiling 关联网标号+备案号 - A.2 监管上报: DailyRegulatoryReport 日报 - B.1 号段管理: ListSegments + /admin/segments - C.1/C.2 全国统计按省聚合 + 跨省协同(单一可信源天然联动) - F.2 全国监管大屏: NationalStats(按省/类目/状态) - B(遗留) 监管大屏BFF: internal/bff + cmd/console-bff, 密钥仅存后端浏览器只用会话令牌 - G 真实链合约源码: contracts/tcs_registry/registry.go (ChainMaker Go) - 新增9个API+BFF服务; 5项新测试; 端到端BFF验证 - D/E(压测/等保/HSM)/F.1(标准)/真实链部署 标注需外部环境
tcs_registry — ChainMaker 智能合约(Go)
可信数据空间的链上合约,实现 TCS-IPTV 的四类核心数据结构与合约方法。
与 internal/chain 的 Client 接口语义一一对应:MVP 用 MemoryChain 开发测试,
真实部署时由 chain-svc 通过 ChainMaker Go SDK 调用本合约。
合约方法(对应需求16-AC2)
| 方法 | 权限 | 说明 |
|---|---|---|
IssueMA(maCode, ctid, merkleRoot, fileHash, contentJSON) |
仅监管节点 | 签发 MA 码并 1:1 强绑定哈希;不可重复、不可解绑 |
RegisterHashBinding(ctid, bindingJSON) |
审核/监管 | 追加哈希绑定(转码版父子关系) |
RegisterMapping(ctid, party, partyID, cdnEndpoint) |
三方 | 注册编码映射;MA 必须已签发 |
VerifyHash(maCode, fileHash) -> bool |
任意 | 校验提交哈希与绑定哈希是否一致 |
QueryContent(maCode) -> json |
任意 | 查询内容主记录 |
QueryMappings(maCode) -> json |
任意 | 查询全部三方映射与 CDN 端点 |
RecordVersionChange(ctid, vcJSON) |
审核/监管 | 记录版本变更,触发重审 |
Revoke(maCode, reason) |
仅监管节点 | 下架,返回受影响映射 |
权限模型(对应需求14)
合约内通过 sender() 的组织/角色证书判断调用方身份:
RoleRegulator(监管主体):IssueMA/Revoke唯一发起方RoleReviewer(审核主体/CSPS/媒资库):哈希绑定、版本变更RoleCP:送审时注册哈希、本方映射RoleOperator:注册本方映射、验真
国密
底层链使用长安链 ChainMaker(国密 SM2 签名 / SM3 哈希)。 内容哈希在链外用 SHA-256 计算(哈希SDK),链上仅存哈希值与映射,明文不入链(需求20-AC2)。
状态键设计(KV)
content:{maCode} -> Content JSON
binding:{maCode}:{idx} -> HashBinding JSON
hashidx:{fileHash} -> maCode (防换壳重发)
mapping:{maCode}:{idx} -> Mapping JSON
version:{maCode}:{idx} -> VersionChange JSON
ctid2ma:{ctid} -> maCode
构建与部署(真实链,二期接入)
# 依赖 ChainMaker contract SDK
go mod init tcs_registry
# 编译为 wasm 或 docker-go 合约,按 ChainMaker 部署流程发布
MVP 阶段:业务逻辑与规则已在
internal/chain.MemoryChain完整实现并测试通过, 本合约为真实链落地的等价实现规格,二期搭建 ChainMaker 测试网后落地替换。