主页 > imtoken如何转账 > 浅谈区块链共识算法

浅谈区块链共识算法

imtoken如何转账 2023-04-18 05:15:52

比特币是什么算法_比特币的共识算法_比特币算法作用

区块链的核心之一是共识算法。 由于各种区块链采用的共识算法不同,其在运行性能、容灾、容错等方面的表现也不同,进而决定了不同链的应用场景存在差异。

本期我们将选取一些比较流行的共识算法进行讨论。 目前比较常见的共识算法有POW、POS、DPOS、PBFT、RBFT等。 此外,还有Hyperledger Fabric推动的Kafka和Raft。 以下是共识算法及其对应的代表链。

共识算法

代表链

战俘

BTC(比特币)、ETH(以太坊)

收银机

原子(铁臂阿童木)

DPOS

EOS(西柚)

PBFT&RBFT

SWTC(京通)

卡夫卡

超级账本结构

超级账本结构

接下来,我们一一介绍这些共识算法。 POW(Proof Of Work)——工作量证明。 所有竞争的记账方都需要通过大量的计算来解决一个算法问题。 最先答对问题的一方将获得本轮的记账权。 计算机的计算能力越高,它的功能就越强大。 获得簿记权的机会。 计算能力由计算机硬件(CPU、GPU等)提供,消耗电力,造成大量能源浪费。 主要用于没有信任关系的公链,出块速度慢。 POS(Proof Of Stake)- Proof of Stake POS记账权是由币龄决定的,币龄如何获取,比如你有1W Token,过了一段时间,比如10天,那么你的币龄是 1W x 10= 10W。 如果此时你的币龄是网络节点中最大的,那么你就获得了记账权,自然可以获得记账的Token奖励。 帐户权限。 这种共识的好处是持有Token的人越多,就越自觉地维护链条的秩序,因为作恶的成本很高。 共识过程比POW更快,因为POS通过币龄确定记账权的难度远低于POW通过全网大量计算得到正确答案的难度。 缺点是去中心化程度不高,因为货币时效机制决定了记账权容易被大资本控制,贫富差距容易拉大。 在POS机制下,持有少量Token的人很难获得记账权和记账奖励,而大量的Token持有者容易形成记账权垄断,不利于链上生态发展. DPOS(Delegated Proof Of Stake)- Delegated Proof Of Stake相当于POS的升级版。 主体的概念被添加到节点中。 所有网络节点都可以参与投票,选举节点代表。 这些得票高的节点代表会轮流记账,相对于POS的去中心化,去中心化程度提高,出块时间更短,效率更高。 PBFT (Practical Byzantine Fault Tolerance)——实用拜占庭容错 PBFT是区块链共识机制的主流算法之一。 优化后拜占庭容错算法从指数级降低到多项式级,支持网络弱同步。 在节点不超过总节点1/3的情况下(最差需要F+1轮交互,F为叛徒节点),保证整个系统达成共识。

比特币的共识算法_比特币是什么算法_比特币算法作用

C为客户端,0~3为从节点,其中0为主节点,3为故障节点。 如上图所示,pbft算法的主要工作流程分为三个阶段: 1)客户端发送请求激活主节点的服务运行。 2)当主节点收到请求后,启动三阶段协议将请求广播给各个从节点。 Stage 1 Pre-Prepare 主节点给收到的请求分配编号,然后发送pre-prepare消息<

,message> 到其他从节点。 view:当前视图的编号。 当主节点故障导致视图轮换时,v的值相应增加n:当前请求的编号。 主节点从客户端收到的每个请求都标有一个数字。 digest: message digest message: message 注意,只有满足以下条件,每个从节点才会接受预准备消息: 1. 请求和预准备消息的签名正确,摘要与消息的摘要。 2、当前视图号为v。 3、从节点在视图v中从未收到过序号为n的消息,或者已经收到但摘要d和消息m需要与上一条消息相同。 4. 数字n必须在高低水位h和H之间。Phase 2 Prepare接收节点发来的PRE-PREPARE消息,检查消息的合法性,检查通过后将prepare消息广播给其他节点通过

,带上节点的id,同时接受其他节点的PREPARE报文,收到PREPARE报文后也进行合法性检查。 一旦收到来自2f个不同节点的prepare消息,就意味着prepare阶段已经完成。 只有满足以下条件,每个节点才会接受准备消息: 1. 消息签名正确。 2. 视图编号相同。 3、数字n满足高低水位。 Phase 3:Commit广播commit消息,告诉其他节点某个proposal n在view v中已经处于ready状态,如果收到2f+1条commit消息(包括自己的一条,这些来自不同节点的commit消息携带相同的数字 n 和视图 v),则提案通过。 该请求将由节点执行。 完成请求的操作后,节点向客户端发送回复。 只有满足以下条件,每个点才会接受确认消息: 1. 消息签名正确。 2. 视图编号相同。 3、数字n满足高低水位。 客户端等待来自不同节点的响应。 如果 f+1 个响应相同,则响应为运算结果。 RBFT(Randomized BFT)通常采用PBFT共识机制。 主节点(Replica)负责对来自客户端的交易请求进行排序,然后按顺序发送给备份节点(Backups)。 主节点比其他备份节点拥有更大的权限。 一旦主节点出现问题比特币的共识算法,会导致系统出现比较大的延迟,甚至无法达成共识。

国内自主研发的井通联盟公链采用的RBFT共识机制针对这一缺陷进行了改进。 RBFT参照RAFT中的选举机制,采用投票方式进行节点选举,无需抢夺记账权,保证各共识节点权益的公平性。 与 PBFT 的主要区别是在节点的选择中使用了随机数。 PBFT原本是一种有限节点记账的共识机制,只有系统内认可的节点才能作为记账节点。 添加随机数后,可以将静态节点选择改为动态,增加节点数。 RBFT 算法类似于 DPOS,但支持的节点数远超 EOS(21),这使得系统可以在不牺牲性能的情况下提高安全性。 以上POW、POS、DPOS、PBFT、RBFT是比较常见的主流共识算法。 接下来我们再看看Hyperledger Fabric主要推动的Kafka和Raft。 KafkaKafka是一个基于zookeeper协调的leader和follower模型的分布式消息系统。 Hyperledger fabric 1.4之前的版本主要使用Kafka进行共识。 Hyperledger Fabric 是 IBM 开发的面向企业级客户的区块链项目,后贡献给开源非营利组织 Hyperledger Foundation。 Fabric是许可平台,即适用于联盟链和私有链,会删除“不适合企业场景”的特性,需要注意的是Fabric 2.0之后会去掉Kafka。

比特币是什么算法_比特币的共识算法_比特币算法作用

图1

在图 1 中,一个排序服务由五个排序服务节点 (OSN-n) 和一个 Kafka 集群组成。 订阅服务客户端可以连接到多个 OSN。 请注意,OSN 之间没有直接通信。

这些有序服务节点 (OSN) (1) 执行客户端身份验证,(2) 允许客户端使用简单的配置交易来写入或读取链,以执行交易过滤和验证。

Kafka 中的消息(记录)被写入主题分区。 一个 Kafka 集群可以有多个主题,每个主题可以有多个分区(图 2)。 每个分区都是有序的、不可变的记录序列,不断附加传入的客户端事务。

比特币算法作用_比特币是什么算法_比特币的共识算法

图 2

现在看看Fabric中Kafka的完整工作流程:

排序服务客户端将收集到的记录发送给各个OSN,OSN将批量交易打包成块,生成签名进行验证,并将Kafka上的分区和分区中的偏移量分配给块。 OSN 将块发送到 Kafka 集群中指定的分区中偏移量对应的位置。

每个 OSN 按照相同的顺序从分区中读取区块,并发送给相应通道中的每个对等验证节点进行验证。

比特币算法作用_比特币的共识算法_比特币是什么算法

在部署方面,大部分Kafka集群需要部署到大公司、集团总部,或者云厂商,以保证高算力和高可用。 当Kafka位于联盟链中时,企业之间没有强弱之分,真正有几个对等的企业。 合作的时候,技术设计上会有很大的疑惑。 Kafka排序服务应该部署在哪里? 也许部署到公共云是一种选择,但是当云供应商本身是利益相关者时呢?

和 Kafka 一样,Raft 也是 Leader 和 Follower 模型。 下面是大致的执行流程

节点初始是一个follower,每个follower都有自己的超时时间,时间范围在150ms到300ms之间。 超时后,如果没有检测到来自 Leader 的心跳消息,则 Follower 自动升级为 Candidate(候选人),并向网络中的其他节点发送投票消息,选举自己为 Leader。

当收到大部分选票后,等待节点成为 Leader,向网络中的其他节点同步消息以确认新的 Leader,然后开始处理 Leader 从客户端收到的消息。

leader将从客户端接收到的消息记录到本地日志中,并同步到各个follower节点。 各节点确认没有问题后比特币的共识算法,向leader返回确认消息,leader将处理结果返回给client,同时将日志中的消息更新到持久化存储区并同步它给每个追随者。

Raft的具体执行过程可以参考链接

但 Raft 实现区块链共识的前提是“假设将军中没有叛徒”。 简单通俗的说法是,在分布式系统中,机器节点可能会挂掉,网络可能会延迟、重复或丢失,但机器节点不会作恶。 , 传输的消息不会被篡改。 区块链的重要特征之一是不可篡改。 在没有拜占庭容错的情况下,这个特性是不能完全保证的。 影响是难以想象的。

上面讨论了各个共识算法的原理后,我们简单总结如下:

共识算法

代表链

战俘

适用于免信任授权区块链,如BTC(比特币)、ETH(以太坊),优点是完全去中心化、公平、安全,缺点是消耗大量算力,浪费能源,出块慢,成本低效率 。

收银机

更适合联盟链和私有链。 优点是比POW更快出块。 缺点是去中心化性不强。 持币量越高,话语权越大,容易形成记账权垄断,不利于区域区块链生态发展。

DPOS

PLUS版POS适用于联盟链和私有链。 优点是共识节点数量比较稳定,出块速度比POS快。

拜占庭容错

适用于联盟链和私有链。 优点是支持拜占庭容错,可以提供比较稳定的服务。 缺点是主节点权力太大。 一旦主节点出现问题,将会导致系统出现比较大的延迟,甚至无法达成共识。 而支持节点的数量较少。

径向基傅立叶变换

适用于联盟链和私有链,加入随机数的概念,弱化主节点的权限,实现更多的静态节点,更高的性能,秒级稳定控制出块时间,程序接入简单,耦合度低.

卡夫卡

适用于私有链,优点是交易排序方便,性能高。 缺点是中心化程序比较高,不支持拜占庭容错。

类似于Kafka,适用于私有链。 优点是支持拜占庭,但不支持拜占庭容错,即在分布式系统中,机器节点可能挂掉,网络可能延迟、重复或丢失,但机器节点不会作恶。 也不会被篡改。

结论:

企业对链的选择,其实就是对共识算法的选择。 每种共识算法都有自己的适用场景,企业可以根据自身情况选择最优的。 我们的认知还有很多疏漏,欢迎小伙伴们指正。

比特币的共识算法_比特币是什么算法_比特币算法作用