比特币和拜占庭将军问题有什么直接的关系

区块链

580人已加入

描述

拜占庭将军问题是学习比特币技术一个绕不开的话题。下次听别人谈起拜占庭,你也可以过去侃两句啦。

什么是拜占庭将军问题?

拜占庭将军问题(Byzantine failures),是由计算机科学史上的传奇人物莱斯利·兰伯特提出的。主要针对点对点通信中的基本问题——分布式系统一致性问题。

是不是有种不明觉厉的感觉?完全听不懂啊!

别着急,继续往下看呗。

兰伯特说:故事让问题变得受欢迎。所以,拜占庭将军问题,是兰伯特在研究分布式系统容错性时,编的一个故事:

拜占庭帝国想要进攻一个无比强大的敌人,派出了10支军队去包围这个敌人。由于这样那样的原因,这10支军队不能集合在一起进攻,必须分开驻扎,然后同时发起攻击。

而这个敌人十分的强大,可以同时抵抗5支拜占庭军队的袭击。拜占庭军队里的任何一支,想要单独进攻的话,都毫无胜算。除非至少超过一半(即6支及以上的军队)同时进攻,才能打败敌人。军队分散在敌人的四周,依靠通信兵来相互传递消息:商量“要不要进攻”和“什么时候进攻”。

(因为存在消息丢失的不可靠信道上,试图通过消息传递来达到一致性,是不可能的。所以,在研究拜占庭将军问题的时候,我们已经假定了信道是没有问题的。即所有的通信兵是靠谱的,没有叛徒。)

那么问题来了,如果将军里有叛徒,那么这个叛徒将军可能发送错误消息。比如:告诉其中4只军队要进攻,然后告诉另外5只军队不进攻,然后只有4只军队同时进攻,吃了败仗。剩下5只军队,也无法战胜这个强大的敌人。最后拜占庭军队战败。叛徒真的面黑心黑。

在这种状态下,拜占庭将军们,能不能找到一种分布式的协议,让他们能够远程协商,保证多于6支军队在同时发起进攻?从而打赢这场仗?

计算机科学中,有类似的问题,比如安全漏洞。

系统中的不同节点,会对观察者提供不同的信号。在不知道这些信息是否损坏的情况下,如何交换信息?

比特币和拜占庭将军问题有什么关系?

比特币解决了网络中存在的拜占庭将军问题。

比特币解决了分布式系统信息不一致的问题。

众所周知,比特币是一个分散网络,一个个节点,一个个矿工,就像包围敌人的拜占庭将军们。

而矿工记录的区块信息是否真实?会不会造假人?如何判断?

作恶的矿工造假账,就像混进了军队里的的叛徒。他们会跟其他节点说,他们的假信息是真的,他们记的假账也是真的。叛徒混了进来,会破坏整个比特币网络的真实性和有效性。

大神中本聪解决了这个问题。

首先,大神在设计比特币时,采用了工作量证明机制(PoW)。矿工需要找到一个正确的随机数,才能记账。而随机数是大家认可的数学逻辑,随机嘛,谁都控制不了。这样,所有的矿工(将军)达成共识,投身于轰轰烈烈的挖矿事业中。

其次,造假成本高,真实有奖励。矿工挖矿,要耗费越来越多的时间、电力、资源,造假成本太高。而新币奖励,也激励着矿工真实记账。

第三,每个节点(将军)手里,都有一份实时与其他节点同步的账本,而且账本有时间戳加持,有签名验证身份,如果谁造假,可以非常清楚何人何时造假。

最后,当意见不一致,只要大多数人(超过50%)的人同意,少数服从多数,在分散式网络中共识达成。只要好节点是大多数,整个比特币网络的记账就是真实的。
来源: 区块链研习社 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分