1.本技术涉及区块链技术领域,具体而言,涉及一种区块链智能合约的生成方法、装置及电子设备。
背景技术:2.随着区块链技术的不断发展,区块链的应用场景也越来越广泛,其中,智能合约是区块链应用平台的核心,赋予了区块链运行去中心化应用的能力。
3.在现有技术中,区块链作为整个业务应用开发流程上的一个环节,通常需要开发人员快速迭代开发上线,而在迭代开发的过程中,还需要保证智能合约的开发灵活性,由于现有技术中需要开发人员采用人工的方式编写智能合约,因此导致智能合约的开发效率较低,同时不利于开发成本的管控。
4.针对上述的问题,目前尚未提出有效的解决方案。
技术实现要素:5.本技术实施例提供了一种区块链智能合约的生成方法、装置及电子设备,以至少解决现有技术中区块链智能合约开发效率低的技术问题。
6.根据本技术实施例的一个方面,提供了一种区块链智能合约的生成方法,包括:接收智能合约的创建请求,其中,创建请求中至少包括智能合约在区块链中所要实现的业务规则信息;根据自然语言处理算法对业务规则信息进行处理,得到输入特征值;通过预先训练的目标模型对输入特征值进行处理,得到多个代码片段以及多个代码片段之间的关联关系,其中,目标模型为基于自然语言处理算法训练得到的语言模型,代码片段用于表征由多行代码组成的脚本;根据关联关系将多个代码片段进行组合,得到智能合约。
7.进一步地,区块链智能合约的生成方法还包括:在通过预先训练的目标模型对输入特征值进行处理,得到多个代码片段以及多个代码片段之间的关联关系之前,获取多个历史智能合约的代码内容以及每个历史智能合约对应的历史业务规则信息;根据代码内容以及历史业务规则信息训练得到目标模型。
8.进一步地,区块链智能合约的生成方法还包括:在根据代码内容以及历史业务规则信息训练得到目标模型之前,检测代码内容对应的编码语言是否为目标编码语言;在编码语言与目标编码语言不同的情况下,对代码内容进行语言转换,得到目标代码内容,其中,目标代码内容对应的编码语言为目标编码语言。
9.进一步地,区块链智能合约的生成方法还包括:基于目标代码内容生成抽象语法树,其中,抽象语法树中包含多个树节点,每个树节点对应目标代码内容中的部分代码;根据自然语言处理算法对历史业务规则信息进行处理,并生成资源树,其中,资源树中包含多个资源节点,每个资源节点对应历史业务规则信息中的部分业务规则;根据资源树以及抽象语法树训练得到目标模型。
10.进一步地,区块链智能合约的生成方法还包括:将每个资源节点以及每个资源节
点所对应的树节点确定为一个训练集;根据训练集训练得到目标模型。
11.进一步地,区块链智能合约的生成方法还包括:根据关联关系确定多个代码片段之间的上下文顺序;根据上下文顺序确定相邻的代码片段;检测相邻的代码片段之间是否存在代码缺陷;在相邻的代码片段之间存在代码缺陷的情况下,在相邻的代码片段之间生成补全代码,其中,补全代码用于修复代码缺陷;根据多个代码片段以及补全代码生成智能合约。
12.进一步地,区块链智能合约的生成方法还包括:在根据关联关系将多个代码片段进行组合,得到智能合约之后,检测智能合约是否满足业务规则信息;在智能合约不满足业务规则信息的情况下,识别智能合约中的异常代码,其中,异常代码为导致智能合约不满足业务规则信息的代码;对异常代码进行修复,得到修复后的智能合约。
13.进一步地,区块链智能合约的生成方法还包括:在智能合约满足业务规则信息的情况下,获取区块链中的每个业务节点针对智能合约的共识结果,其中,共识结果表征业务节点是否确定根据智能合约执行业务规则信息;在业务节点确定根据智能合约执行业务规则信息的情况下,将智能合约部署至区块链中。
14.根据本技术实施例的另一方面,还提供了一种区块链智能合约的生成装置,包括:接收模块,用于接收智能合约的创建请求,其中,创建请求中至少包括智能合约在区块链中所要实现的业务规则信息;业务规则信息处理模块,用于根据自然语言处理算法对业务规则信息进行处理,得到输入特征值;特征值处理模块,用于通过预先训练的目标模型对输入特征值进行处理,得到多个代码片段以及多个代码片段之间的关联关系,其中,目标模型为基于自然语言处理算法训练得到的语言模型,代码片段用于表征由多行代码组成的脚本;组合模块,用于根据关联关系将多个代码片段进行组合,得到智能合约。
15.根据本技术实施例的另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的区块链智能合约的生成方法。
16.根据本技术实施例的另一方面,还提供了一种电子设备,该电子设备包括一个或多个处理器和存储器,存储器用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述的区块链智能合约的生成方法。
17.在本技术实施例中,采用通过基于自然语言算法训练得到的语言模型得到用于组成智能合约的多个代码片段的方式,首先接收智能合约的创建请求,其中,创建请求中至少包括智能合约在区块链中所要实现的业务规则信息,然后根据自然语言处理算法对业务规则信息进行处理,得到输入特征值,并通过预先训练的目标模型对输入特征值进行处理,得到多个代码片段以及多个代码片段之间的关联关系,最后根据关联关系将多个代码片段进行组合,得到智能合约。其中,目标模型为基于自然语言处理算法训练得到的语言模型,代码片段用于表征由多行代码组成的脚本。
18.由上述内容可知,由于本技术中的目标模型是根据自然语言处理算法训练得到的,因此目标模型可以识别根据自然语言处理算法处理后的业务规则信息,即输入特征值。另外,由于本技术中的目标模型还能根据输入特征值同时输出多个代码片段以及多个代码片段之间的关联关系,因此,本技术可以在无需开发人员人工编写代码的情况下,自动地将目标模型输出的多个代码片段进行组合,以生成智能合约,从而提高了智能合约的开发效
率,降低了智能合约的开发成本。
19.由此可见,通过本技术的技术方案,达到了自动生成区块链智能合约的目的,从而实现了降低智能合约的开发时间的效果,进而解决了现有技术中区块链智能合约开发效率低的技术问题。
附图说明
20.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
21.图1是根据本技术实施例的一种可选的区块链智能合约的生成方法的流程图;
22.图2是根据本技术实施例的一种可选的智能合约生成系统的结构图;
23.图3是根据本技术实施例的一种可选的智能合约控制台的结构图;
24.图4是根据本技术实施例的一种可选的共识记账节点的结构图;
25.图5是根据本技术实施例的一种可选的联盟计算节点的结构图;
26.图6是根据本技术实施例的一种可选的智能合约的生成方法示意图;
27.图7是根据本技术实施例的一种可选的区块链智能合约的生成方法流程图;
28.图8是根据本技术实施例的一种可选的区块链智能合约的生成装置的示意图;
29.图9是根据本技术实施例的一种可选的电子设备的示意图。
具体实施方式
30.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
31.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
32.实施例1
33.为了方便描述,以下对本技术中出现的专业术语进行解释说明,具体如下:
34.区块链:区块链是一种基于密码学技术生成的分布式共享数据库,其本质是通过去中心化的方式集体维护一个可靠数据库的技术方案。凭借区块链中的多个节点,形成点对点网络关系,再利用数学基础建立信任效果,成为一个不需要基于彼此信任、也不需要依赖单一中心化机构就可以运作的分散式系统。这套系统可以保证数据的真实性,并且用极低的成本实现了信任与价值的可靠传递,构建起一个更为开放共享、公开透明可信、安全可信并且不易篡改可核查追溯的系统。
35.智能合约:智能合约是在区块链的去中心化(分布式)系统中使去中心化系统具有可编程性的一种协议。智能合约是区块链网络的核心实现,在可执行代码中定义不同组织之间的规则,也是一种旨在信息化方式传播验证或者执行合同的计算机协议,通过智能合约生成交易记录到区块链账本,可以在没有第三方的情况下进行交易,保证交易可以追踪,不可丈量,不可逆转。
36.另外,随着区块链技术的不断发展,区块链技术的应用场景越来越广泛,而智能合约是区块链应用平台的核心,赋予了区块链运行去中心化应用的能力。区块链智能合约的可编程性和开放性,在丰富了区块链自身应用场景的同时,也同样带来了各种问题和风险挑战,首先是区块链技术作为整个业务应用开发流程上的一个环节,通常需要开发人员快速迭代开发上线,从而导致智能合约开发的频率较高;其次是智能合约的开发成本较高,需要开发人员重新学习智能合约开发语言,并熟悉智能合约专有开发规范。
37.由上述内容可知,在现有技术中,智能合约的开发频率较高,并且开发过程中极大程度上依赖人工编写代码,从而导致智能合约的开发效率较低。
38.为了解决现有技术中的问题,根据本技术实施例,提供了一种的智能合约的生成方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
39.还需要说明的是,一种智能合约生成系统可以作为本技术实施例中的智能合约的生成方法的执行主体。
40.图1是根据本技术实施例的一种可选的区块链智能合约的生成方法的流程图,如图1所示,该方法包括如下步骤:
41.步骤s101,接收智能合约的创建请求。
42.在步骤s101中,创建请求中至少包括智能合约在区块链中所要实现的业务规则信息。
43.具体的,图2示出了一种智能合约生成系统的结构图,如图2所示,智能合约生成系统至少包括用户端,智能合约控制台,共识记账节点,分散式存储节点,联盟认证节点和联盟计算节点。
44.其中,用户端,包括用户所持有的各种终端,包括pc端,移动端,边缘设备,云服务器等,用户端通过管理控制台进行区块链审计网络的多方治理。
45.智能合约控制台,是一种区块链去中心化场景下支持管理区块链共识记账节点和分散式存储节点的交互式的管理平台。通过管理控制台,用户可以对联盟链等区块链中的共识记账节点以及审计节点进行审计。同时,通过管理控制台,用户还可以对智能合约所依赖的计算资源、存储资源以及网络资源进行审计,最后,通过管理控制台,用户还可以对联盟链服务的接入许可管理进行审计。由此可见,通过管理平台,可以降低用户对联盟链等区块链的网络运维管理难度以及审计操作的复杂度。
46.共识记账节点是区块链网络的核心实现,通过共识记账节点可以使去中心化(分布式)区块链系统具有可编程性,其中,区块链中的各个业务节点通过智能合约生成的交易记录可以存储到区块链账本中,区块链账本是一种分布式账本,该分布式账本中还存储记录了智能合约操作的状态数据,如区块链存储对象的属性信息,以区块链存储的数字资产
为例,比如:数字资产名,资产类型,生成时间,持有方,授权方等,上述的属性信息可以称为元数据。这些元数据被存放在node表中。node表由很多条记录组成,每一条记录对应存放了一个文件的元数据信息,对于需要多方合作的智能合约,元数据信息可以存储在共识记账节点中。
47.分散式存储节点可以理解为是一种基于区块链的去中心化的可信数据存储系统。该系统是一种去中心化,点对点的对等分布式区块链存储系统,该系统提供了一个高吞吐量,按内容寻址的块存储模型,并且该系统具有支持存储的灵活扩容,多存储协议适配,点对点分块安全加密,去冗余的对象链接以及不可篡改的数据存储结构等特性。通过分布式存储节点,能够为区块链提供安全,高效,开放,低成本的多方共享存储网络。
48.联盟计算节点是一种通过多方安全计算、隐私保护、区块链分布式账本等技术,部署有大数据模型的节点。其中,联盟计算节点通过多安全计算技术可以实现数据可用不可见,从而解决了企业数据协同计算过程中的数据安全和隐私保护问题。联盟计算节点通过大数据模型,还可以对不同联盟机构的合约仓库的代码进行分析,例如,对代码进行安全漏洞分析。
49.联盟认证节点,该节点构建在pki体系基础上,在该节点中,提供了一套用户审核、身份管理和隐私保护的技术方案。联盟认证节点可以管理节点间的组网证书认证,用户交易接入证书认证等证书认证工作。例如,在多个节点进行建链时,只有在联盟认证节点确定两个节点之间的组网证书验证通过之后,该两个节点之间才能组成p2p网络,从而实现共识协议信息和交易信息的传播。在客户端访问节点提供的链接口时,联盟认证节点还可以对节点证书进行校验,以验证节点身份。
50.在一种可选的实施例中,在用户需要在区块链中生成智能合约时,可以通过用户端向智能合约控制台发送智能合约的创建请求,其中,创建请求中包括智能合约在区块链中所要实现的业务规则信息,具体的,业务规则可以是转账规则、预付款规则以及贷款审核规则等规则。在实际应用中,不同的业务场景对应的业务规则也不相同,同时每种业务规则所对应的智能合约也不相同,智能合约可以理解为通过代码实现对业务规则的描述,从而使得区块链中的业务节点可以按照智能合约对应的业务规则进行交互。
51.步骤s102,根据自然语言处理算法对业务规则信息进行处理,得到输入特征值。
52.在步骤s102中,自然语言处理算法可以是nlp(natural language processing,自然语言处理)算法,对于输入的创建请求,智能合约生成系统会对创建请求进行解析,得到业务规则信息,然后智能合约生成系统会根据nlp算法对业务规则信息进行处理,得到输入特征值。
53.步骤s103,通过预先训练的目标模型对输入特征值进行处理,得到多个代码片段以及多个代码片段之间的关联关系。
54.在步骤s103中,目标模型为基于自然语言处理算法训练得到的语言模型,代码片段用于表征由多行代码组成的脚本。
55.具体的,上述目标模型是基于nlp算法训练得到的语言模型,因此,对于根据nlp算法处理得到的输入特征值,目标模型可以进行识别。此外,上述的关联关系可以是多个代码之间的上下文关系,例如,以智能合约所要实现的业务规则为转账业务规则为例,其中,转账业务规则可分为三部分,分别为银行账户和移动支付账户进行绑定的第一部分规则,移
动支付账户向银行账户进行转账的第二部分规则以及银行账户向移动支付账户进行转账的第三部分规则,在此基础上,目标模型根据上述三部分规则分别输出了实现第一部分规则的第一代码片段,实现第二部分规则的第二代码片段以及实现第三部分规则的第三代码片段。需要注意到的是,在创建请求中,上述的是三部分规则信息是存在上下文关系的,而且,nlp算法在对业务规则信息进行处理时,会保留业务规则信息的上下文关系,因此,目标模型最终输出的三个代码片段之间也会存在上下文关系。
56.由此可见,本技术通过上述多个代码片段之间的关联关系,可以将多个代码片段进行组合,从而得到用于实现业务规则信息的智能合约。
57.步骤s104,根据关联关系将多个代码片段进行组合,得到智能合约。
58.如步骤s103的内容可知,多个代码片段之间的关联关系可以理解为是多个代码片段之间的上下文关系,并且,这种上下文关系与业务规则信息所描述的上下文逻辑是相对应的,因此,智能合约生成系统通过关联关系将多个代码片段进行组合之后,代码片段之间执行的业务逻辑是符合智能合约所要实现的业务规则信息的,换言之,组合后的多个代码即为智能合约。
59.基于步骤s101至步骤s104的内容可知,在本技术实施例中,采用通过基于自然语言算法训练得到的语言模型得到用于组成智能合约的多个代码片段的方式,首先接收智能合约的创建请求,其中,创建请求中至少包括智能合约在区块链中所要实现的业务规则信息,然后根据自然语言处理算法对业务规则信息进行处理,得到输入特征值,并通过预先训练的目标模型对输入特征值进行处理,得到多个代码片段以及多个代码片段之间的关联关系,最后根据关联关系将多个代码片段进行组合,得到智能合约。其中,目标模型为基于自然语言处理算法训练得到的语言模型,代码片段用于表征由多行代码组成的脚本。
60.由上述内容可知,由于本技术中的目标模型是根据自然语言处理算法训练得到的,因此目标模型可以识别根据自然语言处理算法处理后的业务规则信息,即输入特征值。另外,由于本技术中的目标模型还能根据输入特征值同时输出多个代码片段以及多个代码片段之间的关联关系,因此,本技术可以在无需开发人员人工编写代码的情况下,自动地将目标模型输出的多个代码片段进行组合,以生成智能合约,从而提高了智能合约的开发效率,降低了智能合约的开发成本。
61.由此可见,通过本技术的技术方案,达到了自动生成区块链智能合约的目的,从而实现了降低智能合约的开发时间的效果,进而解决了现有技术中区块链智能合约开发效率低的技术问题。
62.在一种可选的实施例中,在通过预先训练的目标模型对输入特征值进行处理,得到多个代码片段以及多个代码片段之间的关联关系之前,智能合约生成系统会获取多个历史智能合约的代码内容以及每个历史智能合约对应的历史业务规则信息,并根据代码内容以及历史业务规则信息训练得到目标模型。
63.可选的,上述的历史智能合约可以是之前开发人员人工编写的智能合约,也可以是目标模型在之前生成的智能合约。每个历史智能合约都会有对应的历史业务规则信息,其中,智能合约生成系统可以通过解析历史智能合约得到历史业务规则信息,也可以直接通过解析历史智能合约所对应的开发文档得到历史业务规则信息。
64.在一种可选的实施例中,在根据代码内容以及历史业务规则信息训练得到目标模
型之前,智能合约生成系统将检测代码内容对应的编码语言是否为目标编码语言;在编码语言与目标编码语言不同的情况下,智能合约生成系统对代码内容进行语言转换,得到目标代码内容,其中,目标代码内容对应的编码语言为目标编码语言。
65.可选的,在现有技术中,智能合约的编码语言存在多种,例如golang语言、nodejs语言、java语言、python、c语言、solidity语言。为了避免不同编码语言编写的历史智能合约会增加目标模型的训练难度,因此,本技术会使用lsp(language server protocol)语言服务协议统一和规范根据不同编码语言所编写的历史智能合约,将其转换为相同编码语言的目标代码内容,从而降低目标模型的训练复杂度,提高目标模型的训练效率。
66.在一种可选的实施例中,智能合约生成系统会基于目标代码内容生成抽象语法树,其中,抽象语法树中包含多个树节点,每个树节点对应代码内容中的部分代码。同时智能合约生成系统还根据自然语言处理算法对历史业务规则信息进行处理,并生成资源树,其中,资源树中包含多个资源节点,每个资源节点对应历史业务规则信息中的部分业务规则,最后,智能合约生成系统根据资源树以及抽象语法树训练得到目标模型。
67.可选的,为了提高训练效率,智能合约生成系统会根据目标代码内容生成ast抽象语法树,其中,ast抽象语法树是目标代码内容相关结构的树状表示,首先智能合约生成系统可以通过词法分析器从目标代码内容中确定得到各种不同种类的单词,然后通过语法分析器分析和语法检查后得到ast抽象语法树。通常ast抽象语法树的根节点表示目标代码内容所对应的整个程序,抽象语法树中的树节点是抽象语法结构或者单词。换言之,抽象语法树的每个节点对应目标代码内容中的部分代码。
68.另外,智能合约生成系统还会根据自然语言处理算法对历史业务规则信息进行处理,并生成资源树。假设某一个历史智能合约所要实现的业务规则为转账业务规则,其中,转账业务规则可分为三部分,分别为银行账户和移动支付账户进行绑定的第一部分规则,移动支付账户向银行账户进行转账的第二部分规则以及银行账户向移动支付账户进行转账的第三部分规则,在此基础上,资源树可由三个资源节点组成,其中,第一节点对应的是第一部分规则,第二节点对应的是第二部分规则,第三节点对应的是第三部分规则。
69.在一种可选的实施例中,智能合约生成系统将每个资源节点以及每个资源节点所对应的树节点确定为一个训练集,并根据训练集训练得到目标模型。
70.可选的,假设智能合约生成系统基于某一个历史智能合约生成了一个抽象语法树,并且该抽象语法树中包含有第一树节点、第二树节点以及第三树节点。同时,智能合约生成系统根据该历史智能合约所对应的历史业务规则信息生成了一个资源树,并且该资源树中包含有第一资源节点、第二资源节点、第三资源节点以及第四资源节点,其中,第一树节点与第一资源节点相对应,第二树节点与第二资源节点相对应,第三树节点与第三资源节点以及第四资源节点相对应。在此基础上,智能合约生成系统将第一树节点与第一资源节点确定为第一训练集;将第二树节点与第二资源节点确定为第二训练集;将第三树节点与第三资源节点以及第四资源节点确定为第三训练集。最后,智能合约生成系统基于第一训练集、第二训练集以及第三训练集进行训练,得到目标模型。
71.在一种可选的实施例中,智能合约生成系统根据多个代码片段之间的关联关系确定多个代码片段之间的上下文顺序,并根据上下文顺序确定相邻的代码片段,同时,智能合约生成系统还会检测相邻的代码片段之间是否存在代码缺陷,在相邻的代码片段之间存在
代码缺陷的情况下,智能合约生成系统会在相邻的代码片段之间生成补全代码,其中,补全代码用于修复代码缺陷。最后,智能合约生成系统根据多个代码片段以及补全代码生成智能合约。
72.可选的,由于多个代码片段之间的关联关系可以理解为多个代码片段之间的上下文关系,因此,基于关联关系,智能合约生成系统可以得到多个代码片段间的上下文顺序,并依据上下文顺序确定彼此相邻的两个代码片段,如果相邻的代码片段之间存在代码缺陷,则智能合约生成系统将会根据代码缺陷的相关信息在相邻的代码片段之间生成补全代码。
73.在一种可选的实施例中,在根据关联关系将多个代码片段进行组合,得到智能合约之后,智能合约生成系统会检测智能合约是否满足业务规则信息,在智能合约不满足业务规则信息的情况下,智能合约生成系统识别智能合约中的异常代码,并对异常代码进行修复,得到修复后的智能合约。其中,异常代码为导致智能合约不满足业务规则信息的代码。
74.可选的,在生成智能合约之后,智能合约生成系统需要对智能合约进行测试,在测试通过之后,才能将智能合约正式部署在区块链中。具体的,对智能合约的测试包括但不限于代码单元测试,模糊测试,自动化接口测试,安全扫描,业务测试等,通过各类测试,可以对智能合约是否满足业务规则信息进行全面的评估,如果评估结果表示智能合约不满足业务规则信息,则智能合约生成系统将会识别智能合约中的异常代码。例如,智能合约生成系统检测到智能合约中未按照业务规则信息对敏感信息进行加密,从而确定智能合约不满足业务规则信息,在此基础上,智能合约生成系统将从智能合约中识别表征敏感信息的相关代码,然后通过新增执行加密逻辑的代码,对敏感信息进行加密。
75.通过对智能合约进行检测,实现了对智能合约的自动化测试,从而提升了智能合约的质量。
76.在一种可选的实施例中,在智能合约满足业务规则信息的情况下,智能合约生成系统获取区块链中的每个业务节点针对智能合约的共识结果,其中,共识结果表征业务节点是否确定根据智能合约执行业务规则信息。在业务节点确定根据智能合约执行业务规则信息的情况下,智能合约生成系统将智能合约部署至区块链中。
77.可选的,在智能合约正式上线部署时,智能合约生成系统将通过智能合约控制台进行多方联盟投票,其中,多方联盟投票可以理解为由区块链中的多个业务节点对智能合约做出共识,如果多个业务节点全部接受智能合约所约定的业务规则信息,则说明多个业务节点之间达成了共识,此时,智能合约生成系统将智能合约正式上线部署至区块链中。如果多个业务节点无法达成共识,则智能合约则暂时不能部署至区块链中。
78.在一种可选的实施例中,以下对智能合约生成系统中的各个组成部分进行分别说明。其中,图3示出了根据本技术实施例的一种智能合约控制台的结构图,如图3所示,智能合约控制台包括处理请求收发装置,代码生成子系统,存储配置子系统,区块链处理子系统。
79.其中,代码生成子系统包括可视化交互模块,代码生成模块,多语言支持模块以及插件处理模块,其中代码生成模块是核心设计:
80.在代码生成模块中,采用基于ast抽象语法树的代码生成技术。其中,ast抽象语法
树是程序源代码结构的树状表示,程序源代码经过词法分析器lexer得到各种不同种类的单词token,再由语法分析器parser分析和语法检查后得到抽象语法树。通常ast的根节点表示整个程序,内部节点是抽象语法结构或者单词。ast的核心在于它能与输入源代码中的各个语法元素一一对应。在抽象语法树中,可以准确地确定token(包括单词)的位置,因此,通过ast抽象语法树,可以实现语法检查、代码风格检查、格式化代码、语法高亮、错误提示、自动补全,代码混淆压缩,优化变更代码,改变代码结构等功能。
81.另外,多语言支持模块用于支持不同的区块链智能合约运行引擎,包括golang语言引擎,java语言引擎,nodejs语言引擎,python语言引擎等,多语言支持模块还可以通过wasm技术支持其他语言。
82.可选的,存储配置子系统包括文件存取模块、业务组件模块、语言配置服务模块以及元数据存储模块。
83.其中,文件存储模块用于代码生成。语言配置服务模块则是基于lsp语言服务协议对外提供语言服务,其中,lsp语言服务协议是标准化语言工具和代码编辑器之间的通信和协议。语言配置服务模块提供了例如自动补全,格式化,转到定义,查找所有引用,悬浮提示,代码分析等的功能,并且通过lsp语言协议统一和规范了不同语言的实现,可降低了开发工具实现上述功能的复杂度和便捷度。
84.可选的,区块链处理子系统包括证书安全认证模块、智能合约调用模块、区块链调用模块以及多区块链适配模块。
85.其中,智能合约调用模块可以调用共识记账节点,在区块链运行平台上封装统一的公共库api接口实现智能合约代码业务逻辑与链上状态数据的交互,实现区块链的不可篡改的链式存储业务数据结构,区块链智能合约编译后采用沙箱隔离的技术独立的运行并与区块链运行平台建立安全可信的连接。
86.同时区块链运行平台对外封装区块链api,证书api,合约api等接口,主要提供golang,java,nodejs等语言的sdk供区块链业务应用系统集成调用,实现业务数据的上链,与联盟链实现可信的数据交换。
87.在一种可选的实施例中,图4示出了根据本技术实施例中的共识记账节点的结构图。其中,共识记账节点包括交易请求模块、证书管理模块、共识记账模块以及数据存储模块。
88.其中,交易请求模块可以理解为是一个支持http/tls/grpc等协议的应用程序接口,用于支持审计系统内部的区块链节点、数据通道、智能合约、数据存取、状态查询、运维监控等管理交易报文请求。
89.证书管理模块,构建在pki体系基础上,提供一套用户审核、身份管理和隐私保护的完整的、成熟的技术方案,包括节点间组网证书,用户交易接入证书等。节点证书在节点间建链时使用。
90.共识记账模块,通过共识算法保证全网节点达成共识、创造出区块链上的免信任的记账机制,保证每笔交易在所有记账节点上的一致性采用,同时本技术提供可插拔的设计,用于根据不同的性能和安全要求支持不同的共识算法,如raft、pbft、hotstuff等共识算法。
91.数据存储模块,定义了数据存储的结构和数据存储层,数据存储的结构可以采用
merkle树机构,用于实现区块链的高效安全的哈希链式区块存储。数据存储层适配不同的数据库,如leveldb、rocksdb、mysql等实现数据状态的存取,支持数据的增删改查等操作。
92.在一种可选的实施例中,图5示出了根据本技术实施例中的联盟计算节点的结构图。其中,联盟计算节点包括:包括数据接入装置,数据处理装置以及建模分析装置。
93.其中,数据接入装置,负责数据的接入和预处理工作,保证数据能够稳定地写入至联盟计算节点中。其中,数据接入装置包括批量通道模块、实时通道模块以及手工通道模块,其中,批量通道模块和实时通道模块是程序自动控制的数据导入模块,批量通道模块可以通过批量请求的方式获取区块链的链上数据和区块交易时间序列,链上数据可以是历史智能合约的源码。其中,下表是联盟计算模块对历史智能合约的源码解析路径的示例:
[0094][0095]
另外,手工通道模块用于提供外部的业务风险数据和风险策略,业务风险数据可以是黑名单数据,敏感信息数据,大额资金信息等数据,风险策略则由区块链网络共同制定,并通过区块链智能合约的方式约定。
[0096]
可选的,数据处理装置负责数据的计算处理。具体的,数据处理装置包括安全控制模块、计算处理模块以及结果输出模块,其中,数据处理装置通过安全控制模块和计算处理模块进行数据的私密共享和模型训练。安全控制模块将生成数据加密私钥,然后通过数据加密私钥对获取得到的隐私数据进行加密和签名。安全控制模块同时还会生成公钥证书,并将公钥证书分发给数据获取方。
[0097]
在模型训练过程中,计算处理模块基于nlp算法,采用无监督预训练和有监督的迁移学习相结合的方式,先通过无标签的文本训练生成语言模型,再根据具体的nlp任务(如文本蕴涵、qa、文本分类等),来通过有标签的数据对语言模型进行调整,具体实现如下:
[0098]
无监督的预训练,在将智能合约代码通过ast抽象语法树解析出不同的单词token后,计算处理模块将单词作为无标签的文本u={u1,...,un}输入进行无监督的训练,从而最大化语言模型的极大似然函数,具体的函数如下,其中,函数中k是文本上下文窗口的大
小。
[0099]
l1(c)=∑ilogp(ui丨u
i-k
,......,u
i-1
;θ)
[0100]
在通过预训练得到语言模型之后,计算处理模块采用有监督的目标任务对语言模型参数微调。假设目标任务为一个有标签的智能合约数据集,其中,该数据集中的每一条数据为一个单词序列x_{1},...,x_{m}以及相应的标签y,通过之前预训练的语言模型获得输出向量h_{l}^{m},再将输出向量送入线性输出层,来预测标签y。具体函数如下:
[0101][0102]
另外,模型训练过程中使用的损失(loss)函数如下:
[0103]
l2(c)=∑
(x,y)
log p(y丨x1,......,xm)
[0104]
最后,将两阶段的目标函数通过超参\lambda相加训练得到目标模型l3(c):
[0105]
l3(c)=l2(c)+λ*l1(c)
[0106]
可选的,计算处理模块会将训练得到的目标模型部署在联盟计算节点上。
[0107]
可选的,结果输出模块可以通过lsp语言分析服务在代码生成过程或者ide编写代码时,对代码进行语法分析,并根据分析结果生成新的匹配代码,例如,通过之前调用过的特定函数,结果输出模块可在ide工具中实现代码行或整个方法函数的自动补全。
[0108]
可选的,建模分析装置用于对接外部机器学习平台,使用数据探索模块进行数据探索,完成特征工程处理;通过模型训练模块进行模型训练;通过模型部署模块进行模型评估和模型部署。
[0109]
在一种可选的实施例中,图6示出了根据本技术实施例的智能合约生成过程示意图图。如图6所示,智能合约代码生成过程中主要涉及共识记账节点、分布式存储节点以及联盟计算节点,三个节点均通过点对点通讯协议进行节点的交互通讯,三个节点的交互过程可以划分为三个阶段,第一阶段为分散式存储节点和联盟计算节点关于智能合约代码自动生成流程;第二阶段为联盟计算节点和共识记账节点的测试和上线反馈交互;第三阶段为分散式存储节点和共识记账节点的智能合约仓库管理流程。
[0110]
在第一阶段的智能合约的代码生成流程中,智能合约生成系统可以基于分布式存储节点中的元数据模型、lsp语言配置服务以及联盟计算节点中的nlp自然语言处理算法、ast抽象语法树代码生成算法生成智能合约的代码。其中,联盟计算节点会对智能合约的代码进行语法分析,在语法分析未通过时,分布式存储节点中的lsp语言配置服务会智能合约的代码进行语法修正,在语法分析通过时,联盟计算节点会将智能合约部署在共识记账节点中的测试网络,以对智能合约进行测试。
[0111]
在第二阶段中,如果在测试网络中,智能合约未通过测试,则需要联盟计算节点对智能合约的代码进行修复。如果智能合约通过测试,则分布式存储节点会获取智能合约的代码,并根据代码预编译出智能合约二进制程序,然后通过标准化的容器方式将二进制程序打包成镜像。另外,分布式存储节点还可以采用容器编排系统的集群api方式接入到智能合约集群中,从而控制智能合约的启停,以及与智能合约资源池进行交互。此外,区块链节点可以通过grpc方式与智能合约容器节点建立通讯,并执行智能合约的调用逻辑。
[0112]
在第三阶段的智能合约仓库管理流程中,分布式存储节点会将生成的智能合约存储至智能合约仓库中。智能合约仓库负责智能合约全生命周期的统一管控,用于集中式管理智能合约的源码以及镜像。其中,智能合约仓库存储可以使用git等版本控制系统存储并
管理源码,同时使用常用的registry等镜像仓库程序管理智能合约的镜像。
[0113]
在一种可选的实施例中,图7示出了根据本技术实施例的区块链智能合约的生成方法流程图。如图7所示,包括如下步骤:
[0114]
步骤s701,根据元数据定义需要通过智能合约操作的数据集合,按照不同的业务需求定义不同的存储模型和数据结构范式,不同的存储模型关联不同的属性信息。建立抽象语法树与资源树的联系。一方面在从抽象语法树中得到节点信息后去资源树中查询对应资源,一方面也可以采用缓存的办法提高下一次的查询效率。
[0115]
步骤s702,基于lsp语言服务协议定义不同的历史智能合约的代码内容,并历史智能合约的代码内容生成不同的具有特定业务意义的智能合约局部逻辑。根据lsp提供的tcp连接协议,建立本地服务器与语言服务器的连接以便本地服务统筹调用语言服务器的接口,同时激活ast解析器与资源模块,ast解析器依据历史智能合约的代码内容生成抽象语法树,资源模块根据历史智能合约对应的历史业务规则信息生成资源树。
[0116]
步骤s703,通过改进的nlp算法进行目标模型的训练,并将训练得到的目标模型部署在联盟计算节点中,目标模型具有模糊匹配以及数据搜索的功能,可以依据输入的特征值生成用于组成智能合约的多个代码片段。
[0117]
步骤s704,智能合约控制台中部署有在线ide或者云ide加载模版和开发插件,当在ide读取不同行或者编辑不同行的代码时,可将得到的节点信息作为参数传入分布式存储节点中的lsp配置服务中,从而通过lsp配置服务进行对代码的语法修复,例如,对代码片段进行补全,可视化调试以及问题修复。另外,最终生成的智能合约会存储在分布式存储节点中的智能合约仓库中。
[0118]
步骤s705,完成上链前的智能合约测试流程。其中,智能合约测试流程包括单元测试,模糊测试,自动化接口测试,安全扫描,业务测试等测试流程。在智能合约测试过程中,智能合约生成系统会自动分析出智能合约的准入指标评分,并根据准入指标评分评估智能合约是否可以正式上线,如不能上线则返回步骤s704中重新进行代码修复。
[0119]
步骤s706,正式上线部署智能合约。通过智能合约控制台进行多方联盟投票后调用共识记账节点进行部署上线,同时自动生成智能合约的业务接口。
[0120]
由上述内容可知,本技术通过基于nlp语言技术自动生成智能合约,达到了降低了智能合约的开发成本的目的,实现了提高智能合约的开发效率的效果。同时,本技术基于区块链智能合约的自动编程和辅助编程,对数据进行了标准化,将生成智能合约的流程进行规范化处理,还可以更高效地对智能合约进行自动化测试,降低测试复杂度,提升智能合约的质量。
[0121]
实施例2
[0122]
根据本技术实施例,还提供了一种区块链智能合约的生成装置,其中,图8是根据本技术实施例的一种可选的区块链智能合约的生成装置的示意图,如图8所示,该装置包括:接收模块801,用于接收智能合约的创建请求,其中,创建请求中至少包括智能合约在区块链中所要实现的业务规则信息;业务规则信息处理模块802,用于根据自然语言处理算法对业务规则信息进行处理,得到输入特征值;特征值处理模块803,用于通过预先训练的目标模型对输入特征值进行处理,得到多个代码片段以及多个代码片段之间的关联关系,其中,目标模型为基于自然语言处理算法训练得到的语言模型,代码片段用于表征由多行代
码组成的脚本;组合模块804,用于根据关联关系将多个代码片段进行组合,得到智能合约。
[0123]
需要说明的是,上述接收模块801、业务规则信息处理模块802、特征值处理模块803、组合模块804分别对应于上述实施例1中的步骤s101至步骤s104,四个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。
[0124]
可选的,区块链智能合约的生成装置还包括:获取模块以及训练模块。其中,获取模块,用于获取多个历史智能合约的代码内容以及每个历史智能合约对应的历史业务规则信息;训练模块,用于根据代码内容以及历史业务规则信息训练得到目标模型。
[0125]
可选的,区块链智能合约的生成装置还包括:第一检测模块以及语言转换模块。其中,第一检测模块,用于检测代码内容对应的编码语言是否为目标编码语言;语言转换模块,用于在编码语言与目标编码语言不同的情况下,对代码内容进行语言转换,得到目标代码内容,其中,目标代码内容对应的编码语言为目标编码语言。
[0126]
可选的,上述训练模块还包括:第一生成单元、第一处理单元以及第一训练单元。其中,第一生成单元,用于基于目标代码内容生成抽象语法树,其中,抽象语法树中包含多个树节点,每个树节点对应目标代码内容中的部分代码;第一处理单元,用于根据自然语言处理算法对历史业务规则信息进行处理,并生成资源树,其中,资源树中包含多个资源节点,每个资源节点对应历史业务规则信息中的部分业务规则;第一训练单元,用于根据资源树以及抽象语法树训练得到目标模型。
[0127]
可选的,上述第一训练单元还包括:第一确定子单元以及第一训练子单元。其中,第一确定子单元,用于将每个资源节点以及每个资源节点所对应的树节点确定为一个训练集;第一训练子单元,用于根据训练集训练得到目标模型。
[0128]
可选的,上述组合模块还包括:第一确定单元、第二确定单元、检测单元、第二生成单元以及第三生成单元。其中,第一确定单元,用于根据关联关系确定多个代码片段之间的上下文顺序;第二确定单元,用于根据上下文顺序确定相邻的代码片段;检测单元,用于检测相邻的代码片段之间是否存在代码缺陷;第二生成单元,用于在相邻的代码片段之间存在代码缺陷的情况下,在相邻的代码片段之间生成补全代码,其中,补全代码用于修复代码缺陷;第三生成单元,用于根据多个代码片段以及补全代码生成智能合约。
[0129]
可选的,区块链智能合约的生成装置还包括:第二检测模块、识别模块以及修复模块。其中,第二检测模块,用于检测智能合约是否满足业务规则信息;识别模块,用于在智能合约不满足业务规则信息的情况下,识别智能合约中的异常代码,其中,异常代码为导致智能合约不满足业务规则信息的代码;修复模块,用于对异常代码进行修复,得到修复后的智能合约。
[0130]
可选的,区块链智能合约的生成装置还包括:第一获取模块以及部署模块,其中第一获取模块,用于在智能合约满足业务规则信息的情况下,获取区块链中的每个业务节点针对智能合约的共识结果,其中,共识结果表征业务节点是否确定根据智能合约执行业务规则信息;部署模块,用于在业务节点确定根据智能合约执行业务规则信息的情况下,将智能合约部署至区块链中。
[0131]
实施例3
[0132]
根据本技术实施例,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述实施例1中的区块链智能合
约的生成方法。
[0133]
实施例4
[0134]
根据本技术实施例,还提供了一种电子设备实施例,其中,图9是根据本技术实施例的一种可选的电子设备的示意图,如图9所示,电子设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:
[0135]
接收智能合约的创建请求,其中,创建请求中至少包括智能合约在区块链中所要实现的业务规则信息;根据自然语言处理算法对业务规则信息进行处理,得到输入特征值;通过预先训练的目标模型对输入特征值进行处理,得到多个代码片段以及多个代码片段之间的关联关系,其中,目标模型为基于自然语言处理算法训练得到的语言模型,代码片段用于表征由多行代码组成的脚本;根据关联关系将多个代码片段进行组合,得到智能合约。
[0136]
可选的,处理器执行程序时还实现以下步骤:在通过预先训练的目标模型对输入特征值进行处理,得到多个代码片段以及多个代码片段之间的关联关系之前,获取多个历史智能合约的代码内容以及每个历史智能合约对应的历史业务规则信息;根据代码内容以及历史业务规则信息训练得到目标模型。
[0137]
可选的,处理器执行程序时还实现以下步骤:在根据代码内容以及历史业务规则信息训练得到目标模型之前,检测代码内容对应的编码语言是否为目标编码语言;在编码语言与目标编码语言不同的情况下,对代码内容进行语言转换,得到目标代码内容,其中,目标代码内容对应的编码语言为目标编码语言。
[0138]
可选的,处理器执行程序时还实现以下步骤:基于目标代码内容生成抽象语法树,其中,抽象语法树中包含多个树节点,每个树节点对应目标代码内容中的部分代码;根据自然语言处理算法对历史业务规则信息进行处理,并生成资源树,其中,资源树中包含多个资源节点,每个资源节点对应历史业务规则信息中的部分业务规则;根据资源树以及抽象语法树训练得到目标模型。
[0139]
可选的,处理器执行程序时还实现以下步骤:将每个资源节点以及每个资源节点所对应的树节点确定为一个训练集;根据训练集训练得到目标模型。
[0140]
可选的,处理器执行程序时还实现以下步骤:根据关联关系确定多个代码片段之间的上下文顺序;根据上下文顺序确定相邻的代码片段;检测相邻的代码片段之间是否存在代码缺陷;在相邻的代码片段之间存在代码缺陷的情况下,在相邻的代码片段之间生成补全代码,其中,补全代码用于修复代码缺陷;根据多个代码片段以及补全代码生成智能合约。
[0141]
可选的,处理器执行程序时还实现以下步骤:在根据关联关系将多个代码片段进行组合,得到智能合约之后,检测智能合约是否满足业务规则信息;在智能合约不满足业务规则信息的情况下,识别智能合约中的异常代码,其中,异常代码为导致智能合约不满足业务规则信息的代码;对异常代码进行修复,得到修复后的智能合约。
[0142]
可选的,处理器执行程序时还实现以下步骤:在智能合约满足业务规则信息的情况下,获取区块链中的每个业务节点针对智能合约的共识结果,其中,共识结果表征业务节点是否确定根据智能合约执行业务规则信息;在业务节点确定根据智能合约执行业务规则信息的情况下,将智能合约部署至区块链中。
[0143]
上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
[0144]
在本技术的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0145]
在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0146]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0147]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0148]
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0149]
以上仅是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
技术特征:1.一种区块链智能合约的生成方法,其特征在于,包括:接收智能合约的创建请求,其中,所述创建请求中至少包括所述智能合约在区块链中所要实现的业务规则信息;根据自然语言处理算法对所述业务规则信息进行处理,得到输入特征值;通过预先训练的目标模型对所述输入特征值进行处理,得到多个代码片段以及所述多个代码片段之间的关联关系,其中,所述目标模型为基于所述自然语言处理算法训练得到的语言模型,所述代码片段用于表征由多行代码组成的脚本;根据所述关联关系将所述多个代码片段进行组合,得到所述智能合约。2.根据权利要求1所述的方法,其特征在于,在通过预先训练的目标模型对所述输入特征值进行处理,得到多个代码片段以及所述多个代码片段之间的关联关系之前,所述方法还包括:获取多个历史智能合约的代码内容以及每个历史智能合约对应的历史业务规则信息;根据所述代码内容以及所述历史业务规则信息训练得到所述目标模型。3.根据权利要求2所述的方法,其特征在于,在根据所述代码内容以及所述历史业务规则信息训练得到所述目标模型之前,所述方法还包括:检测所述代码内容对应的编码语言是否为目标编码语言;在所述编码语言与所述目标编码语言不同的情况下,对所述代码内容进行语言转换,得到目标代码内容,其中,所述目标代码内容对应的编码语言为所述目标编码语言。4.根据权利要求3所述的方法,其特征在于,根据所述代码内容以及所述历史业务规则信息训练得到所述目标模型,包括:基于所述目标代码内容生成抽象语法树,其中,所述抽象语法树中包含多个树节点,每个树节点对应所述目标代码内容中的部分代码;根据所述自然语言处理算法对所述历史业务规则信息进行处理,并生成资源树,其中,所述资源树中包含多个资源节点,每个资源节点对应所述历史业务规则信息中的部分业务规则;根据所述资源树以及所述抽象语法树训练得到所述目标模型。5.根据权利要求4所述的方法,其特征在于,根据所述资源树以及所述抽象语法树训练得到所述目标模型,包括:将所述每个资源节点以及所述每个资源节点所对应的树节点确定为一个训练集;根据所述训练集训练得到所述目标模型。6.根据权利要求1所述的方法,其特征在于,根据所述关联关系将所述多个代码片段进行组合,得到所述智能合约,包括:根据所述关联关系确定所述多个代码片段之间的上下文顺序;根据所述上下文顺序确定相邻的代码片段;检测所述相邻的代码片段之间是否存在代码缺陷;在所述相邻的代码片段之间存在代码缺陷的情况下,在所述相邻的代码片段之间生成补全代码,其中,所述补全代码用于修复所述代码缺陷;根据所述多个代码片段以及所述补全代码生成所述智能合约。7.根据权利要求1所述的方法,其特征在于,在根据所述关联关系将所述多个代码片段
进行组合,得到所述智能合约之后,所述方法还包括:检测所述智能合约是否满足所述业务规则信息;在所述智能合约不满足所述业务规则信息的情况下,识别所述智能合约中的异常代码,其中,所述异常代码为导致所述智能合约不满足所述业务规则信息的代码;对所述异常代码进行修复,得到修复后的智能合约。8.根据权利要求7所述的方法,其特征在于,所述方法还包括:在所述智能合约满足所述业务规则信息的情况下,获取所述区块链中的每个业务节点针对所述智能合约的共识结果,其中,所述共识结果表征所述业务节点是否确定根据所述智能合约执行所述业务规则信息;在所述业务节点确定根据所述智能合约执行所述业务规则信息的情况下,将所述智能合约部署至所述区块链中。9.一种区块链智能合约的生成装置,其特征在于,包括:接收模块,用于接收智能合约的创建请求,其中,所述创建请求中至少包括所述智能合约在区块链中所要实现的业务规则信息;业务规则信息处理模块,用于根据自然语言处理算法对所述业务规则信息进行处理,得到输入特征值;特征值处理模块,用于通过预先训练的目标模型对所述输入特征值进行处理,得到多个代码片段以及所述多个代码片段之间的关联关系,其中,所述目标模型为基于所述自然语言处理算法训练得到的语言模型,所述代码片段用于表征由多行代码组成的脚本;组合模块,用于根据所述关联关系将所述多个代码片段进行组合,得到所述智能合约。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至8任一项中所述的区块链智能合约的生成方法。11.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至8中任意一项所述的区块链智能合约的生成方法。
技术总结本申请公开了一种区块链智能合约的生成方法、装置及电子设备,涉及区块链技术领域。其中,该方法包括:接收智能合约的创建请求,其中,创建请求中至少包括智能合约在区块链中所要实现的业务规则信息;根据自然语言处理算法对业务规则信息进行处理,得到输入特征值;通过预先训练的目标模型对输入特征值进行处理,得到多个代码片段以及多个代码片段之间的关联关系,其中,目标模型为基于自然语言处理算法训练得到的语言模型,代码片段用于表征由多行代码组成的脚本;根据关联关系将多个代码片段进行组合,得到智能合约。本申请解决了现有技术中区块链智能合约开发效率低的技术问题。技术中区块链智能合约开发效率低的技术问题。技术中区块链智能合约开发效率低的技术问题。
技术研发人员:罗伟彬 裴磊 罗强 李海平
受保护的技术使用者:中国工商银行股份有限公司
技术研发日:2022.07.18
技术公布日:2022/11/1