词条 · 加密与分布式 · 入门
时间戳服务器
把指纹公开发布,每个新指纹裹住上一个,串成改不回去的链
也称:时间戳服务器、时间戳、时间戳链、timestamp、timestamp server、timestamping
先看它到底在证明什么,因为这一点很容易想错。
先看一个麻烦:怎么证明你早就想到了
你今天想出一个点子,写在纸上。你担心三个月后别人拿出同一个点子说是他先想到的。
你想要的东西听起来很朴素:一个能让第三方相信”这张纸在今天就已经存在”的办法。
难点在于,纸和字本身不带日期。你在纸上手写”2026 年 7 月 31 日”毫无用处——三个月后你也能写同样一行字,然后声称是今天写的。任何你自己能事后补上的东西,都不能用来证明时间。
反过来想一层:其实你要的不是”精确到几点几分”,而是一个上界——证明它不晚于某一刻。这个区别后面很关键。
朴素尝试为什么都不够
招数一:把纸锁进抽屉,等需要时拿出来。 没用。抽屉里的东西什么时候放进去的,只有你知道。所有”我自己保管证据”的方案都栽在这里:你既是当事人又是保管人。
招数二:寄给自己一封信,靠邮戳。 方向对了——引入了一个和你没有利害关系的第三方。但邮戳能伪造,信封能拆开重封,而且这只保护了这一份东西,无法扩展到一天上万件。
招数三:找个公证人,他记本子并盖章。 这是现实里的标准答案,也确实解决了”自己既当事又保管”的毛病。但它把全部信任压在一个点上:
- 他可以倒填:收钱之后往本子早一点的位置补一行;
- 他可以丢:本子烧了,你所有的章一起失效;
- 他可以串通:和你的对手一起改一行,外人无从核对;
- 他必须被信任才有用,而”必须被信任”本身就是要消掉的那个东西。
招数四:找一百个公证人,各记一本。 篡改门槛高了很多,因为要同时改一百本。但仍有两个洞:本子之间互不咬合,改动某一本的第 50 行不会破坏这本的第 51 行;而且各本记录顺序不一致时,你无法判断哪一本才对。
招数五:把内容登在报纸上。 白皮书引用的那几篇早期文献走的正是这条路。报纸有个优势前面全没有:它印了几十万份、散在几十万人手里,事后改不了。但一天登不了一万条,而且每条彼此独立——把第 3 天的那份报纸整个抹掉,剩下的第 2 天和第 4 天不会露出破口。
五次失败凑出三条要求:
- 发布必须公开且广泛——证据的力量来自”太多人手里有副本,改不完”;
- 一条记录必须能概括任意多内容——否则登不下;
- 记录之间必须互相咬合——抽掉中间一条,后面全部露破口。
第 2 条正是哈希函数干的事。第 3 条是这一条真正的新东西。
机制:让后来者当前人的证人
白皮书第 3 节的原话是:时间戳服务器取一批待盖章内容的哈希,把这个哈希广泛发布;每个时间戳都把前一个时间戳包含进自己的哈希里,形成一条链,每一个都在强化它之前的所有。
第 1 批内容 ──┐
├─→ H → t1 ──┐
│ │(t1 被喂进下一次哈希)
第 2 批内容 ──────────────→ ├─→ H → t2 ──┐
│ │
第 3 批内容 ───────────────────────────→ ├─→ H → t3
手算一遍。用小号哈希 H(上一个时间戳, 本批内容) = (上一个 × 31 + 本批内容) % 1000,三批内容的指纹是 412、77、903:
t1 = (0 × 31 + 412) % 1000 = 412
t2 = (412 × 31 + 77) % 1000 = (12772 + 77) % 1000 = 12849 % 1000 = 849
t3 = (849 × 31 + 903) % 1000 = (26319 + 903) % 1000 = 27222 % 1000 = 222
已公开的是 412、849、222。现在有人想改第 1 批的内容,把 412 改成 413:
t1 = (0 × 31 + 413) % 1000 = 413 ← 412 变 413
t2 = (413 × 31 + 77) % 1000 = 12880 % 1000 = 880 ← 849 变 880
t3 = (880 × 31 + 903) % 1000 = 28183 % 1000 = 183 ← 222 变 183
三个值全变了。这就是招数四缺的东西:一百个本子各自独立,所以能单点修改;而这里 t3 的值依赖于 t1,所以改 t1 必须连带重造 t2、t3。每一个后来的时间戳都是前面所有时间戳的证人。
于是”某事发生在某刻之前”变成了可核对的陈述:如果你的内容被 t2 包住,而 t2 又被 t3、t4……一路包到今天,那么它必然在 t2 公布之前就已存在——否则今天所有人手里这一长串数字都不可能是现在这个样子。
回头看:链的强度全部来自雪崩效应
哈希函数那一条讲过雪崩效应:改一个比特,输出面目全非。当时它看起来只是”用来检查数据有没有被改”的性质。
这里它换了个身份:同一个性质,被用来制造时间的方向性。 因为 t3 只能在 t2 已知之后算出来,t2 又只能在 t1 之后算出来,这个依赖顺序不可逆转。链条不需要任何人对时间作出承诺,顺序是算出来的,不是声明的。
也就是说,区块链里那个”每块记着前一块的哈希”的设计,不是为了防篡改才附带的功能——它本身就是时间戳服务器。白皮书是先讲时间戳服务器,再讲工作量证明;顺序说明了作者的思路:链解决定序,工作量证明解决的是另一件事。
还有一处旧直觉被推翻了。招数三里我们默认”要有人负责盖章”,招数五让人以为”要有报纸这种权威渠道”。而链条把承担信任的东西换成了已经散布出去的副本数量:证据的效力和发布者是谁无关,只和”有多少人手里存着同一串数字”有关。
边界与常见误解
它证明的是上界,不是精确时刻。 结论只能是”不晚于某一刻”,不能是”正好在这一刻”。想反向证明”不早于某刻”,需要把当时无法预知的公开数据(比如最近一个区块的哈希)嵌进内容里,那是另一个技巧。
链条本身不解决”该延长哪一条”。 哈希链只保证一条给定的链内部自洽。有人完全可以从第 1 批开始,另造一条自洽的链出来——重算三次哈希的成本几乎是零。要让重造代价高昂,必须给每一环加上工作量证明;要在两条自洽的链里挑一条,需要最长链规则。时间戳服务器只提供顺序,不提供唯一性。
白皮书原文没有”服务器”实体。 第 3 节的标题是 Timestamp Server,但那一节末尾就转向了去中心化:所谓服务器是被网络里所有节点共同扮演的角色,不是某台机器。把它理解成一台需要被信任的主机,正好丢掉了整节的要点。
发布不广泛,证据就不成立。 如果那串数字只存在于三台你控制的机器上,你随时能重造。这个方案的安全性不来自密码学的强度,而来自副本已经散得太广,收不回来。
提到这个词条的文章
- 比特币白皮书逐节拆解经典拆解 2026-07-31