00:00
什么是拜占庭将军问题?拜占庭将军问题其实是虚构出来的一个故事,是为了方便通俗的介绍分布式系统所面临的难题。1982年Leslie Lam port提出的拜占庭将军问题是解释一致性问题的一个虚拟模型。拜占庭是股东罗马的首都,由于地域宽广,守卫的将军需要通过信使传递消息。达成一致的决定。但由于将军中可能存在叛徒,这些叛变的将军可能会发送错误的消息,干扰大家的决议。拜占庭问题的提出是为了解决上述情况下怎样让忠诚的将军们达成一致的决议。这个问题演变到计算机领域,就是在互联网中,不同计算机通过通信怎样达成一致。与拜占庭将军类似,实际过程中有些计算机可能出现错误,有些计算机有可能被黑客攻击。怎样保证网络上的计算机对某个事物达成一致,就是这个理论模型要解决的问题。在这个问题里,各邻国最重要的事情是所有将军如何能够达成共识去攻打拜占庭帝国。这些将军需要实现某一个统一的目标,一致进攻或者一致。
01:29
不退,但是单独行动却又可能面临失败,所以必须达成共识,一致合作。由于叛徒的存在。将军们缺乏达成一致的有效途径,这里的一致性才是拜占庭将军问题需要探讨的内容。假如本来叛徒数量就已经多到了问题无解的地步,那么这个就是反叛的问题了。同时,我们的目标是忠诚的将军能够达成一致。对于这些忠诚的将军来说,进攻或者撤退都是可以的,只要他们能够达成一致就可以。
02:08
但是光靠一致就可以解决问题了吗?仔细考虑一下,如果万事俱备,客观上每个忠诚的将军只要进攻了,就一定能够胜利,但是却因为叛徒的存在,他们都一致的没有进攻。反之,在条件不利的情况下,将军们不应该进攻,但是却因为叛徒的存在,所有人都一致的进攻了。从这个分析可以发现,只有一致性是不足以解决拜占庭将军问题的,还需要有一个正确性的要求,这个要求是值得思考的,因为如果客观来看,或许会有绝对正确的判断,但是针对每一个将军,大家的判断或许都不相同。我们如何定义正确呢?或许可以简单的说,正确就是每个忠诚的将军都正确的表达了自己的意思,不会因为叛徒让别的将军认为忠诚的将军是叛徒,而不采用他传达的消息。在这些将军里面,如果出现了叛徒。
03:18
情况就会变得异常复杂,可能会出现如下的问题,叛徒可能欺骗某些将军,自己将采取进攻行动,叛徒可能怂恿其他将军行动,叛徒可能迷惑其他将军,使他们接受不一致的信息,从而感到迷惑。至此,我们将拜占庭将军问题简化成了所有忠诚的将军都能够让别的将军接收到。自己的真实意图,并最终一致行动,而形式化的描述就是一致性与正确性。在区块链这样的分布式网络中。我们还是以将军为例,每位将军都保留一份历史消息账本,因为每份消息都是进行过签名的,所以如果有背叛的将军,我们很容易就能找出来。在一轮共识的流程里,即便有消息不一致,但是只要背叛将军的个数少于1/3,这一轮共识就能达成。什么是区块链共识机制?共识机制是区块链是核心的组成要素之一,它决定了区块链的业务吞吐量、交易速度。不可。
04:33
篡改性、准入门槛等等是最为关键的技术要素之一。要理解区块链共识机制,首先就需要理解区块链共识机制到底解决了什么问题。共识机制主要解决了两个问题,谁有权利作弊问题。上一次我们构造了一个中心化记账的场景。在这个场景下。记账问题其实可以简化为大家信任。
05:03
中心记账者即可。然而,在分布式记账的场景下,问题更为复杂。首先,大家面临的最大问题是,谁有权利记账?其次是如何避免记账者作弊。毕竟,谁都有权利记账。也就意味着,谁都有可能作弊。以上两部分共同构成了区块链共识机制。通常人们在表述一个比特币上的问题时。共识的内涵还包括比特币的使用者、开发者、矿工。来达成社区共识的部分。所以共识这个词在区块链领域还。有些民主的味道,不单单是技术领域的共识。
我来说两句