BDLS协议:最佳效率=最佳安全性+最佳性能 BDLS:最有效的区块链BFT确定性工具协议 BDLS由Sperax开发,基于C.Dwork,N.Lynch和L.Stockmeyer开发的著名DLS协议。这是一种BFT共识协议,可以真正满足当今互联网等开放环境的需求。与Casper FFG(以太坊2.0),HotStuff BFT(Facebook Libra),GRANDPA(Polkadot)等其他著名协议相比,BDLS协议兼具前所未有的安全性(security)和无与伦比的性能(performance),尤其是在部分异步环境(例如互联网)下。 安全(security)方面: 尽管许多著名的协议(例如Tendermint BFT和HotStuff BFT)都声称它们在部分异步环境下是安全(secure, i.e. safe + live)的,因此可以在互联网环境中使用,但事实并非如此。部分异步网络通常可以分为两种类型:I型和II型(有关技术定义,请参阅论文的第2节)。事实证明,这些自称安全的协议(如HotStuff BFT)在II型网络中实际上并不安全,因为它们可能会因受到攻击而陷入停滞,导致网络参与者永远无法达成共识,最终使得整个网络瘫痪。[https://eprint.iacr.org /2019/1460.pdf] 而且,即使对于I型网络,如果稍微修改了用于破坏II型网络中那些协议的攻击,同样也可能使这些协议陷入无法解决的困境。[https:// eprint .iacr.org / 2019 / 1460.pdf] 相反,与这些协议不同,在部分异步网络中,Sperax的BDLS被证明是真正安全(secure)的。[https://eprint.iacr.org/2019/1460.pdf] 性能(performance)方面: 与其他现有的区块链BFT协议相比,BDLS协议不仅最安全,而且性能也是最佳的。 BDLS通过降低回合复杂度和降低通信复杂度达成了共识,如下面的表格所示[https://eprint.iacr.org/2019/1460.pdf]。 由于其的安全性(security)和高性能(performance),BDLS保证了在各种不同数量参与者和网络延迟的网络环境下依然能平稳,无错误的出块机制。以此方式,BDLS以及在其上构建的Sperax区块链可实现的高效率(efficiency),并且是真正满足当今区块链行业需求的解决方案。 BDLS如何运行 鉴于这是一种创新且实用的协议,读者自然会问BDLS如何实际运行?具体来说,给定一个块高度h,BDLS如何确定该高度处的特定区块B?答案如下: 假设在开始生成高度为h的块时,我们在网络中有n个参与者P0, P1, …, Pn-1和m个有效候选块B0, B1, …, Bm-1。对于每个参与者Pj,它拥有所有有效候选块中的一些甚至全部,我们将这组候选块表示为BLOCKj。显然地, BLOCKj是所有候选块{B0, B1, …, Bm-1}集合的子集。 简单地说,BDLS通过“逐轮循环”确定块高度h的最终块。换句话说,在每一轮中,所有参与者都尝试将某个块B确定为高度h的最终块。如果他们在这一轮中成功,则网络成功地确定了高度为h的区块,整个网络便移至下一个高度为h + 1的区块; 如果他们没有成功,他们会再开始一轮,重新尝试确定高度为h的区块。 然后,问题就变成了:在某个回合r中,参与者如何尝试确定某个块B为区块高度h的区块? 这个问题触及了BDLS协议的核心。 下文将概述算法; 有关完整的技术细节,请参阅此论文第七节[https://eprint.iacr.org/2019/1460.pdf]。 在算法开始之前,网络的公有函数(public function),leader(h,r),从所有参与者中随机选择这一轮的领导者Pi 。 该算法本身,则总共包括8个步骤。 但是,并不是每一个步骤都必须执行,因为其中一些步骤,仅仅是为了防止整个网络因异常行为(例如无限的网络延迟)而陷入瘫痪。算法如下: 1.包括领导者Pi 本身在内的每个参与者Pj都向Pi 发送带有其数字签名的消息<h,r,B’j>j。h是块的高度。 r是轮数。 B’j是Pj的区块保留区BLOCKj中的最大有效候选区块。该消息被视为回合开始消息,也就是说,如果领导者Pi接收到足够的这类消息,则Pi开始新的回合r。发送此消息后,每个参与者都将在第r轮中启动其超时计数器。 2.如果领导者Pi 从步骤1接收到包括自己在内的所有参与者的至少2t + 1条消息,则它通过广播分组消息开始新的回合r。 如果在Pi从步骤1收到的所有消息中,至少有2t + 1个由2t+1个参与者发送的签名消息具有相同候选块B',则领导者Pi 广播以下签名消息: <lock,h,r,B’,proof> i 其中的proof是一个包含至少2t + 1条签名消息的列表,表明至少有2t + 1位参与者提议了B’。 如果在Pi从步骤1收到的所有消息中,没有这样的块B',则Pi首先将所有建议的块添加到自己的区块池BLOCKi中,然后广播以下已签名的消息: <B”,proof> 其中B”是Pi的区块池BLOCKi中的最大有效候选区块,proof是它从步骤1收到的至少2t + 1轮变更消息的列表。 3.如果参与者Pj从领导者Pi那里收到有效的<B”,proof>,则Pj将B”添加到它的区块池BLOCKj中。 如果它从领导者那里收到有效的<lock,h,r,B’,proof> i,则Pj执行以下操作: (i)释放上一轮对块B'的任何潜在锁定。 (ii)通过锁<lock,h,r,B’,proof> i锁定B’ (iii)将附有自己电子签名的commit消息发送回领导者Pi,如下所示: <commit,h,r,B’> j 4.如果领导者Pi从步骤3接收到来自参与者的至少2t + 1条有效commit消息,则它将块B'决定(即最终确定)为高度h块,并广播决定消息(decide message),如下所示: <decide,h,r,B’,proof> i proof是至少2t + 1个提交消息的列表。 5.如果参与者Pj从网络接收到决定消息,则它将块B’最终确定为高度h的块,并移动以产生下一个高度的块;同时,它将收到的决定消息广播给邻居。 如果Pj没有从网络接收到决定消息,则它将执行以下锁定-释放过程: (i)(锁定-释放)如果参加者Pj具有某些锁定值,则将其所有锁定值与证明一起广播。如果参与者收到r’ >= r”和B' != B”的lock<lock,h,r',B',proof> i',则释放对值<lock,h,r”,B”,proof> i”的锁定。 (ii)移至下一轮r + 1。 6.(高度同步)如果参与者Pj在步骤4中接收到最终确定的块,即确定消息,则将其最终确定为高度h的块,并开始生产下一个高度的块。 7.(回合同步)如果参与者Pj从领导者Pi收到回合r’> r的有效信息,则它将移至回合r’。 8.(超时)如果在指定的时间段内,参与者Pj没有收到足够的消息来继续前进,则它会自动移至下一轮。 通过上述算法,在给定的回合中,BDLS以所有参与者P0, P1, …, Pn-1从所有有效的候选块B0, B1, …, Bm-1 中确定给定高度h的块B,如果成功则移至下一轮,如果失败则重试。 现在,读者可能想知道为什么具有上述算法的BDLS协议可以在异步环境下抵御各种攻击。我们的论文,不仅详细地描述了算法本身,并且还给出了BDLS协议安全性的严格数学证明。这里将列出该证明的一些关键点供感兴趣的读者阅读: (引理1)两个候选块B’和B”不可能被锁定在高度h的同一轮r中。 (引理2)如果领导者Pi在高度为h的回合r中决定一个区块B',而r是做出决定的最小回合,那么至少有t + 1个诚实参与者在第r轮锁定候选区块B'。此外,每个在回合r中锁定B'的诚实参与者始终会在回合r'> = r时锁定B'。 (引理3)在GST回合之中或之后的任何锁定释放步骤后,由诚实参与者锁定的候选块集包含最多一个值。 基于以上三个引理,对于BDLS协议,我们有以下两个定理: (定理1:安全性/safety)假设最多有t个恶意参与者,两个参与者不可能决定不同的块值。 (定理2:活性/liveness)假设最多有t个恶意参与者,并且Bh(即高度为h的块)提案机制总是在所有高度为h的第一轮开始之前生成Bh的有效候选子块。然后,BDLS协议将最终确定每个高度h的块。也就是说,BDLS协议不会陷入死锁状态(deadlock)。 由于BDLS被证明既具有安全性(safety)又具有活性(liveness),因此该协议在异步环境下是安全(secure)的。 Sperax Bug Bounty计划 人们可能会怀疑:像BDLS这样的同时具有创新性和实用性的区块链公链是否可以跨出象牙塔,用代码切实地实现,并被业界广泛地采用? 答案是肯定的。 现在,BDLS不仅是在理论上得到证实,而且已经由Sperax的优秀开发团队真正实现。 并且,Sperax刚刚在GitHub上发布了其开源代码,即BDLS代码库。 这是因为我们坚信真正优秀的去中心化解决方案应该以去中心化的方式去开发。 现在,我们本着这种精神宣布“ Sperax Bug Bounty计划”,细则如下。 Sperax Bug Bounty 计划 Sperax Bug Bounty计划将为Bug提供赏金。我们号召所有的漏洞赏金猎人来帮助我们找出并反馈Sperax项目中的Bug。如果你是个优秀的赏金猎人请不要错过这次活动,详情请参考下文。祝各位猎人狩猎愉快~ 规则 1.必须是新发现的,之前没有被反馈过的安全漏洞。 2.找出的安全漏洞必须是Sperax GitHub上代码的一部分,而不是其他第三方代码。 3.您必须没有写过任何与Sperax项目漏洞相关的代码,也不能以其他方式参与到Sperax项目代码漏洞的产生过程中。 4.Sperax项目的员工、承包商以及其它与Sperax基金会或其任何子公司业务关系者不能参加该计划(包括前员工、前承包商以及曾有业务关系者)。 5.请尊重我们的共识模块,不要攻击它(我们保留追究法律责任的权利)。 6.公开披露漏洞将失去获得赏金的资格且有可能被追责。 7.您必须符合KYC的标准和要求,并通过审核才有资格领取赏金。 8.Sperax团队保留对整个活动的最终解释权。 奖励细则 1.Sperax赏金计划为每个漏洞设置的奖金按照公募的估值为1000美金价值的SPA代币。 2.获得奖金的条件是第一个团队/个人提交的pull request被加入sperax代码库。 3.本次活动对漏洞的程度不设分级。 4.活动时间是北京时间2020年X月X日XX:00至X月X日XX:00,超过截止时间的上报,均为无效。 5.您在发现一个漏洞之后,请在github(https://github.com/Sperax/bdls)上提交一个pull request 并发邮件到:[email protected],该报告中须包括您的姓名、电子邮件、公司名称(如果适用)、关于该漏洞的描述、您认为该漏洞会对Sperax有何潜在影响,以及您发现该漏洞的过程(步骤)。 以下内容不属于赏金计划范畴: 1.Sperax网站中的问题。 2.重复报告的问题,包括内部已经得到确认的问题。 赏金评估兑付流程 1.提交报告至官方邮箱([email protected])。 2.一周时间我们进行判定并回复您的邮件。 3.网站公示后,会在两周内支付至您提供的ERC20账户。 本文来源:Sperax —- 编译者/作者:Sperax 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
BDLS协议:最佳效率=最佳安全性+最佳性能
2020-04-03 Sperax 来源:火星财经
LOADING...
相关阅读:
- Chainlink(LINK)甲骨文现在通过NEAR协议为dApp提供动力2020-08-02
- 币世界晚内参:ETC近6小时没有出块以太坊协议仍然简单2020-08-02
- Vitalik:尽量使以太坊2.0协议简单化,从而保证网络的安全性2020-08-01
- ConsenSys实验室和协议实验室共同启动Filecoin加速器计划2020-07-31
- FIO协议(FIO)随着币安新闻的发布而飞速发展2020-07-31