快捷搜索:  汽车  科技

区块链拜占庭帝国是谁(区块链你要了解的东西)

区块链拜占庭帝国是谁(区块链你要了解的东西)二、拜占庭将军问题和区块链在拜占庭将军问题里,最重要的事情是如何让所有将军达成一致,如果中间出现了被拜占庭帝国收买的将军导致只有半数以下的将军攻打拜占庭,那么基本上这些国家将会灭亡,所以建立信任是攻打拜占庭帝国最关键的一环!于是每一方都小心行事,不敢轻易相信邻国。因此,他们既要派出信使给其他“友军”发送进攻时间,又要对收到的其他国寄过来的信件进行仔细甄别。(拜占庭将军问题中并不去考虑通信兵是否会被截获或无法传达信息等问题,即消息传递的信道绝无问题。)在这个过程中,关于拜占庭城的最新消息不断地在邻邦之间传递,但是只有最优秀的将军才能总结出最高效的战术,并将所有收集到拜占庭的信息结合他的战术及攻城计划发布给其他邻邦。其他邻邦将能轻易验证战术的真实性、有效性,并达成共识。这就是拜占庭将军问题。

了解过区块链的人,多少都听说过拜占庭将军问题,或听说过区块链的一个重要地方正是解决了拜占庭将军问题。但真正明白这个问题的人并不多,甚至知道这个问题实质的人都很罕见。那么究竟什么是拜占庭将军问题呢?

区块链拜占庭帝国是谁(区块链你要了解的东西)(1)

一、什么是拜占庭将军问题?

先来说什么是拜占庭将军问题。

故事背景是:拜占庭帝国即中世纪的土耳其,拥有巨大的财富,周围10个邻邦垂诞已久,但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵的都会失败,同时也有可能自身被其他9个邻邦入侵。拜占庭帝国防御能力如此之强,至少要有十个邻邦中的一半以上同时进攻,才有可能攻破。然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。

于是每一方都小心行事,不敢轻易相信邻国。

因此,他们既要派出信使给其他“友军”发送进攻时间,又要对收到的其他国寄过来的信件进行仔细甄别。(拜占庭将军问题中并不去考虑通信兵是否会被截获或无法传达信息等问题,即消息传递的信道绝无问题。)

在这个过程中,关于拜占庭城的最新消息不断地在邻邦之间传递,但是只有最优秀的将军才能总结出最高效的战术,并将所有收集到拜占庭的信息结合他的战术及攻城计划发布给其他邻邦。其他邻邦将能轻易验证战术的真实性、有效性,并达成共识。这就是拜占庭将军问题。

在拜占庭将军问题里,最重要的事情是如何让所有将军达成一致,如果中间出现了被拜占庭帝国收买的将军导致只有半数以下的将军攻打拜占庭,那么基本上这些国家将会灭亡,所以建立信任是攻打拜占庭帝国最关键的一环!

二、拜占庭将军问题和区块链

从拜占庭将军问题我们可以发现两个主要的问题;

(1)无法保证每位将军都是诚实的。

(2)无法保证内部信息的统一,如果每位将军收到的信息可能有所不同。

再来看区块链,我们知道区块链是一种去中心化的分布式系统,这个系统存在了多个节点,各个节点协同工作。

那么这样区块链和拜占庭将军问题就联系起来了:每个网络节点相当于一个拜占庭将军,这些节点最终要共同维护工作。那两个问题也就变成了下面这个样子。

(1)无法保证节点信息的正确

一个节点可能同时向不同的服务器发送不一致的消息,导致节点之间存储的信息不一致。这个可以把它理解为单点一致性问题。

(2)无法保证系统内部信息统一

分布式系统中存在一部分节点收到的信息和另一部分节点的收到的信息是不同的,那最终所有的节点应该以哪一条信息为标准呢?

假设分布式网络遵从少数服从多数的情况,那如果全网超过一半的节点同时作恶,去篡改了已经存在的某条信息,那系统也只能接受这条不正确信息,导致系统的前后不一致。

 这两种问题可以统称为系统一致性问题。

三、中本聪的解决之道

中本聪大神为了解决分布式系统中的拜占庭将军问题,在比特币中开创性的提出了工作量证明机制(POW),一举解决了单点一致性和系统一致性问题。

先简单理解一下工作量证明机制是什么:工作量,顾名思义就是要干活,在比特币中要做的就是全网节点要计算区块的哈希值,谁先算对,谁就能获得发出一条消息的权利,并且系统还会给算对的节点额外的奖励;然后全网节点在这条信息之后开始计算新区块的哈希。

1.如何解决的单点一致性问题

通过工作量证明机制,增加了发送信息的成本,每个节点不再能随便发送信息了,只有正确算出区块的哈希值才能发送一条消息。

这就降低了节点发送消息的速率,保证一段时间内,大部分节点收到的是一条一样的消息。

2.如何解决系统一致性问题

为了解决系统的一致性问题,比特币提出了最长链概念和6次确认概念。

1)最长链是什么?

可以理解为:节点发送一个消息就是一个区块,一个节点接收上个节点发出的消息之后,在这个消息的基础之上开始进行新的数学题计算来获取发送消息的权利,并产生新的消息区块,这些区块组成一条首尾相连的链条。

区块链拜占庭帝国是谁(区块链你要了解的东西)(2)

在系统内信息传输的过程中,难免会出现节点A和节点B几乎同时算出数学题的情况,这个时候它们向外发送消息,可能离节点A近的节点先听到A的消息,离节点B近的节点先听到B的消息。

节点都以最先收到的消息为准,分别开始在其后进行数学题计算。

区块链拜占庭帝国是谁(区块链你要了解的东西)(3)

出现这种情况,在系统内就会出现两条消息链条,出现了系统不一致性,如何解决呢?这里就采取了最长链为标准。

全网节点约定:只在消息最多的那条数据链条之后进行数学计算和消息连接,节点时刻监听全网状态,确定自己是不是在最长链条上;如果不是,则立即切换到最长链去进行数学题计算。这就保证了系统内只有一套合法的消息链条。

区块链拜占庭帝国是谁(区块链你要了解的东西)(4)

C在收到A的消息之后优先算出了数学题,那这个时候A和C所在的就是最长链,B所在的链条将会被舍弃,然后F,G,H节点会开始在C之后进行数学题计算。

(2)6次确认是什么

为了防止在比特币网络中出现信息篡改情况的发生,需要每条消息经过6次确认没有更改之后才认为有效。

通过6确认可以大大提高系统的不可篡改性,因为如果想更改一条已经确认的消息,需要正确算出6个数学难题,然后还需要保证自己的更改之后的消息链条为最长链。

这会消耗大量的成本,导致篡改数据的成本高到无法承受,最大程度的保证了系统不会出现确认过的消息前后不一致的问题。

四、总结

比特币虽然通过采用工作量证明的机制解决了拜占庭问题,但是也造成了一些新的问题:因为在比特币网络中节点需要通过计算数学题的方式来获取发消息的权利,这就需要CPU之间竞争谁的计算力强,会造成巨大的能源浪费——这也是比特币网络经常被人诟病的一个原因。

为了解决比特币网络存在的能源浪费,促使人们去探索更多办法去解决拜占庭将军问题,这就出现了后来的权益证明(POS)、股权委托证明(DPOS)等等。以后可能会讲。


相关联文章:

《区块链入门教程第一期:区块链》

《区块链入门教程第二期:挖矿》

《比特币(bitcoin)入门教程》

《为什么比特币有价值?数字货币价值的本质是什么?》

猜您喜欢: