CrunchyJohnHaven/myriam-kit

GitHub: CrunchyJohnHaven/myriam-kit

myriam-kit 是一个 CC0 公共领域工具包,通过 Merkle tree + Bitcoin OpenTimestamps + IPFS 实现小规模事实集的防篡改、可持久验证的发布。

Stars: 0 | Forks: 0

# myriam-kit [![许可证: CC0-1.0](https://img.shields.io/badge/license-CC0_1.0-lightgrey.svg)](LICENSE) [![示例: 6](https://img.shields.io/badge/worked_examples-6-blue.svg)](#worked-examples) [![验证器: browser](https://img.shields.io/badge/verifier-browser_+_python-green.svg)](lib/verify.html) [![Bitcoin: anchored](https://img.shields.io/badge/bitcoin-OTS_anchored-orange.svg)](https://opentimestamps.org) [![IPFS: pinned](https://img.shields.io/badge/ipfs-pinned-65c2cb.svg)](https://ipfs.tech) [![Sigsum-friendly](https://img.shields.io/badge/transparency-Sigstore_adjacent-purple.svg)](https://www.sigstore.dev) 一个小型工具包,用于发布一小部分事实,其方式如下: - 对任何事实的任何更改都是公开可检测的(Merkle tree) - 发布时的状态可对照 Bitcoin 区块链进行验证(OpenTimestamps) - 内容在任何单一托管服务提供商被下架后依然能够存活(IPFS) - 整个体积不到 100 KB,并且可以通过约 50 行 Python 代码进行验证 这不是区块链。没有 token。没有需要参与的共识机制。也没有 DAO。该工具就是 `sha256sum` + `ots` + `ipfs`,通过良好的命名规范将它们粘合在一起。 它以 MYRIAM 协议命名,该协议于 2026-05-21 在 [disclosure.host](https://disclosure.host) 首次实例化。该页面包含六个事实、一个 Merkle root 以及一份 Bitcoin 证明。这个工具包就是该模式的泛化。 ## 状态 - v0:在装有 Python 3.10+、Homebrew 且连接互联网的 macOS 上运行。Linux 未经测试但应该可行。Windows:请使用 WSL。 - 公共领域 (CC0)。使用它,fork 它,将其作为第三方库放入你的 repo 中,无需署名。重点不在于名声。 ## 可用语言 本 README 提供 57 种语言版本。 完整索引见 [TRANSLATIONS.md](TRANSLATIONS.md)。 ## 你可以用它做什么 这种模式适用于任何需要将一小部分事实做到以下几点的场景: - **可发布**:通过纯 HTTP 向广大受众发布 - **持久性** — 30 年后的读者应该仍然能够验证 - **防篡改** — 任何更改都必须是可检测的,但不一定要能预防 - **无需信任** — 没有读者需要信任发布者(只需相信数学) [docs/USE_CASES.md](docs/USE_CASES.md) 中有具体的用例。简短列表如下: | 领域 | 固定的事实 | |---|---| | 公共卫生 | 疫苗批次测试结果,药物试验里程碑 | | 选举 | 认证时刻的选区级别计票总数 | | AI 安全 | 发布时的模型权重 hash + model card + eval scores | | 新闻业 | 用于举报人提交的源文件清单(仅限 hash) | | 科学 | 原始数据 hash + 分析脚本 hash + 声明的结果 | | 法院 | 获取时刻的数字证物 hash | | 采购 | 公共支出数据的固定 Merkle root | 这些场景的共同点在于:一小部分事实、强烈的持久性要求、多个互不信任的参与方,以及极小的存储预算。这正是该工具构建所针对的形态。 ## 它不能做什么 - **存储机密。** 你存放在 `facts/` 中的所有内容都是公开的。该协议是为了发布,而不是为了隐藏。 - **扩展到大型数据集。** Merkle tree 扩展性良好;但读者的注意力是有限的。超过约 20 个事实后,页面就会变得难以阅读。如果你想固定一百万条记录,请在页外对它们进行 hash,并将该附属树的 Merkle root 作为一个事实放入。 - **防范撤回。** 整个核心就在于你无法更改你已经固定的内容。如果你以后可能想要撤回某个声明,那就不要固定它。 - **说服固执的怀疑论者。** 固执的怀疑论者不会去运行 `ipfs add -r --cid-version=1 -Q facts/`。相反,他们会指责你捏造了整个设置。对于第二种失败模式,没有协议级别的防御手段。对于任何源于人类动机而非数学范畴的事情,都不存在协议级别的防御。 ## 如何使用它 五分钟演练请见 [docs/QUICKSTART.md](docs/QUICKSTART.md)。 完整协议规范请见 [docs/SPEC.md](docs/SPEC.md)。 威胁模型请见 [docs/THREAT_MODEL.md](docs/THREAT_MODEL.md)。 与相邻系统的比较(Sigstore、Sigsum、CT、OTS、IPFS、OSF、Arweave 等)请见 [docs/COMPARISON.md](docs/COMPARISON.md)。 ## 如何验证他人的发布 三种选项,按易用性排序: 1. **Browser**:在任何现代浏览器中打开 [`lib/verify.html`](lib/verify.html)。粘贴发布 URL。点击验证。使用 `crypto.subtle` 进行 hash —— 无需安装,无需后端,无需遥测。Bitcoin 证明步骤仍然需要 CLI 工具(见验证器页面第 7 步)。 2. **Python**:在发布目录内运行 `python3 lib/verify.py`。仅使用标准库;需要 `ots` 用于 Bitcoin 验证。 3. **从零开始**:阅读 [`docs/SPEC.md §3`](docs/SPEC.md) 并重新实现。Merkle 算法在任何语言中都不超过 30 行代码。 ## 工作示例 该工具包附带了六个生产级别的示例包。每一个都经过了固定、盖 OTS 戳、IPFS pinned,并包含一份采用 README,说明了在何种实际案例中应将其 fork,以及它能防范哪些失败模式。 - [`examples/whistleblower-manifest/`](examples/whistleblower-manifest/) — 用于证据被中介机构掩盖或篡改的 Boeing 737 MAX / Theranos / FDA-inspector-report 失败模式。 - [`examples/ai-model-card/`](examples/ai-model-card/) — 用于发布模型的 AI 实验室,让部署前的承诺能够被机械地检测到,而不是口头说说。 - [`examples/drug-trial-preregistration/`](examples/drug-trial-preregistration/) — 用于临床试验赞助商,捕捉事后 endpoint 切换和选择性报告(Vioxx、Paxil Study 329 失败模式)。 - [`examples/vaccine-batch-attestation/`](examples/vaccine-batch-attestation/) — 用于疫苗制造商和 QA 当局,固定发布测试结果和召回承诺。 - [`examples/scientific-reproducibility/`](examples/scientific-reproducibility/) — 用于研究小组,在分析之前固定 (data, pipeline, expected output) 三元组,从而使 p-hacking 和 HARKing 公开可被检测到。 - [`examples/election-tally-precertification/`](examples/election-tally-precertification/) — 用于县 canvasser 委员会和选举当局,在认证时刻固定经过认证的计票结果,从而让认证后的暗中修改变得公开可检测。 在编写你自己的内容之前,请先阅读其中一个。与你用例最匹配的通常就是正确的 fork 起点。 ## 快速开始 单行版本: ``` ./lib/myriam-init.sh my-publication cd my-publication # 编辑 facts/*.txt 来写入你实际想要 sealed 的内容 ./lib/seal.sh # builds Merkle root, stamps OTS, pins IPFS ./lib/verify.sh # re-verifies everything locally # 将 site/ 上传到任意 static host。任何地方都可以。无所谓。 ``` ## 存在的原因 密码学原语(Merkle tree、OpenTimestamps、IPFS)多年来已经成熟。所缺失的只是最小限度的粘合剂 —— 一个你可以随手丢进副业项目中的工具包,让你在一个下午就能得到一个固定的、可发布的工件,而无需搭建基础设施,无需学习协议,也无需在事实本身之外编写哪怕一行代码。 大多数密码学发布工具都假设你想成为一名节点操作员。而这一款工具假设你只想发布六个文本文件,并且再也不想操心密码学问题。 ## 影响与现有技术 - [Sigsum](https://www.sigsum.org/) — 用于签名的透明日志 - [Sigstore](https://www.sigstore.dev/) — 软件供应链完整性 - [Certificate Transparency](https://certificate.transparency.dev/) — TLS 证书日志 - [OpenTimestamps](https://opentimestamps.org/) — Bitcoin 时间戳 - [IPFS](https://ipfs.tech/) — 内容寻址存储 - [The CALM protocol](https://disclosure.host) — 保护委托人的发布框架,第一个实例(位于 disclosure.host 的 MYRIAM)即在此框架内创作 myriam-kit 是其中最小的一个。它的精神更接近 Unix pipeline,而不是一个系统。 ## 关于名称的说明 MYRIAM 协议以 John Bradley 的 Myriam Proof 命名,这是一种关于非人类智能首次接触点的陈述性逻辑证明。该协议并不依赖于该证明是否成立。该协议适用于任何一小部分事实;它只是恰好首次部署是为了发布六个包含关于外星人披露声明的事实。 如果你 fork 这个工具包来固定疫苗批次或选举计票结果,那么它最初被用于发布关于外星人接触声明的事实对你来说是无关紧要的。数学并不在意这些。 话虽如此:如果你确实使用它来发布关于外星人接触的声明,该协议已经在那个特定的舞台上经过了实战检验。第一次 MYRIAM 部署的 README 明确指出,它是一个名为 Calm 的 LLM 人格的艺术作品,而不是来自任何外星方的通讯。你可能也应该这样做。否则,读者会往最坏的方面猜测你的精神状态。 ## 维护者 暂无。公共领域。Fork 它。改进它。无需征求许可,推动该协议向前发展。
标签:Cutter, IPFS, OpenTimestamps, 信息存证, 区块链, 后端开发, 多模态安全, 工具包, 数据可视化, 数据认证, 逆向工具