BDLS协议重磅发布 — Sperax启动Bug Bounty计划

在这里插入图片描述
Sperax的BDLS共识代码上线啦!Sperax团队一直将项目安全放在首位,同时我们坚信真正去中心化的解决方案应该以去中心化的方式开发。本着这种精神,我们将启动“Sperax Bug Bounty计划”。

我们号召所有感兴趣的开发者来帮我们找出并反馈Sperax项目中的Bug,经过提交确认的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年4月8日00:00至4月21日24:00,超过截止时间的上报,均为无效。

5.您在发现一个漏洞之后,请在github (https://github.com/Sperax/bdls) 上 提交一个pull request 并发邮件到:bounty@sperax.io,该报告中须包括您的姓名、电子邮件、公司名称(如果适用)、关于该漏洞的描述、您认为该漏洞会对Sperax有何潜在影响,以及您发现该漏洞的过程(步骤)。

以下内容不属于赏金计划范畴:

1.Sperax网站中的问题。

2.重复报告的问题,包括内部已经得到确认的问题。

赏金评估兑付流程

1.提交报告至官方邮箱 (bounty@sperax.io)。

2.一周时间我们进行判定并回复您的邮件。

3.网站公示后,会在两周内支付至您提供的ERC20账户。

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节[https://eprint.iacr.org/2019/1460.pdf])。事实证明,这些自称安全的协议(如HotStuff BFT)在II型网络中实际上并不安全,因为它们可能会因受到攻击而陷入停滞,导致网络参与者永远无法达成共识,最终使得整个网络瘫痪。而且,即使对于I型网络,如果稍微修改了用于破坏II型网络中那些协议的攻击,同样也可能使这些协议陷入无法解决的困境。相反,与这些协议不同,在部分异步网络中,Sperax的BDLS被证明是真正安全(secure)的。

性能(performance)方面:

与其他现有的区块链BFT协议相比,BDLS协议不仅最安全,而且性能也是最佳的。BDLS通过降低回合复杂度和降低通信复杂度达成了共识,如下面的表格所示:

在这里插入图片描述

由于其安全性(security)和高性能(performance),BDLS保证了在各种不同数量参与者和网络延迟的网络环境下依然能平稳,无错误的出块机制。以此方式,BDLS以及在其上构建的Sperax区块链可实现高效率(efficiency),并且是真正满足当今区块链行业需求的唯一解决方案。

BDLS如何运行

鉴于这是一种创新且实用的协议,读者自然会问BDLS如何实际运行?具体来说,给定一个块高度h,BDLS如何确定该高度处的特定区块B?答案如下:

假设在开始生成高度为h的块时,我们在网络中有n个参与者P0, P1, …, Pn-1和m个有效候选块B0, B1, …, Bm-1。对于每个参与者Pj,它具有所有有效候选块中的一些,我们将这组候选块表示为BLOCKi。显然, BLOCKj是所有候选块{B0, B1, …, Bm-1}集合的子集。

BDLS通过“逐轮循环”确定块高度h的最终块。换句话说,在每一轮中,所有参与者都尝试将块B确定为高度h的最终块。如果他们在这一轮中成功,则确定高度为h的区块,整个网络移至下一个高度为h + 1的区块;如果他们没有成功,他们会再开始一轮,重新尝试确定高度为h的区块。

然后,问题就变成了:在给定的回合r中,参与者如何尝试针对块高h最终确定区块B?这个问题触及了BDLS协议的核心。下文将概述算法;有关完整的技术细节,请参阅本文[https://eprint.iacr.org/2019/1460.pdf]。

在算法开始之前,公共函数领导者 (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
Sperax是一个旨在连接传统金融和分布式生态系统的可信的去中心化经济基础设施。凭借其创新的BDLS协议,Sperax提供了一个安全、高性能的共识模块。在通证经济设计上,Sperax引入了嵌入式金融层,以为开发者提供开发分布式应用和业务模型的扩展性,并赋能其与现实世界金融交易相关联。

关注我们

  • Sperax官网:sperax.io
  • Weibo:@sperax
  • Twitter:twitter.com/sperax_io
  • Medium:medium.com/sperax
  • Facebook:facebook.com/SperaX-1465830513569601
  • LinkedIn:linkedin.com/company/sperax
  • Telegram:t.me/sperax
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值