← 全部文档
协议实现注解
draft-04 与本实现的逐字段对照,以及本项目填补的留白。
draft-ayerbe-trip-protocol-04
1. 面包屑字段
面包屑是 CBOR map,键为 0–8 的整数。签名覆盖字段 0–7 的确定性 CBOR;块哈希是完整编码(0–8)的 SHA-256。
| key | name | type | 含义 | 备注 |
|---|---|---|---|---|
| 0 | index | u64 | 链内序号,从 0 起严格连续 | 与服务端校验一致 |
| 1 | identity | bstr(32) | Attester 的 Ed25519 公钥 | 同一条链固定不变 |
| 2 | timestamp | u64 | Unix 秒 | 决定 §4.1/§4.2 间隔规则 |
| 3 | h3 cell | u64 | H3 网格(hex 传输,避免 JS 精度丢失) | res10 约 15,000 m² |
| 4 | resolution | u8 | 7..=10 | 本实现默认 10 |
| 5 | context digest | bstr(32) | h3/时间桶/Wi-Fi/基站/IMU 的 SHA-256 | 缺失分量整体省略 |
| 6 | prev hash | bstr(32) | null | 上一块哈希;创世为 null | 构成哈希链 |
| 7 | meta flags | map | 含 exploration 会话标志 | §4.2 |
| 8 | signature | bstr(64) | 覆盖字段 0–7 的确定性 CBOR | Ed25519 |
2. 草案留白与本实现的选择
草案明确把传输绑定、命名系统与区块链锚定留给 companion specifications。这不是缺陷,而是邀请。
| 留白 | 草案 | 本实现 | 代码位置 |
|---|---|---|---|
| 传输绑定 | 草案未规定 | libp2p 中继、多验证方与实时挑战通道(companion draft 方向) | trip-server WS + GPv1 设计 |
| 命名系统 | 草案未规定 | did:geoyuan + W3C DID Document;展示名走 alsoKnownAs | trip-core::did |
| 区块链锚定 | 草案未规定 | epoch 根的 EVM 锚定与撤销模型(不发币、不锚轨迹) | GeoTITRegistry.sol |
| TIT 字段编号 | 草案未规定 | GYIP-0003 内部约定;待 -05 规范后重新 pin | trip-core::tit + 黄金向量 |
3. 数值确定性
跨实现互操作要求同一逻辑产生同一字节。以下约定被黄金向量锁定,任何语言按相同步骤实现都应落在给定容差内。
| 主题 | 约定 | 验证 |
|---|---|---|
| 确定性 CBOR | RFC 8949 §4.2 规范序,任何平台同逻辑同字节 | 黄金向量 tests/vectors/golden-vectors.json |
| PSD 数值约定 | 朴素 O(N²) DFT、f_k = k/N、普通最小二乘、IEEE-754 f64 | α 跨实现偏差 < 1e-9 |
| Levy 归一化 | 代换 t = u·e^s 后的 512 节点复化 Simpson | 偏差 < 1e-9 |
| 分位数 | 线性插值 rank = p·(n−1) | 标定报告可复现 |
| ROC | 阈值降序扫描 + 同分合并 + FPR 轴梯形 AUC | 消除并列顺序依赖 |
4. 链规则的正副实现
同一条规则在端上(WASM,拒绝写入本地链)与服务端(Rust,拒绝写入证据库)各实现一次。两者独立,因此单侧被绕过时另一侧仍会拦截——这也是本站端到端测试观察到 400 响应的原因。
实测:注入固定坐标连续采集两条时,前端「全链自检」与服务端 POST /v1/evidence 都拒绝,服务端返回 duplicate h3 cell at consecutive index 1。