[发明专利]一种智能合约验证方法、计算机存储介质有效
申请号: | 202011572924.0 | 申请日: | 2020-12-24 |
公开(公告)号: | CN112581140B | 公开(公告)日: | 2022-07-29 |
发明(设计)人: | 不公告发明人 | 申请(专利权)人: | 西安深信科创信息技术有限公司 |
主分类号: | G06Q20/40 | 分类号: | G06Q20/40;G06Q40/04 |
代理公司: | 西安嘉思特知识产权代理事务所(普通合伙) 61230 | 代理人: | 王海栋 |
地址: | 710000 陕西省西安市高新区鱼*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 智能 合约 验证 方法 计算机 存储 介质 | ||
本发明公开了一种智能合约验证方法、计算机存储介质,该智能合约验证方法包括:步骤1、根据智能合约得到控制流图,所述控制流图包括标记有初始标记的节点和若干所述节点之间的边,且所述节点为含有断言的节点时,所述节点还标记有断言,其中,所述节点包括非循环节点和循环节点;步骤2、基于预设顺序,根据所述节点的类型得到每个所述节点的不变量;步骤3、根据所述节点的不变量的断言隐含结果得到验证结果。本发明的验证方法可以验证智能合约的正确性。另外,本发明的验证方法对智能合约,适用面更广。
技术领域
本发明属于智能合约技术领域,具体涉及一种智能合约验证方法、计算机存储介质。
背景技术
区块链是近年来发展迅速的研究领域,它首先由Satoshi Nakamoto在比特币区块链中提出概念,其基于多种技术,如区块加密链、点对点通信、分布式系统等。比特币网络的出现使陌生人之间的金融交易在没有第三方权威的参与下成为可能。后来,进一步出现了以太坊平台,它是一个开源的有智能合约功能的公共区块链平台。此后,智能合约在金融机构和供应链等许多领域备受关注。
智能合约是一种计算机化的交易协议,它执行智能合约的条款以满足用户的要求,例如投票和交易。智能合约可以被看作是一个计算机程序,可以在区块链上自定义交易执行逻辑,智能合约主要是用一种图灵完备的编程语言编写的,例如在以太坊中的solidity(一种契约型编程语言)。区块链的不可更改特性使得智能合约一旦部署到区块链上就无法更改。此外,solidity语言的一些语法特性跟其他计算及语言(如javascript)不太一样,例如,变量的存储性质和fallback(回退)函数的概念,即使一些开发者有使用传统编程语言的经验,也经常出错。因此,由于代码编写不健壮,导致存在大量的攻击,造成了巨大的经济损失。例如,The DAO攻击导致当时大约相当于6000万美元的损失。攻击者在splitDAO函数中发现了一个漏洞,他们可以通过在单笔交易的fallback函数隐式循环地一次又一次地重复的取走以太币。因此在部署智能合约之前,验证其正确性是至关重要的。
随着对智能合约攻击的不断增加,人们开发了一些工具来分析智能合约的正确性。例如,Luu等人为Solidity智能合约开发了一个名为Oyente(智能合约分析工具)的符号执行引擎,该引擎系统地分析智能合约中的各个函数,以识别漏洞。Nikolic等人开发了一个名为MAIAN的符号分析器,它可以在智能合约执行期间进行符号执行分析,分析智能合约字节码,以检查智能合约中的“自杀”、“挥霍”和“贪婪”等漏洞。然而,上述工作的重点是测试智能合约,而不是验证它们的正确性。例如,这些符号执行引擎通常在循环迭代或函数调用的数量上设置一个界限,目的是用生成的测试用例覆盖那些有边界的程序路径。
目前,可用于验证智能合约的现有方法包括Securify、Zeus、SOLC-verify和VerX。前三种方法将Solidity程序转换为现有的中间语言(即Datalog、LLVM和Boogie),并重用现有的验证工具。这种方法有两个局限性。首先,由于验证设施不是为智能合约设计的,因此它们只能在智能合约的某些特定属性上发挥有限的作用。其次,这些方法是基于抽象解释的,而由于抽象方法和抽象域较粗略,往往会导致误报。特别的,Securify无法验证诸如溢出之类的数值属性;Zeus误报很严重,SOLC-verify路径覆盖率不高。VerX应用延迟谓词抽象(基于符号执行和抽象)来验证交易执行时智能合约的正确性。但是VerX不支持有fallback函数导致的隐含循环回调的情况,并且对于函数中的循环迭代需要设置边界。
因此,提供一种能够适用于智能合约,且能够对智能合约准确进行验证的方法成为了亟待解决的问题。
发明内容
为了解决现有技术中存在的上述问题,本发明提供了一种智能合约验证方法、计算机存储介质。本发明要解决的技术问题通过以下技术方案实现:
一种智能合约验证方法,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安深信科创信息技术有限公司,未经西安深信科创信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011572924.0/2.html,转载请声明来源钻瓜专利网。