DPOS共识机制

news/2024/11/9 15:02:35 标签: 操作系统, 区块链
想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】
链客,有问必答!!



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不会发生分叉问题。


http://www.niftyadmin.cn/n/1112760.html

相关文章

Linux下应用程序开发:QT开发简介(转)

Linux下应用程序开发:QT开发简介(转)[more]  Qt 是一个跨平台的 C 图形用户界面库,由挪威 TrollTech 公司出品,目前包括Qt, 基于 Framebuffer 的 Qt Embedded,快速开发工具 Qt Designer,国际化工具 Qt Li…

OpsRamp推出以服务为中心的AIOps和云监控功能

OpsRamp是一个面向混合企业的以服务为中心的AIOps软件即服务(SaaS)平台,最近发布了新的拓扑图、增强的人工智能IT运维(AIOps)功能以及针对云原生工作负载的监控功能。 新版的OpsRamp平台为现代IT运营管理团队提供了Kub…

计算机基础,Python基础--变量以及简单的循环

一、计算机基础 1.CPU 相当于人体的大脑,用于计算处理数据。 2.内存 用于存储数据,CPU从内存调用数据处理计算,运算速度很快。 PS:问:既然在内存里的数据CPU运算速度快,为什么计算机不全部用内存呢&#x…

本学期最后作业

排球计分 用户故事:作为一个赛事管理人员,我希望知道每场比赛双方队伍的比分情况和整场比赛各个队伍的比分, 以便对其进行排名。 规则:五局三胜制 计划:大概用了一周的时间,才能实现所需要的基本功能 具体代…

在Linux环境中安装Qmail的经历(转)

在Linux环境中安装Qmail的经历(转)[more]  安装平台:Linux版本:qmail-1.03安装的机器: mail.mydomain.com软件包:qmail-1.03 qmail基本系统ucspi-tcp-0.88 tcpsever服务程序daemontools-0.70 监视工具checkpassword-0.81 pop3验证用户的程序…

Mac在结构quick cocos2d-x编译环境

关于 Quick 很多其它的使用说明可參考安装文件夹下的 README 文件。 Quick-Coco2d-x开发工具 普通情况下,我们通常都会採用Cocos Code IDE作为开发工具来高速开发游戏,这里Cocos Code IDE是一个基于 Eclipse 的跨平台 IDE,专门为 Cocos2d-x …

2019.2.14 t3 车辆销售

用算法求最大生成树,在并查集合并时,把原本的一个根连向另一个 根改成两个根都连向一个新建的节点,并把当前正在处理的边的权值赋给这个新 节点做点权。这样形成的结构会是一棵树。 一个点的答案大致上是树的根到自己的路径上,相邻…

[网络流24题]餐巾(cogs 461)

【问题描述】 一个餐厅在相继的N天里,第i天需要Ri块餐巾(il,2,…,N)。餐厅可以从三种途径获得餐巾。 (1)购买新的餐巾,每块需p分; (2)把用过的餐巾送到快洗部,洗一块需m天,费用需f分…