加载中 ...

比特币技术解读——拜占庭将军问题

2019-09-10 03:35 编辑:btc268.com 来源:区块链资讯

     关注我们有助于升职加薪噢!

 

  区块链蓝图

  公众号ID:BlueBlockchain

  所有人都在崇尚欲望,相信错误的信仰。他们身体变胖,但是灵魂饥饿。

  文 | Blue

  图片来源 | Unsplash

  如果你想深入了解比特币及区块链的技术原理,那么拜占庭将军问题是你绕不过去的一个点。

  今天我们主要帮大家解释清楚,到底什么是拜占庭将军问题,以及它在比特币中是如何被解决的。

  先来看一下 “拜占庭将军问题” 在维基百科中的解释:

  拜占庭将军问题(Byzantine Generals Problem),是由莱斯利·兰波特在其同名论文中提出的分布式对等网络通信容错问题。在分布式计算中,不同的计算机通过通讯交换信息达成共识而按照同一套协作策略行动。但有時候,系统中的成员计算机可能出错而发送错误的信息,用于传递信息的通讯网络也可能导致信息损坏,使得网络中不同的成员关于全体协作的策略得出不同结论,从而破坏系统一致性。拜占庭将军问题被认为是容错性问题中最难的问题类型之一。

  我们要知道,比特币也同样是点对点的分布式网络。比特币中的拜占庭将军问题,其实就是在分布式系统中的如何解决共识一致性的问题(通俗来讲就是怎样才能让所有的矿工达成共识只维护一个账本)。

  01

  原始拜占庭问题

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

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

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

  而且,十个邻居之间通讯和协调统计时间的唯一途径是通过骑马在他们之间传递信息。他们不能聚在一个地方开个会(所有的王都不互相信任他们的安全在自己的城堡或者军队范围之外能够得到保障)。那么,这十个邻邦,如何能够在这种条件下,达成共识一致,共同发起进攻或取消进攻,以确保达到最终目的,就是我们所要解决的拜占庭将军问题。

  02

  中本聪的解决办法

  在我们了解了比特币的运行机制后,把这个问题迁移到比特币中。在比特币中,中本聪引入的共识机制——工作量证明机制(Proof of work),解决了这个问题。

  我们在这里对比比特币系统和拜占庭问题中一致的地方:

  拜占庭问题中的邻邦,即比特币系统中的全节点(矿工),拜占庭即相当于比特币中的总账本(区块链),邻邦之间是互不信任的,比特币的各个全节点同样是彼此陌生的(总体上来看是这样)。邻邦之间可以通过骑兵传达信号,比特币全节点之间可以通过网络广播信息。邻邦希望通过共识一致(半数以上)达到攻破拜占庭的目的。比特币中的全节点,希望能够达到一致共同维护一个账本,确保交易正常记录,维持系统正常运转。如果邻邦的意见没有达成共识,出现差错,那么邻邦面临被亡邦的风险。同样,比特币系统中如果不能达成共识一致,交易将无法进行,比特币的持有者会遭受巨大经济损失,比特币系统也会面临崩溃瓦解。通过这种直观的比较分析,我们可以更好的理解这一问题,那我们就来具体看一下,工作量证明机制,是如何解决这个问题的。

  中本聪在白皮书中介绍:

  为了在点对点的基础上构建一组分散化的时间戳服务器,仅仅像报纸或世界性新闻网络组一样工作是不够的,我们还需要一个类似于亚当?柏克(ADAm Back)提出的哈希现金(HasHCASH)。在进行随机散列运算时,工作量证明机制引入了对某一个特定值的扫描工作,比方说SHA-256下,随机散列值以一个或多个0开始。那么随着0的数目的上升, 找到这个解所需要的工作量将呈指数增长,而对结果进行检验则仅需要一次随机散列运算。

  这里,中本聪为发送消息加入了成本。即不是随便一个邻邦就可以发布消息,而是在同一时间只有一个邻邦可以进行广播,那么是哪个邻邦呢?所有的邻邦(全节点)都要进行一个对特定值扫描的工作,找到这个数没有其他办法,只有通过计算机不断的尝试,谁先找到这个数,谁就拥有了发言的权利。

  我们在区块中补增一个随机数(Nonce),这个随机数要使得该给定区块的随机散列值出现了所需的那么多个0。我们通过反复尝试来找到这个随机数,直到找到为止,这样我们就构建了一个工作量证明机制。只要该CPU耗费的工作量能够满足该工作量证明机制,那么除非重新完成相当的工作量,该区块的信息就不可更改。由于之后的区块是链接在该区块之后的,所以想要更改该区块中的信息,就还需要重新完成之后所有区块的全部工作量。

  这里,中本聪加入了一个随机数,目的就是当网络中的算力不断增长,找到这个数的时间会越来越短,为了保证生成一个区块的时间保持在10分钟左右,就需要不断调整找到这个随机数的难度。同时,因为每一个哈希值都与上一个区块中的哈希值相关联,那么这一条链是不可篡改的,除非完成相同的工作量。后面我们会解释这几乎是不可能的。就算可能,这一行为也是没有任何意义的。

  这一机制其实使得比特币中的全节点共同去完成这一寻找随机数的任务,找到这个数的节点把信息记录在区块中,附上它自己的签名/印章/诸如此类,并向网络中的其他机器广播出去。只要其他网络中的机器接收到并验证通过了这个哈希值和附着在上面的信息,他们就会停止他们当下的计算,使用新的信息更新他们的总账拷贝,然后把新更新的总账/区块链作为哈希算法的输入,再次开始计算哈希值。哈希计算竞赛从一个新的开始点重新开始。

  如此这般,网络持续同步着,所有网络上的电脑都使用着同一版本的总账。在拜占庭问题中,即十个邻邦有了不可篡改且确保真实的一个通讯账本,可以知道谁说了什么信息,这样就可以在如何攻击拜占庭中达成一致。

  最后,在个人向网络输入一笔交易的时候,他们使用内嵌在比特币客户端的标准公钥加密工具来同时他们的私钥以及接收者的公钥来为这笔交易签名。这对应于拜占庭将军问题中他们用来签名和验证消息时使用的“印章”。

  因此,哈希计算速率的限制,加上公钥加密,使得一个不可信网络变成了一个可信的网络,使得所有参与者可以在某些事情上达成一致(比如说攻击时间、或者一系列的交易、域名记录、政治投票系统、或者任何其他的需要分布式协议的地方)。

  至此,拜占庭将军问题在比特币中就很好的得到了解决,其实就是在分布式网络上缺乏信任的问题。工作量证明机制有它的精彩绝伦之处,当然也有不足。但至少在目前看来 ,已经十岁的比特币,经历了风风雨雨依旧存活且产生了越来越大的影响力。这一个“艺术品”也在持续不断的获得越来越多的关注。

  发文时比特币价格:$10583

  本 公 众 号 接 受 BTC 打 赏

  B T C 地 址

  1EBV1P12EkZZTXMJVHy5nnKcYKXgbsdLi2

 

  知识科普  新鲜资讯 专业解读

  尽在区块链蓝图

  公众号ID:BlueBlockchain

  喜欢本篇内容请给我们点个在看~

关键词:比特币新闻 币牛牛

转载自比特币新闻网(www.btc268.com),提供比特币行情走势分析与数字货币投资炒币最新消息。

原文标题:比特币技术解读——拜占庭将军问题

原文地址:http://www.btc268.com/qkl/zs/15168.html

本文来源:区块链资讯编辑:btc268.com

本文仅代表作者个人观点,与本网站立场无关。

本网站转载信息目的在于传递更多信息。请读者仅作参考,投资有风险,入市须谨慎!

'); })();