DPOS3.0的改进分析

探讨了DPOS2.0时代V神提出的分叉问题,即在拜占庭容错机制下可能出现的分叉现象,并介绍了BM提出的新方案,该方案虽然解决了分叉问题,但增加了不可逆块的确认时长和块数。

 

在DPOS2.0时代,V神提出一个问题,也就是原来大家一直认为BFT是不会有分叉的现象的,但是在V神看来,这个是有可能的,看下面的示例:

 

上图中可以看到,假设Z为不可逆块,有A,B,C,D四个节点出块,当从A开始到c完成出块,即达到2N/3 + 1(所有出块节点的三分之二再加一),即达到新的不可逆节点。

但是假如D节点断网了,看不到102以后的块,自己出了一块101,然后又连接到网络上了,而ABC三个节点又无法控制必然是跟随哪个节点出块,假设一种情况,它们都从D(101)开始,继续出块,如上图,这也是合法的,在达到B时,发现会有两个101提交,产生冲突,结果就不知道哪条链中的不可逆块是合法的。

BM得知后不服啊,带着兄弟们搞出了如下的名堂,也就是说,不可逆块不是一次到位了,分成两步,先生成一个prelib,然后再经过2/3共识后,生成真正的lib(不可逆块)。

好是好,确实解决了问题,但是,结果是增加了不可逆块的确认时长和块数。

从目前来看,应该是增加了三倍左右的时间。

BM新的方法基本流程如下图:

 

当出块时间到达E时,产生一个prelib,然后依次递进,当prelib再次达到105时,101正式成为不可逆的lib.

重点来分析一下异常的情况,先看一下下面的图:

 

在上面的图中,仍然假设在虚线E处生成离线又连线的101,这时候儿有以下几种情况:

  1. 正式分叉到E,即如上图所示,一直延展下去,最张抛弃A产生的101块。通过第二次的共识,确定E生成的101为不可逆块。
  2. 在E的基础上生成几块后又回到以A的基础的块生成,这时候儿就要看哪个先达到三分之二加一共识,也就是说最长链。最终抛弃短链。
  3. 比较麻烦的是来回跳跃,某一个始终达不到最长,结果就是可能需要很长时间才能出块,因为最终肯定会有一个链最长的。

 

参考的站点:

https://github.com/EOSIO/eos/issues/2718

https://medium.com/eosio/dpos-bft-pipelined-byzantine-fault-tolerance-8a0634a270ba

https://github.com/EOSIO/eos/issues/3088

 

 

 

 

 

03-19
### Delegated Proof of Stake (DPoS) 共识机制简介 #### 什么是Delegated Proof of Stake (DPoS)? Delegated Proof of Stake (DPoS),即委托权益证明,是一种高效的区块链共识机制。它通过持币者投票选出一组代表(也称为验证者或见证人),由他们负责区块生成和网络维护工作[^1]。 #### DPoS 的主要特点 DPoS 是一种改进版的 PoS(Proof of Stake, 权益证明)机制,在传统 PoS 中,用户可以通过持有代币来参与交易验证并获取奖励。而在 DPoS 中,这一过程被进一步优化,允许用户将其持有的代币用于投票选举代表,而不是直接参与到区块生成过程中[^3]。这种设计显著提高了系统的效率,并降低了能源消耗。 #### 工作原理 在 DPoS 系统中,持币者会根据其持有的代币数量进行投票,票数越多的候选人越有可能成为最终的验证者。当选后的验证者轮流生产新区块,并按照一定规则分配奖励给支持他们的选民。如果某个验证者未能履行职责或者表现不佳,则会被其他候补验证者取代。 此外,为了保障网络安全性和公平性,DPoS 还引入了一些额外措施,比如随机化选择顺序以及设置最低门槛等条件限制不合格节点进入核心层操作范围之内[^2]。 #### 技术优势 相比起 POW 和标准 POS ,DPoS 提供了一个更加环保且快速确认交易速度的方法 。由于只需要少量选定出来的超级节点来进行记账活动所以整体耗能大大减少同时也加快了整个流程的速度 [^4]。 ```python class DPosSystem: def __init__(self): self.voters = [] self.delegates = [] def add_voter(self, voter): self.voters.append(voter) def elect_delegates(self, num_delegates=10): # 假设这里实现了具体的选举逻辑 pass def generate_block(self): # 验证者轮流出块 pass ``` 以上是一个简单的 Python 类表示如何构建一个基本框架下的 dpos 系统模型.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值