【技术实现步骤摘要】
一种面向数据管控的智能合约代码检查方法和系统
本专利技术涉及通信
,特别是涉及一种面向数据管控的智能合约代码检查方法和一种面向数据管控的智能合约代码检查系统。
技术介绍
智能合约是部署在区块链上的可执行代码,区块链为智能合约提供了可信执行的环境,除传统的以以太坊为例的智能合约在加密货币领域的应用以外,现如今智能合约还广泛应用于金融、投票、供应链、电子商务等领域。智能合约一旦上链执行是不可逆的,需在其执行前就发现潜在的漏洞。程序静态分析是在程序执行前发现其漏洞的主要手段。智能合约作为一种特殊的程序,不同领域下的智能合约则需要进行面向领域特定目标的静态分析,以保障智能合约的准确运行。而目前已有的对智能合约进行静态分析的方法仅适用于加密货币领域,如:整型溢出、Fallback检测等等。随着区块链在不同领域的广泛使用,出现了面向数据全生命周期管控的区块链平台,该平台为了保障数据所有者的权益,原始数据并不是像加密货币的交易数据一样被记录在账本上被所有参与者共享,而是数据使用者通过提供智能合约的方式向数据所有者发起请求,数据所有者需要审计智能合约是否合理合法地使用其数据,然后使用者才能使用数据。目前,面向数据管控的区块链平台中,由于仍然缺乏相应的智能合约的静态分析方法,完全由数据使用者来人工审计智能合约的做法,效率低下、成本高昂。
技术实现思路
鉴于上述问题,提出了本专利技术实施例提供一种克服上述问题或者至少部分地解决上述问题的一种面向数据管控的智能合约代码检查方法和一种面向数据管控的智 ...
【技术保护点】
1.一种面向数据管控的智能合约代码检查方法,其特征在于,所述方法包括:/n预先定义数据依赖类型和所述数据依赖类型的相关计算,设计基于污点分析的多源多汇的静态分析算法,以用于基于特定的数据管控策略来定义数据使用约束并进行静态分析;/n针对目标合约文件中的目标合约函数,确定污点源,所述污点源包括:程序输入参数和合约调用指令;/n基于所述静态分析算法,将所述污点源添加到控制流图的起始块执行前的分析结果中,以初始化所述分析结果,通过遍历程序控制流图,选择相应的数据使用约束,进行数据值传递依赖分析和/或数据控制依赖分析,持续地更新执行后的分析结果,最后返回最终分析结果;/n根据所述最终分析结果,生成并返回分析报告。/n
【技术特征摘要】
1.一种面向数据管控的智能合约代码检查方法,其特征在于,所述方法包括:
预先定义数据依赖类型和所述数据依赖类型的相关计算,设计基于污点分析的多源多汇的静态分析算法,以用于基于特定的数据管控策略来定义数据使用约束并进行静态分析;
针对目标合约文件中的目标合约函数,确定污点源,所述污点源包括:程序输入参数和合约调用指令;
基于所述静态分析算法,将所述污点源添加到控制流图的起始块执行前的分析结果中,以初始化所述分析结果,通过遍历程序控制流图,选择相应的数据使用约束,进行数据值传递依赖分析和/或数据控制依赖分析,持续地更新执行后的分析结果,最后返回最终分析结果;
根据所述最终分析结果,生成并返回分析报告。
2.根据权利要求1所述的方法,其特征在于,预先定义数据依赖类型和所述数据依赖类型的相关计算,设计基于污点分析的多源多汇的静态分析算法,以用于基于特定的数据管控策略来定义数据使用约束并进行静态分析,包括:
面向数据使用的管控需求,通过对智能合约编译之后的字节码指令进行分析,定义变量之间的数据依赖类型,即,关联类型,包括数据值传递依赖关联和数据控制依赖关联;同时,基于数据类型及其相关计算,给出数据使用约束描述方法。
3.根据权利要求2所述的方法,其特征在于,
所述数据值传递依赖包括:程序变量与数据源之间的包含依赖关系、赋值依赖关系、算数依赖关系和函数依赖关系,表示数据间的显式信息流传播;所述数据控制依赖,包括程序变量与数据源之间的控制依赖关系,表示数据间的隐式信息流传播。
4.根据权利要求1所述的方法,其特征在于,针对目标合约文件中的目标合约函数,确定污点源,包括:
将所述程序输入参数直接标记为所述污点源;遍历控制流图中的所有基本块,找出程序中的合约调用指令,进而将所述合约调用指令标记为所述污点源。
5.根据权利要求4所述的方法,其特征在于,遍历控制流图中的所有基本块,找出程序中的合约调用指令,包括:
遍历所有基本块,对于每一个基本块,遍历所有字节码指令,若某条指令类型为“kInstrInvoke”类型,且指令名称包含“dyn:call:executeContract”,表示为动态函数调用指令,且函数名称为“executeContract”,即为合约调用指令。
6.根据权利要求1所述的...
【专利技术属性】
技术研发人员:蔡华谦,黄家梅,朱晓旻,张舒汇,郭京申,舒俊宜,
申请(专利权)人:北京智融云河科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。