新闻开发人员企业区块链解释事件和会议新闻时事通讯
订阅我们的新闻.
电子邮件地址
我们尊重您的隐私
主页博客区块链开发
正式验证以太坊2.0阶段0规范
ConsenSys R的更新&D努力为信标链和Eth2的核心基础带来可信赖性。弗兰克·卡塞斯(Franck Cassez)2020年8月10日发布于2020年8月10日
ConsenSys R上的自动验证团队&D从事信标链的正式规范和验证工作已有几个月了。我们很高兴地报告已经取得了很多进展,尽管还没有完成,但是我们已经设法发展了 信标链的坚实且经过正式验证的内核. 我们的工作首次为Eth2.0基础架构的核心基础提供了无与伦比的可信度.
方法
验证与测试
我们使用了 屡获殊荣 验证感知编程语言 达夫尼 写一个 正式的 (功能性和逻辑性) 规格 每个信标链功能, 执行 每个功能,以及一个 证明 该实现符合其规范。换句话说,我们已经从数学上验证了错误的存在。我们最终证明是正确的实现基于 官方Eth2.0规范 我们已修复并报告了一些错误和不一致的警告.
我们的方法不同于测试,因为我们 数学上证明 功能符合其规格,用于 全部 输入。测试不能跨越无限多个输入,因此可以发现错误,但不能证明没有错误.
最好的事情是,我们不需要发表论文也不需要审阅证据。证明是代码库的一部分,并作为程序编写。是的,在Dafny中,您可以编写一个对开发人员友好的程序的证明。另外, 机械检查校样 由定理证明者提供,不保留任何不完整或有缺陷的证明的余地.
我们证明的性质
属性范围从不存在 算术下/上溢 和 索引超出范围, 每个函数与逻辑(一阶逻辑)前置条件/后置条件的一致性(merkelise示例在这里),也可以涉及涉及功能组成的更复杂的内容。例如,我们有以下内容 SSZ的财产 序列化/反序列化 函数:对于每个对象x,Deserialise(Serialise(x))= x,即对序列化对象进行反序列化将返回原始对象。我们还建立了一个 不变量数, 并用它们来证明信标链和ForkChoice(state_transition,on_block) 实际上 建立一个区块链对于商店中的任何b区块,b的祖先形成一个有限的全有序序列,导致创世区块,这是区块链的主要属性!
形式验证的好处
任何正式的卫理公会主义者都坚持认为,验证是安全的最佳做法。这正是这种方法如何确保以太坊2.0安全可靠的基础架构的方法.
功能规格
首先,我们将官方的Eth2.0规范提升为 正式的逻辑和功能规范. 对于每个函数,我们正式定义 该函数将要计算什么, 不怎么样。这提供了 与语言无关的对开发人员友好的参考规范 可用于以更少的精力开发更安全的实现.
模块化
其次,我们的规范,实现和证明架构是 模块化的. 结果,我们可以轻松地 尝试新的实现方式(例如优化) 并检查它们对整个系统的影响。想到一个聪明的黑客来实现一个功能?更改实现,并要求Dafny检查其是否仍符合其规范。如果是这样,则不影响使用此功能的组件的证明。.
可执行性
第三,我们的实现是 可执行文件. 我们可以编译并运行Dafny程序。更好的是,您可以 自动地 产生程式码 Dafny代码中的一些流行编程语言(如C#,Go(以及不久的Java))中。这可以用来补充现有的代码库或生成 认证测试. 要测试的实现可以使用我们证明正确的函数来计算测试的预期结果,并根据自己的结果进行检查.
一切都用一种语言
最后但并非最不重要的一点是,我们的代码库是 独立的. 它包含规范,实现,文档和证明,所有内容均以单一,可读,简单且语义明确定义的编程语言编写。.
问题与注意事项
验证引擎的健全性如何?
您可能会想,“ Dafny编译器/验证器是否有问题?”我们实际上知道Dafny越野车(dafny回购问题),但我们不依赖于Dafny中没有错误的情况。我们依靠Dafny(及其验证引擎)来 声音. 健全性意味着当Dafny报告证明正确无误时,它们的确是正确的.
如果我们编写的规范不正确怎么办??
在这种情况下,我们将证明符合错误的要求。是的,这可能发生,并且没有解决此问题的灵丹妙药。但是,正如我们之前提到的,Dafny是可执行的。这使我们能够运行代码,并确信我们的规范是正确的规范。而且我们的规范是用一阶逻辑编写的,没有任何含义上的争议,因此,如果您发现问题,请告知我们,我们将予以解决.
如果Dafny无法证明实现符合规范该怎么办?
可能会发生这种情况,但是在这种情况下,Dafny具有一些反馈机制来帮助调查无法验证证据的哪些步骤。直到现在,我们一直设法建立证明,Dafny可以自动检查.
我们欢迎您的反馈,因此请查看 我们的eth2.0-dafny存储库. 我们很高兴看到以太坊2.0的开发达到了最近的测试网里程碑,我们期待与整个生态系统的团队合作,以确保网络的下一阶段在坚实的基础上构建.
致谢:感谢我的队友Joanne Fuller,Roberto Saltini(自动验证团队),Nicolas Liochon和Avery Erwin对本文的初版发表评论.
跟上以太坊2.0
订阅ConsenSys时事通讯,将最新的Eth2新闻直接发送到您的收件箱. 订阅 以太坊2.0研究与开发安全通讯订阅我们的时事通讯以获取最新的以太坊新闻,企业解决方案,开发人员资源等信息。网络研讨会
如何构建成功的区块链产品
网络研讨会
如何设置和运行以太坊节点
网络研讨会
如何构建自己的以太坊API
网络研讨会
如何创建社交令牌
网络研讨会
在智能合约开发中使用安全工具
网络研讨会