[发明专利]一种形式验证Solidity智能合约的方法有效
申请号: | 201811119763.2 | 申请日: | 2018-09-25 |
公开(公告)号: | CN109375899B | 公开(公告)日: | 2021-08-03 |
发明(设计)人: | 张丁文;曹辉;梁秀波;邱炜伟;李伟;李启雷;尹可挺 | 申请(专利权)人: | 杭州趣链科技有限公司 |
主分类号: | G06F8/10 | 分类号: | G06F8/10;G06F8/41;G06Q40/04 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 贾玉霞;邱启旺 |
地址: | 310012 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 形式 验证 solidity 智能 合约 方法 | ||
本发明公开一种形式验证Solidity智能合约的方法,从Solidity智能合约中建立模型,使用Boogie语言对该模型进行描述,然后利用Z3证明器进行验证。本发明的方法设计了一套通用的智能合约模型规范语言,解决了Solidity智能合约和数学模型之间的转化问题,同时对于形式验证其他语言的智能合约也具有重要的参考价值;该方法帮助智能合约的开发者快速、全面、严谨地验证智能合约的功能,定位智能合约的漏洞,保证智能合约的安全。
技术领域
本发明涉及区块链技术、智能合约技术、形式验证、Solidity合约语言、Boogie模型语言、Z3定理证明器,尤其涉及形式验证Solidity智能合约的方法。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。2008年由中本聪提出区块链的概念,在随后几年中,成为了电子货币比特币的核心组成部分。到2014年,区块链2.0成为关于去中心化区块链数据库的术语。作为第二代可编程区块链,它的主要特点是允许用户写出更精密和智能的协议,也就是所谓的智能合约。
智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约相对传统合约能自动执行原定协议,减少其他交易成本。但是由于区块链上的智能合约是所有用户都能看见的,并且一旦部署无法篡改,所以如果智能合约本身存在漏洞,那么就可能被人发现并进行攻击。这样的攻击往往难以迅速解决,例如著名的TheDao攻击造成了5000万美元的损失,当维护人员试图解决漏洞时黑客已经成功完成了资金回收。很明显,如何编写安全的智能合约已经成为区块链应用开发者关心的问题。传统的流程测试和静态检验确实是一种发现漏洞的有效手段,但它们只能查找漏洞,却无法证明没有漏洞。
形式验证是一种从数学上完备地证明或验证某一模型是否实现了规范所述功能的方法,它可以成为保障智能合约安全的一个有效手段。形式验证可以对指定描述的所有可能的情况进行验证,借用数学上的方法将程序和规范直接进行比较,发现问题或证明没有问题。形式验证方法分为等价性验证、模型验证和定理证明等。但是等价性验证和定理证明存在转化方案上的困难,而模型验证也存在状态爆炸等问题,因此就目前的技术来看,形式验证对于某些形式的程序仍然无法很好地进行验证。虽然很难设计一个通用的智能合约形式验证方案,但是针对某种特定语言的智能合约,比如Solidity智能合约,是可以在满足其大部分语义和功能的前提下,进行形式验证的。
Solidity是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了C++、Python和Javascript语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。目前这门语言是智能合约开发的主流语言,用它可以在区块链上实现投票、众筹、秘密竞拍(盲拍)、多重签名的钱包以及其他应用。
Boogie是一种模型验证语言,用于描述程序的验证条件。Boogie是一种介于SMT语言和程序语言之间的中间语言,用Boogie语言描述程序验证条件后将转化为SMT语言,然后由SMT证明器进行验证。目前基于Boogie开发的程序语言有Dafny、F*、Koka等。
Z3定理证明器是一种SMT证明器,它可以用于验证逻辑表达式的可满足性。Z3作为一个底层工具,具有一套脚本语言作为输入,而这个脚本符合SMT-LIB2.0标准。一旦输入符合标准的脚本,Z3可以高效的对输入的逻辑表达式进行验证,并输出满足、不满足或未知,如果是可满足的,还可以输出一个满足条件的解。利用Z3这个底层工具,就可以开发出程序的形式验证功能,关键就在于将程序语言一步步等价转化为符合SMT-LIB2.0标准的脚本,而这个过程,本质是将程序抽象成数学模型的过程。
Antlr4是一种语法解析工具,可以通过定义语法文件,实现将某一程序代码转化为语法树,并在该语法树的基础上对程序代码进行处理的功能。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州趣链科技有限公司,未经杭州趣链科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811119763.2/2.html,转载请声明来源钻瓜专利网。