
图片:dergigi.com
TL;DR — 快速摘要
- 货币一旦数字化,就必须就「时间的定义」达成一致:在对抗性的分布式网络中,没有任何绝对时间可依赖,而记账恰恰需要确立事件的先后顺序
- 实物代币是「无时间」的,账本却必须有时间——账本必须为每笔交易打上时间戳,否则无法防止双重支付;这正是比特币要解决的根源问题
- 比特币重新发明了时间:它拒绝「秒」,拥抱「区块」,用哈希链提供因果性、用工作量证明提供不可预测性,在无时间的数字领域构建出自己的「当下」
- 难度调整每 2016 个区块校正一次,把比特币的时钟与人类的时间桥接起来,让区块平均每十分钟出现一个——时间,而非能量,才是比特币稀缺性的终极根源
「一盏明亮的时钟悬于天际, 宣告时间既无对错之分。」
「时间对我们来说仍是一个巨大的谜。它不过是一个概念;我们甚至不知道它是否存在……」
时间就是金钱,俗话是这么说的。由此推论,金钱也是时间:它是人类所储存的集体经济能量的代表。然而,时间与金钱之间的联系,比乍看之下要复杂得多。如果创造金钱不需要时间,那它作为货币就运转得不好,或者说无法长久。更深刻的是,正如我们将看到的,在信息领域追踪事物,永远意味着追踪时间。
一旦货币数字化,我们就必须就「**时间的定义**」达成一致,全部问题正出在这里。你可能会觉得,报时不过是瞥一眼附近的时钟那么简单,就日常任务而言你确实是对的。但当涉及同步一个全球性的、对抗性的、分布式网络的状态时,报时就变成了一个几乎无法解决的任务。如果时钟不可信,你如何报时?如果你的系统横跨整个星系,你如何创造出单一时间的概念?你如何在无时间的领域中测量时间?时间到底是什么?
为了回答这些问题,我们不得不更仔细地审视时间本身的概念,以及比特币如何构建出自己的时间:区块时间——更广为人知的名字是「**区块高度**」。我们将探讨,为什么计时问题与记账问题密不可分,为什么在去中心化系统中不存在绝对时间,以及比特币如何利用因果性和不可预测性构建出自己的「当下」感。
计时设备不止一次地改变了文明。正如刘易斯·芒福德在 1934 年指出的:「时钟,而非蒸汽机,才是现代工业时代的关键机器。」今天,又是一件计时设备在改变我们的文明:一台时钟,而非计算机,才是现代信息时代真正的关键机器。而这台时钟,就是比特币。
追踪事物
「让孩子学会数数,从而获得数字的概念。为了计数的目的,这些东西被视为相同的,它们可以是单个物体,也可以是一组物体。」
宽泛地说,追踪事物有两种方式:实物代币和账本。你可以直接使用现实世界的物品,比如递给某人一枚贝壳、一枚硬币,或其他某种有形的「**东西**」;或者,你可以把发生的事情写在一张纸上,从而复制世界的状态。
想象你是一名牧羊人,想确保整个羊群都回到了家。你可以给每只羊戴上项圈,每当一只羊回家,你就取下它的项圈,挂在小屋里。如果你为每个项圈准备了一个挂钩,那么当所有挂钩都被挂满时,你就知道每只羊都安全回来了。当然,你也可以清点羊的数量,记一张清单。但你必须确保每次开始清点时都重新创建一张清单,还必须确保没有把同一只羊数两遍(或完全漏掉)。
金钱本质上是一种追踪谁欠谁什么的工具。宽泛地说,迄今为止我们用作货币的一切,都分为两类:「**物理**」实物和「**信息**」清单。或者用更常见的说法:代币(token)和账本(ledger)。

认识到这两类方式的固有差异非常重要,所以让我明确指出:第一种方式——实物代币——「**直接**」代表事物的状态。第二种方式——账本——「**间接**」反映事物的状态。两者各有优劣。例如,代币是物理的、分布式的;账本是信息的、中心化的。代币天生无需信任;账本则不然。
在数字领域——无论营销大师们多么卖力地试图说服你相反——我们只能使用账本。它是一个「**信息**」领域,而非物理领域。即使你把某种信息称为「代币」,它仍然是一段可塑的信息,写在硬盘或某种能承载信息的介质上,实际上使它成为一条信息记录。
一切数字信息的账本般本质,正是双重支付问题的根源。信息从来不会「**直接**」代表世界的状态。此外,信息的移动意味着复制。信息存在于一个地方,要「移动」它,你必须把它复制到另一个地方,再在原点将其抹除。这个问题在物理领域并不存在。在物理领域,我们可以真正地把东西从 A 移动到 B。信息领域没有这个属性。如果你想把信息从清单 A「移动」到清单 B,你必须把它从 A 复制到 B。没有别的办法。
另一种思考方式是独特性。实物代币是由原子组成的独特复合体,其组装不容易复制。纯粹的信息没有这个属性。如果你能读取信息,你就能完美地复制它。从实践角度看,这意味着实物代币是独特的,而数字代币不是。我甚至认为「数字代币」是用词不当。代币也许能代表秘密信息,但它永远无法代表独特的、单一的、不可复制的信息。
这种属性上的差异表明,确实不存在「交出」信息的办法。你不可能像传递实物代币那样传递数字代币,因为你永远无法确定原主人是否已经销毁了他那端的信息。数字代币和所有信息一样,只能像思想一样被传播。
「……如果你有一个苹果,我有一个苹果,我们交换苹果——最后我们每人仍然只有一个苹果。但如果你有一个想法,我有一个想法,我们交换想法——最后我们每人都有两个想法。」
实物代币——我们称之为实物不记名资产,或「现金」——没有这个困境。在现实世界中,如果你递给我一枚硬币,你的硬币就消失了。硬币不会神奇地复制,把它给我的唯一方式就是亲手交付。物理定律不允许你双重支付它。
虽然双重支付在非数字领域确实存在——我想到的是乔治·帕克,那个著名地把布鲁克林大桥等地标「双重出售」的骗子——但它需要精心的欺骗和容易上当的买家。数字领域可不是这样。
在数字领域,因为我们总是与「**信息**」打交道,双重支付是一个「**固有**」的问题。任何复制过文件或使用过复制粘贴的人都知道,信息是一种可以被「**完美**」复制的东西,而且它不受宿主介质的束缚。例如,如果你有一张数码照片,你可以复制一百万次,把一些副本存在 U 盘上,再发给成千上万不同的人。完美复制之所以可能,是因为信息允许无差错的纠错,从而消除了退化。更要命的是,复制的成本几乎为零,而且你无法分辨哪个是原件。
再说一遍:说到信息,复制就是一切。根本不存在把数字信息从 A「**移动**」到 B 的办法。信息总是从 A 被「**复制**」到 B,如果复制过程成功,A 处的原始副本就被删除。这就是双重支付问题如此棘手的原因。在缺乏中央权威的情况下,没有任何办法以无需信任的方式把「**任何东西**」从 A 移动到 B。你总是必须相信原件会被删除。一个自然的副作用是,说到数字信息,你「**不可能**」知道存在多少份副本,以及这些副本可能在何处。
正因为如此,把数字「代币」用作货币,不能也不会奏效。既然代币的可靠性来自其独特的物理构造难以复制,这一优势在数字领域就消失了。在数字领域,代币不可信。由于信息内在属性的本质,数字货币唯一可行的形式不是代币,而是账本——这便把我们引向了时间问题。
代币无时间,账本有时间
「所见之物是暂时的,所不见之物才是永恒的。」
说到实物代币,交易的时间无关紧要。你口袋里要么有硬币,要么没有;你要么能花掉它们,要么不能。简单的占有行为是消费的唯一前提。自然法则负责其余的一切。从这个意义上说,实物代币是无需信任的、无时间的。
说到账本,物理占有就靠边站了。控制账本的人需要确保一切「**井然有序**」。否则由物理定律给定的东西——你不能花你没有的钱,你不能再花你已经花过的钱——必须由人为规则来强制执行。治理一本账本有序运作和维护的,正是这些规则,而非物理定律。
从物理定律转向人为规则,正是事情的关键所在。人为规则可以被扭曲和打破,物理定律则不然。例如,你不能简单地「凭空造出」一枚物理金币。你必须把它从地下挖出来。然而,你绝对可以在纸上凭空造出一枚金币。要做到这一点,你只需在账本中加一条记录,给自己记上几枚硬币。或者,就中央银行而言,只需敲几下键盘就加上几万亿。(时髦的金融人士称之为「再抵押」、「部分准备金银行制度」或「量化宽松」——但别被骗了,它们都是一回事:凭空造钱。)
为了让账本和操纵账本的人保持诚实,定期、独立的审计是必需的。能够对账本中每一笔条目作出交代,并非奢侈之事。审计师必须能够——在时间上向后——通读账目,以保持账本的诚实和正常运作。没有可靠的时间戳,验证账本的内部一致性是不可能的。建立一种机制来确定毫无歧义的顺序,至关重要。
没有绝对的时间感,就无法定义交易顺序。而没有定义的交易顺序,账本的规则就无法被遵循。否则,你如何确定自己到底有多少钱?你如何确保一切「**井然有序**」?
代币与账本的区别,凸显了追踪时间的必要性。在物理领域,硬币是无时间的文物,可以在无人监督的情况下交换。在数字领域,铸币需要时间戳。
中心化的铸币时间戳
「时间:一位伟大的雕刻师,或一位橡皮擦。」
解决双重支付问题——即确保一笔数字转账只发生一次——的常见方法,是拥有一份中心化的交易清单。一旦你有了中心化的交易清单,你就有了一个可以作为唯一真相来源的单一账本。解决双重支付问题,就像浏览清单并确保一切都能对得上账一样简单。这就是 PayPal、Venmo、支付宝以及世界上所有银行——包括中央银行——解决双重支付问题的方式:借助中央权威。
「问题当然是收款人无法验证其中一位所有者没有双重支付这枚硬币。一个常见的解决方案是引入一个可信的中央权威,或铸币厂,检查每笔交易是否被双重支付。[……] 这个解决方案的问题是,整个货币体系的命运都取决于运营铸币厂的公司,每笔交易都必须经过他们,就像银行一样。」
值得指出的是,中本聪并没有设法让信息变得不可复制。比特币的每一个部分——它的源代码、账本、你的私钥——都可以被复制。所有这一切都可以被复制和篡改。然而,中本聪设法构建了一个系统,使违反规则的副本变得完全、彻底地无用。比特币网络执行着一场精妙的舞蹈,以决定哪些副本有用、哪些没用,正是这场舞蹈把稀缺性带入了数字领域。而就像每一支舞蹈一样,需要一根时间的量尺来规定节奏。
即使是中心化的账本,也只有当它拥有一致的方式来追踪时间时,才能解决双重支付问题。你总是需要知道谁在何时给了谁多少,而最重要的是:「**何时**」。在信息领域,没有时间戳就没有铸币。
「必须强调,在分布式系统中,将事件与时间点关联的『不可能性』,是此前去中心化账本永远无法实现的那个未解决问题,直到中本聪发明了一个解决方案。」
去中心化的时间
「时间使万物发生。」
时间与顺序有着非常密切的关系。正如莱斯利·兰波特在他 1978 年的论文《时间、时钟与分布式系统中事件的排序》中指出的:「时间的概念是我们思维方式的基础。它源自一个更基本的概念:事件发生的顺序。」在缺乏中央协调点的情况下,看似直观的「之前」、「之后」和「同时」的概念都会崩塌。用兰波特的话说:「『先发生』的概念定义了分布式多进程系统中事件的一种不变的部分序。」
换个说法:如果被禁止任命某个人来掌管时间,那么应该由谁来掌管时间?如果没有中央参照系,你如何拥有一台可靠的时钟?
你可能会认为解决这个问题很容易,因为每个人都可以使用自己的时钟。但这只有在每个人的时钟都准确、而且更重要的是每个人都规规矩矩的前提下才成立。在一个对抗性系统中,依赖个人时钟将是一场灾难。而且,由于相对论效应,它在跨空间的情况下也无法保持一致。
作为一个思想实验,想象一下,如果每个人都负责为自己计时,你能如何欺骗系统。你可以假装你现在发送的交易实际上是昨天的——它只是由于某种原因被延迟了——这样你就仍然拥有你今天已经花掉的所有钱。由于每个去中心化系统都固有的异步通信,这个场景绝不仅仅是一个理论上的思想实验。消息确实会被延迟,时间戳确实不准确,而且由于相对论效应和我们宇宙固有的速度极限,在没有中央权威或观察者的情况下,分辨事物的先后顺序绝非易事。
「谁在那里?咚咚咚。」
为了更好地说明这个问题的不可解性,让我们看一个具体的例子。想象一下,你和你的商业伙伴都能访问公司银行账户。你们在世界各地做生意,所以你们的银行账户在瑞士,你在纽约,你的商业伙伴在悉尼。对你来说,现在是 1 月 3 日,你正在酒店享受一个美好的周日晚。对她来说,已经是周一早晨了,所以她决定用你们共用银行账户的借记卡买早餐。花费是 27 美元。可用余额是 615 美元。当地时间是上午 8:21。
与此同时,你正要用同一银行账户关联的另一张借记卡支付住宿费。花费是 599 美元。可用余额是 615 美元。当地时间是下午 5:21。

于是,在完全相同的时刻——你们俩都刷了卡。会发生什么?(亲爱的物理学家们,请原谅我使用「同一时刻」——我们现在暂时忽略相对论效应,以及我们的宇宙中不存在绝对时间这一事实。我们也要忽略同步事件的概念其实并不存在。比特币已经够复杂了!)
你银行的中央账本很可能会先收到其中一笔交易,所以你们之中一个会走运,另一个就没那么幸运了。如果两笔交易恰好落在同一个「滴答」里——比如同一毫秒——银行就不得不决定谁能花这笔钱。
现在,如果没有银行会怎样?谁来决定谁是第一个刷卡的人?如果不仅仅是你们两个人,而是成百上千的人在协调呢?如果你不信任那些人呢?如果其中一些人试图作弊,比如把时钟调回去,让交易看起来像是几分钟前发生的呢?
「需要一种与时间相关的工具,来建立规范的排序,并在没有任何中央协调者的情况下强制执行唯一的历史。」
这个问题「**恰恰**」是所有以往数字现金尝试都需要中心化登记册的原因。你总是必须信任某个人来正确识别事物的顺序。需要一个中心化的参与方来守时。
比特币通过重新发明时间本身来解决这个问题。它拒绝「秒」,拥抱「区块」。
一个区块一个区块地守时
「时间的荣耀,是平息相争的君王, 揭开虚伪,让真相重见天日, 在年迈之物上盖下时间的印记, 唤醒黎明,守望黑夜, 惩处作恶者,直到他改邪归正;」
所有时钟都依赖周期性过程,即我们所说的「滴答」。老式座钟熟悉的「滴答-答滴」声,本质上与我们现代石英钟和铯钟的分子-原子振动是一样的。有什么东西在摆动——或者说振荡——而我们只是数这些摆动,直到它们累加成一分钟或一秒钟。
对于大型摆钟,这些摆动很长,很容易看到。对于更小、更专业的时钟,则需要专门的设备。时钟的频率——它多久滴答一次——取决于它的用途。
大多数时钟都有固定的频率。毕竟,我们想「**精确地**」知道时间。然而,有些时钟的频率是可变的。例如,节拍器就有一个可变的频率,你可以在让它滴答之前设定它。虽然节拍器一旦设定就会保持节拍恒定,但比特币的时间每次滴答都不同,因为它的内部机制是概率性的。不过,目的都是一样的:让音乐继续,让舞蹈得以延续。
- 座钟(Grandfather's clock)— 约 0.5 Hz
- 节拍器(Metronome)— 约 0.67 Hz 至约 4.67 Hz
- 石英表(Quartz watch)— 32768 Hz
- 铯-133 原子钟(Caesium-133 atomic clock)— 9,192,631,770 Hz
- 比特币(Bitcoin)— 1 个区块(0.00000192901 Hz* 至 ∞ Hz**)
* 第一个区块(6 天) ** 区块之间的时间戳可以显示为负差值
比特币是一台时钟这一事实,就明晃晃地藏在眼皮底下。事实上,中本聪指出,比特币网络作为一个整体扮演着一台时钟的角色,或者用他的话来说:一个分布式时间戳服务器。
「在本文中,我们提出了一种解决双重支付问题的方案,使用点对点分布式时间戳服务器,为交易的时间顺序生成计算证明。」
时间戳是被解决的根源问题,这一点从比特币白皮书末尾的参考文献也能看出来。总共八篇参考文献中,有三篇是关于时间戳的:
- 《如何为数字文档添加时间戳》— S. Haber, W.S. Stornetta(1991)
- 《提高数字时间戳的效率和可靠性》— D. Bayer, S. Haber, W.S. Stornetta(1992)
- 《设计具有最低信任要求的安全时间戳服务》— H. Massias, X.S. Avila 和 J.-J. Quisquater(1999 年 5 月)
正如哈伯和斯托内塔在 1991 年概述的,数字时间戳是关于计算上实用的程序,使用户——或者就此而言的对手——无法对数字文档进行回溯日期或超前日期。与物理文档相反,数字文档很容易被篡改,而这种篡改不一定在物理介质本身上留下任何蛛丝马迹。在数字领域,伪造和篡改可以是完美的。
信息的可塑本质,使给数字文档添加时间戳成为一个精细而复杂的过程。天真的解决方案行不通。以文本文档为例。你不能简单地在文档末尾加上日期,因为每个人——包括你自己——都可以在未来更改这个日期。你也可以从一开始就编造任意日期。
时间是因果链
「从一个极端的角度看,世界可以被看作只是连接,除此之外什么都不是。」
编造日期是一个普遍的问题,即使在非数字领域也是如此。绑架圈中所谓的「报纸认证」,就是任意时间戳问题的一个通用解决方案。

这种方法之所以有效,是因为报纸很难伪造,也很容易验证。很难伪造,是因为今天的头版提到了昨天的事件,如果照片是几周前拍的,绑匪不可能预测到这些事件。凭借这些事件作为中介,这张照片就证明了人质在报纸出版的那一天还活着。
这种方法凸显了关于时间的一个关键概念:「**因果性**」。时间之箭描述了事件的因果关系。没有因果性,就没有时间。因果性也是密码学哈希函数在网络空间给文档添加时间戳时如此关键的原因:它们引入了因果关系。由于在实际不掌握文档的情况下几乎不可能创建有效的密码学哈希,文档与哈希之间就建立了因果关系:相关数据先存在,哈希后生成。换句话说:没有单向函数的计算不可逆性,网络空间就不会有因果性。

有了这个因果积木,人们就可以设计出各种方案,创造出一条事件链,把 A 因果地链接到 B,再链接到 C,以此类推。从这个意义上说,安全的数字时间戳把我们从一个无时间的以太之境,带入了数字历史的领域。
「因果性把事件固定在时间中。如果一个事件由某些更早的事件决定,并决定某些后续的事件,那么这个事件就被牢牢地夹在它在历史中的位置上。」
不用说,因果性在经济计算中至关重要。而既然账本不过是多个合作参与者经济计算的化身,因果性对每一本账本都是必不可少的。
「我们需要一个系统,让参与者就单一历史达成一致[……]。我们提出的解决方案从一台时间戳服务器开始。」
令人着迷的是,让比特币运转的所有拼图都已存在。早在 1991 年,哈伯和斯托内塔就引入了两种方案,使「产生虚假时间戳变得困难或不可能」。第一种依赖可信第三方;第二种更精细的「分布式信任」方案则不依赖。作者甚至指出了信任因果事件链的内在问题,以及重写历史需要付出什么代价。用他们的话说:「唯一可能的欺骗,是准备一条足够长的虚假时间戳链,长到足以耗尽你最警惕的挑战者。」类似的攻击向量在今天的比特币中依然存在,形式就是 51% 攻击(后面章节会详述)。
一年后,拜尔、哈伯和斯托内塔在他们此前工作的基础上,提出用树而不是简单的链表来连接事件。我们今天所知的「**默克尔树**」,不过是从多个哈希确定性地创建哈希的高效数据结构。对时间戳而言,这意味着你可以高效地把多个事件捆绑到一次「滴答」中。在同一篇论文中,作者提出,1991 年引入的分布式信任模型可以通过定期举行「世界锦标赛」来改进:确定一个「赢家」,由他把所得的哈希公开发布到某个公共场所,比如报纸。听起来耳熟吗?
正如我们将看到的,事实证明,报纸也是思考时间的第二种成分的绝佳方式:不可预测性。
因果性与不可预测性
「时间不是一种实在[ὑπόστασις],而是一个概念[νόημα]或一种度量[μέτρον]……」
因果性是必不可少的,但还不够。我们还需要「**不可预测性**」来让时间流动。在物理领域,我们观察自然过程来描述时间的流动。我们观察到熵的普遍增加,并称之为时间之箭。尽管自然法则在大多数情况下似乎对这支箭的方向无动于衷,但某些事情实际上无法被撤销。正如他们所说,你无法把炒好的鸡蛋变回去。
类似地,在数字领域建立时间之箭,需要熵增函数。就像实际上无法把炒好的鸡蛋变回去一样,实际上也无法逆转一个 SHA256 哈希或一个密码学签名。
没有这种熵的增加,我们就可以随心所欲地在时间中前进和后退。例如,斐波那契数列是因果的,但不是熵性的。序列中的每个数字都由它前面的两个数字引起。从这个意义上说,它是一条因果链。然而,用它来报时毫无用处,因为它完全可以预测。就像绑匪不能简单地站在一个显示当前日期的日历前一样,我们也不能用可预测的过程作为时间的证明。我们总是必须依赖某种无法提前预测的东西,比如今天报纸的头版。
比特币依赖两个不可预测性的来源:交易和工作量证明。就像没有人能预测明天的报纸会是什么样一样,没有人能预测下一个比特币区块会是什么样。你无法预测哪些交易会被包含进来,因为你无法预测未来哪些交易会被广播。而且,更重要的是,你无法预测谁会找到当前工作量证明谜题的解法,以及这个解法是什么。
然而,与绑匪的报纸不同,工作量证明与所发生的事情「**直接**」物理相连。它不仅仅是事件的记录——它就是事件本身。正是工作量证明的这种概率性的直接性,把信任从等式中移除。找到有效工作量证明的唯一方法,是做大量的猜测,而每做一个猜测都需要一点点时间。这些猜测的概率性总和,构建起了构成比特币的时间链。
通过利用哈希链的因果性和工作量证明的不可预测性,比特币网络提供了一种机制,来建立所见证事件的无可争辩的历史。没有因果性,什么在先、什么在后就无法分辨。没有不可预测性,因果性就毫无意义。
每个绑匪都直观理解的东西,被拜尔、哈伯和斯托内塔在 1992 年明确指了出来:「要证明一份文档是在给定时刻之后创建的,就有必要报告那些在发生之前无法被预测的事件。」

正是因果性与不可预测性的结合,使得在原本无时间的数字领域中创造出一个人工的「当下」成为可能。正如拜尔、哈伯和斯托内塔在 1991 年的论文中指出的:「客户端请求时间戳的顺序以及他们提交的哈希,无法提前知晓。因此,如果我们在签署的证书中包含先前客户端请求序列的比特,我们就知道这个时间戳发生在这些请求之后。[……] 但在证书中包含先前文档比特的要求,也可以用来解决在另一个方向上约束时间的问题,因为时间戳公司手中没有当前请求,就无法签发后续证书。」
所有的拼图都已经在那里了。中本聪所做的是把它们组合在一起,把「时间戳公司」从等式中移除。
时间证明
「Causa latet: vis est notissima. 原因隐藏着,结果却广为人知。」
让我们来总结一下:要在数字领域使用货币,我们必须依赖账本。要让账本可靠,就需要毫无歧义的顺序。要建立顺序,时间戳是必要的。因此,如果我们想要数字领域中「**无需信任**」的货币,我们就必须移除任何创建和管理时间戳的实体,以及任何掌管时间本身的单一实体。
需要一个像中本聪这样的天才才能意识到解决方案:「要在点对点的基础上实现分布式时间戳服务器,我们需要使用一个类似于亚当·巴克的 Hashcash 的工作量证明系统。」
我们需要使用工作量证明系统,因为我们需要某种数字领域原生的事物。一旦你理解了数字领域本质上是信息的,显而易见的结论就是:计算是我们所拥有的一切。如果你的世界由数据构成,那么对数据的操纵就是一切。
工作量证明在点对点环境中行之有效,因为它「**无需信任**」,而它无需信任,是因为它与所有外部输入——比如时钟的读数(或者就此而言的报纸)——都脱钩了。它只依赖一件事,且只有一件事:计算需要工作,而在我们的宇宙中,工作需要能量和时间。
桥接时间
「我知道它对我有效。 当我们跨过桥——燃烧的桥—— 身后是烈焰, 我们站到前线。 是你和我,宝贝,对抗整个世界。」
没有工作量证明,人们总是会遇到预言机问题,因为物理领域和信息领域永远脱节。你羊群清单上的标记不是你的羊,地图不是领土,昨天报纸上写的内容也不一定就是现实世界中发生的事。同样地,仅仅因为你使用现实世界的时钟写下一个时间戳,并不意味着那真的是当时的时间。
直白地说,根本没有办法信任数据代表现实,除非所讨论的现实本身就内在于数据之中。比特币难度调整的工作量证明的绝妙之处在于,它创造了自己的现实,连同自己的空间和时间。
工作量证明提供了数字领域与物理领域之间的直接连接。更深刻的是,它是唯一能够以无需信任的方式建立的连接。其他一切东西都将永远依赖外部输入。
挖掘新比特币区块的难度会被调整,以确保比特币的时间与我们时间之间的那根细线保持完整。像时钟一样,挖矿难度每 2016 次滴答就重新调整一次。这种重新调整的目标,是保持滴答之间的「**平均**」时间为十分钟。正是这十分钟,维持着物理领域与信息领域之间的稳定连接。因此,调整比特币时钟的滴答需要人类时间感的参与。纯粹基于区块的调整行不通,因为那将与人类世界完全脱节,而调整的全部目的,正是阻止我们这些聪明的人类过快(或过慢)地找到区块。
正如爱因斯坦向我们展示的,时间不是静态的东西。不存在我们可以依赖的普遍时间。时间是相对的,同时性是不存在的。仅这一事实,就使所有时间戳——尤其是跨越远距离的——天生不可靠,即使没有对抗性参与者。(顺便说一句,这就是为什么 GPS 卫星的时间戳必须不断调整。)
对比特币来说,我们人类时间戳不精确这一事实不太要紧。我们根本没有绝对参照系这一事实也不要紧。它们只需要足够精确,以便在 2016 个区块上计算出一个还算可靠的平均值。为了保证这一点,一个区块的「现实世界」时间戳只有在满足两个标准时才会被接受:
- 时间戳必须大于前 11 个区块的中位时间戳。
- 时间戳必须小于网络调整时间加上两小时。(「网络调整时间」就是与你相连的所有节点返回的时间戳的中位数。)
换句话说,难度调整关乎保持恒定的时间,「**而非**」恒定的安全水平、难度或能源消耗。这非常巧妙,因为好的货币「**必须**」以时间为代价,而非以能量为代价。仅仅把货币与能量挂钩,不足以产生绝对的稀缺性,因为能源生产的每一次改进都会让我们创造更多的货币。时间是我们永远无法制造更多的东西。正如朱利安·西蒙指出的,它是「终极资源」。这使比特币成为终极的货币形式,因为它的发行直接与我们宇宙的终极资源——时间——挂钩。
难度调整至关重要,因为没有它,随着更多矿工加入网络或挖矿设备效率的提高,比特币的内部时钟会倾向于越走越快。我们会很快陷入比特币立志要解决的协调问题。一旦区块时间跌破某个阈值,比如 50 毫秒,那么即使理论上也不可能就共享状态达成一致。光从地球的一端到达另一端大约需要 66 毫秒。因此,即使我们的计算机和路由器是完美的,我们也会回到原点:给定两个事件,分辨哪个先发生、哪个后发生将是徒劳的。如果没有对比特币滴答的周期性调整,我们将陷入以超过光速的速度解决协调问题的无望境地。时间也是第一章概述的密码学不稳定性问题的根源。密码学之所以有效,是因为时间上的不对称:建造一堵密码学之墙只需很短的时间,而拆毁它需要很长时间——除非你有钥匙。
因此,从某种意义上说,工作量证明——以及伴随它的难度调整——人为地放慢了时间,至少从比特币网络的角度来看是这样。换句话说:比特币强制执行一种内部节奏,其低频为对等节点之间的通信延迟留出了充足的缓冲。每 2016 个区块,比特币的内部时钟就重新调整一次,使得——平均而言——每 10 分钟只会找到一个有效区块。
从外部视角看,比特币将全球广播的异步消息的混乱,汇聚进一个平行的宇宙,受制于它自己的规则、自己的时空感。从比特币网络的角度看,内存池中的交易是无时间的。只有当一笔交易被包含进一个有效区块时,它才被赋予时间:它所进入的那个区块的编号。

这个解决方案有多么优雅,很难用语言形容。一旦你能够创造自己对时间的定义,分辨什么在先、什么在后就变得微不足道了。反过来,就发生了什么、以什么顺序发生、以及因此谁欠谁什么达成一致,也变得微不足道了。
难度调整确保比特币内部节拍器的「滴答」大体恒定。它是比特币管弦乐队的指挥。它让音乐得以延续。
但为什么我们首先能依赖工作?答案有三重。我们可以依赖它,因为计算需要工作,工作需要时间,而这里所说的工作——猜测随机数——无法高效完成。
概率性的时间
「时间永远分叉,通向无数的未来。」
为比特币区块寻找一个有效的 nonce,是一场猜谜游戏。它非常像掷骰子,或抛硬币,或转动轮盘。本质上,你在试图寻找一个超出天文学数量级的随机数。朝着找到解决方案没有任何进展可言。你要么中了头奖,要么没有。
每一次抛硬币,正面或反面朝上的概率都是 50%——即使你之前抛了二十次,而且每次都是正面。类似地,每一次你等待一个比特币区块到来,它在「**这一秒**」被找到的概率大约是 0.16%。上一个区块是什么时候找到的并不重要。下一个区块的大致等待时间总是一样的:约 10 分钟。
由此可知,这台时钟的每一次滴答都是不可预测的。相对于我们人类的时钟,这台时钟似乎是自发的、不精确的。这是无关紧要的,正如格雷戈里·特鲁贝茨科伊指出的:「这台时钟不精确并不重要。重要的是,它对每个人来说都是同一台时钟,而且链的状态可以毫不含糊地与这台时钟的滴答绑定。」比特币的时钟也许是概率性的,但它并非虚幻的。
「时间是一种幻觉, 午餐时间更是双重的幻觉。」
然而,在比特币中,「当下时刻」绝对可以是一种幻觉。由于网络中不存在中央权威,奇怪的情况可能会出现。虽然可能性不大,但确实有可能同时找到两个有效区块(再次向所有物理学家道歉),这将使时钟同时在两个不同的地方向前滴答。然而,由于这两个不同的区块在内容上很可能会有所不同,它们将包含两种不同的历史,而两者同样有效。
这就是所谓的链分裂,是中本聪共识的一个自然过程。就像一群鸟短暂地分成两半后又重新合拢一样,得益于猜测的概率性质,比特币网络上的节点最终会在一些时间之后收敛到一个共享的历史。
中本聪共识简单地说,正确的历史要在最重的链中寻找,即嵌入工作量证明最多的那条链。因此,如果我们有两个历史 A 和 B,一些矿工会尝试在历史 A 之上构建,另一些则会尝试在历史 B 之上构建。一旦其中一个找到了下一个有效区块,另一个群体就会被程序设定为接受他们站在了历史的错误一边,并切换到最重的链——按定义,这条链代表了实际发生的事情。在比特币中,历史确实是由胜利者书写的。
「收款人需要证明,在每笔交易发生时,大多数节点都同意它是第一次被收到。[……] 当同一笔交易存在多个双重支付的版本时,其中只有一个会变得有效。收款人必须等待一个小时左右,才会相信它是有效的。到那时,网络将解决任何可能出现的双重支付竞赛。」
这句简单的话里,藏着分布式协调问题的秘密。中本聪就是这样解决我们虚构的商业伙伴之前遇到的「同时支付」问题的。他一劳永逸地解决了这个问题,让相对论效应见鬼去吧!
正因为比特币时钟的这种概率性质,「当下时刻」——我们所说的链尖——总是不确定的。过去——埋在链尖之下的区块——则越来越确定。
「需要的理解越透彻,就必须回到越久远的过去。」
因此,比特币时钟有时可能会为一些对等节点回拨一两下。如果你的链尖——当下时刻——碰巧输给了一条竞争链尖,你的时钟将先回拨,然后向前跳,覆盖你以为已经是历史的最后几次滴答。如果你的时钟是概率性的,你对过去的理解也不得不如此。
「滴答,答滴,滴答,答滴——现在是什么时间? 滴答,答滴,滴答……它终结于 c619。 你确定这没问题吗?我们是不是要迟到了? 绝对值并不重要:九点之前是八点。 这钟并不精确;它有时会倒着走。 精确的时间意味着中心;这正是这诅咒的根源! 然而这钟不停地走着,答滴和滴答,滴答和答滴, 欺骗没有好处;只有滴答答滴和下一个区块。」
结论
「时间仍是物理学中最大的谜团之一,一个使物理学的定义本身都受到质疑的谜团。」
在信息领域追踪事物,意味着追踪事件的序列,而追踪事件序列又需要追踪时间。追踪时间需要就一个「当下」达成一致——一个永恒地连接已定型的过去与不确定的未来的时刻。在比特币中,这个「当下」就是最重工作量证明链的链尖。
有两个积木对时间的结构至关重要:因果链接和不可预测的事件。因果链接是定义过去所必需的,不可预测的事件是构建未来所必需的。如果事件序列可以预测,就有可能跳步向前。如果序列中的各个步骤没有相互链接,改变过去将是轻而易举的事。正因为比特币拥有自己内部的时间感,欺骗它难如登天。你必须重写过去,或者预测未来。比特币的时间链两者都阻止了。
透过时间的镜头审视比特币,应该能清楚地看到:「区块链」——这种把多个事件因果地链接在一起的数据结构——并不是主要的创新。它甚至算不上一个新想法,这一点从过去的时间戳文献中就可以看出来。
「区块链是一串区块。」
新的想法是——中本聪想明白的——如何在没有任何中央协调的情况下,独立地就事件历史达成一致。他找到了一种实现去中心化时间戳方案的方法,它(a)不需要时间戳公司或服务器,(b)不需要报纸或任何其他物理介质作为证明,(c)即使在 CPU 时钟速度不断加快的环境中,也能让「**滴答频率**」大致保持恒定。
计时需要「**因果性**」、「**不可预测性**」和「**协调性**」。在比特币中,「因果性」由单向函数提供:位于协议核心的密码学哈希函数和数字签名。「不可预测性」由工作量证明谜题以及与对等节点的交互共同提供:你无法提前知道别人在做什么,也无法提前知道工作量证明谜题的解法会是什么。「协调性」由难度调整实现,这是把比特币的时间与我们的时间联系起来的魔法酱汁。没有这座连接物理领域与信息领域的桥梁,仅靠数据就达成时间共识是不可能的。
**比特币即时间**,其含义不止一种。它的单位是储存的时间,因为它们是货币;它的网络是时间,因为它是一台去中心化的时钟。这台时钟无情的跳动,赋予了比特币所有神奇的特性。没有它,比特币精妙的舞蹈就会分崩离析。但有了它,地球上的每个人都能接触到真正奇妙的东西:魔法互联网货币(Magic Internet Money)。
