天天小说网

第一节 比特币—PoW

一、拜占庭将军问题与工作量证明机制

拜占庭将军问题是Lesile Lamport于1982年提出的一个共识问题,也是一个典型的分布式节点传输所碰到的问题。就像前文所提到的那样,区块链网络事实上就是一个由点对点传输所连接起来的共享账本,其结构类似于分布式数据库,但是比一般的分布式数据库更为分散。网络上的每一个参与者的计算机都会有一份总账的备份,并且所有的备份都是在实时、持续地更新、对账,以及同步着的。每一个参与者都能在这本总账里记上一笔,每一笔记录都包含着一定时间内的信息,并且每一条这样的记录都实时地被广播到整个网络上。所以在每一台计算机上的每一份拷贝几乎都是同时更新的,并且所有的总账拷贝都保持着同步。但这里的问题是,谁在总账里有更新记录的权力,如果每个节点都更新对自己有利的信息,哪一个才是大家该去相信的?这个问题就和拜占庭将军问题如出一辙。

下面讲一个故事。想象一下,在古代有一个墙高壁厚的城邦,拜占庭城城邦,高墙之内是它的邻居们想象不到的巨额财富。它被其他十个城邦所环绕,这十个城邦也很富饶,但和拜占庭城城邦相比就微不足道了。它的十个邻居都觊觎拜占庭城的财富,并希望侵略并占领它。

但是,拜占庭城的防御是如此强大,没有一个相邻的城邦能够成功入侵。任何单个城邦的入侵行动都会失败,而入侵者的军队也会被歼灭,使得其自身容易遭到其他九个城邦的入侵和劫掠。这十个城邦之间也互相觊觎对方的财富并持续互相对抗着。而且,拜占庭城的防御如此之强,强到需要十个邻邦的一半以上同时进攻才能攻破它。

也就是说,如果六个或者更多的相邻城邦的军队一起进攻,他们就会成功攻破城墙并获得拜占庭城的财富。然而,如果其中有一个或者更多背叛了其他人,答应一起入侵但在其他人进攻的时候又不干了,也就导致只有五支或者更少的军队在同时进攻,那么所有的进攻军队都会被歼灭,并随后被其他没进攻的,或是开始宣称进攻却最终背叛了他们的那(几)个邻居所掠劫。这是一个由不互相信任的各方构成的网络,但他们又必须一起努力以完成共同的使命。

而且,邻居之间通报和协调进军时间的唯一途径是通过骑马在他们之间传递信息。他们不能聚在一个地方开个会,因为所有的王都不互相信任他们的安全在自己的城堡或者军队范围之外能够得到保障。然而,他们可以在任意时间以任意频率派出任意数量的信使到任意的对方。每条信息都包含类似如下的内容:“我将在第四天的6点钟进攻,你愿意加入吗?”

如果收信人同意了,他们就会在原信上附上一份签了名、盖了图章的回应,然后把这份盖章验证了的信息的拷贝再次发送给另外九个邻居,要求他们也这样做。最后的目标是,通过在原始信息链上盖上他们所有十个人的图章,让他们在时间上达成共识。最后的结果是,会有一个盖有十个同意在同一时间进攻图章的完整信息链,当然可能还会有一些因为没有盖全图章而被抛弃了的不完整的信息链。但是,问题在于如果每个城邦向其他九个城邦派出一名信使,或者说就是十个城邦都派出了九名信使,也就是在任何一个时间有总计90次的传输,并且每个城市分别收到九条信息,可能每条信息都写着不同的进攻时间。除此以外,部分城邦会答应超过一个的攻击时间,故意背叛发起人,所以这些叛徒会选择向其他城邦广播超过一条的信息链,于是这个系统会迅速变质成不可信的信息和攻击时间相互矛盾的纠结体。

上面的故事就如同区块链共享账本的更新情况一样,每个节点都能选择同意别的节点发起的信息请求并验证后进行传递,当然,他们也可以选择不同意或者自己再重新发起一个信息给其他节点请求同意。整个网络需要达到的最终目的就是共同同意某一个信息并将它更新到共享账本上,但从拜占庭将军问题上来看,这似乎极度困难。于是区块链通过一种共识机制来解决这个问题,在比特币的区块链中所使用的共识机制是工作量证明(PoW)。

工作量证明实际上就是为信息的传递加入了成本要素,从而降低信息传递的速率,并加入一个随机元素以保证在一个时间段内只有一个城邦或者节点可以有权进行信息广播。这个随机元素就是让节点去计算一个随机哈希算法,它唯一做的事情就是获得一些输入数据然后进行计算并得到一串64位的随机数字和字母的字符串,就像这个:f9584991005d460279e50ee218370303f849feae2b4e1230c59d5d079dc8f6f6用于计算这一字符串的输入数据包含了当前时间点整个区块链的数据或者说整个共享账本,并且尽管单个一般的哈希值用现在的计算机可以几乎即时地计算出来,但只有一个前13个字符是0的哈希值结果可以被比特币区块链系统接受成为工作量证明。这样一个13个0的哈希值是极其罕见的,并且在当前需要花费整个比特币区块链网络大约10分钟的时间才能找到一个。在一台区块链网络节点上的计算机能随机地找到一个有效哈希值之前,上十亿个的无效值会被计算出来,这就是减慢信息传递速率并使

更多内容加载中...请稍候...

若您看到此段落,代表章节内容加载失败,请关闭浏览器的阅读模式、畅读模式、小说模式,以及关闭广告屏蔽功能,或复制网址到其他浏览器阅读!