【区块链】共识算法简介

ops/2024/11/14 3:19:27/

算法>共识算法简介

区块链三要素:

算法>共识算法作为区块链三大核心技术之一,其重要性不言而喻。今天就来简单介绍算法>共识算法的基本知识。

最简单的解释,算法>共识算法就是要让所有节点达成共识,保证少数服从多数!大多数人认定一件事,这件事就是事实,也就意味着如果你要去改变一个既定事实,那么你必须伙同大多数人陪你一起作假。

image-20240502112210383

算法>共识算法分类

区块链算法>共识算法的分类标准不一,且其种类和数量还在增长,但可以大致根据容错类型部署方式一致性程度等加以分类。

看到这里有些读者开始疑惑了,什么是选主策略呢?下表列出了常见的选主策略:

选主策略具体解释
选举类共识即矿工节点在每一轮共识过程中通过“投票选举”的方式选出当前轮次的记账节点,首先获得半数以上选票的矿工节点将会获得记账权多见于传统分布式一致性算法,如Paxos和Raft等
证明类共识也称为“ProofofX”类共识,即矿工节点在每一轮共识过程中必须证明自己具有某种特定的能力,证明方式通常是竞争性地完成某项难以解决但易于验证的任务,在竞争中胜出的矿工节点将获得记账权;如PoW和PoS等算法>共识算法是基于矿工的算力或者权益来完成随机数搜索任务,以此竞争记账权
联盟类共识即矿工节点基于某种特定方式首先选举出一组代表节点,而后由代表节点以轮流或者选举的方式依次取得记账权,这是一种以“代议制”为特点的算法>共识算法,如DPoS等
混合类共识即矿工节点采取多种算法>共识算法的混合体来选择记账节点,如PoW+PoS混合共识、DPoS+BFT共识等

部分常见的算法>共识算法

常见算法>共识算法表:

算法>共识算法用途
PaxosGoogle Chubby
RaftETCD
ZABZookeeper
PoW比特币、莱特币、以太坊的前三个阶段
PoSEER Coin、NXT、以太坊第4阶段
DPoSBitShare
PBFTHyperledger Fabric
HotstuffLibra(Facebook/Meta)

常见算法>共识算法图:

image-20240502130524873

PoX类算法>共识算法

PoX类的算法>共识算法主要包括比特币所采用的PoW共识及一些类似项目(如莱特币等)的变种PoW,即为大家所熟知的“挖矿”类算法

核心思想:实际是所有节点竞争记账权,而对于每一批次的记账(或者说挖出一个区块)都赋予一个“难题” ,要求只有能够解出这个难题的节点挖出的区块才是有效的。

此类算法的代表有:PoW,PoS,DPoS

  • 工作量证明PoW(Proof of Work)算法,也被称为最耗电力的算法>共识算法。在该算法中,所有节点通过提供工作量证明来争夺记账权,即最先提供足够的工作量证明的节点将向全网广播自己记的账(即区块),其他所有节点将该区块同步到自己的账本。
  • 权益证明PoS(Proof of Stake)算法类似于股份制公司的股东机制,根据持有数字货币的量和时间,分配相应的利息。是由系统权益替代算力来决定区块链记账权的算法>共识算法。即,拥有权益越大的节点则越有可能成为下一个区块的生产者。
  • 委托权益证明DPoS(Delegated Proof of Stake)算法将成千上万个PoS节点,通过某种机制(例如持有代币的数量)选举出若干(奇数)个节点,在这几个节点之间进行投票选举(在一些实现中甚至会在这些节点间以令牌环的方式进行轮询,进一步减少投票开销)出每次的检点(出块)节点,而不用在网络中全部节点之间进行选择。

image-20240502131459899

BFT类算法>共识算法

与PoX类算法>共识算法相比,BFT类算法>共识算法采用了完全不同的思路。它希望所有节点协同工作,通过协商的方式来产生能被所有(诚实)节点认可的区块。

拜占庭容错问题最早由Leslie Lamport等学者于1982年在论文《The ByzantineGenerals Problem》中正式提出,主要描述分布式网络节点通信的容错问题。从20世纪80年代起,提出了很多解决该问题的算法,这类算法被统称为BFT算法

非拜占庭错误(CFT)与拜占庭错误(BFT)

  • CFT(Crash Fault Tolerance):通常用于处理失效节点,即那些停止响应但不会伪造信息的节点。这类错误可以通过如Paxos、Raft等算法来处理,它们往往性能较好,能容忍不超过一半的故障节点。
  • BFT(Byzantine Fault Tolerance):用于处理恶意节点,即那些可能发送错误或不一致信息的节点。这类错误更为复杂,因为恶意节点可能会试图破坏系统的一致性。

BFT类代表算法

image-20240502131856713

其中实用拜占庭(Practical BFT,PBFT)算法是最经典的BFT算法,由Miguel Castro和Barbara Liskov于1999年提出。PBFT算法解决了之前BFT算法容错效率较低的问题,且降低了算法的复杂度,使BFT算法可以实际应用于分布式系统。它能在恶意节点数不超过总结点数1/3的情况下达成共识。


http://www.ppmy.cn/ops/29632.html

相关文章

PostgreSQL自带的命令行工具02- createdb

PostgreSQL自带的命令行工具02- createdb 基础信息 OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本:16.2 pg软件目录:/home/pg16/soft pg数据目录:/home/pg16/data 端口:5777createdb 是 Postgr…

区块链 | IPFS 工作原理入门

区块链和IPFS(InterPlanetary File System)是两种互补的技术,各自在分布式系统中扮演着重要的角色。虽然它们有不同的设计目标和应用场景,但结合起来使用可以提供更加强大和灵活的分布式解决方案。以下是区块链和IPFS工作原理的入…

【webrtc】MessageHandler 9: 基于线程的消息处理:执行Port销毁自己

Port::Port 构造的时候,就触发了一个异步操作,但是这个操作是要在 thread 里执行的,因此要通过post 消息 MSG_DESTROY_IF_DEAD 到thread跑:port的创建并米有要求在thread中 但是port的析构却在thread里 这是为啥呢?

【java超方便的导入导出工具类】SpringBoot操作Excel导入和导出

Excel导入和导出 一、前期准备 1、首先导入主要的依赖 <dependencies><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version></dependency><depende…

网盘——分享文件——逻辑设计

本文主要讲解关于网盘文件操作部分的分享文件的逻辑设计部分&#xff0c;主要步骤如下&#xff1a; 目录 1、实施步骤&#xff1a; 2、代码实现 2.1、添加分享文件协议 2.2、添加取消槽函数 2.3、关联取消选择的槽函数 2.4、添加取消槽函数的定义 2.5、添加全选函数槽函…

Tire 字典树、前缀树

字典树&#xff08;又称单词查找树或Trie树&#xff09;是一种树形结构&#xff0c;它是哈希树的变种&#xff0c;通常用于统计、排序和保存大量的字符串&#xff08;但不仅限于字符串&#xff09;。字典树在搜索引擎系统中常用于文本词频统计。它的主要优点在于能够利用字符串…

Word文件后缀

Word文件后缀 .docx文件为Microsoft Word文档后缀名&#xff0c;基于XML文件格式 .dotm为Word启用了宏的模板 .dotx为Word模板 .doc为Word97-2003文档&#xff0c;二进制文件格式 参考链接 Word、Excel 和 PowerPoint 的文件格式参考 Learn Microsoft

【Java基础】Spring核心之控制反转(IOC)

1. 如何理解IOC 1.1 什么是IOC 在Spring框架中&#xff0c;IOC&#xff08;Inversion of Control&#xff0c;控制反转&#xff09;是一种设计原则&#xff0c;它是Spring框架的核心概念之一。IOC的基本思想是将程序的控制权从应用程序代码中转移到框架或容器中&#xff0c;从…