EXTERNAL ANCHOR · 外部时间锚定
账本的时间戳,不在我们手里
一个只增不减的哈希链跑在自己的服务器上,只能证明「我们没有改过」;证明不了「我们没本事改」。所以每天把 账本链头的摘要提交给 OpenTimestamps 的公开日历,聚合成一笔比特币交易——从那以后,验证不需要访问 cvin.org,也不需要相信我们。
最近锚定
2026-11-05
已提交日历
锚定次数
2
每天一笔
成本
$0
免费日历,无账号
01
每天一笔,锚的是链头
每天凌晨,系统把一份固定的声明(日期 / 观测数 / 资产数 / 全局链头哈希)做 SHA-256,得到 digest,提交给四家公开日历。日历会把这些摘要聚合成一棵 Merkle 树,最终写进一笔比特币交易。
为什么锚 digest 而不是整份账本:链头能反推前一天的每一条记录——只要链头在某个时刻已经存在,那些记录就不可能在那之后被换掉。锚住 32 字节,等于锚住 12125 条。
| 日期 | 观测数 | 链头 | 状态 | 凭证 | API |
|---|---|---|---|---|---|
| 2026-11-05 | 12,172 | 15c03c722993044841698511… | 已提交日历 | 下载 .ots | JSON |
| 2026-11-05 | 12,128 | f6aae860cb0d68c58410896e… | 已提交日历 | 下载 .ots | JSON |
状态说明:「已提交日历」= 摘要已进入日历排队,比特币聚合通常 1–数小时后完成;在那之前它证明的是「已提交」,不是「已上链」。执行一次
ots upgrade 即可拿到完整的比特币证明。02
自己验一遍(四条命令)
# 1) 装客户端(Python,一次性)
pip install opentimestamps-client
# 2) 下载凭证(把日期换成表里任意一行)
curl -O https://cvin.org/anchors/2026-11-05.ots
# 3) 补全比特币证明(首次可能需要等聚合完成,重复执行直到成功)
ots upgrade 2026-11-05.ots
# 4) 验证:输出会给出比特币区块高度与时间
ots verify 2026-11-05.ots
验证通过后,你手里的结论是:这个链头在那个时间点之前就已经是这个值。接着用 conformance.js 或 cvin_replay.py 把账本逐条重放一遍,就能独立确认「链头对应的确实是这些记录」——两步合起来,才叫「不可篡改」。
03
它证明什么、不证明什么
证明
存在性与先后
该摘要(进而该日期的账本链头)在证明所载时间点之前已经存在,且此后未被替换。这条结论不依赖 cvin.org 是否还在运营。
如果某天所有日历都提交失败,这一天的记录会标成「待重试」而不是假装成功。缺一天锚定不会破坏已锚定的历史——每一天是独立的证明,不存在「链断了」的问题。
机器可读:
GET /v1/anchors · GET /v1/anchors/{date}。账本本身:/v1/ledger;独立重放脚本:cvin_replay.py。