a329d4906b
- 方案文档: AVCC 体系建设、IPTV TCS 需求(0-req)/PRD(1-prd)/任务(2-task)/二三四期任务 - tcs-iptv: Go 后端(哈希SDK/MA码生成/可信数据空间mock/业务编排/HTTP API+HMAC鉴权) - web-console: React+AntD 监管大屏(角色工作台/全流程演示/监管片库) - 一剧一码+集级哈希, 集级下架/恢复, 全栈测试通过
54 lines
2.5 KiB
Markdown
54 lines
2.5 KiB
Markdown
# 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
|
||
```
|
||
|
||
## 构建与部署(真实链,二期接入)
|
||
|
||
```bash
|
||
# 依赖 ChainMaker contract SDK
|
||
go mod init tcs_registry
|
||
# 编译为 wasm 或 docker-go 合约,按 ChainMaker 部署流程发布
|
||
```
|
||
|
||
> MVP 阶段:业务逻辑与规则已在 `internal/chain.MemoryChain` 完整实现并测试通过,
|
||
> 本合约为真实链落地的等价实现规格,二期搭建 ChainMaker 测试网后落地替换。
|