共识算法之争(PBFT,Raft,PoW,PoS,DPoS)

文章目录

  • 共识算法
    • 拜占庭容错技术(Byzantine Fault Tolerance,BFT)
    • PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错算法
    • Raft协议
    • POW(Proof of Work)工作量证明机制
    • POS
    • DPoS(Delegated Proof of Stake)委托股权证明
    • PoA(Proof of Authority,权威证明)共识
    • 总结
  • 参考

共识算法

在区块链系统中,如何让每个节点通过一个规则将各自的数据保持一致是一个很核心的问题,这个问题的解决方案就是制定一套共识算法,实现不同账本节点上的账本数据的一致性和正确性。

所谓共识,简单理解就是指大家都达成一致的意思。

PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)、PoW(Proof of Work,工作量证明)、PoS(Proof of Stake,权益证明)、DPoS(Delegate Proof of Stake,委托权益证明)

Proof of Work:算力竞争
Proof of Stake:财力竞争
Proof of Authority:身份荣誉。以身份荣誉背书。

拜占庭容错技术(Byzantine Fault Tolerance,BFT)

拜占庭容错技术(Byzantine Fault Tolerance,BFT)是一类分布式计算领域的容错技术。拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或中断以及遭到恶意攻击等原因,计算机和网络可能出现不可预料的行为。拜占庭容错技术被设计用来处理这些异常行为,并满足所要解决的问题的规范要求。

原始的拜占庭容错系统由于需要展示其理论上的可行性而缺乏实用性。另外,还需要额外的时钟同步机制支持,算法的复杂度也是随节点增加而指数级增加。

PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错算法

实用拜占庭容错系统(PBFT)降低了拜占庭协议的运行复杂度,从指数级别降低到多项式级别(Polynomial),使拜占庭协议在分布式系统中应用成为可能。

PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。将所有的副本组成的集合使用大写字母R表示,使用0到|R|-1的整数表示每一个副本。为了描述方便,通常假设故障节点数为m个,整个服务节点数为|R|=3m+1个,这里m是有可能失效的副本的最大个数。尽管可以存在多于3m+1个副本,但是额外的副本除了降低性能之外不能提高可靠性。

PBFT要求共同维护一个状态,所有节点采取的行动一致。为此,需要运行三类基本协议,包括一致性协议、检查点协议和视图更换协议。我们主要关注支持系统日常运行的一致性协议。一致性协议至少包含若干个阶段:请求(request)、序号分配(pre-prepare)和响应(reply)。根据协议设计的不同,可能包含相互交互(prepare),序号确认(commit)等阶段。

Raft协议

在这些分布式系统的实用场景下,其假设条件不需要考虑拜占庭故障,而只是处理一般的死机故障。 在这种情况下,采用Raft协议、Paxos等协议会更加高效。Paxos是Lamport设计的保持分布式系统一致性的协议。但由于Paxos非常复杂,比较难以理解,因此后来出现了各种不同的实现和变种。Raft是由Stanford提出的一种更易理解的一致性算法,意在取代目前广为使用的Paxos算法。 目前,在各种主流语言中都有了一些开源实现。

Raft最初是一个用于管理复制日志的共识算法,它是一个为真实世界应用建立的协议,主要注重协议的落地性和可理解性。Raft是在非拜占庭故障下达成共识的强一致协议。

POW(Proof of Work)工作量证明机制

基本原理:第一代共识机制,比特币的基础。理解起来,很简单,就是“按劳取酬”,你付出多少工作量,就会获得多少报酬(比特币等加密货币)。在网络世界里,这里的劳动就是你为网络提供的计算服务(算力x时长),提供这种服务的过程就是“挖矿”。假如是真的矿场,显然在均匀分布的前提下,人们“挖矿”所得的比重与各自提供的算力成正比,通俗一点就是,能力越强获得越多。

缺点:
算力是计算机硬件(CPU、GPU等)提供的,要耗费电力,是对能源的直接消耗,与人类追求节能、清洁、环保的理念相悖。

这种机制发展到今天,算力的提供已经不再是单纯的CPU了,而是逐步发展到GPU、FPGA,乃至ASIC矿机。用户也从个人挖矿发展到大的矿池、矿场,算力集中越来越明显。这与去中心化的方向背道而驰,渐行渐远,网络的安全逐渐受到威胁。有证据证明Ghash(一个矿池)就曾经对赌博网站实施了双花攻击(简单的说就是一笔钱花两次)。
比特币区块奖励每4年将减半,当挖矿的成本高于挖矿收益时,人们挖矿的积极性降低,会有大量算力减少,比特币网络的安全性进一步堪忧。

POS

DPoS(Delegated Proof of Stake)委托股权证明

什么是DPoS共识机制
参考URL: https://zhuanlan.zhihu.com/p/69649110
DPoS共识机制_委托股权证明_LoomNetwork
参考URL: http://www.tucaod.com/2721.html

delegate
美: ['deləɡət]
英: ['deləɡət]
v. 委托;派…做代表
n. 代表;(众议院中准州地区的)代表;〈美〉众议院议员
网络 授予;授权;授与

委托股权证明(DPoS)——它是PoS的一种变体,以限制网络上验证者的数量为代价,提供高级别的可扩展性。

由于区块生产者数量较少,DPoS是一种为了吞吐量牺牲去中心性的协议。

DPoS是一个系统,其中固定数量的选定实体(称之为区块生产者或见证人)被挑选来以循环顺序创建区块。

区块生产者由网络用户投票决定,他们每个人都得到与他们在网络上拥有的代币数量(他们的股份)成正比的选票。

或者,选民可以选择将他们的股权委托给另一名选民,被委托的选民将代表他们投票选举区块生产者。

PoA(Proof of Authority,权威证明)共识

PoA是一种基于身份验证的共识算法,需要节点提供身份证明才能参与共识过程。它适用于私有链和联盟链,能够提供高效的共识和更好的性能。

权威证明共识(又称PoA共识)规定,节点只有被授权以后才能参与区块链共识。一旦被授权之后,共识节点享有公平的记账权利。

在 PoA 中,负责处理交易和验证区块的验证人,必须经过一系列的审查,必须要保证自身的可靠性。

相比之下,PoA相对于传统的PoW、PoS、DPoS等共识算法,更适合在私有链和联盟链中使用,因为它更注重高效性和可控性,对节点的身份和权限有明确的要求,适合一些特定的商业场景和应用需求。

总结

  • POW 工作量证明机制,类似于按劳分配。
  • POS 股权证明机制。 持有股票的人,就有对应的权利,持有的越多,权利越大 。
  • DPOS 授权股权证明机制。类似于董事会, 董事会成员数量有限,,由大家选举产生, 被选中的董事会成员可以行使权利。
  • PBFT这是一种基于消息传递的一致性算法,算法经过三个阶段 预准备(pre-prepare)、准备(prepare)和确认(commit)达成一致性,这些阶段可能因为失败而重复进行。

从机制设计上来看. POW 机制更加强调去中心, 更加强调对等.。而DPOS 则是有一个明显的中心, 通过带来部分中心,来得到效率的提升。

参考

浅谈共识机制(POW、POS、DPOS、PBFT及POP)
参考URL: https://blog.csdn.net/q282176713/article/details/81287144
[区块链] 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)
参考URL: https://www.lastupdate.net/16610.html
DPOS机制是什么?它和POW、POS的区别是什么?
参考URL: https://baijiahao.baidu.com/s?id=1603870079950594911&wfr=spider&for=pc
【推荐阅读】[区块链] 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)
参考URL: https://www.lastupdate.net/16610.html
DPOS机制是什么?它和POW、POS的区别是什么?
参考URL: https://baijiahao.baidu.com/s?id=1603870079950594911&wfr=spider&for=pc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/25129.shtml

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

相关文章

多关键字排序

成绩排序 查看测评数据信息 给出班里某门课程的成绩单&#xff0c;请你按成绩从高到低对成绩单排序输出&#xff0c;如果有相同分数则名字字典序小的在前。 输入格式 第一行为n (0 < n < 20)&#xff0c;表示班里的学生数目&#xff1b; 接下来的n行&#xff0c;每行为每…

[创业之路-115] :互联网时代的创客文化与创客文化在企业中的应用

目录 一、什么是创客文化 》美国人的文化基因 1.1、创客文化的起源与发展 1.2、创客文化的特点 1.3、创客文化的应用与价值 1.4、创客文化的挑战与解决方案 二、创业文化对新职场人思维方式的转变 》美国人的文化基因 2.1、从固定思维到创新思维 2.2、从单打独斗到团队…

08-Eureka-eureka原理分析

08-Eureka-eureka原理分析 1.服务调用出现的问题: 1.服务消费者该如何获取服务提供者的地址信息? 2.如果有多个服务提供者,消费者该如何选择? 3.消费者如何得知服务提供者的健康状态? 2.Eureka的作用(原理): 在Eureka的结构当中,他分成了两个概念,两个角色。第…

LNWT--篇章三小测

问题1: BERT训练时候的学习率learning rate如何设置? 在训练初期使用较小的学习率&#xff08;从 0 开始&#xff09;&#xff0c;在一定步数&#xff08;比如 1000 步&#xff09;内逐渐提高到正常大小&#xff08;比如上面的 2e-5&#xff09;&#xff0c;避免模型过早进入…

Lua 元表(Metatable)深入解析

Lua 元表&#xff08;Metatable&#xff09;深入解析 Lua 是一种轻量级的编程语言&#xff0c;因其简洁性和强大的扩展能力而被广泛应用于游戏开发、脚本编写和其他领域。在 Lua 中&#xff0c;元表&#xff08;Metatable&#xff09;是一个非常重要的概念&#xff0c;它允许我…

hexo更新流程及解析

文章目录 文件解析md文件头部内容&#xff08;1&#xff09;文章顶置&#xff0c;排序&#xff08;2&#xff09;文章隐藏&#xff08;3&#xff09;分类和标签&#xff08;4&#xff09;其他属性 更新博客注意安装插件注意&#xff1a;1、关于中括号的问题 文件解析 . ├──…

【Redis】Redis实现分布式锁合理的控制锁的有效时长的方法

在分布式系统中&#xff0c;合理地控制 Redis 分布式锁的有效时长&#xff08;即过期时间&#xff09;非常重要&#xff0c;以确保锁既能防止死锁又能提供高可用性。设置合理的过期时间可以防止客户端在持有锁期间崩溃而导致其他客户端无法获取锁的情况&#xff0c;同时也能确保…

[数据集][目标检测]足球场足球运动员身份识别足球裁判员数据集VOC+YOLO格式312张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;312 标注数量(xml文件个数)&#xff1a;312 标注数量(txt文件个数)&#xff1a;312 标注类别…

调查显示各公司在 IT 安全培训方面存在差距

网络安全提供商 Hornetsecurity 最近进行的一项调查显示&#xff0c;许多组织的 IT 安全培训存在严重缺陷。 这项调查是在伦敦举行的 Infosecurity Europe 2024 期间发布的&#xff0c;调查发现 26% 的组织没有为其最终用户提供任何 IT 安全培训。 这些调查结果来自世界各地的…

阿里云活动推荐:AI 应用 DevOps 新体验

活动简介 阿里云新活动&#xff0c;体验阿里云的云效应用交付平台。体验了下&#xff0c;总体感觉还不错。平台把常规的开发过程封装成了模板&#xff0c;部署发布基本都是一键式操作&#xff0c;并且对自定义支持的比较好。 如果考虑将发布和部署搬到云上&#xff0c;可以玩一…

代码随想录算法训练营DAY32|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

122.买卖股票的最佳时机II 题目链接&#xff1a;122.买卖股票的最佳时机II class Solution(object):def maxProfit(self, prices):""":type prices: List[int]:rtype: int"""max_profit 0profit 0buyin_idx 0for i in range(len(prices)):p…

力扣第185题:部门工资前三高的员工

关注微信公众号 数据分析螺丝钉 免费领取价值万元的python/java/商业分析/数据结构与算法学习资料 在本篇文章中&#xff0c;我们将详细解读力扣第185题“部门工资前三高的员工”。通过学习本篇文章&#xff0c;读者将掌握如何使用SQL语句来解决这一问题&#xff0c;并了解相关…

使用selenium/drissionpage时如何阻止chrome自动跳转http到https

加个启动参数&#xff1a; --allow-running-insecure-content没了 参考文章&#xff1a;List of Chromium Command Line Switches

Directory Opus 13.6 可用的apk文件右键菜单脚本

// apk文件的右键经过adb安装的脚本,可以在多个设备中选择function OnClick(clickData) {try {// 检查是否选中了文件if (clickData.func.sourcetab.selected_files.count 0) {DOpus.Output("没有选中任何文件");return;}// 获取选中的文件名var selectedFile clic…

JSTL知识点讲解与配置

JSTL&#xff08;JavaServer Pages Standard Tag Library&#xff09;是Java EE平台中的一个标准库&#xff0c;提供了一组用于在JSP&#xff08;JavaServer Pages&#xff09;中简化和标准化常见任务的标签。这些标签封装了很多常见的JSP功能&#xff0c;可以使得JSP页面更加简…

18-Nacos-NacosRule负载均衡

18-Nacos-NacosRule负载均衡 1.根据集群负载均衡 1.修改order-service中的application.yml,设置集群为HZ: spring:cloud:nacos:server-addr: localhost:8848 #nacos服务端地址discovery:cluster-name: HZ #配置集群名,也就是机房位置,例如:HZ,杭州2.然后在order-servi…

服务部署:Ubuntu安装搭建docker

1. 更新系统包 首先&#xff0c;确保你的系统包是最新的&#xff1a; sudo apt-get update sudo apt-get upgrade 2. 安装必要的依赖包 安装一些必要的依赖包&#xff0c;以便后续添加 Docker 的 APT 源&#xff1a; sudo apt-get install apt-transport-https ca-certifi…

LabVIEW软件开发人员如何在软件开发中捕捉需求?

在LabVIEW软件开发过程中&#xff0c;捕捉需求是确保项目成功的关键步骤。以下是一个系统化的方法&#xff0c;帮助LabVIEW软件开发人员有效地捕捉、分析和管理需求。 步骤1&#xff1a;需求收集 1.1 与客户沟通 与客户进行初步沟通&#xff0c;了解项目的背景、目标和期望。…

天工开物 #14 分析时序数据:从 InfluxQL 到 SQL 的演变

近年来&#xff0c;时序数据的增长是 Data Infra 领域一个不容忽视的趋势。这主要得益于万物互联带来的自然时序数据增长&#xff0c;以及软件应用上云和自身复杂化后的可观测性需求。前者可以认为是对联网设备的可观测性&#xff0c;而可观测性主要就建构在设备或应用不断上报…

【C#】WinForm关闭新(二级)界面使主程序关闭

参考视频&#xff1a;https://www.bilibili.com/video/BV1JY4y1G7jo?p14&vd_source1c57ab1b2e551da5b65c0dfb0f05a493 1.背景介绍 主程序界面&#xff0c;点击弹出二级界面&#xff08;同时隐藏主界面&#xff09;&#xff0c;不做任何设置&#xff0c;这时关闭二级界面…