什么是区块链的共识机制?

2022-06-21 23:12:36 浏览数 (2)

什么是拜占庭将军问题?


拜占庭将军问题其实是虚构出来的一个故事,是为了方便通俗地介绍分布式系统所面临的难题。

1982年,Leslie Lamport提出的“拜占庭将军”问题是解释一致性问题的一个虚拟模型。拜占庭是古东罗马的首都,由于地域宽广,守卫的将军需要通过信使传递消息,达成一致的决定。但由于将军中可能存在叛徒,这些叛变的将军可能会发送错误的消息,干扰大家的决议。

拜占庭问题的提出是为了解决上述情况下,怎样让忠诚的将军们达成一致的决议。这个问题演变到计算机领域,就是在互联网中不同计算机通过通信怎样达成一致。与拜占庭将军类似,实际过程中有些计算机可能出现错误,有些计算机有可能被黑客攻击,怎样保证网络上的计算机对某个事物达成一致就是这个理论模型要解决的问题。

在这个问题里,各邻国最重要的事情是:所有将军如何能够达成共识去攻打拜占庭帝国。这些将军需要实现某一个统一的目标,一致进攻或者一致撤退,但是单独行动却又可能面临失败,所以必须达成共识,一致合作。由于叛徒的存在,将军们缺乏达成一致的有效途径。这里的“一致性”才是拜占庭将军问题需要探讨的内容,假如本来叛徒数量就已经多到了问题无解的地步,那么这个就是“反叛”的问题了。同时我们的目标是忠诚的将军能够达成一致,对于这些忠诚的将军来说,进攻或者撤退都是可以的,只要他们能够达成一致就可以。

但是光靠“一致”就可以解决问题了吗?仔细考虑一下,如果万事俱备,客观上每个忠诚的将军只要进攻了就一定能够胜利,但是却因为叛徒的存在他们都“一致的”没有进攻;反之,在条件不利的情况下,将军们不应该进攻,但是却因为叛徒的存在所有人都“一致的”进攻了。

从这个分析可以发现,只有“一致性”是不足以解决拜占庭将军问题的,还需要有一个“正确性”的要求。这个要求是值得思考的,因为如果客观来看或许会有“绝对正确的”判断,但是针对每一个将军,大家的判断或许都不相同,我们如何定义“正确”呢?或许可以简单地说,正确就是每个忠诚的将军都正确的表达了自己的意思,不会因为叛徒让别的将军认为忠诚的将军是叛徒而不采用他传达的消息。

在这些将军里面,如果出现了叛徒,情况就会变得异常复杂,可能会出现如下的问题:

  • 叛徒可能欺骗某些将军自己将采取进攻行动
  • 叛徒可能怂恿其他将军行动
  • 叛徒可能迷惑其他将军,使他们接受不一致的信息,从而感到迷惑

至此,我们将拜占庭将军问题简化成了,所有忠诚的将军都能够让别的将军接收到自己的真实意图,并最终一致行动;而形式化的描述就是,“一致性”与“正确性”。

在区块链这样的分布式网络中,我们还是以将军为例:

  • 每位将军都保留一份历史消息账本
  • 因为每份消息都是进行过签名的,所以如果有背叛的将军,我们很容易就能找出来; 在一轮共识的流程里,即便有消息不一致,但是只要背叛将军的个数少于1/3,这一轮共识就能达成

什么是区块链共识机制?


共识机制是区块链是核心的组成要素之一,它决定了区块链的业务吞吐量、交易速度、不可篡改性、准入门槛等等,是最为关键的技术要素之一。

要理解区块链共识机制,首先就需要理解区块链共识机制到底解决了什么问题。

共识机制主要解决了两个问题:

  1. 谁有权利;
  2. 作弊问题。

上一次我们构造了一个中心化记账的场景,在这个场景下,记账问题其实可以简化为大家信任中心记账者即可。

然而在分布式记账的场景下,问题更为复杂。首先,大家面临的最大问题是谁有权利记账,其次是如何避免记账者作弊。毕竟,谁都有权利记账,也就意味着谁都有可能作弊。以上两部分共同构成了区块链共识机制。

通常人们在表述一个比特币上的问题时,共识的内涵还包括比特币的使用者、开发者、矿工来达成社区共识的部分,所以“共识”这个词在区块链领域还有些“民主”的味道,不单单是技术领域的“共识”。

0 人点赞