1.本发明涉及区块链技术领域,具体地,涉及一种区块链智能合约修复方法及装置。
背景技术:
2.智能合约只能通过部署在区块链网络上才能对其功能接口进行测试,测试一般采用编写自动化测试案例并进行大量输入和输出检查的测试手段实现,现有很多公司提供智能合约的静态代码扫描和形式化验证方式约束智能合约的编写规范。
3.虽然有很多自动化工具保证合约的规范和大量测试,但是测试中的问题排查和合约问题的修复主要还是通过人工查看合约执行日志完成,合约执行的准确率也是依赖人工,因此会造成两个问题:一是智能合约的开发和运维人力成本高,合约本身必须通过部署网络执行交易才能进行测试,测试过程中如出现执行报错或者结果有误,只能通过人工查看合约执行日志,找到报错信息才能排查代码问题并修复;二是智能合约的逻辑准确率无法保证,合约代码是业务逻辑的集合,链上交易链路完整性无法实时跟踪,逻辑漏洞只有在对账或者报错的时候才能被动发现,而且链路不清晰导致问题复现困难。
技术实现要素:
4.本发明实施例的主要目的在于提供一种区块链智能合约修复方法及装置,以降低智能合约的开发和运维成本,提高智能合约内部逻辑的准确率。
5.为了实现上述目的,本发明实施例提供一种区块链智能合约修复方法,包括:
6.将智能合约上传至区块链测试网络,以使区块链测试网络执行智能合约并生成操作日志;
7.接收来自区块链测试网络的操作日志,根据操作日志生成实际业务流程图;
8.将实际业务流程图与对应的预设业务流程图进行比对,生成修复代码;
9.根据修复代码修复智能合约。
10.本发明实施例还提供一种区块链智能合约修复装置,包括:
11.上传模块,用于将智能合约上传至区块链测试网络,以使区块链测试网络执行智能合约并生成操作日志;
12.实际业务流程图模块,用于接收来自区块链测试网络的操作日志,根据操作日志生成实际业务流程图;
13.修复代码模块,用于将实际业务流程图与对应的预设业务流程图进行比对,生成修复代码;
14.智能合约修复模块,用于根据修复代码修复智能合约。
15.本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的计算机程序,处理器执行计算机程序时实现所述的区块链智能合约修复方法的步骤。
16.本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机
程序被处理器执行时实现所述的区块链智能合约修复方法的步骤。
17.本发明实施例的区块链智能合约修复方法及装置先将智能合约上传至区块链测试网络,以使区块链测试网络执行智能合约并生成操作日志,再根据操作日志生成实际业务流程图,将实际业务流程图与对应的预设业务流程图进行比对,生成修复代码,最后根据修复代码修复智能合约,可以降低智能合约的开发和运维成本,提高智能合约内部逻辑的准确率。
附图说明
18.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1是本发明一实施例中区块链智能合约修复方法的流程图;
20.图2是本发明另一实施例中区块链智能合约修复方法的流程图;
21.图3是本发明实施例中s104的流程图;
22.图4是本发明实施例中的实际业务流程图;
23.图5是预设业务流程图和实际业务流程图的对比示意图;
24.图6是本发明实施例中区块链智能合约修复装置的结构框图;
25.图7是本发明另一实施例中区块链智能合约修复装置的结构框图;
26.图8是本发明另一实施例中区块链智能合约修复装置所在服务器的结构框图;
27.图9是合约变量和流程管理节点的处理流程图;
28.图10是数据采集节点的组成框架图;
29.图11是业务逻辑匹配节点的处理流程图;
30.图12是本发明实施例中计算机设备的结构框图。
具体实施方式
31.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
32.本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
33.鉴于现有技术中智能合约的开发和运维人力成本高且逻辑准确率无法保证,本发明实施例提供一种区块链智能合约修复方法,克服了现有智能合约在链路跟踪、测试和问题修复方面的不足。本发明基于nsq结合全链路跟踪的技术,降低了智能合约的开发和运维成本,提高了智能合约内部逻辑的准确率。
34.其中,nsq是一个基于go语言的开源的分布式实时消息平台,可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,具备分布式、去中心化的拓扑结构,
该结构具有无单点故障、故障容错、高可用性以及能够保持消息可靠传递的特征,同时nsq容易配置和部署,支持众多的消息协议。智能合约是由事件驱动的、具有状态的、运行在一个复制,分享的账本之上且能够保管账本上资产的程序。全链路跟踪是指交易全链路跟踪,整个交易的操作形成一条完整链路,便于错误排查和问题分析。以下结合附图对本发明进行详细说明。
35.图1是本发明一实施例中区块链智能合约修复方法的流程图。图2是本发明另一实施例中区块链智能合约修复方法的流程图。如图1和图2所示,区块链智能合约修复方法包括:
36.s101:将智能合约上传至区块链测试网络,以使区块链测试网络执行智能合约并生成操作日志。
37.表1是智能合约文件格式表。具体实施时,可以通过位于合约变量和流程管理服务器的合约变量和流程管理节点接收按照如表1所示的智能合约文件格式上传的智能合约。
38.表1
[0039][0040]
其中,区块链测试网络是智能合约的专用测试网络,用于通过验证节点的共识完成合约的执行,即执行自动化测试案例,对合约接口进行测试。非验证节点用于针对同一个链路分支的步骤操作标记为同一个链路跟踪id(traceid),将上链的操作日志通过nsq以消息推送的方式打包传输至链下的数据采集服务器。
[0041]
s102:接收来自区块链测试网络的操作日志,根据操作日志生成实际业务流程图。
[0042]
具体实施时,可以通过位于数据采集服务器的数据采集节点接收来自区块链测试网络的操作日志。表2是操作日志示例表。如表2所示,操作日志中的各个参数之间用[]分隔,即[链路跟踪id(traceid)][操作时间][文件名][父方法名
‑
子方法名][输入函数][输
出函数][其他信息]。
[0043]
表2
[0044][0045]
一实施例中,根据操作日志生成实际业务流程图包括:按照操作时间对操作日志进行排序;按照排序后的操作日志生成实际业务流程图。
[0046]
具体实施时,位于数据采集服务器的数据采集节点根据全链路跟踪技术对操作日志进行业务流程绘制,按接收时间对操作日志进行排序以及校验、解析、流程绘制和存储。校验即校验操作日志的完整性,查看操作日志是否包含traceid,格式是否符合表2的示例规范等。解析是分别解析操作日志里的内容,包括traceid、操作时间、文件名、父方法名
‑
子方法名、输入函数、输出函数等字段。
[0047]
图4是本发明实施例中的实际业务流程图。流程绘制是根据traceid和操作时间进行全链路跟踪,即对操作日志中同一个traceid的操作步骤,按操作时间顺序跟踪绘制如图4所示的实际业务流程图。存储是将实际业务流程图的traceid、操作时间、文件名、父方法名
‑
子方法名、输入函数、输出函数等内容存储至服务器的文件系统中,同时将实际业务流程图传输至位于业务逻辑匹配服务器的业务逻辑匹配节点。
[0048]
s103:将实际业务流程图与对应的预设业务流程图进行比对,生成修复代码。
[0049]
在执行s103之前,还包括:
[0050]
根据业务需求预设置业务流程,并通过位于业务逻辑预处理服务器上的预处理节点按照预处理内容存储格式存储业务流程。表3是预处理内容存储格式表。表4是存证业务场景合约下的预处理内容存储格式表。如表3和表4所示,预设业务流程包括步骤名(链路分支)、依赖步骤、步骤操作、执行条件、输入函数和输出函数。根据预设业务流程可以生成各步骤名(链路分支)对应的预设业务流程图。
[0051]
表3
[0052][0053]
[0054]
表4
[0055][0056]
具体实施时,位于业务逻辑匹配服务器的业务逻辑匹配节点接收来自位于数据采集服务器的数据采集节点的实际业务流程图和位于业务逻辑预处理服务器上的预处理节点的预设业务流程图,将实际业务流程图与对应的预设业务流程图进行比对,查找差异。图5是预设业务流程图和实际业务流程图的对比示意图。如图5所示,以预设业务流程图为准,输出实际业务流程图与预设业务流程图的差异内容集合,如果实际业务流程图比预设业务流程图少了操作步骤则输出补录方案,例如缺少差异操作c(包含操作时间、步骤操作和链路分支);如果实际业务流程图比预设业务流程图多了操作步骤,如差异操作e,则输出该差异让业务人员确认删除或者保留,并按业务人员确认的差异修复方案生成修复代码。
[0057]
s104:根据修复代码修复智能合约。
[0058]
图3是本发明实施例中s104的流程图。如图3所示,s104包括:
[0059]
s201:解析智能合约,得到智能合约源码。
[0060]
具体实施时,可以通过位于合约变量和流程管理服务器的合约变量和流程管理节点解压智能合约的代码包,同时保留源打包文件,并根据解压后的文件按目录解析合约内容。首先解析main.go里的业务链路分支条数、主调用方法(函数名)和分支业务说明(函数说明),然后根据主调用方法解析functions里对应的方法流程,同时解析方法里对应的structs下的输入输出结构体(包括数据类型、数据长度和数据字段名等),以及调用的common里的公共函数。将以上解析内容输出并存储于合约变量和流程管理服务器的数据库中,形成每个链路分支的程序逻辑流程。表5是解析后的智能合约存储格式表。表6是存证业务场景下的智能合约源码。表7是存证业务场景下的智能合约源码的存储格式表。如表5
‑
表7所示,链路分支用于记录main.go的主链路名称和调用链路分支名称,函数名是functions目录下使用到的文件名_调用方法的名称,父函数是函数内部有调用的函数名,输入函数和输出函数是分别根据函数的输入结构体和输出结构体对应的structs里的结构体定义,临时变量是函数内部定义的无需对外输出的变量,步骤操作是输入和临时变量之间的操作记
录,函数说明是函数名对应的业务含义。
[0061]
表5
[0062][0063]
表6
[0064]
[0065][0066]
表7
[0067]
[0068][0069]
s202:根据修复代码修复智能合约源码,将修复后的智能合约源码转换为修复后的智能合约。
[0070]
一实施例中,根据修复代码修复智能合约源码包括:确定修复代码所在操作日志的文件名称对应的函数名称;根据修复代码修复函数名称对应的智能合约源码。
[0071]
具体实施时,将修复代码传输至位于合约变量和流程管理服务器的合约变量和流程管理节点,根据修复代码所在操作日志的文件名称对应的函数名称确定同一链路分支下的智能合约源码。如果需要补录缺少的操作步骤,则插入一条补录步骤,并将该补录步骤转化为代码,修复智能合约。例如在该智能合约源码中函数名为b的记录下插入一条函数名为c的变量和操作记录,同时将该记录转化为代码形式,在函数名为b的操作之后添加该代码(修复代码),达到智能合约源码的自动修复。如果需要删除多余的操作步骤,则将该多余的操作步骤在同一链路分支下的智能合约源码中删除,修复智能合约。
[0072]
图1所示的区块链智能合约修复方法的执行主体可以为服务器。由图1所示的流程可知,本发明实施例的区块链智能合约修复方法先将智能合约上传至区块链测试网络,以使区块链测试网络执行智能合约并生成操作日志,再根据操作日志生成实际业务流程图,将实际业务流程图与对应的预设业务流程图进行比对,生成修复代码,最后根据修复代码修复智能合约,可以降低智能合约的开发和运维成本,提高智能合约内部逻辑的准确率。
[0073]
本发明实施例的具体流程如下:
[0074]
1、将智能合约上传至区块链测试网络,以使区块链测试网络执行智能合约并生成操作日志。
[0075]
2、接收来自区块链测试网络的操作日志,按照操作时间对操作日志进行排序,按照排序后的操作日志生成实际业务流程图。
[0076]
3、将实际业务流程图与对应的预设业务流程图进行比对,生成修复代码。
[0077]
4、解析智能合约,得到智能合约源码。
[0078]
5、确定修复代码所在操作日志的文件名称对应的函数名称,根据修复代码修复函数名称对应的智能合约源码。
[0079]
6、将修复后的智能合约源码转换为修复后的智能合约。
[0080]
综上,本发明基于nsq结合全链路跟踪的技术可以对智能合约的报错进行自动修复,具体发明效果为以下两方面:
[0081]
1、基于nsq结合全链路跟踪的技术将区块链上的交易实时传输至区块链下,根据链路跟踪id对同一个业务形成完整的交易链路图,进一步确认交易链路是否与预设的业务逻辑一致,保证业务逻辑的准确性。
[0082]
2、基于智能合约的变量和流程管理,通过交易链路与预设业务的对比差异自动修复大量数据验证过程中产生的有误业务逻辑,只需人工确认修复步骤是否合理即可,大大降低人工排查问题和运维修复的成本。
[0083]
基于同一发明构思,本发明实施例还提供了一种区块链智能合约修复装置,由于该装置解决问题的原理与区块链智能合约修复方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
[0084]
图6是本发明实施例中区块链智能合约修复装置的结构框图。图7是本发明另一实施例中区块链智能合约修复装置的结构框图。图8是本发明另一实施例中区块链智能合约修复装置所在服务器的结构框图。图9是合约变量和流程管理节点的处理流程图。图10是数据采集节点的组成框架图。图11是业务逻辑匹配节点的处理流程图。如图6
‑
图11所示,区块链智能合约修复装置包括:
[0085]
上传模块,用于将智能合约上传至区块链测试网络,以使区块链测试网络执行智能合约并生成操作日志;
[0086]
实际业务流程图模块,用于接收来自区块链测试网络的操作日志,根据操作日志生成实际业务流程图;
[0087]
修复代码模块,用于将实际业务流程图与对应的预设业务流程图进行比对,生成修复代码;
[0088]
智能合约修复模块,用于根据修复代码修复智能合约。
[0089]
在其中一种实施例中,智能合约修复模块包括:
[0090]
解析单元,用于解析智能合约,得到智能合约源码;
[0091]
智能合约修复单元,用于根据修复代码修复智能合约源码,将修复后的智能合约源码转换为修复后的智能合约。
[0092]
在其中一种实施例中,操作日志包括操作时间;
[0093]
实际业务流程图模块包括:
[0094]
排序单元,用于按照操作时间对操作日志进行排序;
[0095]
实际业务流程图单元,用于按照排序后的操作日志生成实际业务流程图。
[0096]
在其中一种实施例中,智能合约修复单元包括:
[0097]
函数名称确定子单元,用于确定修复代码所在操作日志的文件名称对应的函数名称;
[0098]
智能合约源码修复子单元,用于根据修复代码修复函数名称对应的智能合约源
码。
[0099]
如图7
‑
图11所示,在实际应用中,区块链智能合约修复装置包括预处理节点1、合约变量和流程管理节点2、数据采集节点4和业务逻辑匹配节点5。其中,合约变量和流程管理节点2和数据采集节点4与外部的测试网络节点3交互,测试网络节点3位于外部的区块链测试网络13,包括验证节点31和非验证节点32。其中,预处理节点1位于业务逻辑预处理服务器11,合约变量和流程管理节点2位于合约变量和流程管理服务器12,数据采集节点4位于数据采集服务器14,业务逻辑匹配节点5位于业务逻辑匹配服务器15。
[0100]
具体实施时,预处理节点1根据业务需求绘制预设业务流程图,由业务人员确认之后存储于业务逻辑预处理服务器11中;合约变量和流程管理节点2用于根据智能合约的语法分析分离出合约中每个方法用到的输入输出、临时变量和操作步骤,并将上述数据存储于合约变量和流程管理服务器2中;测试网络节点3是合约部署测试的网络节点,区块链测试网络13是对合约的接口和业务逻辑进行自动化测试的网络,其中的验证节点用于验证合约接口的功能,共识完成后执行上链业务数据的操作,非验证节点用于收集操作日志并通过nsq将操作日志传输至链下的数据采集服务器14中;数据采集节点4用于接收、解析nsq传输的操作日志和链上数据并存储至链下的关系型数据库中,同时绘制大量数据验证后的上链业务逻辑流程图,将上链业务逻辑流程图(实际业务流程图)存储至数据采集服务器14中,将该实际业务流程图传输至业务逻辑匹配节点5;业务逻辑匹配节点用于将数据采集节点4传输的实际业务流程图与预处理节点1所绘制的预设业务流程图对比,输出差异,由业务人员确认差异是否需要修改,如需修改,则将差异输出至合约变量和流程管理节点2进行智能合约的自动修复,并将差异历史记录存储于业务逻辑匹配服务器15中。
[0101]
业务逻辑预处理服务器11用于存储业务人员针对业务需求制定的业务逻辑流程,主要包括步骤名(链路分支)、依赖步骤、步骤操作、执行条件、输入函数和输出函数等内容。
[0102]
合约变量和流程管理服务器12包括上传模块和智能合约修复模块,用于存储解析后的智能合约的代码的输入数据结构、输出数据结构、临时变量和操作步骤(步骤操作)等内容,修复智能合约。
[0103]
区块链测试网络13是智能合约的专用测试网络,用于通过验证节点的共识完成合约的执行,即执行自动化测试案例,对合约接口进行测试。非验证节点用于针对同一个链路分支的步骤操作标记为同一个链路跟踪id(traceid),将上链的操作日志通过nsq以消息推送的方式打包传输至链下的数据采集服务器14。
[0104]
数据采集服务器14包括实际业务流程图模块,用于采集链上通过nsq传输至链下的消息,根据全链路跟踪技术对操作日志进行业务流程绘制,如图10所示,主要包括消息接收和消息处理两部分,消息接收是接收nsq传输的消息,包括对消息进行接收、排序和分发工作;对接收到的nsq消息(操作日志),先按接收时间对操作日志进行排序,然后将操作日志分发给消息处理部分;消息处理主要实现消息校验、消息解析、消息流程绘制和消息存储四部分。消息校验即校验操作日志的完整性,查看操作日志是否包含traceid,格式是否符合表2的示例规范等。消息解析是分别解析操作日志里的内容,包括traceid、操作时间、文件名、父方法名
‑
子方法名、输入函数、输出函数等字段。消息流程绘制是根据traceid和操作时间进行全链路跟踪,即对操作日志中同一个traceid的操作步骤,按操作时间顺序跟踪绘制如图4所示的实际业务流程图。消息存储是将实际业务流程图的traceid、操作时间、文
件名、父方法名
‑
子方法名、输入函数、输出函数等内容存储至服务器的文件系统中,同时将实际业务流程图传输至位于业务逻辑匹配服务器15的业务逻辑匹配节点5。
[0105]
业务逻辑匹配服务器15包括修复代码模块,用于查看预设业务流程图与上链的实际业务流程图之间是否存在差异,并对该差异输出解决方案,保证合约代码的业务逻辑完整性和准确性。
[0106]
综上,本发明实施例的区块链智能合约修复装置先将智能合约上传至区块链测试网络,以使区块链测试网络执行智能合约并生成操作日志,再根据操作日志生成实际业务流程图,将实际业务流程图与对应的预设业务流程图进行比对,生成修复代码,最后根据修复代码修复智能合约,可以降低智能合约的开发和运维成本,提高智能合约内部逻辑的准确率。
[0107]
本发明实施例还提供能够实现上述实施例中的区块链智能合约修复方法中全部步骤的一种计算机设备的具体实施方式。图12是本发明实施例中计算机设备的结构框图,参见图12,所述计算机设备具体包括如下内容:
[0108]
处理器(processor)1201和存储器(memory)1202。
[0109]
所述处理器1201用于调用所述存储器1202中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的区块链智能合约修复方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
[0110]
将智能合约上传至区块链测试网络,以使区块链测试网络执行智能合约并生成操作日志;
[0111]
接收来自区块链测试网络的操作日志,根据操作日志生成实际业务流程图;
[0112]
将实际业务流程图与对应的预设业务流程图进行比对,生成修复代码;
[0113]
根据修复代码修复智能合约。
[0114]
综上,本发明实施例的计算机设备先将智能合约上传至区块链测试网络,以使区块链测试网络执行智能合约并生成操作日志,再根据操作日志生成实际业务流程图,将实际业务流程图与对应的预设业务流程图进行比对,生成修复代码,最后根据修复代码修复智能合约,可以降低智能合约的开发和运维成本,提高智能合约内部逻辑的准确率。
[0115]
本发明实施例还提供能够实现上述实施例中的区块链智能合约修复方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的区块链智能合约修复方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
[0116]
将智能合约上传至区块链测试网络,以使区块链测试网络执行智能合约并生成操作日志;
[0117]
接收来自区块链测试网络的操作日志,根据操作日志生成实际业务流程图;
[0118]
将实际业务流程图与对应的预设业务流程图进行比对,生成修复代码;
[0119]
根据修复代码修复智能合约。
[0120]
综上,本发明实施例的计算机可读存储介质先将智能合约上传至区块链测试网络,以使区块链测试网络执行智能合约并生成操作日志,再根据操作日志生成实际业务流程图,将实际业务流程图与对应的预设业务流程图进行比对,生成修复代码,最后根据修复代码修复智能合约,可以降低智能合约的开发和运维成本,提高智能合约内部逻辑的准确
率。
[0121]
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
[0122]
本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
[0123]
本发明实施例中所描述的各种说明性的逻辑块,或单元,或装置都可以通过通用处理器,数字信号处理器,专用集成电路(asic),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
[0124]
本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动磁盘、cd
‑
rom或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于asic中,asic可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
[0125]
在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于ram、rom、eeprom、cd
‑
rom或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、dvd、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
技术特征:
1.一种区块链智能合约修复方法,其特征在于,包括:将智能合约上传至区块链测试网络,以使所述区块链测试网络执行所述智能合约并生成操作日志;接收来自所述区块链测试网络的操作日志,根据所述操作日志生成实际业务流程图;将实际业务流程图与对应的预设业务流程图进行比对,生成修复代码;根据所述修复代码修复所述智能合约。2.根据权利要求1所述的区块链智能合约修复方法,其特征在于,根据所述修复代码修复所述智能合约包括:解析所述智能合约,得到智能合约源码;根据所述修复代码修复所述智能合约源码,将修复后的智能合约源码转换为修复后的智能合约。3.根据权利要求2所述的区块链智能合约修复方法,其特征在于,所述操作日志包括操作时间;根据所述操作日志生成实际业务流程图包括:按照所述操作时间对操作日志进行排序;按照排序后的操作日志生成实际业务流程图。4.根据权利要求2所述的区块链智能合约修复方法,其特征在于,根据所述修复代码修复所述智能合约源码包括:确定所述修复代码所在操作日志的文件名称对应的函数名称;根据所述修复代码修复所述函数名称对应的智能合约源码。5.一种区块链智能合约修复装置,其特征在于,包括:上传模块,用于将智能合约上传至区块链测试网络,以使所述区块链测试网络执行所述智能合约并生成操作日志;实际业务流程图模块,用于接收来自所述区块链测试网络的操作日志,根据所述操作日志生成实际业务流程图;修复代码模块,用于将实际业务流程图与对应的预设业务流程图进行比对,生成修复代码;智能合约修复模块,用于根据所述修复代码修复所述智能合约。6.根据权利要求5所述的区块链智能合约修复装置,其特征在于,所述智能合约修复模块包括:解析单元,用于解析所述智能合约,得到智能合约源码;智能合约修复单元,用于根据所述修复代码修复所述智能合约源码,将修复后的智能合约源码转换为修复后的智能合约。7.根据权利要求6所述的区块链智能合约修复装置,其特征在于,所述操作日志包括操作时间;实际业务流程图模块包括:排序单元,用于按照所述操作时间对操作日志进行排序;实际业务流程图单元,用于按照排序后的操作日志生成实际业务流程图。8.根据权利要求6所述的区块链智能合约修复装置,其特征在于,所述智能合约修复单
元包括:函数名称确定子单元,用于确定所述修复代码所在操作日志的文件名称对应的函数名称;智能合约源码修复子单元,用于根据所述修复代码修复所述函数名称对应的智能合约源码。9.一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4任一项所述的区块链智能合约修复方法的步骤。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4任一项所述的区块链智能合约修复方法的步骤。
技术总结
本发明提供一种区块链智能合约修复方法及装置,属于区块链技术领域。该区块链智能合约修复方法包括:将智能合约上传至区块链测试网络,以使区块链测试网络执行智能合约并生成操作日志;接收来自区块链测试网络的操作日志,根据操作日志生成实际业务流程图;将实际业务流程图与对应的预设业务流程图进行比对,生成修复代码;根据修复代码修复智能合约。本发明可以降低智能合约的开发和运维成本,提高智能合约内部逻辑的准确率。智能合约内部逻辑的准确率。智能合约内部逻辑的准确率。
技术研发人员:夏韵 裴磊 夏琼 吴业骏
受保护的技术使用者:中国工商银行股份有限公司
技术研发日:2021.03.19
技术公布日:2021/6/29
转载请注明原文地址:https://doc.8miu.com/read-8253.html