您当前的位置:比特币价格 > 比特币交易所 > 正文

为什么说比特币是去中心化的时钟?

2021-04-17 07:58 文章作者:admin 文章来源:未知

  去中心化的时钟

  

“时间会带走一切。”
—— 埃斯库洛斯(公元前 525 至 456 年)

  时间和顺序有着非常密切的关系。正如 Leslie Lamport 在 1978 年的论文《分布式系统中的时间、时钟和事件顺序》中所述:“时间概念是我们思维方式的基石。它源自一个更基础的概念,即,事件的发生顺序。” 由于缺少一个中心协调时间点,“先”、“后” 和 “同时” 等看似直观的概念都没了参照。用 Lamport 的话来说:“ ‘先发生’这一概念定义的是分布式多进程系统中不变的那部分事件顺序。”

  换言之:如果我们不能让某个人来负责管理时间(授时),那么我们如何确定事件发生的顺序?如果没有一个中心参照系,我们如何才能获得一个可靠的时钟?

  你可能认为这个问题很容易解决,因为每个人都可以使用他们自己的时钟。但是,只有在每个人的时钟都准确无误(且人人都遵守规则)的情况下,这个方法才有效。在一个人们有对立、有利益冲突的系统中,每个人都使用自己的时钟会是场灾难。而且,根据相对论,这一方法无法跨越空间。

  来个思维实验:假设你生活在一个每个人都自己跟踪事件发生顺序的世界中,你可以怎样欺骗其他人呢?你可以假装你今天发送的一笔交易其实是昨天的(只是因为某个原因而延迟),这样你今天花掉的钱就还是你自己的。由于每个去中心化系统本质上都是异步通信,上述场景不只是理论上的思维实验。消息确实会延迟,时间戳会不准确。再加上相对论效应和宇宙的天然速度限制,我们很难在没有中心化权威机构或观察者的情况下辨别事件的先后顺序。

  

“Who's there? Knock knock.”(“咚咚咚!”“谁啊?”)
—— 经典谐音梗

  为了更好地说明这个问题,我们来看一个具体的例子。想象一下,你和你的商业伙伴都能够访问你公司的银行账户。你的业务遍布全球,因此你是在瑞士开的银行账户,你本人住在纽约,而你的商业伙伴住在悉尼。你这边的时间是 1 月 3 日,你正在宾馆惬意地度过周末夜晚。你的商业伙伴那边的时间已经是周一上午,她决定使用共享银行账户的借记卡买早餐。当时卡上余额为 615 美元。当地时间为上午 8:21。她的早餐花了 27 美元。

  与此同时,你打算用另一张关联该银行账户的借记卡支付住宿费。此时卡上余额为 615 美元。当地时间为下午 5 : 21。住宿费是 599 美元。

  

  想了解相关资讯和获取比特币、以太坊、IPFS的朋友可以关注公众号:比特币小牛

  也就是说,你们在同一时刻刷了卡。会发生什么事?(物理学家们,请原谅我使用了 “同一时刻” 这一表述,此处我们暂且忽略相对论效应,以及宇宙中不存在绝对时间这一事实。另外,我们还要假定同步事件概念是存在的。比特币本身就已经够复杂了!)

  银行的中央账簿很可能是一前一后收到这两笔交易的,这样你们中必然有一个成了幸运儿,另一个成了倒霉蛋。如果中央账簿恰好在同一瞬间(精确到毫秒)收到这两笔交易,银行就必须决定由谁来花费这笔钱。

  那么,如果没有银行会怎么样?谁来决定交易先后?如果不只是你们两个,而是成百乃至上千人同时交易会怎么样?如果你不信任这些人该怎么办?如果有人想要作恶,比如将自己的时钟拨慢,假装自己的交易是几分钟前的,该怎么办?

  

“我们需要一种与时间有关的工具来创建公认的排序,并在不依赖于任何中央协调者的情况下维护唯一的历史记录。”
——Giacomo Zucco, 《发现比特币》(2019)

  这就是为什么以往所有关于数字现金的尝试都离不开中心化注册表。也就是说,我们必须信任某个人,才能正确决定事务的顺序。我们需要中心化参与方来充当中心化时钟。

  比特币解决这一问题的方法是重新定义时间。比特币是通过区块,而非秒来度量时间的。

  以区块为时间单位

  

帝王息争,乃时光之风采;
将谎言揭穿,让真相大白;
将岁月印记,给往事封印;
将黑夜坚守,唤黎明醒来;
将恶人惩治,直至其悔改;
—— 莎士比亚,《鲁克丽丝受辱记》(1709)

  所有时钟都依赖于规律的过程,也就是我们常说的 “嘀嗒(读秒声)”。从本质上来说,老爷钟发出的滴答声与现代石英钟和原子钟发出的嗡嗡声没有任何区别。具体来说,我们利用钟表中某个部件摆动或振动的次数来度量秒或分钟。

  大型摆钟的钟摆很长,摆动起来很明显。更专业的小型时钟则需要特殊部件。时钟的振动频率(“嘀嗒” 的频率)取决于其应用场景。

  大多数时钟的振动频率都是固定的,以便精准报时。然而,有些时钟的振动频率是可变的。例如,节拍器就可以预先设置振动频率,一旦设置完成,就会按照恒定频率打拍子。比特币每次 “嘀嗒” 的时间间隔都不同,因为其内部机制存在概率性。不过,二者的目的都一样:演奏音乐,让舞蹈可以继续。

  老爷钟

  ~0.5 Hz(Hz “赫兹”表示周期性事件在一秒内发生的次数)

  节拍器

  ~0.67 Hz 至 ~4.67 Hz

  石英表

  32768 Hz

  铯 133 原子钟

  9,192,631,770 Hz

  比特币

  一个区块(0·00000192901 Hz* 至 ∞ Hz**)
*创世块(6 天)
** 区块之间时间戳的 delta 值可以是负数。

  眼前的比特币不就是一个时钟吗?中本聪确实暗示过,整个比特币网络就像一个时钟,用他的话来说,一个分布式时间戳服务器。

  

在这篇论文中,我们将提出一种通过点对点分布式时间戳服务器来为一组交易的发生顺序生成计算证明,从而解决多重支付问题。
—— 中本聪,《比特币:一种点对点的电子现金系统》(2009)

  从比特币白皮书最后的参考文献来看,时间戳显然是一大根本问题。在 8 篇参考文献中,有 3 篇与时间戳有关:

  

  • 《如何为数字文档加上时间戳》,S. Haber,W.S. Stornetta(1991)
  • 《论如何提高数字时间戳的效率和可靠性》,D. Bayer,S. Haber,W.S. Stornetta(1992)
  • 《如何设计一个信任最小化的安全时间戳服务》,H. Massias,X.S. Avila,J.-J. Quisquater(1999)

  正如 Haber 和 Stornetta 在 1991 年所述,数字时间戳就是利用计算过程让用户(或敌对方)无法向前或向后更改数字文档的日期。不同于纸质文档,数字文档易于篡改,而且篡改时并不一定会在物理媒介上留下任何明显的迹象。在数字世界,伪造和篡改可以达到无懈可击的地步。

  鉴于信息的可塑性,为数字文档添加时间戳成了一个非常复杂的过程。直觉的解决方案根本不起作用。以文本文档为例,只是简单地在文档末尾加上一个日期是根本没用的,因为任何人(包括你自己)都可以轻而易举地修改日期。更何况,你一开始就可以伪造日期。

  时间是一条因果链

  

极端一点,整个世界无非就是一张关系网而已。
——Tim Berners-Lee,《编织万维网》(1999)

  伪造日期是一个普遍问题,并不仅仅存在于数字世界。例如,在绑架案中,绑匪就需要一种办法来证实绑票发生的时间。

  

  - 时间证明 -

  这个方法之所以可行,是因为报纸很难伪造,而且易于验证。由于报纸头版报道的都是前一天的事件,绑匪是不可能提前预知头版新闻、并提前几周就伪造好人质照片的。因此,照片中人质手持的报纸的发行日期就是人质在世的证明。

  这个方法凸显了一个重要概念:因果关系。时间箭头反映了事件的因果关系。没有因果关系,就无所谓时间。在赛博世界,哈希函数对于解决时间戳问题来说至关重要,因为它引入了因果关系。如果没有某份文档,我们就无法生成对应的密码学哈希值,因此文档和哈希值之间存在因果关系:先要有数据,而后才能生成(该数据对应的)哈希值。换言之,如果没有单向函数的计算不可逆性,赛博世界中就不会存在因果关系。

  

  想了解相关资讯和获取比特币、以太坊、IPFS的朋友可以关注公众号:比特小牛

  - 先有 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 年的论文中指出:“请求时间戳的客户端的顺序以及它们所提交的哈希值是无法预知的。因此,如果我们在签名证书中包含之前客户端请求序列的比特,就知道证书的时间戳晚于这些请求……证书中必须包括之前文档的比特这一要求也可以从另一个方向指明时间的先后,因为时间戳机构无法预先发行证书,除非它拥有此时此刻的请求。”

  所有组件都在这里了。中本聪的高明之处在于将这些组件全都组合到了一起,从而免去对时间戳机构的需求。

  想了解相关资讯和获取比特币、以太坊、IPFS的朋友可以关注公众号:比特小牛

回顶部