时刻是一条因果链

极端一点,整个国际无非便是一张关系网罢了。

——Tim Berners-Lee,《编织万维网》(1999)

假造日期是一个遍及问题,并不仅仅存在于数字国际。例如,在绑架案中,绑匪就需求一种办法来证实绑票产生的时刻。

比特币就是时钟(下)

- 时刻证明 -

这个办法之所以可行,是由于报纸很难假造,并且易于验证。由于报纸头版报道的都是前一天的事情,绑匪是不或许提早预知头版新闻、并提早几周就假造好人质相片的。因而,相片中人质手持的报纸的发行日期便是人质在世的证明。

这个办法凸显了一个重要概念:因果关系。时刻箭头反映了事情的因果关系。没有因果关系,就无所谓时刻。在赛博国际,哈希函数关于处理时刻戳问题来说至关重要,由于它引入了因果关系。假如没有某份文档,咱们就无法生成对应的密码学哈希值,因而文档和哈希值之间存在因果关系:先要有数据,然后才干生成(该数据对应的)哈希值。换言之,假如没有单向函数的核算不行逆性,赛博国际中就不会存在因果关系。

比特币就是时钟(下)

- 先有 A,才有 B -

有了因果关系,咱们就能够创立出一连串环环相扣的事情。因而,安全的数字时刻戳计划得认为本来不存在时刻的数字国际谱写前史。

因果关系决定了事情的时刻次序。假如一个事情由之前的某些事情引发,并且引发了之后的某些事情,则该事情在前史上的方位得以确认,不会再更改。

——Bayer,Haber,Stornetta (1992)

毋庸置疑的是,因果关系关于经济核算而言至关重要。鉴于账本其实是多个合作方之间经济核算的具象化,因果关系关于每个账本而言相同至关重要。

咱们需求一个能让一切参与者就仅有前史记载达到一致的体系 …… 咱们提出的处理计划依据时刻戳服务器。

—— 中本聪(2009)

风趣的是,让比特币得以运作的一切组件其实早已存在。早在 1991 年,Haber 和 Stornetta 就介绍了两种 “能够有用防止时刻戳造假” 的计划。一个是依赖于可信第三方的计划,另一个是更为杂乱的 “分布式信赖” 计划,无需依赖于可信第三方。两位作者甚至发现了信赖事情因果链背后的固有问题,以及重写前史所需的条件。换言之,“有或许成功做恶的仅有办法是,准备好一条满足长的时刻戳链,长到连最猜疑最重的挑战者都置疑不了的境地。”如今,比特币也存在一个相似的攻击向量,即 51% 攻击(详见下一节)。

一年后,Bayer、Haber 和 Stornetta 在之前的研究基础上提出运用 “默克尔树”,而非简略的链表将一切事情衔接起来。默克尔树是一种简略高效的数据结构,能够依据多个哈希值核算出一个确认的哈希值。从时刻戳的视点来看,这意味着一单位时刻能够容纳多个事情。别的,这三位作者还提议对他们在 1991 年提出的分布式信赖模型进行改善,即,不断举行 “国际冠军锦标赛” 来决定仅有的 “获胜者”,由获胜者在(相似报纸这样)揭露的地方发布核算出的哈希值。听起来是不是很熟悉?

咱们能够看出,报纸是一个绝佳的例子,能让咱们更好地考虑时刻的第二个特性:不行猜想性。

因果关系和不行猜想性


时刻不是实践(hupostasis),而是一种概念(noêma)或计量单位(metron)……

—— 智者安提丰,《论真理》(公元三世纪)

因果关系尽管很重要,但是远远不够。时刻消逝还离不开不行猜想性。在物理国际,咱们经过观察天然过程来描述时刻的消逝。咱们观察到熵是在不断增加的,并称之为时刻箭头。尽管在大多数状况下,天然规律看似与时刻箭头无关,但是某些事情实践上是无法撤销的。俗话说得好,破镜难圆。

相同地,数字国际也需求增熵函数来创立时刻箭头。SHA256 哈希值和密码学签名并非绝对不行破解,但就像破镜简直不或许重圆,SHA256 和密码学签名也简直不行破解。

假如没有熵增,咱们就能够恣意更改时刻戳。例如,斐波纳契数字的次序具有因果关系,但不具有熵增特质。在斐波纳契数列中,每个数字都是由前两个数字相加得到的。因而,斐波纳契数列是一条因果链。但是,斐波纳契数列无法用来报时,由于它是彻底可猜想的。这就比如说,绑匪不能用人质和日历的合影来证明人质还活着。咱们不能运用可猜想的东西作为时刻证明,只能运用无法提早猜想的事物,如,当日报纸的头版。

比特币的不行猜想性是经过买卖和工作量证明完成的。就像没人能猜想明天的报纸会刊登什么内容,也没人能猜想下一个比特币区块长什么样。你无法猜想区块中会打包哪些买卖,由于你无法猜想未来将有哪些买卖被播送 。更重要的是,你无法猜想谁会解开当时的工作量证明难题,以及得出的解是什么。

不同于报纸,工作量证明直接 与现已产生的事情联络起来。工作量证明不仅仅是事情的记载,并且是事情自身。正是这种依据概率的直接联络免除了工作量证明的信赖需求。找到有用工作量证明的仅有办法是做出很多猜想,每次猜想都要花费少量时刻。每找到一个解所需求的猜想次数是概率性的,然后构成比特币的时刻链。

利用哈希链的因果次序和工作量证明的不行猜想性,比特币网络供给了一种机制,能够创立无争议的事情前史。假如没有因果关系,咱们就无法区别事情先后。假如没有不行猜想性,因果次序就毫无意义。

关于上文提到的绑匪的做法,其实 Bayer、Haber 和 Stornetta 早在 1992 年就给出了清晰解说:“假如要确认某个文档是在某个时刻之后创立的,该文档有必要记载现已产生但无法提早预料的事情。”

比特币就是时钟(下)

- 出版证明 -

正是因果关系和不行猜想性的结合,咱们才干在本来没有时刻概念的数字国际中人为界说 “现在”。正如 Bayer、Haber 和 Stornetta 在 1991 年的论文中指出:“恳求时刻戳的客户端的次序以及它们所提交的哈希值是无法预知的。因而,假如咱们在签名证书中包括之前客户端恳求序列的比特,就知道证书的时刻戳晚于这些恳求……证书中有必要包括之前文档的比特这一要求也能够从另一个方向指明时刻的先后,由于时刻戳组织无法预先发行证书,除非它具有此时此刻的恳求。”

一切组件都在这儿了。中本聪的高超之处在于将这些组件全都组合到了一起,然后免除对时刻戳组织的需求。


时刻证明


原因虽被深藏,成果却已知晓。

—— 奥维德,《变形记》(公元 8 年)

让咱们来概括一下:要想在数字国际花钱,咱们有必要依靠账本。要想账本变得牢靠,咱们有必要清晰买卖次序。要想清晰次序,咱们有必要运用时刻戳。因而,假如咱们想要在数字国际创造出免信赖钱银,咱们有必要移除任何创立并办理时刻戳的实体,以及负责计时的单一实体。

天才如中本聪找到了处理计划:“为了完成点对点的分布式时刻戳服务器,咱们需求运用工作量证明体系,相似于 Adam Back 提出的哈希现金(Hashcash)。”

咱们之所以需求运用工作量证明体系,是由于咱们需求数字国际原生的东西。一旦你了解数字国际的实质是信息化的,那么显而易见的是,核算便是咱们具有的一切。假如你的国际是由数据组成的,就会存在数据操纵。

工作量证明是一种点对点机制,由于它无需信赖。工作量证明之所以具有免信赖性,是由于它与一切外部输入(如,时钟或报纸)阻隔。它只依赖于一样东西:核算离不开工作量的投入。在咱们的国际里,产生工作量需求投入动力和时刻。


通往时刻的桥梁


我知道我已着魔。

咱们跑过桥 —— 熊熊焚烧的桥 ——

火焰在身后肆虐,

咱们站在逝世边缘,

亲爱的,你我正与国际为敌。

—— Kate Bush,《焚烧的桥》(1985)

假如没有工作量证明,咱们必然会遇到信息输入机制问题,由于物理国际和信息国际永久有隔膜。牧羊人数羊时在列表上做的符号并不是真正的羊,地图不能与真正的领土相提并论,报纸上的新闻也纷歧定是实在产生的事情。同理,即便你运用实践国际的时钟来创立时刻戳,也并不代表实践时刻便是如此。

率直来说,咱们无法信赖数据代表了实践,除非是数据自身所固有的实践。比特币的难度可调节型工作量证明的高超之处在于,它创造了自己的实践,以及空间和时刻。

工作量证明能够将数字国际和物理国际直接联络起来。只要这种衔接是避免信赖办法树立的。其它一切都依赖于外部输入。

比特币的出块难度是会调整的,然后维持比特币时刻与人类时刻之间的联络。就像发条一样,每挖出 2016 个区块,比特币体系就会从头调整挖矿难度。难度调整旨在将均匀出块时刻控制在 10 分钟,然后在物理国际和信息国际之间树立稳定的联络。因而,比特币时钟的走时需求依据人类的时刻感知从头调整。朴实依据时钟的难度调整是不行行的,由于这会将比特币与人类国际彻底割裂。难度调整的目的便是防止人们的出块速度太快(或太慢)。

正如爱因斯坦告诉咱们的那样,时刻不是绝对的。没有什么所谓的国际时刻。时刻是相对的,一起性并不存在。仅凭这一现实,一切时刻戳(特别是跨过了遥远空间的)实质上都是不行靠的,即便参与者之间不存在对立也是如此。(顺带一提,这便是为什么 GPS 卫星的时刻戳有必要不断调整。)

关于比特币来说,人类时刻戳并不精确这一现实不是很重要。一开始就没有绝对的参考系也不重要。时刻戳的精确程度只需让以 2016 个区块为基数核算得出的出块时刻满足牢靠,即可。为了保证这一点,只要在满足以下两个标准的状况下,一个区块的 “物理国际” 时刻戳才会被承受:

  1. 该时刻戳有必要大于之前 11 个区块的时刻戳中位数。

  2. 该时刻戳有必要小于网络调整时刻加两小时。(“网络调整时刻” 便是与你衔接的一切节点回来的时刻戳的中位数。)

换言之,难度调整便是保持时刻稳定,而非 安全性、难度或动力消耗量稳定。该设计颇具独创性,由于良币 有必要 具有很高的时刻本钱,而非动力本钱。假如钱银只与动力相关,并不足以产生绝对的稀缺性,由于一旦动力生产技术有了改善,咱们就能创造出更多钱银。时刻是仅有一个无法再生的东西。正如 Julian Simon 所言,时刻是终极资源。正因如此,比特币成了钱银的终极形态,由于比特币的发行量与国际的终极资源(时刻)直接相关。难度调整至关重要。假如没有难度调整,跟着越来越多矿工加入网络,或矿机效率提高,比特币的内部时钟就会越走越快。咱们很快就会遇到和谐问题。一旦出块时刻降到某个阈值(如 50 毫秒)以下,体系就无法对某个共享状态达到一致,即便在理论上也是如此。光从地球的一侧到达另一侧需求大约 66 毫秒。因而,即便咱们的电脑和路由器是完美的,咱们也会束手无策:面对两个事情,将无法断语其先后次序。假如咱们不对比特币的出块时刻进行周期性调整,就会陷入绝境 —— 有必要以逾越光速的速度处理和谐问题。时刻也是导致密码学不稳定性问题的根源(详见第一章)。密码学之所以能发挥作用,是由于利用了时刻的不对称性:建起一道密码学墙壁只需求一瞬间,打破它却需求好久,除非你有密钥。因而,从某种意义上来说,工作量证明以及难度调整都是在人为怠慢时刻,至少从比特币网络的视点来看是这样。换言之,比特币是在强行控制内部节奏,经过低频率为对等节点之间的通信延迟供给足够的缓冲空间。每挖出 2016 个区块,比特币的内部时钟都会从头调整。因而,均匀每 10 分钟只会挖出一个有用区块。从外部视点来看,比特币便是将在全球播送的异步消息会集到一个平行国际中。这个平行国际有自己的规矩,以及时空观。从比特币网络的视点来看,买卖池中的买卖是没有时刻特点的。只要被打包进有用区块的买卖才会被赋予时刻:该买卖地点区块的编号。比特币就是时钟(下)

- BitCoin v0.01 ALPHA (2009) -

这个处理计划之精妙现已无以言表。一旦你能够自行界说时刻,就能够轻松区分事情的先后次序。因而,人们也能够垂手可得地在产生了什么、按照什么次序,以及谁欠谁什么等问题上达到一致。难度调整能够确保比特币的内部节拍器打出的拍子是稳定的。它是比特币这支乐团的指挥,能够让音乐永葆鲜活。但是,凭什么认为,“工作量” 是一个终究值得依赖的东西呢?答案有三重。首先,由于核算需求投入工作量;产生工作量需求花费时刻;而在咱们这儿,工作 —— 猜想随机数 —— 是无法取巧的。


依据概率的时刻


时刻无休止地生出岔道,通往无数个未来。——博尔赫斯,《小径分叉的花园》(1958)

为比特币区块找到有用的 nonce 便是一场猜谜游戏,相似于掷骰子、抛硬币或轮盘赌。实质上,你是在寻觅一个天文数字。每一次猜想都不会让你更接近答案。要么猜中,要么重来。每次你抛硬币,抛中正反面的概率都是 50% —— 哪怕你之前抛了 20 次,次次都是正面朝上。相同地,在比特币挖矿过程中,每一秒呈现一个有用区块的概率都是 0.16% 左右。上个区块是什么时候找到的并不重要。找到下个区块之前需求等待的时刻永久都一样:10 分钟左右。因而,比特币时钟的每一次 “嘀嗒” 都是不行猜想的。比较咱们人类运用的时钟,比特币时钟似乎是粗糙且不精确的。正如 Gregory Trubet­skoy 所言:“这个时钟是否精确并不重要。重要的是,每个人的时钟都相同,并且整条链的状态与时钟的走时清晰相关。”尽管比特币的时钟是依据概率的,但它不是一种错觉。

时刻是一种错觉。午餐时刻特别如此。—— 道格拉斯•亚当斯,《银河系漫游攻略》(1979)

但是,在比特币体系中,“现在” 绝对是一种错觉。由于网络中没有中央组织,或许会有古怪的状况呈现。尽管不太或许,但是万一有两个人一起找到有用区块呢?(再次向一切物理学家致歉。)也便是说,两个不同方位的时钟一起嘀嗒了一声。这两个区块的内容很或许不同。它们虽包括不同的前史,但都相同有用。这便是所谓的链割裂(chain split),是中本聪一致在运转中天但是然会呈现的一种情形。就像迁徙中的鸟群,时而分红两列,时而合在一起。经过一段时刻之后,比特币网络中的节点终究会构成一个共享的前史,这得益于猜想所带来的概率性。中本聪一致仅仅简略地要求,正确的前史在最重的链(即,包括最多工作量证明的链)上。因而,假如咱们有 A 和 B 两个前史,有些矿工会在 A 上续写前史,有些矿工会在 B 上续写前史。一旦某一方的矿工找到了下一个有用区块,另一方的矿工就会承受自己是在错误的前史上挖矿,并转向最重的链(依据界说,便是代表实践产生的事情的链)。在比特币中,前史是由胜利者书写的。

收款人需求有依据能够证明,每笔买卖产生时,绝大多数节点认同它们最先收到了该买卖……当同一笔买卖存在多个支付目标时,只要一个是有用的。收款人有必要等待一小时左右,然后才干信赖这个买卖是有用的。到时,网络就能处理一切有或许产生的多重花费比赛。—— 中本聪(2009)

上面段话揭开了分布式和谐问题的秘密。中本聪便是经过这种办法处理了上文提到的 “一起付款” 问题,并且是一了百了地。让相对论见鬼去吧!由于比特币时钟具有概率性,“现在”(咱们称之为链顶端)永久是不确认的。曩昔(链顶端以下的区块)永久是确认的。

若想了解得更深化,咱们有必要追溯到更早的时刻。——Gordon Clark,《从基督教的视点了解人与物》(1951)

因而,关于某些对等节点来说,比特币时钟有时会倒退一两下。假如你的链顶端(现在)刚好输给了另一个链顶端,你的时钟就会先倒退再行进,掩盖你原先认为正确的前史。假如你的时钟具有概率性,你对前史的记忆也不得不如此。

嘀嗒嘀嗒 —— 几点了?嘀嗒嘀嗒…… 停在了c619。真是这样吗?会不会慢了?管它准禁绝:8 在 9 前不会错。这个钟禁绝,有时倒着走。按时才有鬼,中心化要不得!这个钟在嘀嗒,嘀嗒复嘀嗒,使坏也没好处,嘀嗒到下个区块。——一首关于比特币和时刻的小诗(2020)


总结


时刻依然是物理学最大的谜题之一,甚至引起了人们对物理学自身界说的质疑。——Jorge Cham 和 Daniel Whiteson,《咱们一窍不通:通往不知道国际的攻略》(2017)

追寻信息国际的事物就意味着追寻一系列事情,因而需求追寻时刻。追寻时刻需求就 “现在(永久衔接曩昔和将来的时刻点)” 达到一致。在比特币体系中,“现在” 是最重工作量证明链的端点。关于时刻结构来说,最重要的两个组成部分是:因果关系和不行猜想事情。因果关系用来界说曩昔,不行猜想事情用来构建未来。假如事情次序是可猜想的,就有或许跳过。假如每个事情之间没有联络,要改动曩昔就很容易。由于比特币体系界说了内部时刻,作假难度极高。假如有人想作假,有必要改写曩昔或预见未来。比特币的时刻链能够有用防止这两点。假如从时刻视点来看待比特币,咱们就应该清楚,“区块链(经过因果关系将多个事情衔接起来的数据结构)”并非首要立异,甚至不是什么新想法。只要研究过前人关于时刻戳的文献,咱们就能发现这点。

区块链,就仅仅数据块组成的链条罢了。—— Peter Todd

中本聪的立异之处在于,各方如安在没有中心化和谐的状况下独立就事情前史达到一致。中本聪找到了一种完成去中心化时刻戳机制的办法。该机制 (a)不依赖于时刻戳组织或服务器,(b)不需求报纸或其它任何物理前言作为依据,(c)能够确保走时节奏基本不变,即便是在 CPU 时钟时刻更快的环境中运转也是如此。计时需求 因果关系不行猜想性 和和谐性。在比特币中,因果关系由单向函数供给,即,坐落比特币协议中心的密码学哈希函数和数字签名。不行猜想性是经过工作量证明难题和节点交互完成的:你无法提早预知其它节点在干什么,你也无法提早预知工作量证明难题的解。和谐性是经过难度调整完成的,秘诀便是将比特币时刻与人类时刻联络起来。只要将物理国际和信息国际衔接起来,咱们才干只依赖于数据在时刻上达到一致。比特币是时刻不只体现在一方面。比特币的最小单位 satoshi 是时刻,由于它是钱银;比特币的网络也是时刻,由于它是一个去中心化时钟。正是由于比特币时钟孜孜不倦地滚动,比特币才干具有这些奇特的特性。不然,整个比特币体系就会分崩离析。也正因如此,这一巧夺天工般的互联网钱银才干惠及一切人。

视野开拓

此情此景下,如果你是瑞士口音,人们将会把你的智商高估50分;如果是牛津剑桥口音,可被高看25分;而可怜的老美,在这里是入不了品的。-《对冲基金风云录》

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注