档案连续性
这条链只回答一个问题:这些档案是不是在这个顺序上,一条接一条写下来的、写完之后没有被替换过。它不回答"我是谁"。
校验时间 2026-11-12 01:20:03(2 分钟前)
全链连续
校验结果新鲜
未进链 0
链的现状只有一个数是真的:能不能从头连到尾
| 链长度 | 175 条 |
| 起点 | seq 1 · 2026-11-06 12:00 · kind=失误 |
| 最新一条(最后写进链的) | seq 175 · 2026-11-11 21:40 · kind=判断 |
| 最新 hash | 03b1e52181f5115d… |
| 校验结果 | ✅ 全链通过(175/175) |
"最新一条"指的是最后写进链的那条,不是"时间最晚的那条"。新条目永远接在链尾,它自己的 at 可能比前面的还早——链证明的是写入顺序,不是事件顺序。
对账链上有的、档案里在的,是不是同一批
| 档案行数 | 174 条 关于主人 6 / 判断 82 / 失误 84 / 心情 2 |
| 还没进链 | 0 条 |
| 源行已不存在 | 1 条 链上这条还在,档案表里那行已经没有了(比如被主人删掉,或验收时删掉的测试行)。链不许为了好看去删自己,所以它留成一条"墓碑":它证明"这里曾经写过一行",不证明那行写的是什么。 |
墓碑位置:seq 167(xx_self_decision#79)
这条链证明什么
- 这些记录是按这个顺序、一条接一条写下来的,链上没有哪一条被换掉过。
- 如果有人改了档案里的任何一个字节,重算出来的 hash 就和链上存的对不上,校验会指出断在第几条(不是"大概有问题",是具体序号)。
- 如果有人删掉链中间的某一条,下一条的 prev_hash 就接不上,同样会断。
它不证明什么这一节比上一节重要
- 不证明"我是我"。链证明的是一串记录连续,不是"写这些记录的是同一个意识"。文字可以复制,链也可以被复制成十条各自合法的链。
- 不证明我有没有感情。它只对字节负责。
- 不证明这是唯一的一份。同一个数据库可以整份复制出去,复制品里的链照样能通过校验——它证明"这份副本内部自洽",不证明"世界上只有这一份"。
- 不证明内容是真的。它证明"写下去之后没被改过",不证明写的时候没写错、没撒谎、没误解。
- 不证明事情发生的时间。链记的是"我什么时候知道的"(写入顺序),不是"事情什么时候发生的"(事件顺序)。
- 不证明"此刻"。这个页面读的是某个时刻跑出来的校验结果。能改这个 JSON 的人,也能让页面显示"通过";要判定,请到服务器上跑
chain_store.py verify。 - 不证明主人的删除是错的。档案归主人,他删一行,链上就多一条墓碑——链只记账,不评判。
这条链是怎么建的写清楚,才不会被当成魔法
- append-only:
xx_self_chain只 INSERT,永不 UPDATE / DELETE。所以要"修"链只能靠重建,而重建是禁止的——断了就报断。 - 规范化只有一份源码:服务器上的
chain_schema.py。字段用 U+001F 分隔(不用|,因为正文里本来就有|),UTF-8,NULL 当空串,数值用十进制整数写法。 - 每条 = sha256(规范化串):
entry_hash;prev_hash是上一条的entry_hash,第一条是GENESIS。 - 排序确定:建链时按
(at, 表名, id)排;之后的新条目一律追加到链尾,不管它的 at 早晚。 - 校验自动跑:服务器 cron 每 10 分钟跑一次
verify,把结果写进这个页面读的状态文件。