[发明专利]一种形式验证Solidity智能合约的方法有效
申请号: | 201811119763.2 | 申请日: | 2018-09-25 |
公开(公告)号: | CN109375899B | 公开(公告)日: | 2021-08-03 |
发明(设计)人: | 张丁文;曹辉;梁秀波;邱炜伟;李伟;李启雷;尹可挺 | 申请(专利权)人: | 杭州趣链科技有限公司 |
主分类号: | G06F8/10 | 分类号: | G06F8/10;G06F8/41;G06Q40/04 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 贾玉霞;邱启旺 |
地址: | 310012 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开一种形式验证Solidity智能合约的方法,从Solidity智能合约中建立模型,使用Boogie语言对该模型进行描述,然后利用Z3证明器进行验证。本发明的方法设计了一套通用的智能合约模型规范语言,解决了Solidity智能合约和数学模型之间的转化问题,同时对于形式验证其他语言的智能合约也具有重要的参考价值;该方法帮助智能合约的开发者快速、全面、严谨地验证智能合约的功能,定位智能合约的漏洞,保证智能合约的安全。 | ||
搜索关键词: | 一种 形式 验证 solidity 智能 合约 方法 | ||
【主权项】:
1.一种形式验证Solidity智能合约的方法,其特征在于,该方法具体包括如下步骤:S1:首先利用Anltr4语法设计Solidity Model Language规范,所述的规范包括SML语句规、SML函数规范和SML循环规范,SML语句规范以符号'//@'开头,后跟假设语句或断言语句;SML函数规范以符号'//@'开头,后跟规范体;或者以符号'/*@'开头,后跟规范体,最后以符号'*/'结尾;所述的规范体包括前置条件语句、后置条件语句、修改权限语句;SML循环规范以符号'//@'开头,后跟循环语句。所述的假设语句、断言语句、前置条件语句、后置条件语句、修改权限语句和循环语句都由相应语句的关键字和谓词组成。S2:按照S1所述的SML语法规范在Solidity智能合约中添加详细的注解规范。S3:如果智能合约开发者进行形式化验证的智能合约的目标文件依赖其他多个Solidity智能合约文件时,首先将依赖文件和目标文件合并成一个文件。S4:将S3的合并后的文件中的代码由Solidity转化为Boogie,采用弱化继承、弱化封装、增强多态、去可见性的方式以去除面向对象的语言特性,并将Solidity语法中的类型、语句和表达式转换为Boogie语法中相对应的类型、语句和表达式。S5:采用S4中同样的方法将S2中为Solidity智能合约添加的注解规范转换为Boogie语法的规范;S6:将通过S4和S5转换后的带有详细注解规范的Boogie代码保存在文件名后缀为.bpl的文件中;S7:利用集成Boogie编译器和Z3定理证明器的Boogie工具对S6获得的文件进行验证,获得验证结果;S8:读取验证结果,并将其解析为更为可读的结果,并将更为可读的结果返回给Solidity智能合约开发者。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州趣链科技有限公司,未经杭州趣链科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201811119763.2/,转载请声明来源钻瓜专利网。