[发明专利]一种形式验证Solidity智能合约的方法有效
申请号: | 201811119763.2 | 申请日: | 2018-09-25 |
公开(公告)号: | CN109375899B | 公开(公告)日: | 2021-08-03 |
发明(设计)人: | 张丁文;曹辉;梁秀波;邱炜伟;李伟;李启雷;尹可挺 | 申请(专利权)人: | 杭州趣链科技有限公司 |
主分类号: | G06F8/10 | 分类号: | G06F8/10;G06F8/41;G06Q40/04 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 贾玉霞;邱启旺 |
地址: | 310012 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 形式 验证 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智能合约开发者。
2.根据权利要求1所述的形式验证Solidity智能合约的方法,其特征在于,所述的S3中将依赖文件和目标文件合并成一个文件的具体操作为:
对所有`*.sol`文件,获取文件import信息,将其替换为合约名所对应的源码,确保最终所有文件都不再有import信息,否则重复以上操作直至所有文件不再包含import信息;若合并过程中存在同名的合约、库、接口,则将其按照一定规则修改为不同名的合约、库、接口,同时相应的使用该合约、库、接口处也修改为对应名称;并将以上名称修改操作进行记录,后续步骤能够对以上修改进行反向查找。
3.根据权利要求1所述的形式验证Solidity智能合约的方法,其特征在于,所述的弱化继承,即采用去继承的方式将父合约中的状态变量声明、结构体定义、构造函数定义、修饰器定义、函数定义和枚举定义写入到子合约中;
所述的去继承的方式是指去掉子合约与父合约语法之间的继承关系,对于父合约中的状态变量声明,若不与子合约中的状态变量产生命名冲突,则直接写入子合约;若存在命名冲突,则按照`父合约名称`+`$`+`相关名称`的方式写入子合约中;
Solidity中结构体定义及枚举定义直接写入子合约当中;
函数定义及构造函数定义,若不存在命名冲突,则直接写入子合约中,当存在命名冲突,则按照`父合约名称`+`$`+`相关名称`的方式进行命名写入子合约中;
修饰器定义,若子合约中无同名修饰器,则将修饰器定义写入子合约中,否则不做操作。
4.根据权利要求1所述的形式验证Solidity智能合约的方法,其特征在于,所述的弱化封装,即指首先在Boogie中定义指针类型type Ref=int及范型域类型type Field T,通过堆的方式对Solidity中对象进行管理var Heap:[Ref]T[Field T]T,将所有智能合约中的域都直接暴露在文件内成为状态变量、函数、构造函数、修饰器、结构体、枚举。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州趣链科技有限公司,未经杭州趣链科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811119763.2/1.html,转载请声明来源钻瓜专利网。