【区块链】共识算法简介

共识算法简介

区块链三要素:

  • 去中心化
  • 共识算法
  • 智能合约

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

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

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.rhkb.cn/news/319049.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【docker】maven 打包docker的插件学习

docker-maven-plugin GitHub地址:https://github.com/spotify/docker-maven-plugin 您可以使用此插件创建一个 Docker 映像,其中包含从 Maven 项目构建的工件。例如,Java 服务的构建过程可以输出运行该服务的 Docker 映像。 该插件是 Spot…

【JAVA进阶篇教学】第九篇:MyBatis-Plus用法介绍

博主打算从0-1讲解下java进阶篇教学,今天教学第九篇:MyBatis-Plus用法介绍。 在 MyBatis-Plus 3.5.0 中,LambdaQueryWrapper支持多种条件构造方式,除了等于(eq)、不等于(ne)、大于&a…

【游戏行业】2024年电子游戏分类,国内游戏产业报告,发展趋势

文章目录 一、电子游戏分类1、传统游戏分类2、混合手游分类3、二次元、开放设计、调查问卷 二、游戏产业报告1、游戏产业数据2、游戏公司名单(独角兽)3、营收与利润(对比互联网、国企) 三、发展趋势1、游戏行业上下游2、游戏行业趋…

SSM整合-前后端分离-项目环境搭建 (上)

整合SSM 项目基础环境搭建项目介绍创建项目项目全局配置web.xmlSpringMVC配置配置Spring和MyBatis, 并完成整合创建表, 使用逆向工程生成Bean, XxxMapper和XxxMapper.xml注意事项和细节说明 实现功能01-搭建Vue前端工程需求分析/图解代码实现搭建Vue前端工程vue3项目目录结构梳…

力扣例题(接雨水)

链接: . - 力扣(LeetCode) 题目描述: 思路: 判断一块地方是否可以接到雨水,只需要判断他是否有左右边界使他可以接到水 左右边界分别为此处左侧的最高点和右侧的最高点 同时此处可接雨水的高度为左右两…

VMware虚拟机安装Linux(CentOS)【超详细】

参考大佬文章:VMware虚拟机安装Linux教程(超详细)_vmware安装linux虚拟机-CSDN博客 目录 一、获取映射文件 二、新建虚拟机 三、安装操作系统 四、切换系统用户 一、获取映射文件 参考大佬文章获取映射文件,以及对应修改后缀名的方法 二、新建虚拟…

C语言实验-学生信息管理系统

按以下菜单界面编写学生信息管理系统; 1)录入学生信息首先输入学生人数,然后根据学生人数开辟动态数组; 2)学生信息包括学号、姓名、性别、三门课成绩、总分;其中学号、姓名、 性别、三门课成绩是需要从键盘…

[方法] Unity 实现仿《原神》第三人称跟随相机 v1.0

参考网址:【Unity中文课堂】RPG战斗系统Plus 在Unity游戏引擎中,实现类似《原神》的第三人称跟随相机并非易事,但幸运的是,Unity为我们提供了强大的工具集,其中Cinemachine插件便是实现这一目标的重要工具。Cinemachi…

开源的贴吧数据查询工具

贴吧数据查询工具 这是一个贴吧数据查询工具,目前仍处于开发阶段。 本地运行 要本地部署这个项目,请 克隆这个仓库并前往项目目录 git clone https://github.com/Dilettante258/tieba-tools.git cd tieba-tools安装依赖 pnpm install运行项目 np…

240503-关于Unity的二三事

240503-关于Unity的二三事 1 常用快捷键 快捷键描述CtrlP播放/停止Ctrl1打开Scene窗口Ctrl2打开Game窗口Ctrl3打开Inspect窗口Ctrl4打开Hierarchy窗口Ctrl5打开Project窗口Ctrl6打开Animation窗口 2 关联VisualStudio2022 3 节约时间:将最新声明的参数移动到最上…

mysql主库delete一个没主键的表导致从库延迟很久问题处理

一 问题描述 发现线上环境一个从库出现延迟,延迟了2天了,还没追上主库。 查看当前运行的sql及事务,发现这个sql语句是在delete一个没主键的表。 二 问题模拟 这里在测试环境复现下这个问题。 2.1 在主库造数据 use baidd; CREATE TABL…

使用D3.js进行数据可视化

D3.js介绍 D3.js是一个流行的JavaScript数据可视化库,全称为Data-Driven Documents,即数据驱动文档。它以数据为核心,通过数据来驱动文档的展示和操作。D3.js提供了丰富的API和工具,使得开发者能够创建出各种交互式和动态的数据可…

PPT基础

5种ppt仅可读形式 Ⅰ 开始选项卡 1.【幻灯片】组中:新建幻灯片,从大纲中导入幻灯片;修改幻灯片的版式;节(新增节,重命名节)。 2.【字体】组中:设置字体,字体大小&…

2024年怎么下载学浪app视频

想要在2024年紧跟潮流,成为一名优秀的学浪用户吗?今天就让我们一起探索如何下载学浪app视频吧! 学浪视频下载工具打包 学浪下载工具打包链接:百度网盘 请输入提取码 提取码:1234 --来自百度网盘超级会员V10的分享…

BJFUOJ-C++程序设计-实验2-类与对象

A 评分程序 答案&#xff1a; #include<iostream> #include<cstring>using namespace std;class Score{ private:string name;//记录学生姓名double s[4];//存储4次成绩&#xff0c;s[0]和s[1]存储2次随堂考试&#xff0c;s[2]存储期中考试&#xff0c;s[3]存储期…

推荐一个好用的命令行工具ShellGPT

ShellGPT 配置安装常用功能聊天写命令并执行 高级功能函数调用角色管理 总结 这两天突然想到&#xff0c;现有的很多工具都在被大模型重构&#xff0c;比如诞生了像perplexity.ai 这种新交互形式的搜索引擎&#xff0c;就连wps也推出了AI服务&#xff0c;甚至都可以直接生成ppt…

code-server容器webpack的ws无法连接解决方法

TLDR 通过指定client的wsrul去连接ws devServer.client.webSocketURL ‘wss://<Forwarded uri>/ws’ 拓扑 1、code-server: 用于编写代码、启动webpack dev-server 服务&#xff1b;[https://<domain>:8001] 2、webpack: 用于浏览dev-server服务&#xff1b;[ht…

AI实景直播间的打造指南,简单四步曲,轻松打造24小时不间断直播。

AI实景直播间的打造指南&#xff1a;简单四步曲&#xff0c;轻松打造24小时不间断直播&#xff01; 随着直播时代的来临&#xff0c;ai自动化直播系统成为商家们蓬勃发展的选择。本文将为您介绍如何借助智享ai自动直播&#xff0c;轻松打造一个属于自己的24小时不间断直播间。…

「 网络安全常用术语解读 」SBOM主流格式SWID详解

国际标准化组织&#xff08;ISO&#xff09;和国际电工委员会&#xff08;International Electrotechnical Commission&#xff0c;IEC&#xff09;发布了ISO/IEC 19770-2软件标识&#xff08;Software Identification&#xff0c;SWID&#xff09;标签标准&#xff0c;该标准定…

ctfshow web入门 sql注入 web224--web233

web224 扫描后台&#xff0c;发现robots.txt&#xff0c;访问发现/pwdreset.php &#xff0c;再访问可以重置密码 &#xff0c;登录之后发现上传文件 检查发现没有限制诶 上传txt,png,zip发现文件错误了 后面知道群里有个文件能上传 <? _$GET[1]_?>就是0x3c3f3d60245…