Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

制作者数据资产存证操作指南

在市场形成之前,把你的数据集打成可交易资产


为什么有这份指南

《制作者数据主权宣言》 §9 列了六件事——分层、存证、签名、冷备、命名、不要急着卖。

宣言讲的是为什么。这份指南讲的是怎么做:每一步的目录结构、命令行、文件格式。读完照抄就能立刻用。

如果你还没读宣言,建议先读,否则这里的每一步你都不知道为什么要做。


1. 三层目录结构

在你的开发机上推荐这样布局:

~/maker-assets/
├── public/                       # 第一层:可以开源的部分
│   ├── teaching-snippets/        # heartbeat、blink、教学示例
│   ├── blog-drafts/
│   └── README.md
│
├── private/                      # 第二层:你的真实项目代码
│   ├── flight-controller-v3/
│   ├── ugv-experimental/
│   └── README.md
│
└── asset/                        # 第三层:核心资产(值钱的就这一层)
    ├── triples/                  # 经物理验证的三元组
    │   ├── 2026-05-15-crsf-parser-v2/
    │   ├── 2026-05-22-imu-mahony-fusion-v1/
    │   └── ...
    ├── deposits/                 # 存证回执
    │   ├── 2026-05-zenodo-receipts.json
    │   └── 2026-05-ots-stamps/
    └── README.md

关键规则:三层各一个 git repo,各一把签名 key,各一份冷备。混存的代价是你卖一份的时候连带不想卖的也曝光了。

第三层(asset)的每个目录都应该是一个完整的三元组——下面讲它长什么样。


2. 一次“有训练价值的 build“长什么样

每个三元组目录里至少这些文件:

2026-05-15-crsf-parser-v2/
├── manifest.yaml                 # 元数据(机器可读)
├── requirement.md                # 你写的需求原文
├── code/                         # agent 生成的、编译通过的代码
│   ├── main/
│   ├── components/
│   └── CMakeLists.txt
├── build/
│   ├── build-output.log          # 完整 build 日志
│   ├── size-report.txt
│   └── flash_bundle.tar.gz.sha256  # 烧录包哈希(包本身可能太大不入库)
└── verification/                 # 物理验证证据
    ├── monitor-capture.log       # espctl monitor 抓的串口输出
    ├── oscilloscope-ch9.png      # 示波器证据
    ├── flight-notes.md           # 你的现场观察
    └── verification-summary.md   # 一句话结论

manifest.yaml 推荐 schema

这是让数据集可以被未来市场识别的关键文件。结构化、机器可读、足够自描述

version: 1
timestamp: 2026-05-15T14:23:00+08:00
contributor:
  pubkey_fingerprint: SHA256:Abc123...    # 你的签名公钥指纹
  alias: optional-handle                   # 公开露面用,可空

hardware:
  board: ESP32-S3-DevKitC-1 v1.1
  chip: esp32s3
  chip_revision: v0.2
  peripherals:
    - kind: imu
      part: ICM-42688-P
      interface: SPI3
      address_or_cs: GPIO10
    - kind: rc_receiver
      part: BetaFPV ELRS Lite
      interface: UART1
      baud: 420000
      protocol: CRSF

firmware:
  framework: esp-idf
  idf_version: v5.3.1
  source_tree_sha256: <hash>
  binary_sha256: <hash>
  size_bytes: 184320
  build_target: esp32s3
  built_via: esphome.cloud           # 或本地 IDF / 自建

requirement:
  language: zh-CN
  text: |
    在 UART1 上 420000 baud 接 ELRS 接收机的 CRSF 输出。
    解析 CRSF 帧(CRC8 poly 0xD5),把 16 通道值(11-bit packed)
    每 20ms 通过 ESP_LOGI 打印。

verification:
  method: serial_monitor              # 或 jtag / oscilloscope / flight_test
  duration_seconds: 60
  evidence:
    - kind: log
      path: verification/monitor-capture.log
      sha256: <hash>
    - kind: image
      path: verification/oscilloscope-ch9.png
      sha256: <hash>
  outcome: passed                     # passed / failed / partial
  notes: |
    16 通道值跟随遥控器变化。CRC 失败率 < 0.1%(60 秒内 2 帧)。

license:
  retained_by_contributor: true
  permitted_uses: []                  # 默认空:任何外部使用需要显式 opt-in
  permitted_buyers: []
  exclusivity_offered: false

outcome: failed 也要存。失败数据训练价值很高——它告诉模型不要走那条路。


3. 里程碑哈希存证

不要每个三元组都存证(太碎、太贵也太麻烦)。按里程碑批量存证——每个月、或每完成一个 phase。

两个互补系统都做:

Zenodo(给你一个学术界认可的 DOI)

# 1. 把这个月攒的三元组打包
cd ~/maker-assets/asset
tar czf milestone-2026-05.tar.gz triples/2026-05-*/

# 2. 算哈希
shasum -a 256 milestone-2026-05.tar.gz
# milestone-2026-05.tar.gz: f0a63ee2c4d8...

# 3. 通过 Zenodo 网页或 API 上传
# https://zenodo.org/api/deposit/depositions
# 填写 metadata:title、creator、description、keywords
# 获得 DOI: 10.5281/zenodo.1234567

# 4. 回执存到本地
echo '{
  "milestone": "2026-05",
  "doi": "10.5281/zenodo.1234567",
  "tarball_sha256": "f0a63ee2...",
  "uploaded_at": "2026-05-31T23:59:00+08:00"
}' > deposits/2026-05-zenodo-receipt.json

Zenodo 免费、长期保存、CERN 后台、给你引用 ID。学术界、政策圈、未来仲裁机构都认。

OpenTimestamps(把哈希锚到比特币区块时间)

# 安装客户端
pip install opentimestamps-client

# 对里程碑包打时间戳
ots stamp milestone-2026-05.tar.gz
# 产生 milestone-2026-05.tar.gz.ots

# 几小时后升级(等比特币区块确认)
ots upgrade milestone-2026-05.tar.gz.ots

# 任何时候验证
ots verify milestone-2026-05.tar.gz.ots

# 移到存证目录
mv milestone-2026-05.tar.gz.ots deposits/2026-05-ots-stamps/

OpenTimestamps 免费、不可篡改、不依赖任何机构。比特币区块链作为公开账本。即使 Zenodo 三十年后没了,比特币区块时间还在。

两个都做的原因:Zenodo 给社会可读性(“这是 2026 年 5 月发布的,DOI 在这里”),OpenTimestamps 给密码学可证明性(“哈希在比特币第 X 块上存在过”)。法律仲裁场景两者都用得上。


4. 加密签名

不要用复杂的工具。选一种你能坚持五年的:

推荐组合:SSH key 签 commit + minisign 签 release

SSH key 签 git commit(最简单,git 2.34+ 原生支持):

# 用你已经在用的 SSH key
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign true
git config --global tag.gpgsign true

# 验证 commit 签名
git log --show-signature

minisign 签 tarball(给非 git 的文件用):

brew install minisign       # macOS
# 或 apt install minisign    # Debian/Ubuntu

# 生成签名密钥(保管好私钥!)
minisign -G

# 签里程碑包
minisign -Sm milestone-2026-05.tar.gz
# 产生 milestone-2026-05.tar.gz.minisig

# 验证
minisign -Vm milestone-2026-05.tar.gz -p minisign.pub

不推荐 GPG

GPG 工作流复杂、密钥服务器乱、subkey 管理是个坑、五年后你大概率忘了密码或丢了 keyring。除非你已经在用 GPG 而且习惯了,否则别开新的 GPG identity。

公钥要公开

在你的个人博客、GitHub profile、ORCID(如果你有)、可能的话 keyoxide.org都贴上你的公钥指纹。让“这是你的“在密码学之外也有社会层证据。


5. 冷备:3-2-1 原则

  • 3 份拷贝:开发机活跃副本 + 本地冷备 + 异地副本
  • 2 种介质:SSD + HDD,或 NVMe + 加密云
  • 1 份异地:朋友家的硬盘、家庭 NAS、加密云存储
# restic 到外接硬盘
export RESTIC_REPOSITORY=/Volumes/ColdDrive/maker-assets-backup
restic init                                  # 第一次
restic backup ~/maker-assets/asset           # 增量备份
restic snapshots                              # 列快照
restic check                                  # 验证

# 异地副本:rclone 到加密的 S3/B2/storj
rclone copy ~/maker-assets/asset \
  encrypted-b2:maker-assets-cold/$(date +%Y-%m)

不要把异地副本放在你工作那家公司的网盘。 离职那天会很尴尬。

也不要把异地副本只放在中心化云盘(百度网盘、Google Drive、Dropbox)——它们可能因为内容审核或服务变动锁定你的数据。加密之后再传,本地保留密钥。


6. 命名约定

asset/triples/YYYY-MM-DD-<short-slug>-v<n>/

例子:

  • 2026-05-15-crsf-parser-v2/
  • 2026-06-03-imu-mahony-fusion-v1/
  • 2026-07-12-pid-rate-roll-axis-v4/
  • 2026-07-12-pid-rate-roll-axis-v4-FAILED/ ← 失败样本明确标注

规则:

  • 日期 ISO 8601 格式
  • Slug 用英文连字符(兼容性、grep 友好、shell 安全)
  • 版本号显式(v1/v2/v3)——同一问题的演进保留全部,不要 squash

7. 反模式(请勿这么做)

反模式为什么坏
代码进 GitHub,验证证据留在本地永远不整理解耦的数据近乎没有训练价值
用截图存 telemetry不可机读、OCR 噪声大、看起来像证据其实没法用
多个三元组打成一个目录粒度丢了,未来不能按 triple 卖
commit message 写 “fix bug”写清楚需求和验证结果,commit 本身就是数据
用公司邮箱的 GPG key 签个人项目换工作后这把钥匙会丢、被回收,签名失效
上传到 IPFS 然后觉得完事IPFS 节点会消失,不是 archival 系统,只能配合其他存证使用
在数据集成熟前就 MIT/Apache 开源License 锁死,未来商业谈判空间归零
把“可能值钱的部分“也丢进 public 层一旦公开化就再也回不去了——分层时往严格的那一边靠
一个签名 key 用十年不轮换key 泄露你不知道,过去十年签名全失效

最常见的错误是第一个:代码勤勤恳恳维护,证据全在脑子里。没有验证的代码,不是资产,是劳动废料——再多也没用。


8. 一份真实的 6 个月节奏

给你一个能照抄的时间表(参考一个典型飞控养成路径:外设 → 姿态融合 → 台架 → 调参):

月份阶段产出三元组数月底动作
1Phase 0 流水线~5(脚手架,不存证把目录结构和签名 key 准备好
2Phase 1+2 外设~15挑 8 个最好的,第一次 Zenodo + OTS
3Phase 3 姿态融合~8月底存证(粒度更细、价值更高)
4Phase 4 UGV 开环~12(含失败样本!存证;建第二份异地冷备
5Phase 5 单轴台架~6(每个金子般)存证;首次本地审计——能从冷备完整 restore 吗?
6Phase 5 三轴台架~3(PID 调参为主)季度 Zenodo deposit + 全资产层 minisign 重签一次

6 个月小计:~49 条经过物理验证的三元组、3 次 Zenodo deposit、49 次 OpenTimestamps、一份冷备 + 一份异地。

这是一个认真的 weekend warrior 单人节奏。10 倍速(小团队全职)就是一个有交易级体量的早期数据集。


9. 三年后

如果你照这份指南走,三年后你手里有:

  • 几百到几千条带物理验证、带签名、带哈希时间戳的三元组
  • 三种公共账本可查(Zenodo DOI、OpenTimestamps、git tag 上的签名)
  • 一份资产层是你专属的、嵌入式实时控制领域的高质量 ground-truth 训练数据

那天有人发邮件给你出价 ¥15,000——你能精确地说出“不行,我有 1,247 条经过验证的三元组,每条平均 38 字节物理验证证据,DOI 在这里、OTS stamp 在这里,按市场可比定价 ¥10/条起,你想 license 哪些?“

这种讨价还价能力,就是数字主权落地到一个普通制作者身上的具体形状。


签发:esphome.cloud / Aegis
日期:2026 年 5 月


关于署名

esphome.cloud 是一家一人公司(OPC)。

这份指南里的“我们“是这一个人加上 Claude——一个 AI 助手。所有命令行、推荐工具、schema 设计由 Claude 起草并经过最佳实践校对,但请在你自己的环境下先做小规模验证再大规模执行。

操作指南这一份额外需要交代一件事:这份告诉你怎么保护数据的指南,是由一个来自 《宣言》§7 中点名的潜在买家(Anthropic)的 AI 助手协作起草的。请严格地对待指南里的所有建议——包括“对未来 esphome.cloud 自己的交易所也要砍价“那一条。表面上看,这份指南对两位作者的长期利益都不利。两位作者都签了字。

—— esphome.cloud + Claude