一种高度自动化的智能合约形式化验证系统及方法技术方案

技术编号:19745930 阅读:30 留言:0更新日期:2018-12-12 04:51
本发明专利技术公开了一种高度自动化的智能合约形式化验证系统及方法,包括:步骤001:将智能合约功能需求描述文档转换为使用非自然语言描述的智能合约功能需求规范文档,智能合约功能需求规范文档内容包括目标合约功能规范描述和安全属性描述;步骤002:建立形式化验证规则模型库。步骤003:通过自动化建模工具对合约源代码和/或字节码进行自动化建模;步骤004:对步骤003生成的抽象语法树解析,为代码中常量、变量分配内存地址;步骤005:形式化证明。本发明专利技术适应于多种的高级编程语言编写的程序代码,也适应多种形式化语言,同时提供源代码建模和字节码建模两种自动化建模方式,能够针对用户的不同建模需求进行建模,进一步提高验证效率。

【技术实现步骤摘要】
一种高度自动化的智能合约形式化验证系统及方法
本专利技术涉及区块链智能合约安全领域和形式化验证方法,具体涉及一种高度自动化的智能合约形式化验证系统及方法。
技术介绍
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。使用去中心化共识机制去维护一个完整的、分布式的、不可篡改的账本数据库的技术,它能够让区块链中的参与者在无需建立信任关系的前提下实现一个统一的账本系统。一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。在区块链技术背景下,智能合约是指运行在区块链上,能够执行某些功能的程序代码。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可追踪、不可篡改。同时,由区块链自带的共识算法构建出一套状态机系统,使得智能合约能够高效地运行。由于区块链不可篡改特性,一旦因为程序自身设计的问题,导致智能合约的安全漏洞,或将产生不可逆转的重大损失。形式化验证方法是使用数学的公式、定理和系统来验证一个系统的功能正确性和安全属性,与传统检测方法相比,形式化验证方法可以发现目标与系统描述的不一致性问题,因此使用形式化验证方法来验证智能合约,可以有效的检验智能合约的安全性,检测合约是否存在漏洞。但是常见的形式化验证方法存在着下列问题:1、对程序员要求极高。不仅要求程序员对所验证代码的编程语言熟悉,还要求程序员具有较高的数学基础。2、现有技术主要依赖于手工验证,工作量大,自动化程度低,因此时间成本太高,建立的模型的正确性无法保障,需求一旦变化,前面的工作都要重新开始,且模型的正确性依赖于程序员的建模经验和技术程度。3、阅读性差,不利于程序员之间对接工作。常见形式化验证方法所建立的模型没有统一规范,仅与程序员习惯及素质有关,不方便代码对接。4、目前常见的验证方法,大都是验证合理输入得到合理结果,对于不合理输入的结果往往忽略,这种做法存在很大的安全隐患。如果不合理输入仍能得到符合函数功能规范的结果,说明该智能合约代码存在漏洞。
技术实现思路
本专利技术为了解决上述技术问题,目的在于提供一种高度自动化的智能合约形式化验证系统及方法,这种方法建立形式化验证规则模型库,并对智能合约源代码和字节码进行自动化建模,再由程序员针对不同模型和形式化验证规则模型库以及智能合约功能需求描述文档,分别描述定理并证明。通过将自动化建模和人工验证相结合,能够减少时间成本,缩短验证周期,提高效率,同时自动化建模能够统一模型规范,减少验证模型对程序员个人素质的依赖程度,保证正确性。本专利技术通过下述技术方案实现:一种高度自动化的智能合约形式化验证系统,包括形式化验证规则模型库、智能合约编译器、自然语言解释器、自动化建模工具、语法树解析器、定理生成器、定理证明器、智能合约漏洞检测文档生成器,其中,形式化验证规则模型库用于支持自动化建模工具、定理生成器的工作;形式化验证规则模型库包括区块链平台模型库和智能合约安全属性模型库;智能合约安全属性模型库是通过对智能合约常见安全漏洞形式化描述建立的安全属性库;区块链平台模型库包括智能合约语言文法规则库、形式化语言文法规则库、虚拟机指令系统规则库、字节码形式化模型规则库;其中,智能合约语言文法规则库用于存储不同编程语言的文法规则;形式化语言文法规则库用于存储对不同智能合约语言文法规则的形式化描述;虚拟机指令系统规则库用于存储区块链平台虚拟机中的各种指令码;字节码形式化模型规则库用于存储对区块链平台虚拟机中的操作码的形式化描述。所述智能合约编译器用于接收区块链智能合约源代码,将区块链智能合约源代码编译得到源码和字节码,再将得到的源码和字节码输出至自动化建模工具进行建模;智能合约编译器采用现有技术,能自动根据智能合约语言选择对应编译器;所述自然语言解释器用于接收智能合约功能需求描述文档,将智能合约功能需求描述文档转化为使用非自然语言描述的智能合约功能需求规范文档,并将智能合约功能需求规范文档传输至定理生成器;智能合约功能需求描述文档是由用户编写的所需要验证智能合约的功能需求描述,是自然语言;智能合约功能需求描述文档是由智能合约功能需求描述文档采用非自然语言进行描述后转换形成的所需要验证智能合约的功能需求描述,属于非自然语言。非自然语言的优点在于能简便的进行形式化描述。所述自动化建模工具用于接收智能合约编译器输出的源码和字节码,并依赖于形式化验证规则模型库对源码和字节码进行自动化建模。对源码进行自动化建模得到智能合约代码抽象语法树文档和源码智能合约模型文档;对字节码进行自动化建模得到字节码智能合约模型文档;所述语法树解析器用于接收自动化建模工具中的智能合约代码抽象语法树文档,并解析出智能合约代码中的常量、变量、继承关系、函数限定符,并为其分配内存地址,生成语法树解析文档并输出至定理生成器;所述定理生成器用于接收自动化建模工具输出的源码智能合约模型文档以及自然语言解释器输出的非自然语言描述的智能合约功能需求规范文档以及语法树解析器输出的语法树解析文档,同时依赖于形式化验证规则模型库对非自然语言进行非形式化描述得到相关定理,生成智能合约定理文档并将其输出至定理证明器;所述定理证明器用于接收定理生成器输出的智能合约定理文档,并对其进行形式化证明得到验证结果,并将验证结果传输至智能合约漏洞检测文档生成器;所述智能合约漏洞检测文档生成器用于接收定理证明器输出的验证结果,并生成智能合约漏洞检测文档。进一步地,自动化建模工具包括源码建模器和字节码建模器,所述源码建模器用于对合约源代码进行自动化建模并输出智能合约代码抽象语法树文档和源码智能合约模型文档;所述字节码建模器用于对字节码进行自动化建模并输出字节码智能合约模型文档。进一步地,源码建模器包括词法分析器、语法分析器、语法树对接器、源码形式化语言推导器,其中,所述词法分析器用于接收智能合约源代码,并依赖于智能合约语言文法规则库中存储的不同编程语言的文法规则,对输入的字符串进行扫描与分解,识别合法的词素,产生特定规则的词法单元序列并将词法单元序列输出至语法分析器;所述语法分析器用于接收词法分析器输出的词法单元序列以及用于存储简单优先表,并将词法单元序列与简单优先表进行比较判断,得出词法单元序列所属的编程语言种类,并结合智能合约语言文法规则库中对应的文法规则,将词法单元序列中的词素生成抽象语法树,并将抽象语法树输出至语法树对接器,同时输出智能合约代码抽象语法树文档;所述语法树对接器用于接收语法分析器输出的抽象语法树以及用于存储对接字典表,利用对接字典表将抽象语法树中的内容一一对应替换生成形式化语言语法树,并将形式化语言语法树输出至源码形式化语言推导器;对接字典表是借助智能合约语言文法规则库和形式化语言文法规则库建立的记录了智能合约编程语言和形式化语言数据类型、关键字、运算符、结构体、数组、映射、函数等内容的对接过程。所述源码形式化语言推导器用于接收形式化语言语法树并结合形式化语言文法规则库将语法树对接器中输出的形式化语言语法树翻译成对应的形式化语言代码,整理得到源码智能合约模型文档。进一步地,字节码建模器包括字节码形式化语言推导器,所述字节码形式化语言推导器用于接收智能合约字节码,同时依赖于形式本文档来自技高网
...

【技术保护点】
1.一种高度自动化的智能合约形式化验证系统,其特征在于,包括形式化验证规则模型库、智能合约编译器、自然语言解释器、自动化建模工具、语法树解析器、定理生成器、定理证明器、智能合约漏洞检测文档生成器,其中,所述智能合约编译器用于接收区块链智能合约源代码,将区块链智能合约源代码编译得到源码和字节码,再将得到的源码和字节码输出至自动化建模工具进行建模;所述自然语言解释器用于接收智能合约功能需求描述文档,将智能合约功能需求描述文档转化为使用非自然语言描述的智能合约功能需求规范文档,并将智能合约功能需求规范文档传输至定理生成器;所述自动化建模工具用于接收智能合约编译器输出的源码和字节码,并依赖于形式化验证规则模型库对源码和字节码进行自动化建模,对源码进行自动化建模得到智能合约代码抽象语法树文档和源码智能合约模型文档;对字节码进行自动化建模得到字节码智能合约模型文档;所述语法树解析器用于接收自动化建模工具中的智能合约代码抽象语法树文档,并解析出智能合约代码中的常量、变量、继承关系、函数限定符,并为其分配内存地址,生成语法树解析文档并输出至定理生成器;所述定理生成器用于接收自动化建模工具输出的源码智能合约模型文档以及自然语言解释器输出的非自然语言描述的智能合约功能需求规范文档以及语法树解析器输出的语法树解析文档,同时依赖于形式化验证规则模型库对非自然语言进行非形式化描述得到相关定理,生成智能合约定理文档并将其输出至定理证明器;所述定理证明器用于接收定理生成器输出的智能合约定理文档,并对其进行形式化证明得到验证结果,并将验证结果传输至智能合约漏洞检测文档生成器;所述智能合约漏洞检测文档生成器用于接收定理证明器输出的验证结果,并生成智能合约漏洞检测文档。...

【技术特征摘要】
1.一种高度自动化的智能合约形式化验证系统,其特征在于,包括形式化验证规则模型库、智能合约编译器、自然语言解释器、自动化建模工具、语法树解析器、定理生成器、定理证明器、智能合约漏洞检测文档生成器,其中,所述智能合约编译器用于接收区块链智能合约源代码,将区块链智能合约源代码编译得到源码和字节码,再将得到的源码和字节码输出至自动化建模工具进行建模;所述自然语言解释器用于接收智能合约功能需求描述文档,将智能合约功能需求描述文档转化为使用非自然语言描述的智能合约功能需求规范文档,并将智能合约功能需求规范文档传输至定理生成器;所述自动化建模工具用于接收智能合约编译器输出的源码和字节码,并依赖于形式化验证规则模型库对源码和字节码进行自动化建模,对源码进行自动化建模得到智能合约代码抽象语法树文档和源码智能合约模型文档;对字节码进行自动化建模得到字节码智能合约模型文档;所述语法树解析器用于接收自动化建模工具中的智能合约代码抽象语法树文档,并解析出智能合约代码中的常量、变量、继承关系、函数限定符,并为其分配内存地址,生成语法树解析文档并输出至定理生成器;所述定理生成器用于接收自动化建模工具输出的源码智能合约模型文档以及自然语言解释器输出的非自然语言描述的智能合约功能需求规范文档以及语法树解析器输出的语法树解析文档,同时依赖于形式化验证规则模型库对非自然语言进行非形式化描述得到相关定理,生成智能合约定理文档并将其输出至定理证明器;所述定理证明器用于接收定理生成器输出的智能合约定理文档,并对其进行形式化证明得到验证结果,并将验证结果传输至智能合约漏洞检测文档生成器;所述智能合约漏洞检测文档生成器用于接收定理证明器输出的验证结果,并生成智能合约漏洞检测文档。2.根据权利要求1所述的一种高度自动化的智能合约形式化验证方法,其特征在于,所述自动化建模工具包括源码建模器和字节码建模器,所述源码建模器用于对合约源代码进行自动化建模并输出智能合约代码抽象语法树文档和源码智能合约模型文档;所述字节码建模器用于对字节码进行自动化建模并输出字节码智能合约模型文档。3.根据权利要求2所述的一种高度自动化的智能合约形式化验证方法,其特征在于,所述源码建模器包括词法分析器、语法分析器、语法树对接器、源码形式化语言推导器,其中,所述词法分析器用于接收智能合约源代码,并依赖于智能合约语言文法规则库中存储的不同编程语言的文法规则,对输入的字符串进行扫描与分解,识别合法的词素,产生特定规则的词法单元序列并将词法单元序列输出至语法分析器;所述语法分析器用于接收词法分析器输出的词法单元序列以及用于存储简单优先表,并将词法单元序列与简单优先表进行比较判断,得出词法单元序列所属的编程语言种类,并结合智能合约语言文法规则库中对应的文法规则,将词法单元序列中的词素生成抽象语法树,并将抽象语法树输出至语法树对接器,同时输出智能合约代码抽象语法树文档;所述语法树对接器用于接收语法分析器输出的抽象语法树以及用于存储对接字典表,利用对接字典表将抽象语法树中的内容一一对应替换生成形式化语言语法树,并将形式化语言语法树输出至源码形式化语言推导器;所述源码形式化语言推导器用于接收形式化语言语法树并结合形式化语言文法规则库将语法树对接器中输出的形式化语言语法树翻译成对应的形式化语言代码,整理得到源码智能合约模型文档。4.根据权利要求2所述的一种高度自动化的智能合约形式化验证方法,其特征在于,所述字节码建模器包括字节码形式化语言推导器,其中,所述字节码形式化语言推导器用于接收智能合约字节码,同时依赖于形式化语言文法规则库以及虚拟机指令系统规则库建立智能合约字节码与对应形式化语言操作码的对接字典表,并结合对接字典表将智能合约字节码一一替换成对应的形式化语言操作码的内容,从而得到形式化语言代码,并将形式化语言代码整理得到字节码智能合约模型文档。5.一种高度自动化的智能合约形式化验证方法,其特征在于,包括:步骤001:使用自然语言编写智能合约功能需求描述文档,再将智能合约功能需求描述文档转换为使用非自然语言描述的智能合约功能需求规范文档,智能合约...

【专利技术属性】
技术研发人员:杨霞
申请(专利权)人:成都链安科技有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1