ASP:引介:形式化验证Gasper共识机制的终局性

编者按:本文来自以太坊爱好者,作者:MusabA.Alturki,ElaineLiandDaejunPark,翻译:阿剑,Odaily星球日报经授权转载。Gasper是一个由信标链协议实现的抽象的权益证明协议层。Gasper的关键部分就是一套终局性机制,用于保证交易的持存性和系统的不间断运作不会被攻击破坏。我们很高兴宣布,RuntimeVerification和以太坊基金会长久合作中的另一大里程碑圆满成功:我们开发了一套形式框架来模拟和验证信标链协议,并成功形式化地证明了Gasper终局性的正确性;并且,我们还使用这些结果证明了信标链的Gasper抽象实现同样具备这些属性。模型和证明脚本都可以在此处找到。在本文中,我们希望介绍这一成就的第一部分:验证Gasper的属性。所以,什么是Gasper?如何能形式化地验证其属性?这种形式化验证有何意义?Gasper

信标链协议是一套新的权益证明协议,是以太坊未来的重大升级“以太坊2.0”的核心。在信标链协议中,参与的节点都在系统中存有保证金。验证者通过向网络提交“见证消息”来证实区块的有效性并为其多种属性投票。信标链协议本身包含了多种工具,以帮助验证者们对区块链的最新状态达成共识。Gasper为信标链协议中的终局性工具提出了一套抽象但准确的描述,还定义了分叉选择规则;终局性工具用于确定哪些区块应被参与者认定为已经确定的、不可更改的,分叉选择规则则用于在链产生分叉时确定哪个分叉是主链。Gasper中的终局性一般化了始创于《CasperFriendlyFinalityGadget(CasperFFG)》论文中的概念,让“终局化”获得了更通用的形式。合理化与终局化

终局性概念仅与“检查点区块”起点处的区块)有关。见证消息中有一部分叫“合理化投票”,验证者在合理化投票中将一个来源检查点区块和稍后的一个目标检查点区块关联起来,直观地表明发起该见证消息的验证者认为“我们可以从来源检查点的状态移动到目标检查点的状态”。实际上,一份合理化投票表明了:发起投票的验证者;来源检查点及其合理化高度;目标检查点及其合理化高度。当且仅当条件满足:来源检查点B0已得到合理化;大多数人同样投票给B0-B1来源-目标对;则目标检查点B1就经由来源检查点B0得到了合理化。当且仅当大多数验证者将B0与其K代子孙检查点Bk关联起来,则B0获得K阶终局性,且B0与Bk之间的所有检查点都被终局化。注意,创世区块本身被认为既已得到合理化,又有终局性。下图演示了Gasper中的合理化和终局化概念。

罚没条件

如果验证者尝试偏离协议要求、提交自相矛盾的投票,则该验证者会被惩罚:其保证金会被扣除一大部分。Gasper定义了两个条件来定义何谓自相矛盾的投票:双重投票:验证者发布了两个截然不同的投票,但两个投票的目标高度是同一个高度。环绕投票:验证者发布的一个投票所关联的两个检查点恰好在自己所发布的另一个投票的两个检查点高度范围内。

发起双重投票的验证者被认为违反了第一罚没条件;而发起环绕投票的验证者则违反了第二罚没条件。不论是哪种情况,违反规则的验证者都会被扣除大量保证金。正确性

与其它拜占庭容错型协议相同,Gasper协议的一个关键底层假设是绝大多数验证者是诚实的、会遵循协议的要求。在此假设下,Gasper有两大基本属性:可追责的安全性:不会有两个属于不同分叉的区块都被终局化,除非有至少1/3的验证者被罚没;似然活性:无论区块链过往发生了什么事,区块的终局化进程永远不会陷入僵局。此外,在验证者集合会动态变化的环境中,第三种属性量化了在有人违反协议规则时可被罚没的保证金体量:可罚没下限:只要能够使用协议外条件来控制验证者的激活和退出参数条件,就能证明可被罚没的保证金数量有一个下限。动态验证者集合引入了另一个有挑战性的问题:系统不再那么能够可靠地惩罚恶意验证者,因为他们可能会在作恶之后、保证金被实际罚没之前离开网络。而可罚没下限属性使得调整活跃验证者集合的可变幅度、维持最低水平的可追责性成为可能。验证Gasper的终局性

Gasper旨在为终局性提供一个数学化的、精确的、可用来形式化地证明其正确性的描述;这种正确性也是证明信标链协议安全性的关键。以太坊平台正日渐被用作大型金融交易系统的股价,更突出了安全性保证的前所未有的重要性。与以太坊基金会通力合作,我们已经使用Coq证明助手,形式化了Gasper在动态验证者集合一般条件下的终局性机制。我们在这一条件下指出并证明了Gasper的所有三种关键属性:可追责的安全性、似然活性以及可罚没下限;所有证明都使用了同一个Coq模型。对协议的演绎论证给了我们对相关主张正确性和安全性的极大信心,因为演绎论证保证没有未经指明的假设,也没有无效的演绎推理步骤。它也明确了为使论点成立所需的所有假设。形式化过程也能反哺协议的描述,使协议的描述能更准确、更完整。这里我们仅对这一成就给出概要的说明。完整的细节可见:该项目的技术报告该项目的Github代码库建模及验证方法

第一步是开发一个协议的模型,让我们能够表达出所有我们希望形式化地指出并证明的关键属性。这个模型建立在我们之前验证CasperFFG的安全性和活性的工作基础上。这一模型有三个主要的结构化模块:验证者和团体。验证者被抽象地表示为一个有限型的成员,写为Validator:finType。每个验证者都有一份保证金;这一事实我们建模成一个未解释的函数stake:{fmapValidator->nat},保存验证者与其保证金数量的映射。此外,给定一个验证者集合,其权重wt定义为该集合中所有验证者保证金数量的总和:

\\sum是求和运算符;stake.则给出了相应于验证者v的保证金数量。wt函数的几个属性源自其定义,例如:空验证者集的权重必然为0,两个互不相交的集合的合集的权重就是各自权重的和。这些属性在涉及可罚没下限属性中关于权重的推理时会派上用场。此外,因为我们要模拟动态的验证者集合,也就是活跃验证者的集合可能会随区块发生改变,我们声明了一个抽象的映射vset:{fmapHash->{setValidator}},给出一个区块处的活跃验证者集合。现在,使用vset和wt,我们就能定义什么是绝对多数集合:

在某个区块处,如果活跃验证者集合的一个子集的权重超过整个集合权重的2/3,则该子集就是一个绝对多数集合。区块树。我们用区块哈希的有限型来模拟一个区块Hash:finType,另外,用genesis代表创世区块。我们使用符号h1<~h2这样的符号来表示区块父子关系,以此模拟检查点区块树。接下来我们使用h1<~*h2来定义祖先关系,h1就是h2的祖先,而h2就是h1的后代。至于祖先关系的属性,比如祖先的祖先也是祖先,与父子关系的属性类同。全局状态。状态可表示为由合理化投票组成的有限集合,投票的形式是(v,s,t,s_h,t_h),而v是发起投票的验证者,s和t是TA支持的来源区块和目标区块,而s_h和t_h是它们的见证高度。某一个投票是否有人发起过可通过一个布尔成员断言确定:

实例规范

基于这些定义以及它们相应的属性,我们定义出了模型中的所有其它结构和属性,包括罚没条件、团体交集属性,还有合理化以及终局化。举例而言,在一次违反协议的事件中,罚没某个团体的属性可使用如下的抽象成员约束而得到定义:

该命题指出,罚没一个团体意味着,在某些区块bL和bR处存在着两个绝对多数团体vL和vR,这两个团体的交集就是被罚没验证者的完整集合。注意,在活跃验证者集合一直固定的特殊条件下,这些绝对多数集合的交集的权重至少是所有保证金的1/3。另一个例子是一个终局化分叉的定义:

该命题指出两个相互矛盾的区块b1和b2都被终局化了。这两个区块可以是在任意合理化高度的时候被任意长的链终局化的。这些定义和结果组中被用来指出和证明可追责的安全性、似然活性以及可罚没下限三种定理。为清楚起见,我们还用下式重新定义了可追责安全性定理的表述:

这个定义很简单,只是说:如果安全性被打破,那必定意味着某个验证者集合会被罚没。这个证明机械化了Gasper给出的非正式论证,并展示了为什么分叉获得终局化就意味一定有两个绝对多数团体违反了其中一条罚没条件,因此其交集可被罚没。我们的技术报告描述了形式化过程以及这些属性的证明,而我们的项目代码库提供了完整的详述。继续前进

在本文中,我们讲解了RuntimeVerification与以太坊基金会合作成就的第一部分。这第一部分乃是形式化Gasper并证明其关键的三种属性:可追责的安全性、似然活性以及可罚没下限。我们成就的第二部分,在本文中还未涉及的,是展示如何将这些结果代入更加精细的模型中,给出一个信标链状态转换函数的抽象版本。我们后面会用另一篇文章来展示这一成果。完成这个里程碑还意味着我们向这场合作的终极目标迈出了重要的一步。我们期待在这项工作上与以太坊基金会继续合作。在这次接触中,我们对以太坊基金会的几位专家深为感激:DannyRyan、CarlBeekhuizen、MartinLundfall、YanZhang以及AdityaAsgaonkar。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:12ms0-8:814ms