完整性
亲自验证本档案。
本档案随附的每个文件均已公布 SHA-256 哈希值。本页使用浏览器自带的 Web Crypto API,在你的浏览器中重新计算这些哈希值,并与清单进行比对。整个流程中不信任任何 kakao.io 服务器端点。如果源代码仓库到你屏幕之间的任何环节被篡改,校验将明确显示失败。
零信任原则——验证器是嵌入本页的纯 JavaScript 代码,你可以通过查看源代码阅读它。它会获取数据集、在本地计算哈希、获取清单并进行比对。结果完全在你的设备上计算得出。
校验 cacao-origins.json
校验所有源文件
校验某条具体的产地记录
通过命令行验证数据集哈希
如果你完全不想依赖浏览器代码,使用标准 Unix 工具即可轻松完成同样的校验。
# Verify the dataset hash matches:
curl -s https://kakao.io/data/cacao-origins.json | shasum -a 256
# Compare against the hash in:
curl -s https://kakao.io/.well-known/source-manifest.json \
| jq '.files["data/cacao-origins.json"]'
在本地验证 OpenTimestamps 证明
每条产地记录还使用 OpenTimestamps 进行了加盖时间戳——这是一种免费、由比特币锚定的时间戳协议。该证明将记录的 SHA-256 折叠进已发布的比特币区块头中,因此该记录在该区块时间戳时的存在性可通过加密手段证明,无需信任我们或任何时间戳颁发机构。
# Install the OpenTimestamps client:
pip3 install opentimestamps-client
# Download an origin record and its proof:
curl -O https://kakao.io/data/ots/records/ve-chuao.json
curl -O https://kakao.io/data/ots/records/ve-chuao.json.ots
# Verify — folds the Bitcoin block hash into a verification chain:
ots verify ve-chuao.json.ots
工作原理
SHA-256 通过 window.crypto.subtle.digest 在你的浏览器中计算——这与 TLS 和 HTTPS 使用的是同一原语,所有现代浏览器原生支持,无需 polyfill。清单是一个小型 JSON 文件,列出每个随附文件的预期哈希值。OpenTimestamps 证明会提交至公共日历服务器,并聚合至比特币区块链——无需账户、无需付费、无需信任任何中心化机构。以上三项校验全部为纯客户端计算。