首页 > 世链号 > 【EX.cash】安全与效率不可兼得?PoW、PoS、DPoS 没实现的,DPoW 实现了
币圈行者  

【EX.cash】安全与效率不可兼得?PoW、PoS、DPoS 没实现的,DPoW 实现了

摘要:区块链是建立在 P2P 网络,由节点参与的分布式账本系统,最大的特点是“去中心化”,在系统内彼此之间只需依靠区块链协议系统就能实现交易,然而目前流行的共识机制 PoW、PoS、DPoS 各有优劣。

01 概要
区块链是建立在 P2P 网络,由节点参与的分布式账本系统,最大的特点是“去中心化”,在系统内彼此之间只需依靠区块链协议系统就能实现交易,然而目前流行的共识机制 PoW、PoS、DPoS 各有优劣。而路云区链却在其实验链 Dpperin 中,独创的 DPoW 共识机制却实现了安全与效率的兼得。 传统的 PoW (Proof of Work)作为最经典的共识算法,秉持着长链优先原则,通过算力维护链的安全性和稳定性。参与挖矿的算力越大,链的安全性越高,因为随着总算力的增加,恶意节点作恶的成本也会直线上升。理论上来说,如果恶意节点的算力超过全链算力的 51%,那么恶意节点就可以伪造一条更长的链替代原先的主链,这就是著名的 51% 算力攻击。正是因为有 51% 算力攻击的可能,所以 PoW 的区块不是立即确认的,它是概率性的确认。例如,比特币网络需要大约 6 个区块确认一笔交易。针对 PoW 非立即确认这一缺点,路云区链在 Dipperin 研发中,独创了 DPoW (Deterministic Proof of Work)共识算法,吸收了 PoW 和 PBFT (实用拜占庭容错)的优点。另外,Dipperin 使用了 VRF (可验证随机函数)挑选可信验证者;防卡死机制解决大多数验证者不在线的问题。这样能够在获得高扩展性的同时保证安全性并且尽可能的去中心化。

02Map Reduce 挖矿算法
对于传统的 PoW 算法,路云区链的 Dipperin 做了一定的改进,使用了 Map Reduce 挖矿算法,它的特点是将挖矿过程分工,由 Master (分片服务器)和 Worker (矿工节点)协作完成,其基本原理如下: 1.Master 将挖矿的整个搜索空间划分成多个部分,需要保证划分的各小区间之间不会有覆盖,然后将其分配给为其工作的 Worker。2.Worker 将会在被分配的搜索空间上计算 hash 难题。在计算过程中,Worker 需要定时监听 Master 的消息通知,以防 Master 更新挖矿搜索空间或重新分配任务。一旦 Worker 挖矿完成,便会将满足条件的区块提交给 Master。3.Master 接收到 Worker 提交的区块后,将其提交给验证者集群,并等待验证结果。

03PBFT 流程 
PBFT 在共识算法中是强一致性和高效的代表。Dipperin 使用 PBFT 算法旨在选取验证者对矿工挖出的区块进行投票确认,如果区块有超过三分之二的票数,那么区块会被立即确认。安全与效率不可兼得?PoW、PoS、DPoS 没实现的,DPoW 实现了如上图所示,PBFT 过程分为以下几步:
1. 矿工广播挖到的区块给当前轮的 22 个验证者
2. 直接进入 Propose 阶段,由主验证者挑选共识区块后广播给所有验证者(主验证者轮流当选)
3. 验证者收到区块后进入 Prevote 阶段,对区块进行验证和投票并广播给所有验证者
4. 验证者收到 2/3 以上 Prevote 信息后进入 PreCommit 阶段,所有验证者再次对区块进行投票并广播给所有验证者
5. 验证者收到 2/3 以上 Precommit 信息后进入 Commit 阶段,验证者把区块和 15 个签名信息广播给所有节点另外,PBFT 过程中有几点需要特别注意:1. 对当前区块的 Commitlist(15 个验证者的签名信息) 放在下一个区块中解释:不把 Commitlist 放在当前块,而是放在下一个块的目的是为了削弱主验证者挑选验证者的权利。所有验证者得到 2/3 的投票信息就可以广播区块,且这个区块是唯一的。矿工创建区块时有权利选择任意 15 个签名信息作为 Commitlist。2. 所有验证者都对相同区块进行了两次投票,且他们缺一不可解释:Prevote 的投票目的是确认所有的验证者在同一个 Height(区块高度) 和同一个 Round(共识回合) 上,并且确认验证者对该区块的投票意愿;Precommit 的投票目的是对区块达成最终共识。如果只有一轮投票,那么很可能导致链分叉。假设有 4 个验证者节点 A,B,C,D,他们共识出一个区块 Block1,但是只有 A 上链了,其他验证者因为网络问题没有在规定时间内收集够投票而进入到了下一轮。在新一轮中 B,C,D 对 Block2 达成共识,此时在同一高度有了不同的两个区块形成分叉。3. PBFT 过程加入锁和解锁机制防止验证者作恶解释:验证者一旦对某个区块 A 进行 Prevote 投票就会被 " 锁住 ",在同一个 Height 内无法对不同的区块 B 进行第二次的 Prevote 投票,同时该验证者只能对区块 A 进行 Precommit 投票。如果验证者收到有 2/3 以上的更高 Round 的其他验证者投票就会对区块 A 解锁。

04
 基于 VRF 的验证者选取

然而,在 PBFT 的过程中,验证者集群必须有超过 2/3 的诚实节点才能保证系统的安全性;超过 1/3 的诚实节点才能保证系统的存活性。因此,如何从广大节点中选取出诚实节点作为验证者代表变得极为重要。路云区链在 Dipperin 中设计了一套基于 VRF(可验证随机函数) 密码掷签的验证者选取机制。为了抵御女巫攻击,对每个用户设定了权重,而这个权重则来源于用户自身的信誉。为了让新加入的节点有机会当选为验证者,引入了“幸运值”,且这个“幸运值”是可以被所有节点验证的。 信誉:Reputation=F (Stake,Performance,Nonce),衡量信誉的因子有 3 个,Stake (押金数)代表着作恶成本。其他数据相同的情况下,押金数越多,信誉值越高。Performance 绩效代表着过去用户作为验证者时的业绩。在其他数据相同的情况下,绩效越高,信誉值越高。决定绩效的有 3 个因子:1. 作为验证者时,平均 Commit 率 ;2. 作为 Primary (主验证者)的出块率; 3. 被举报次数。Nonce 是该帐号相关的交易数,其他数据相同的情况下,交易数越高,信誉值越高。Stake 和 Nonce 的引入是为了防止女巫攻击,如,对手将钱放入多个新建账户中试图参与竞选。如果是这种情况,每个账户的 Stake 和 Nonce 会很低,对信誉影响非常大。要想了解幸运值的产生过程首先需要了解 VRF 算法,对于一个公认的输入(input),用户使用私钥 SK 和一个 Hash 函数可以产生一个 Hash 值和一个 Proof。其他用户则可以通过这个 Hash 值和 Proof,结合该用户的公钥 PK,验证这个 Hash 值是否是由这个用户针对 Input 所产生的,并且在这个过程中,该用户的私钥自始至终没有泄露。这个 Hash 值其实就是 Seed,矿工利用私钥 SK 和上一个区块头中的 Seed 可生成新的 Seed 和证明这个 Seed 的 Proof,之后矿工只需把 Seed、Proof、公钥 PK 放入新的区块头即可。所有节点都可以根据 Proof 和公钥 PK 验证 Seed 的合法性。安全与效率不可兼得?PoW、PoS、DPoS 没实现的,DPoW 实现了每个区块头的 Seed 连起来形成了链式结构,但是并不是每个区块头的 Seed 都是有用的。只有每一轮的最后一个区块中的 Seed 参与了幸运值的计算。例如,一轮有 110 个区块,0~109 是第一轮,110~219 是第二轮以此类推。那么前两轮的验证者是默认的验证者,即官方的验证者。非官方验证者则是从第三轮开始进行选取,且第三轮验证者的幸运值由 109 号区块的 Seed 决定。05** 总结**从比特币、以太坊,到 EOS 以及当前很多公链,效率与安全是一直存在的问题,并且长期困扰了区块链技术的落地应用。 路云区链 Dipperin 的 DPoW 的共识算法综合考虑了系统的去中心化程度和交易的效率问题,从目前的测试效果来看,可以达到秒级出块,3000TPS 的效率,采用 VRF 密码掷签避免 PoS 算法中的公正性和 DPoS 中的中心化问题。

来源:Dipperin

Tags:
免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。