DPOS共识机制

news/2024/4/19 4:48:22
想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】
链客,有问必答!!

EOS在第一版白皮书中使用的DPOS共识机制,而在新一版的白书中,对共识机制进行了改进,使用BFT+DPOS混合共识机制。使出块速度从原来的3秒变为0.5秒,tps显著提高,达到测试3590次/秒。

EOS第一版共识机制DPOS
EOS现在系统运行的链用的共识机制是第一版白皮书的,也就是纯DPOS共识机制。
DPOS即授权权益证明共识机制。相比于比特币的POW机制,DPOS不用浪费算力资源去争夺记账权,而是通过赋予EOS通证持有人的投票选举,选出21个超级节点担任记账人的角色,保证整个网络的正常运行。值得一提的是,人们的投票所占的比重取决于他们持有多少token。这意味着拥有更多token的人将比拥有极少token的人更多地影响网络。这其实很好理解,因为持有网络的运行的好坏会对持有更多token的人的利益产生更大的影响,这使得他们的投票更谨慎。
21个超级节点轮流负责记账。每轮都会随机打乱他们的出块顺序,每个超级节点作为出块节点时,只负责出一个块。每一个区块产生后会按照顺序传递给下一个超级节点中。第二个超级节点要负责打包新的区块,同时还要确认上一个区块的内容。当某一个区块被超过2/3的超级节点确认后,则该区块将成为不可逆转区块,即上链区块。

该算法有些地方明显需要改良。比如容易出现漏块现象。21个超级节点分布世界各地,如果随机打乱顺序,导致总是依次顺序的节点相距地理位置很远,如中国和美国,这两国的网络传输单向时间是300毫秒,一来一回总共600毫秒。那么中国这边出块,然后经过其他20个节点确认后返回,假设时间总共是4秒;而接下来美国出块,反馈回来的时间是3秒,比中国快1秒,肯定是先上链的,结果中国出的块就被丢弃掉了。当前目前设的出块时间是3秒,理论上能够解决这种漏块现象,但想提高eos的性能,这块肯定是要改进的。

EOS最新版共识机制BFT-DPOS
BFT即拜占庭容错算法。EOS引入这个算法,主要是赋予出块节点更大的权力,加快出块速度,解决节点出的块都被漏掉的问题。

EOS共识算法的升级,势必需要超级节点们更新代码,使用新的程序,然后在当前链上继续运行。但如果超过1/3的节点拒绝更新代码,可能会出现硬分叉问题。所以如何很好地做好过渡是EOS最大难题。

我们一起分析下改进后的共识机制是如何工作的。

EOS使用BFT+DPOS共识机制后,不再按照出块顺序让超级节点一个个验证区块内容,而是让出块节点成为主节点。出块后,同时向其他20个超级节点进行广播该区块,并获得他们的验证。如果超过2/3的节点验证通过后,则该区块将成为不可逆转区块。

BFT可以使EOS出块速度显著增加。目前使用BFT+DPOS共识机制的EOS,可以实现0.5秒的出块速度,1秒实现区块的不可逆转。为避免因出块速度过快而漏块,EOS的超级节点按照其他的地理位置依次轮流成为主节点,尽可能减少超级节点的网络延迟。比如超级节点有中国、美国、加拿大、日本,那么成为主节点的顺序是中国>日本>美国>加拿大或者反过来,总之保证相邻最近的超级节点要依次交接主节点角色。

同时规定每个主节点连续生产6个区块,至少保证6个区块的前几个能确认完成,不存在整个超级节点被跳过的现象。可以看出每轮记账节点的出块总时间还是3秒钟,在这3秒里,因为他对他自己出的块是信任的,所以可以持续出块。一边出块一边广播,3秒之内率先广播的区块肯定能够得到确认,在网络通畅的情况下,6个区块都会可能得到确认。

EOS共识处理分叉问题非常简单,和比特币一样,节点只会认可最长的链作为合法链。假如某个节点开始作恶,自己出块并生成自己的链,也就是每次轮到它就产生6个块。但是超级节点总共21个,每轮产生理论126个块。根据选择最长链作为主链原则,肯定作恶的链得不到认可。所以EOS不会发生分叉问题。


https://dhexx.cn/news/show-3721401.html

相关文章

shiro权限笔记

shiro框架运行流程 认证:系统提供的用于识别用户身份的功能,通常就是登录功能。----让系统知道你是谁??授权:系统提供的为用户分配访问系统某些功能的能力。----让系统知道你能做什么?? 官网&am…

【翻译】Sklearn 与 TensorFlow 机器学习实用指南 —— 第11章 训练深层神经网络(上)...

第 10 章介绍了人工神经网络,并训练了我们的第一个深度神经网络。 但它是一个非常浅的 DNN,只有两个隐藏层。 如果你需要解决非常复杂的问题,例如检测高分辨率图像中的数百种类型的对象,该怎么办? 你可能需要训练更深的…

charles使用大全

我们在开发网站项目的时候,我们可以通过浏览器的debug模式来看request以及response的数据,那么如果我们开发移动端项目没有网页呢?如何抓取数据呢? 前几天有个做服务端的师弟跟我说他不用抓包工具,遇到问题直接debug代…

cookie与session组件

一、cookie介绍 cookie的由来 大家 都知道 HTTP协议是无状态的。 无状态的意思是每次请求都是独立的,它的执行 情况 和结果与前面 的请求和之后的请求都无 直接关系,它不会受前面的请求响应情况直接 影响,也不会直接影响后面的请求 情况。 一…

F#学习笔记(三) 函数

接着要讲的是F#中的函数,上面说到过标识符可以绑定任何的表达式,同样,标识符也可以绑定到函数,F#中的函数通过关键字fun来表示, let addTenToNumber (fun x -> x 10);; 也是通过let关键字来绑定到标识符,响应的结果是 val addTenToNumbe…

TiKV 源码解析系列文章(二)raft-rs proposal 示例情景分析

2019独角兽企业重金招聘Python工程师标准>>> 作者:屈鹏 本文为 TiKV 源码解析系列的第二篇,按照计划首先将为大家介绍 TiKV 依赖的周边库 raft-rs 。raft-rs 是 Raft 算法的 Rust 语言实现。Raft 是分布式领域中应用非常广泛的一种共识算法&a…

开发工具-Xshell工具的下载和安装

下载地址:https://www.netsarang.com/zh/free-for-home-school/ Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网…

如何对比Python和Java,只需三分钟告诉你!

Java和Python两门语言都是目前非常热门的语言,可谓北乔峰南慕容,二者不分上下,棋逢对手。但是对于初学者来说,非常困惑,因为时间和精力有限,上手必须要先学一门,到底选那个好呢,今天…

雨林木风 Ylmf Linux Y1.5 (Ubuntu 9.10) 官方发行版操作系统下载

2009年10月28日,Ubuntu 发布了9.10版本,我们第一时间制作了此定制版,方便广大 Linux 用户体验最新的 Ubuntu 所带来的刺激。 雨林木风定制版的 Ubuntu 已经发布了三个版本,我们用心倾听来自各方的声音,悉心的收集大家的…

arcmap中实现河流注记的左斜体

作图的时候遇到如题的麻烦,收集资料如下:验证可行的:在ArcGIS中实现汉字的左斜体有两种方法:方法一:为地图制作左斜体字体根据地图制图规范,河流名称应当用左斜体,但ArcGIS中只有可右斜体,要实现…