主页 > imtoken钱包 极速版 > 从拜占庭将军问题看:区块链“共识算法”

从拜占庭将军问题看:区块链“共识算法”

imtoken钱包 极速版 2024-01-26 05:07:23

什么是拜占庭问题

如果你是古代某个国家的将军,除了你之外,你的国家还有9个将军,每个将军带领一支军队,一共10支军队,这10支军队在地理上是分散的。 贵国要进攻一个强大的敌国,而这个敌国也有一定的实力,足以抵挡你们5支军队的同时进攻。 所以,你们10个军队必须要达成共识,至少要让大部分军队达成共识,才能顺利消灭这个敌国。

但是,由于特殊的地理原因,你的10支军队不能集结起来单点进攻,必须在分散的状态下同时包围攻击敌国。 单军单独进攻是没有胜算的,除非至少有6支军队同时出动攻占敌国。 你分散在敌国各地,依靠信号兵相互沟通比特币采用了pow共识算法,协商攻击意图和攻击时间。

这时候困扰你们10位将领的问题是,你们没有中央领导,10位将领都是平等的,你们中间可能有叛徒,擅自改变攻击意图或者攻击时间,甚至传假攻击消息,在这种状态下,你们10名将领能否找到一种分布式协同方式,让你们远程精准协商,从而赢得战斗?

这就是著名的“拜占庭将军问题”。

比特币算法作用_比特币算法源代码_比特币采用了pow共识算法

拜占庭问题与区块链

拜占庭将军问题就是要解决去中心化共识机制的问题,而这个共识问题也是比特币中的区块链网络需要解决的问题。

比特币算法作用_比特币采用了pow共识算法_比特币算法源代码

由于拜占庭将领分散,没有一个中央领导机构,因此在进攻敌人之前,他们必须就进攻地点和时间进行协商并达成共识。 那么在限定的时间内,只要解决提案(进攻方案)的一致性,并获得大多数将军的认可,就可以解决拜占庭将军问题。

在区块链网络中也是如此。

在区块链的分布式网络中,可能会有多人请求打包区块,其中可能存在伪造的区块,所以这个问题只能通过分布式共识算法来解决。

我们知道区块链的核心价值之一就是共识,这也是大家一直追求的区块链的特性之一。 那么今天我们就重点聊一聊区块链是如何通过“共识机制”来解决上述问题的。

事实上,共识机制的概念并不是区块链兴起时产生的。 在数学领域,尤其是计算机领域,长期以来一直被研究和攻克。 分布式共识机制已经有一些知名的解决方案。 , 取得了非凡的成就。

区块链可以看作是“共识机制”得到充分应用的场景。

1、什么是共识算法?

共识算法,顾名思义,是一种让所有参与者通过算法手段就某一结果达成一致的方案。

比特币算法作用_比特币算法源代码_比特币采用了pow共识算法

在区块链中,是指在不可靠的网络环境中,寻找一种可靠的策略,在不信任的各方之间传递和验证信息。

然而,这里的可靠性也是相对的。 非法节点必须控制在一定比例以内,以保证可靠性。

共识算法有很多种,比特币目前采用的是:工作量证明的共识机制。

2. 为什么区块链需要共识算法?

以比特币为例。 在比特币区块链网络中,由于是去中心化的比特币采用了pow共识算法,每个节点都是平等的。 每个节点都会有一个账本,可以记账,最终会产生很多不同的账本。

但实际上,我们需要每个人都拥有相同的账本,才能保证系统数据的一致性和系统有效运行。

那么如何保证一段时间内只允许一个节点生成合法的账本,保证大家的账本是一致的(至少大部分人的账本是一致的),如何验证合法账本,识别非法账簿?

这些问题必须在去中心化的区块链网络中得到解决,否则任何人都可以随意篡改账本的内容,然后说自己的账本是合法的。 在这种情况下,比特币系统就会一团糟。

比特币算法作用_比特币算法源代码_比特币采用了pow共识算法

比特币如何解决这个问题? 它使用 PoW(工作量证明)共识算法。 该算法不仅可以保证一定时间内出现在网络中的提案(记账请求)的数量是有限的,而且放弃了强一致性的要求,改为最终一致性的要求(即允许同一时间链中有多个合法区块,有一个链接分叉,但最终工作量最大的链接,即最长的链,将是最终的合法链)

除了比特币,其他代币的区块链网络采用什么样的共识算法?

3. 共识算法有哪些?

共识算法有很多,包括PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)、PoW(Proof of Work,工作量证明)、PoS(Proof of Stake,权益证明)、DPoS(Delegate Proof of Stake, Proof of Stake)、Ripple(瑞波)、分布式共识算法(Pasox、Raft)等,每种算法都有不同的玩法。

以下是区块链中一些最常用的:

PoW(工作量证明)

比特币采用了pow共识算法_比特币算法作用_比特币算法源代码

比特币和以太坊都是基于这个算法实现的。 简单来说,PoW 是一种证明,证明工人已经完成了一定的工作量。 PoW 系统的主要特点是计算的不对称性。 工作端需要做一定的困难工作才能得到一个结果,但验证者可以很容易地通过结果检查工作端是否做了相应的工作。 哈哈,这就是俗话说,做事难,检查容易。

比特币算法源代码_比特币采用了pow共识算法_比特币算法作用

在比特币系统中,大约每 10 分钟就会开始一轮算力竞赛。 大家对特定字符串+随机nonce数进行SHA256计算,期望得到符合系统预期的值。 如果计算出来的结果不满足预期,nonce值会不断调整重新计算,直到满足预期值,所以还是很难找到预期值,而且没有捷径,必须不断尝试nonce值,这会消耗巨大的计算量,也就是所谓的挖矿(为了方便理解这里粗略介绍一下工作原理,更具体的我会在另一篇区块链哈希算法的文章中介绍)。

如果某个节点运气好,计算结果刚好符合预期值,那么这个节点就需要告诉全网的其他节点,让其他节点验证自己的工作是否正确。 PoW 是一种计算权力不对称性的算法。 如果其他节点快速验证没有问题,那么这个幸运节点就有记账权,可以将自己刚刚打包的区块放入区块链。

PoW 的特点是:

所以PoW的优缺点还是比较明显的,尤其是空算力的问题在比特币上经常被诟病,所以以太坊的规划目标是改用PoS算法。

PoS(权益证明,权益证明)

比特币算法作用_比特币算法源代码_比特币采用了pow共识算法

PoS算法解决了PoW的空算力问题。 POS全称为Proof of Equity,也可称为Proof of Equity。 它实际上是一种共识机制,要求每个节点提供拥有一定数量虚拟货币的证明,以争夺区块链记账权。

在PoS模式下,记账权不再像PoW那样,谁的算力大,谁记账的概率就高,而是谁的代币多,就更有可能获得记账权。 可以想象,PoW类似于多劳多得,PoS类似于富人多得。

比特币算法作用_比特币算法源代码_比特币采用了pow共识算法

单纯依靠代币数量来分配记账权很可能会导致记账权的中心化。 因此,在一些代币系统中,在记账权的竞争中,除了计算谁的代币多之外,还会计算谁拥有的代币多。 令牌的持续时间,例如 Peercoin。

虽然 PoS 明显解决了算力空虚的问题,缩短了达成共识的时间。 但是,PoS 算法也可能会带来一些新的问题。 比如,由于马太效应,制度的决策权和利益会越来越集中在少数人手中,失去公正。 此外,PoS系统容易受到“分叉攻击”导致“双重支付”等问题。

因此,POS算法也经历了各种变化和升级,比如DPos算法。

DPoS (Delegate Proof of Stake, 代表权益证明)

DPos算法被称为Delegated Proof of Stake或Delegated Proof of Stake。 与 PoW 和 PoS 相比,进一步提高了区块链的效率。

DPoS 机制不需要网络中的所有节点都参与区块的创建和验证。 它会时不时地选出一小群节点,让这一小群节点来做区块链的创建和验证。 进一步降低了网络的资源消耗,也提高了区块链的工作效率,比如EOS。

但是这一小群节点是如何确定的呢? 事实上,它是由每个人投票决定的。 在DPoS系统下,每一个代币就是一票,充分利用了股东的投票权,以公平的方式达成共识。 每个人选出N个见证人(即N个矿池),这N个见证人拥有同等的权力,只有见证人才能产生和管理区块。 此外,利益相关者可以随时投票更换这些见证人。

还有一些其他的共识算法,这里就不一一展开了。 在区块链中,由于每个项目的场景不同,设计的架构和采用的共识算法也不同。 主要从去中心化、安全性、性能三个要素出发,根据不同的应用场景进行不同的组合。