主页 > imtoken新版app > 第四讲 共识机制:从拜占庭共识说起

第四讲 共识机制:从拜占庭共识说起

imtoken新版app 2023-02-15 07:18:09

如果区块链是比特币的主干,

共识机制是灵魂。

【区块链哲学三问】

区块链被公认为具有以下三个基本特征:

1. 区块链是一个分布式数据库(系统)。

2. 区块链使用密码学确保现有数据不被篡改。

3. 区块链使用共识算法对新数据达成共识。

这三点在哲学上可以简单理解为:我是谁,我从哪里来,我要去哪里。

我是谁? 我是一个分布式数据库。

我从哪里来,密码学告诉我过去的记忆。

我要去哪里,共识算法告诉我如何前进。

区块链技术的伟大之处在于其共识机制从去中心化的角度解决了节点间的互信问题。 区块链有很多节点,由于共识机制而达到平衡状态。 虽然密码学占据了区块链的半壁江山,但共识机制是区块链系统持续运行的关键。

如果要深入谈区域链的共识机制,就绕不开一个问题:拜占庭问题。

【关于拜占庭问题及其分析】

拜占庭问题是容错计算中的一个老问题。 1982年由Leslie Lamport等人提出:“拜占庭帝国是5世纪到15世纪的东罗马帝国。拜占庭城邦拥有巨大的财富。被十个邻国觊觎。但拜占庭的城墙坚不可摧,并且没有一个邻国能够成功入侵。任何一个城邦的入侵都会失败,入侵者的军队就会被歼灭,自己反而容易受到其他九个城邦的入侵。这十个城邦也互相觊觎着对方的财富并经常爆发战争。”

拜占庭的防御非常强大,没有多数人就无法攻破它们,如果它的一个邻国叛逃到同盟国,来自该邻国的所有进攻部队将被歼灭,随后被其他邻国掠夺。 因此,这是一个由互不信任的邻居组成的分布式网络,每个邻居都很小心,因为稍有不慎就会给自己带来灾难。

为了获取拜占庭的巨额财富,这些邻居分散在拜占庭各地,依靠士兵传递消息来商定进攻的目的和时间。 这些邻近的将军想要征服拜占庭,他们面临着一个问题。 周围的将领们不确定他们中有没有内奸,也不确定内奸是不是擅自改变了攻击意图或者攻击时间。 在这种状态下,将军们能否找到一种分布式协议进行远程协商比特币采用的共识机制是pos,达成共识,进而赢得拜占庭城邦的财富呢?

在“拜占庭问题”模型中,对将军(节点)有两个默认假设:

所有忠将收到同一个命令后,执行这个命令的结果一定是一样的;

如果命令正确,那么所有忠诚的将军都必须执行这个命令。

假设1的含义是:所有节点对命令的解析和执行都是一样的,这个命令必须是确定性命令,不能有随机性,不能依赖于节点本身的状态。 (这个命令不能是心情好就攻击敌人,心情不好就原地休息。)

假设2的含义是:忠诚的将军需要判断收到的命令是否正确。 这种判断命令的方法是整个拜占庭容错技术的核心。

对于将军们的通信过程,在“拜占庭问题”中也有一个默认的假设:点对点通信是没有问题的。 也就是说,这里,我们假设A将军要给B将军一个命令X,那么派出的使者一定会将命令X准确的传递给B将军。 如下所示:

量子链pos共识机制_比特币采用的共识机制是pos_比特币的工作机制

问题是,如果每个城邦向其他九个城邦派出一个使者,那就意味着这十个城邦各派出九个使者,或者说一次总共传送九十次,而每个城邦分别收到九个消息,每个大概都有不同的攻击时间。

另外,在信息传递过程中,如果叛徒想要破坏原本约定的时间,他会自己修改相关信息,然后发送到其他城邦,迷惑民众。 一个(或多个)城邦修改了与攻击时间相关的信息,从而背叛了始作俑者的初衷,因此跟随错误信息的城邦(包括叛徒)将重新广播更多的信息链不止一个消息,整个信息链会随着他们发送的错误信息迅速退化为一堆不可信任的信息和自相矛盾的攻击时间。

量子链pos共识机制_比特币采用的共识机制是pos_比特币的工作机制

拜占庭问题的解决方案包括:口头协议算法、书面协议算法等。

口头协议算法的核心思想如下:要求每条发送的消息都被正确传递,信息接收者清楚地知道消息发送者的身份,信息接收者知道消息中是否有信息缺失信息。 使用口头协议算法,如果叛徒数量小于1/3,就可以解决拜占庭问题。 也就是说,如果叛徒的数量为m,则当将军总数n至少为3m+1时,问题才能解决。

但是,口头协议算法有一个明显的缺点,那就是无法追溯消息的来源。 为了解决这个问题,提出了一种书面协议算法,要求签名不可伪造,一旦被篡改,可以被发现,并且任何人都可以验证签名的可靠性。

书面协议算法不能完全解决拜占庭问题,因为算法没有考虑信息传输的延迟,签名系统难以实现,签名消息记录的保存很难摆脱中心化组织的问题.

【以比特币为例的区块链共识机制解决方案】

由中本聪创建的比特币通过对系统进行简单的更改解决了这个问题。 它增加了发送消息的成本,从而减慢了消息传递的速度,并添加了一个随机元素以确保一次只有一个城邦可以广播。

加入中本聪的成本是“工作量证明”(即挖矿),工作量证明基于计算一个随机哈希值。 哈希算法所做的唯一事情就是获取一些输入,对其进行计算,并获得一个 64 位的随机数字和字母字符串。

就像我们输入“量子学校区块链”,在哈希算法中使用SHA256算法会得到如下字符:

6ded5808805c1a92caa1334fcce014aeb8238103e8f2730d52b399af0d41b4e4

在比特币世界中,输入数据包括截至当前时间点的整个账本(区块链)。 虽然现在的计算机几乎可以瞬间计算出一个单一的哈希值,但比特币系统接受的工作量证明是无数个 64 位哈希值中唯一的哈希值,而这个哈希值的前 13 个字符是 0,这样一个哈希值极其稀有,无法破解,目前需要整个比特币网络总算力的10分钟左右才能找到一个。

在网络机器随机找到一个有效哈希值之前,会计算出数十亿个无效值 。 计算哈希值需要大量时间,增加了发送消息的时间间隔,导致信息传输速度变慢。 ,这是使整个系统可用的“工作量证明”。

比特币的工作机制_量子链pos共识机制_比特币采用的共识机制是pos

而找到下一个有效散列的机器可以将之前的所有信息放在一起,附上自己的身份信息,以及自己的签名/印章等,并广播给网络中的其他机器。 一旦网络中的其他机器收到并验证了这个有效的哈希值和附加的签名,它们就会停止当前的计算比特币采用的共识机制是pos,用新信息更新它们的账本副本,并将新更新的账本作为哈希算法的输入,重新计算哈希值。 哈希计算竞赛从一个新的起点重新开始。

这样网络就不断同步,网络上的所有计算机都使用同一个版本的账本。

同时,每次成功找到一个有效哈希值和区块链更新之间的间隔大约为10分钟(这是故意的,算法难度每两周调整一次以确保网络总是需要10分钟才能找到一个有效的哈希值)。 在这 10 分钟内,网络上的参与者发送消息并完成交易,并且由于网络上的每台机器都使用相同的分类帐,因此所有这些交易和信息都会进入分布在网络中的分类帐的每个副本。 当区块链在全网更新和同步时,所有在前 10 分钟内进入区块链的交易也会被更新和同步,因此分散的交易记录在所有参与者之间得到协调和同步。

最后,当用户将交易输入网络时,他们使用比特币客户端内置的标准公钥密码术对其进行加密,并使用他们的私钥和接收者的公钥签署交易。 这对应于他们在拜占庭问题中用来签署和验证消息的“印章”。 因此,哈希计算率的限制,结合公钥加密,使得一个不可信的网络变成了一个可信的网络,所有参与者都可以就某些事情(比如攻击时间,或者一系列的交易,域名记录,政治投票等)达成共识系统,或任何其他需要分布式协议的地方)。

将比特币的共识机制引入拜占庭问题造成了这样一种情况:当城邦A向其他九个城邦发送攻击相关信息时,直接将相关信息和发送时间附加到由哈希算法。 同理,加上自己的数字签名,传递给其他城邦。

城邦B收到城邦A发来的消息后,使用对应的网络机器验证有效的哈希值和附加的签名和时间戳信息,解密得到信息,并在城邦同步该信息的相关记录-state B 在机器内部(节点)。 当这条消息从B城邦发送到C城邦时,会在原报文中加入B城邦,并查看该信息的记录。 打上时间戳后,B城邦的所有信息都会经过哈希算法加密后发送给其他城邦。 其他城邦接受消息后,重复这个过程,直到所有城邦都收到消息。

如果有叛徒想要修改攻击性信息误导其他城邦,其他城邦的机器会立即识别异常信息,同步的虚假信息不会被识别,其他城邦的大部分机器仍会同步信息,所以叛徒会失败。 他无法摧毁十个城邦中的大部分节点,也就是至少六个节点,从而保证了信息的一致性,完美解决了拜占庭问题。

这是使区块链共识机制如此特别的关键,它为算法难题提供了解决方案。 区块链的共识机制通过不断同步各个节点的信息,实现分布式节点之间的平衡,保证大多数节点的一致性,即达成共识。

【区块链共识机制的发展变化】

目前,区块链中存在多种共识机制。 以下是一些典型的共识机制:

PoW:工作证明,工作证明

依靠机器进行数学运算获得记账权,资源消耗比其他共识机制多,监管薄弱。 同时,每次达成共识都需要全网参与运行,性能效率较低,容错允许全网50%的节点出错。 优点是完全去中心化,节点自由进出。

当然,由于PoW算力的中心化,很多人对PoW机制的“中心化”提出了质疑。 其中,比特币算力的中心化问题最为受质疑。

PoS:股权证明,权益证明

一般来说,有一个代币持有者的集合,他们将他们的代币放入 PoS 机制中,从而成为验证者。 假设很多验证者在区块链前端发现了一个新区块(区块链中最新的区块),PoS算法随机选择其中一个验证者(验证者的权重是根据他们投入的代币来选择的)多少取决于例如,一个存入 10,000 个代币的验证人被选中的可能性是存入 1,000 个代币的验证人的 10 倍),从而赋予他们生成下一个区块的权利。 和 PoW 一样,以最长链为准。 如果验证者在一定时间内没有产生新的区块,PoS 会继续选择第二个验证者来代替原来选择的验证者产生新的区块。

与选择PoW算法相比,选择PoS算法有哪些好处?

简而言之:无需消耗大量电力即可安全地生成区块。

由于不再需要大量能源,因此通过发行新币来激励参与者继续参与网络的压力有所降低。 负的总发行量在理论上什至是可能的,因为一部分交易费用被“烧掉”,因此货币供应量会随着时间的推移而减少。

由于新币理论上负总流通量,从“合作博弈论”的角度来看,PoS算法可以减少自私挖矿攻击造成的系统弱点,虽然PoW在一定程度上也可以做到这一点。

随着规模经济(指扩大生产规模带来的经济效益增加的现象)消失,集中化的风险就会降低。 价值1000万美元的token会带来价值100万美元的token的十分之一的回报,即作恶的成本需要价值1000万美元的token,而收益只能得到100,000美元代币的价值,这样人们就不会攻击整个区块链,因为作恶的回报与报酬不成正比。

同样,PoS 也有很多问题。 比如PoS就相当于大股东说了算,但是大股东作恶怎么办一直存在争议。

比特币的工作机制_比特币采用的共识机制是pos_量子链pos共识机制

DPoS:Delegate Proof of Stake,共享授权证书

BitShares 社区首先提出了 DPoS 机制。

DPoS 与 PoS 的主要区别在于其节点选举若干代理人,由代理人进行验证和记账。 其合规监管、性能、资源消耗和容错能力与PoS类似。 类似于董事会投票,代币持有者投票选出一定数量的节点来代表他们验证和记账。

DPoS的工作原理是:

权力下放是指每个股东按其持股比例享有影响力。 51% 股东投票的结果将不可逆转且具有约束力。 其运作方式是利用51%以上的股东及时有效地进行表决。 决定一个计划。 为实现这一目标,每个股东都可以将其投票权委托给一名代表。

网络延迟可能会阻止一些代表及时广播他们的区块,这会导致区块链分叉。 然而,这不太可能发生,因为生产区块的代表可以在生产前后与区块的代表建立直接联系,并与你之后的代表(可能还有你之后的代表)建立这种直接联系,这是关于确保你得到报酬。

这种模式每30秒可以产生一个新的区块,并且在正常的网络条件下,区块链分叉的可能性极小,即使发生也可以在几分钟内解决,从而使参与验证和记录的人数账户节点达到秒级共识验证。

瑞波共识:瑞波共识机制

Ripple的共识算法如下:

Ripple 共识算法使一组节点能够基于特定的节点列表达成共识。 最初的特殊节点列表就像一个俱乐部。 接纳新会员,须经本会现有会员51%以上投票通过。 共识遵循核心成员51%的权力,外人没有影响力。 与比特币和点点币一样,Ripple 系统将股东与其投票权分开,因此比其他系统更加集中。

池验证池

这是一种基于传统分布式共识技术加上数据验证的机制。 是目前广泛应用于产业链的共识机制。

优点:无需代币即可工作,在成熟的分布式共识算法(Pasox、Raft)的基础上实现秒级共识验证。

缺点:去中心化程度不如比特币,更适合多方参与的多中心商业模式。

此外,还有很多共识机制,但现在主流的共识机制有PoW共识机制、PoS共识机制和DPoS共识机制。

量子链pos共识机制_比特币的工作机制_比特币采用的共识机制是pos

但目前这些主流的共识机制还存在一定的不足。 比特币吸引了世界上大部分的计算能力。 其他使用 PoW 共识机制的区块链应用很难获得同等的算力来保证自身的安全性。 挖矿也会造成大量资源浪费,共识达成周期长。

除了 PoW 之外,最早也是最重要的算法是 PoS。 它的原理是一个节点持有的币越多,它产生下一个区块的机会就越大。 也就是说,想要造假,就需要持有大量的币。 而由于造假者持有如此多的币,破坏网络的公信力会造成大量的资产损失,很可能超过造假的收益。

与PoW相比,PoS节省了大量资源,但其缺点也很明显:会造成富者愈富,穷者愈穷,进而导致用户流失,新用户也不愿意加入。 而且还需要挖矿,本质上并没有解决商业应用的痛点。 所有的确认只是一种概率表达,而不是确定性的事情。 理论上,很可能还有其他的攻击效果。 DPoS 的整个共识机制仍然依赖于代币,很多商业应用并不需要代币的存在。

【结论】

综上所述,似乎没有一种共识机制是完美的,也意味着没有一种共识机制是适用于所有应用场景的。 因此,区块链的共识机制仍在不断进步和发展。

虽然目前主流的区块链共识机制大多是去中心化的公链,但仍然存在一些不足。 也有少数机构采用了半中心化或中心化的共识机制,而半中心化甚至中心化的共识机制显然是违背区块链的一致性的,这会使权力掌握在少数人手中,以及许多问题,信用机器将因此崩溃。

今天,世界仍在等待一个新的共识机制——一个能让所有人信服的共识机制。

但这可能是一个哲学问题,世界上永远不会有完美的共识机制。