1.一种工业区块链中智能合约冲突的分布式检测方法,其特征在于,包括以下步骤:
步骤1,获取智能合约;
步骤2,智能合约特征提取;
步骤3,智能合约聚类分析;
步骤4,智能合约代码分析;
步骤5,生成智能合约特征码;
步骤6,智能合约代码冲突分析;
步骤7,智能合约函数依赖分析;
步骤8:智能合约数据依赖分析;
步骤9:智能合约符号扫描;
步骤10,智能合约冲突检测结果输出;
在步骤1中,由分布在每一个工业区块链节点上的Solidity分布式设计器(100)获取智能合约,并多个节点并行获取智能合约,同时进行智能合约的分布式设计;每一个节点调用Solidity合约表达式分析器(101)获取智能合约的表达式,并分析表达式的语法、语义和逻辑关系,并返回调用结果;每一个节点调用Solidity合约逻辑分析器(102),获取智能合约的逻辑结构、逻辑分支、函数之间的逻辑关系,数据之间的逻辑关系,并返回调用结果;
在步骤2中,每一个工业区块链节点上的Solidity分布式设计器(100)进一步分析Solidity合约表达式分析器(101)返回的调用结果,Solidity合约逻辑分析器(102)返回的调用结果,并提取智能合约的表达式特征,智能合约的逻辑特征;建立智能合约的表达式特征矩阵、及智能合约的逻辑特征矩阵;
在步骤3中,并行运行的工业区块链节点调用Solidity合约关联图生成器(103),将本节点调用Solidity合约表达式分析器(101)返回的智能合约表达式特征矩阵、以及Solidity合约逻辑分析器(102)返回的智能合约逻辑特征矩阵,发送给其他节点;Solidity合约关联图生成器(103)与从其他节点处获取智能合约的表达式特征矩阵、以及智能合约的逻辑特征矩阵;各个节点比较本节点和相邻节点的智能合约的表达式特征矩阵、以及智能合约的逻辑特征矩阵,进行聚类分析,Solidity合约关联图生成器(103)将具有相似表达式特征矩阵和相似逻辑特征矩阵的智能合约归入同一类,而将特征不同的智能合约归入不同类,根据分类结果生成所有节点上智能合约的关联图。
2.根据权利要求1所述的方法,其特征在于,在步骤4中,每个工业区块链节点开始运行Solidity分布式编译器(200)对智能合约的代码进行分析;Solidity分布式编译器(200)调用Solidity合约代码分析器(201),分析每个节点上智能合约流程控制、不同流程的代码结构、函数代码、数据输入代码、数据处理代码、数据输出代码。
3.根据权利要求2所述的方法,其特征在于,在步骤5中,工业区块链节点运行Solidity分布式编译器(200),并调用Solidity合约代码生成器(202),根据Solidity合约表达式分析器(101)返回的智能合约表达式特征矩阵,和Solidity合约逻辑分析器(102)返回的智能合约逻辑特征矩阵,提取智能合约代码的特征,并将所有特征编码成合约代码的特征码。
4.根据权利要求3所述的方法,其特征在于,在步骤6中,所有工业区块链节点并行运行Solidity分布式编译器(200)并调用Solidity合约代码冲突分析器(203),将本节点智能合约代码的特征码发送给其他节点,并将从其他节点学习到的智能合约代码的特征码与本节点进行比较,检测是否存在冲突;如果本节点的智能合约与其他邻居节点的智能合约在代码的特征码上不一致,初步判断本节点运行的智能合约代码出现了冲突;否则,如果本节点的智能合约与其他邻居节点的智能合约在代码的特征码上一致,初步判断本次运行的智能合约代码无冲突。
5.根据权利要求4所述的方法,其特征在于,在步骤7中,为了准确判断智能合约是否存在冲突,所有工业区块链节点将Solidity分布式编译器(200)的检测结果发送到Solidity分布式检测器(300);所有节点通过Solidity分布式检测器(300)调用Solidity合约函数依赖分析器(301),并输入Solidity合约关联图生成器(103)返回智能合约的关联图,根据关联图分析智能合约之间的函数依赖关系;如果本节点的智能合约与其他邻居节点的智能合约在函数依赖上不一致,进一步判断本节点运行的智能合约代码出现了冲突;否则,如果本节点的智能合约与其他邻居节点的智能合约在函数依赖上一致,进一步判断本次运行的智能合约代码无冲突;并生成本次智能合约冲突检测结果。
6.根据权利要求5所述的方法,其特征在于,在步骤8中,所有工业区块链节点通过Solidity分布式检测器(300)调用Solidity合约数据依赖分析器(302),并输入Solidity合约表达式分析器(101)返回的智能合约表达式特征矩阵,和Solidity合约逻辑分析器(102)返回的智能合约逻辑特征矩阵,分析智能合约的数据是否存在依赖关系;如果本节点的智能合约与其他邻居节点的智能合约在数据依赖上不一致,进一步判断本节点运行的智能合约代码出现了冲突;否则,如果本节点的智能合约与其他邻居节点的智能合约在数据依赖上一致,进一步判断本次运行的智能合约代码无冲突;并生成本次智能合约冲突检测结果;
在步骤9中,所有工业区块链节点通过Solidity分布式检测器(300)调用Solidity合约符号扫描器(303),检测智能合约是否存在冲突的符号标识;如果本节点的智能合约与其他邻居节点的智能合约存在符号不一致,进一步判断本节点运行的智能合约代码出现了冲突;否则,如果本节点的智能合约与其他邻居节点的智能合约在符号上一致,进一步判断本次运行的智能合约代码无冲突;并生成本次智能合约冲突检测结果;
在步骤10中,Solidity分布式检测器(300)将本次智能合约冲突检测结果分类,生成工业区块链智能合约冲突分类编码,中止冲突的智能合约,并将冲突检测结果输出,包括Solidity合约函数依赖分析器(301)生成的冲突检测结果,Solidity合约数据依赖分析器(302)生成的冲突检测结果,Solidity合约符号扫描器(303)生成的冲突检测结果。