[发明专利]一种适用于形式化验证的智能合约编译方法有效
申请号: | 201910032081.6 | 申请日: | 2019-01-14 |
公开(公告)号: | CN109753288B | 公开(公告)日: | 2022-02-15 |
发明(设计)人: | 黄步添;徐启源;张维赛;陈建海;闫凤喜;王从礼;石太彬;苑振霞 | 申请(专利权)人: | 杭州云象网络技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/30 |
代理公司: | 杭州天勤知识产权代理有限公司 33224 | 代理人: | 王琛 |
地址: | 311121 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 适用于 形式化 验证 智能 合约 编译 方法 | ||
1.一种适用于形式化验证的智能合约编译方法,其特征在于:采用一种智能合约编译语言来实现智能合约编译,该编译语言的类型系统包含类型和数学集合,并使用多种虚函数表实现多类型参数、可用高阶逻辑的快速表达,在进行智能合约形式化验证时,仅需对所使用函数定理进行证明,无需函数建模;
所述类型被至少大于其本身的数学集合包含,类型作为其中一种集合用于实现交并补运算,并且可直接使用高阶逻辑描述,类型所在的数学集合则提供实体类的字段方法;
所述数学集合则通过泛型与实例化来实现,只有智能合约API入口点需要具有确定的类型,而之后的函数调用均被泛型和实例化,编译时则根据实际调用的参数类型派生出具有不同对应类型的函数;
所述智能合约编译及形式化验证的具体实现过程如下:
(1)词法分析和语法分析:将用户的代码解析成AST;
(2)语义分析阶段1:检查AST是否构成合法的语义;
(3)形式化证明:根据AST中形式化证明相关部分,生成形式化证明用的语法树;根据形式化证明用的语法树生成Isabelle/HOL语言,使用Isabelle交互式证明工具进行证明;
(4)语义分析阶段2:注册全局参数或函数,确定外界可调用的Export与编译目标,推导编译需要的信息,包括类型推导、内存空间分配、变量分配;
(5)代码发射:根据语义分析得到的完全信息,从Export开始编译函数及Export函数调用到的其他函数,进而编译出目标函数、目标函数所调用的函数、API包装函数、内部函数、智能合约的构造器、字段包装函数,并基于AST发射代码。
2.根据权利要求1所述的智能合约编译方法,其特征在于:所述智能合约编译语言对应的语言编译器按模块划分为工程编译模块、语法模块、形式化证明模块;其中,工程编译模块用于通过WebAssembly为实体类的字段方法编译,语法模块用于语法解析与构造语法树,形式化证明模块用于通过高阶逻辑语言与证明工具实现智能合约形式化验证。
3.根据权利要求1所述的智能合约编译方法,其特征在于:所述步骤(1)中的词法分析和语法分析,则使用Crystal宏机制实现,代码可以作为宏直接嵌入Crystal代码中,也可以直接输入AST中,不通过宏式的语言描述,而是直接以方法调用的形式将对象传入。
4.根据权利要求1所述的智能合约编译方法,其特征在于:所述步骤(2)语义分析阶段1中任何错误的词法和语法将报出语法错误,并不是所有的AST都是合法的,通过语义分析检查,若检查不通过,则触发语义错误。
5.根据权利要求1所述的智能合约编译方法,其特征在于:所述步骤(5)中所有的Export函数必须是实例化后的函数,故确定Export的过程中即会实例化函数,而Export函数的实例化也即触发了对此函数的类型推导。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州云象网络技术有限公司,未经杭州云象网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910032081.6/1.html,转载请声明来源钻瓜专利网。