主页 > 创建imtoken钱包流程 > 区块链共识机制有哪些?

区块链共识机制有哪些?

创建imtoken钱包流程 2023-08-01 05:14:29

共识机制是区块链的核心特性,是分布式架构下保证区块链系统一致性的解决方案。目前主流的共识算法有很多:POW、POS、DPOS、RCP、PBFT、DBFT等。网上对这些共识算法有很多简单的介绍,但基本上都是肤浅的,缺乏深入的解释,读者很难理解这些共识机制背后的核心原理。本文将对区块链共识机制进行简单的讲解,但限于篇幅,只讲解区块链最重要的两种共识机制,即比特币和以太坊的共识机制。

比特币共识机制

比特币是区块链的第一个应用,也是第一个实现共识机制的。因此,要了解区块链共识机制,自然要从比特币共识机制说起。另外,虽然很多文章提到比特币的共识机制是POW(Proof of Work),但其实POW只是整个比特币共识机制的一部分。虽然它是核心部分,但它不是。全部。事实上比特币的赚钱原理,比特币的分布式共识是通过网络节点的 4 个独立进程交互实现的:

先说第一个流程,交易的独立验证。每个节点收到每笔交易后,首先会根据一长串的判断标准验证交易的有效性,包括但不限于验证交易的语法和数据结构是否正确,输入输出是否正确正确的。空,总输入是否小于总输出,每个输入引用的输出是否已经被消费等本地事务池(或内存池)并将事务广播到其他相邻节点。如果没有通过验证,则该交易将被丢弃,并且不会被广播。其他节点收到交易后,也进行同样的独立验证。验证有效后,也被放入自己的交易池中,继续向其他节点广播。因此,理论上,无效交易一开始会被丢弃,有效交易最终会到达全网所有节点并被每个全节点保存,即全网达成了“交易有效”的共识。 ”。

接下来讲第二个流程,了解有效交易是如何打包成区块的。经过一段时间,通常是 10 分钟左右,各个节点的交易池中会收集到很多有效但未确认的交易,这些交易会被组装成一个 Merkle Tree。关于Merkle Tree的结构,我们在上一篇《014|从微观到宏观理解区块链》中已经讲过,这里不再赘述。然而,组装到默克尔树中的第一笔交易是相当特殊的。这是一个硬币创建交易,也称为 Coinbase 交易,从中生成新的比特币。交易由节点自己创建,挖矿奖励支付到矿工自己的地址。挖矿奖励包括新创建的比特币和区块中包含的所有交易的总费用。Merkle Tree组装完成后,得到Merkle Root,再结合区块头的其他5个字段——Version、Pre Block、Times、Difficulty、Nonce,一共6个字段组合后得到区块hash两个 SHA256 计算。价值。一个有效的区块要求其哈希值必须小于难度难度值,在撰写本文时,它要求哈希值在开始时至少有 18 个 0。实际上,挖矿就是通过修改参数的值,不断地计算区块哈希值,直到计算出满足难度要求的哈希值。一般通过修改Nonce值来计算区块哈希值,其他五个字段基本不变。由于哈希函数的特性,难度值越大,理论上计算出满足要求的哈希值所需的计算量就越大。比如你掷三个骰子,如果难度要求之和小于18,就很容易达到,基本上一两掷就可以满足要求;而如果你增加难度,要求的总和小于9,那么从概率上来说,就没有那么容易了,可能需要十几甚至几十次才能达到;而如果要求总和等于3,则只能通过扔三个1来实现,大家都知道实现的概率很低,可能只扔一两百次后才会出现。因此,从统计学的角度来看,可以用一定的难度值来计算概率对应所需的计算次数,即“工作量”。所以,只要你达到了难度要求,也间接证明你已经付出了相应的工作。这是工作证明。

当一个节点计算出满足难度要求的区块哈希时,说明矿工已经成功挖出该区块,该节点将把该区块组装到本地区块链中,并将该区块广播给其他节点。然后,进入第三道工序。当其他节点收到这个块时,它们也会独立地验证该块是否有效。和独立验证交易一样,也有一个验证标准列表,包括但不限于验证之前引用的区块是否正确、难度值是否符合标准、区块哈希是否真的符合难度要求、Coinbase是否transaction 挖矿奖励是否超过应得的,整个区块的每笔交易是否有效,等等。其中,难度值有标准计算公式,每个节点都会根据标准公式独立计算出实际难度值。因此,如果矿工不按照标准自己设置较低的难度,其他节点是无法通过的。同样,挖矿奖励有一个标准公式,如果矿工奖励自己的比特币过多,其他节点也将无法通过。在每个节点验证该区块有效后,它还将该区块组装到其本地区块链中,并继续将该区块广播给其他节点。同样,挖矿奖励有一个标准公式,如果矿工奖励自己的比特币过多,其他节点也将无法通过。在每个节点验证该区块有效后,它还将该区块组装到其本地区块链中,并继续将该区块广播给其他节点。同样,挖矿奖励有一个标准公式,如果矿工奖励自己的比特币过多,其他节点也将无法通过。在每个节点验证该区块有效后,它还将该区块组装到其本地区块链中,并继续将该区块广播给其他节点。

由于所有节点都在同时挖掘同一个区块,因此有可能多个节点同时挖掘同一个区块,并将自己挖出的区块广播给其他节点。假设两个节点同时挖出了新的区块,即区块N1和N2,它们之前的区块都是P。有的节点会先收到N1,然后将N1组装到自己的本地区块链中,也就是主链。但不久之后,这些节点也会收到 N2,此时他们会将 N2 放入备用链中。当其他节点先接收 N2 然后接收 N1 时,N2 在它们的主链上,N1 在它们的备用链上。这时候,整个区块链暂时被分成了两个分叉,而要打破这种局面,就看下一个生成的区块是基于N1还是基于N2。如果下一个块基于 N1,自然而然,N1 的链就成为最长的链和累积工作量最多的链。那么,那些将N2链设置为主链的节点会根据实际情况选择将N1链改为主链,N2就会成为孤儿而被抛弃。

以上就是比特币共识机制的核心内容。说白了,每个交易和区块的创建和验证都是按照所有节点都认可的一些标准独立验证的。当大多数节点识别并编写自己的区块链时,自动形成分布式共识。所有的区块链基本上都遵循这个逻辑。不同的区块链主要有不同的标准。比特币主要基于POW机制。这种机制实现起来很简单,但是会造成大量的能源浪费。因为所有节点都竞相同时挖同一个区块,而且基本上只有一个节点可以获胜,其他没有获胜的节点所消耗的算力就会被浪费掉。另外,每笔交易确认(即出块时间)约为10分钟,

以太坊共识机制

以太坊的共识机制也是基于 POW,但与比特币相比,主要有两点不同:一是挖矿时间控制在 10 到 19 秒之间,出块时间比比特币快很多;孤块也有挖矿奖励。在比特币中,孤块(即上面的 N2 块)被丢弃,挖掘孤块的矿工不会获得任何奖励。但在以太坊中,孤块可以打包成块。如果后续块也将之前生成的孤块打包成块,则孤块成为叔块。然后,到达这个叔块的矿工可以得到奖励,把叔块打包成块的矿工也可以获得额外的奖励,但是每个块最多只能包含两个叔块,并且不能包含太长的孤儿。块,最多支持 7 级祖先孤块。由于以太坊的出块时间要短得多,自然更容易出现临时分叉和孤块,每个区块很难在这么短的时间内完全传播到全网。对于矿工来说,这是一个巨大的损失。因此,为了平衡各方利益,以太坊设计了叔块机制。在撰写本文时,叔块率约为 16.9%。为了平衡各方利益,以太坊设计了叔块机制。在撰写本文时,叔块率约为 16.9%。为了平衡各方利益,以太坊设计了叔块机制。在撰写本文时,叔块率约为 16.9%。

但是,以太坊正计划从 POW 机制切换到 POS(Proof of Stack,权益证明)机制。它的新共识机制叫做 Casper比特币的赚钱原理,它有两个不同实现的版本,分别是:

Casper FFG 由 Vitalik 领导,专注于逐步迭代实现,慢慢过渡到 POS 机制。Casper CBC 由 Vlad Zamfir 主导,与传统的协议设计方法不同,即先定义完整的协议。CBC 协议在开始时只是部分确定,协议的其余部分被证明满足 required/required 的属性。得到。但是,只有两种不同的方法,POS的核心概念还是一样的。相对来说,FFG 比较容易理解,而且很可能是第一个部署到以太坊的 Casper 版本,所以下面几段主要讲解 FFG。

Casper的FFG版本是一种混合POW/POS共识机制。在该机制下产生的每个区块仍然使用 POW 挖矿机制,但每 100 个区块会添加一个 POS 检查点。(validator) 来评估区块的最终有效性。创世块是一个检查点,高度为 100 的倍数的块也是检查点。连接这些检查点形成一个检查点链。一个检查点通常有两种状态:justified 和 finalized。Finalized 意味着它已经确定为最终的和有效的。该状态的检查点中至少已经存在一个子检查点。合理意味着检查点已被证明是合理的。Finalized 检查点必须是合理的,但不能反过来。一个检查点是否有效是多个验证者投票的结果。

首先,要想成为验证人,需要投入一笔押金,即抵押一定数量的以太币作为权益证明,才有资格成为验证人。通过广播存款消息来操作存款。只要消息有效并打包到区块中,就可以加入验证者集合,成为验证者之一。此外,如果您想从验证人集中退出,您可以广播另一个退出消息。但是需要注意的是,一旦退出,验证者的公钥将被永久禁止再次加入验证者集合。

然后,在成为验证者后,您可以通过向网络广播投票消息来开始为检查点投票。投票消息主要包含五条信息:两个检查点 s 和 t,这两个检查点的高度 h(s) 和 h(t),以及验证者的公钥 ν。要求 s 必须是 t 的祖先。一般来说,t 是最新的检查点,s 是最后一个被确定为最终有效检查点的检查点。此外,还要求验证者的公钥 v 必须在验证者集中找到,否则认为投票无效。当超过 2/3 的验证者(实际上是总存款的 2/3)投票支持 (s, t) 对检查点时,则 s 最终确定并且 t 是合理的。此外,那些下注 (s, t) 也会获得货币奖励,奖励与质押保证金成正比,即质押保证金越多,获得的奖励越多。这个奖励也可以理解为抵押保证金的利息。

此外,Casper 还设定了两条诫命:

验证者不能以相同的 h(t) 发出两票,即如果有两票:并且,则 h(t1) = h(t2) 是不允许的;如果 h(s < @1) < h(s2) < h(t2) < h(t1),那么第一次poll的span已经覆盖了第二次poll,这也是不允许的.

如果验证人违反上述戒律,验证人将受到处罚,其质押的保证金将被没收。

最后,Casper 选择的分叉链与 POW 机制下积累工作量最多的链不同。Casper 选择分叉链的规则是选择具有最高合理检查点高度的链。原文是:

显然,以太坊的共识机制要比比特币复杂得多,主要有两个原因:一是出块时间大大缩短,二是引入了POS机制。在POW机制下,出块时间缩短到十多秒。虽然性能提升了,但实际上降低了安全性,因为会引入很多其他的问题。例如,新区块很难在如此短的时间内传播到全网。叉链更容易出现。为了解决这些问题,需要设计更多的共识协议来提高安全性。POS机制的引入变成了POW+POS的混合机制,复杂度不是1+1=2那么简单。