CN118154318A - 智能合约的生成方法、装置、设备、存储介质及程序产品 - Google Patents

智能合约的生成方法、装置、设备、存储介质及程序产品 Download PDF

Info

Publication number
CN118154318A
CN118154318A CN202410379677.4A CN202410379677A CN118154318A CN 118154318 A CN118154318 A CN 118154318A CN 202410379677 A CN202410379677 A CN 202410379677A CN 118154318 A CN118154318 A CN 118154318A
Authority
CN
China
Prior art keywords
contract
service
intelligent
intelligent contract
template
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202410379677.4A
Other languages
English (en)
Inventor
吴业骏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202410379677.4A priority Critical patent/CN118154318A/zh
Publication of CN118154318A publication Critical patent/CN118154318A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Finance (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Software Systems (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请提供一种智能合约的生成方法、装置、设备、存储介质及程序产品,涉及区块链领域。该方法包括:通过智能合约创建请求中的业务信息可以确定包含公共函数代码片段的合约模板,并可以获取基于该合约模板产生的自定义代码片段,再根据合约模板和自定义代码片段生成智能合约。基于合约模板中的公共函数片段,可以减少编写智能合约所需的代码量,降低智能合约开发难度,提高开发效率。

Description

智能合约的生成方法、装置、设备、存储介质及程序产品
技术领域
本申请涉及区块链领域,尤其涉及一种智能合约的生成方法、装置、设备、存储介质及程序产品。
背景技术
智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议,它实质上是一段可执行代码,当满足一定条件时可以根据代码执行合约中的行为。随着智能合约的引入,区块链的安全性得到进一步加强。
智能合约的生成需要先根据实际业务行为确定合约的触发条件以及行为逻辑,再通过人工将其写成代码后上链。然而,智能合约的需求不断增长,人工编写智能合约代码的速度有限,导致智能合约的开发效率低下。
发明内容
本申请提供一种智能合约的生成方法、装置、设备、存储介质及程序产品,用以解决智能合约开发效率低下的技术问题。
第一方面,本申请提供一种智能合约的生成方法,执行于区块链节点,该生成方法包括:
接收智能合约创建请求,所述智能合约创建请求包括业务信息;
根据所述业务信息确定合约模板,所述合约模板包括至少一个公共函数代码片段,所述公共函数代码片段是根据多个历史智能合约中使用的函数代码确定的;
输出所述合约模板,并获取基于所述合约模板生成的自定义代码片段;
根据所述合约模板和所述自定义代码片段生成智能合约。
在一种可能的实现方式中,所述区块链节点包括公共函数库,所述公共函数库中包含公共函数代码片段,所述根据所述业务信息确定合约模板,包括:
根据自然语言处理算法对所述业务信息进行处理,得到业务标签;
从所述公共函数库中获取与所述业务标签对应的公共函数代码片段;
根据所述公共函数代码片段生成合约模板。
在一种可能的实现方式中,所述根据自然语言处理算法对所述业务信息进行处理,得到业务标签,包括:
根据自然语言处理算法提取所述业务信息中出现频率高于第一阈值的关键词;
根据所述关键词和预设的知识图谱确定所述业务信息对应的业务标签,所述知识图谱包括业务关键词与业务标签之间的关系。
在一种可能的实现方式中,所述公共函数库通过以下方式获得:
获取多个历史智能合约的合约代码;
从所述合约代码中提取使用频率高于第二阈值的函数代码为公共函数代码片段;
根据所述历史智能合约的业务内容确定所述公共函数代码片段的业务标签;
根据所述公共函数代码片段和所述业务标签生成公共函数库。
在一种可能的实现方式中,该生成方法还包括:
获取所述公共函数代码片段在最近一个时间周期内生成的智能合约中的使用频率;
若所述使用频率低于第三阈值,将所述公共函数代码片段从所述公共函数库中移除。
在一种可能的实现方式中,所述输出所述合约模板,并获取基于所述合约模板生成的自定义代码片段,包括:
向目标终端发送所述合约模板,所述目标终端为发送所述智能合约创建请求的终端;
接收所述目标终端发送的自定义代码片段。
在一种可能的实现方式中,所述获取基于所述合约模板生成的自定义代码片段,包括:
获取与所述业务信息对应的多个历史智能合约;
从所述多个历史智能合约中提取使用频率高于第四阈值的功能函数;
根据所述功能函数生成自定义代码片段。
在一种可能的实现方式中,所述业务信息包括业务类型,该生成方法还包括:
基于所述业务类型,获取所述智能合约对应的语法规则信息和语义规则信息;
根据所述语法规则信息和所述语义规则信息,对所述自定义代码片段进行语法检查和语义检查,得到所述智能合约的安全信息。
第二方面,本申请提供一种智能合约的生成装置,包括:
请求接收模块,用于接收智能合约创建请求,所述智能合约创建请求包括业务信息;
模板确定模块,用于根据所述业务信息确定合约模板,所述合约模板包括至少一个公共函数代码片段,所述公共函数代码片段是根据多个历史智能合约中使用的函数代码确定的;
代码获取模块,用于输出所述合约模板,并获取基于所述合约模板生成的自定义代码片段;
合约生成模块,用于根据所述合约模板和所述自定义代码片段生成智能合约。
第三方面,本申请提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面中任一项所述的智能合约的生成方法。
第四方面,本申请提供一种计算机可读存储介质,包括:所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面中任一项所述的智能合约的生成方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如第一方面中任一项所述的智能合约的生成方法。
本申请提供的智能合约的生成方法、装置、设备、存储介质及程序产品,通过智能合约创建请求中的业务信息可以确定包含公共函数代码片段的合约模板,并可以获取基于该合约模板产生的自定义代码片段,再根据合约模板和自定义代码片段生成智能合约。基于合约模板中的公共函数片段,可以减少编写智能合约所需的代码量,降低智能合约开发难度,提高开发效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是本申请实施例提供的一种智能合约的生成方法的流程示意图;
图2是本申请实施例提供的一种确定合约模板的方法的流程示意图;
图3是本申请实施例提供的一种公共函数库的生成方法的流程示意图;
图4是本申请实施例提供的一种公共函数库的更新方法的流程示意图;
图5是本申请实施例提供的一种区块链节点与终端的交互示意图;
图6是本申请实施例提供的一种获取自定义代码片段方法的流程示意图;
图7是本申请实施例提供的一种检查智能合约代码方法的流程示意图;
图8是本申请实施例提供的一种智能合约的生成装置的结构示意图;
图9是本申请实施例提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
需要说明的是,本申请提供的智能合约的生成方法、装置、设备、存储介质及程序产品可用于区块链领域和金融科技领域,也可用于除金融科技之外的任意领域,本申请对智能合约的生成方法、装置、设备、存储介质及程序产品的应用领域不作限定。
在本申请中,需要理解的是,所涉及的术语含义如下:
区块链:区块链(Blockchain)是一种将数据区块有序连接,并以密码学方式保证其不可篡改、不可伪造的分布式账本技术。区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性。狭义区块链是按照时间顺序,将数据区块以顺序相连的方式组合成的链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义区块链技术是利用块链式数据结构验证与存储数据,利用分布式节点共识算法生成和更新数据,利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约,编程和操作数据的全新的分布式基础架构与计算范式。
智能合约:智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。它是一种自治的自执行代码,可以自动执行其中的条款和条件,不需要人工干预。智能合约被设计为在去中心化的网络中运行,可以实现可靠、安全和透明的交易。区块链的去中心化和数据防篡改的特性,使智能合约可以在区块链上实现。
随着区块链技术的不断发展,区块链技术的应用场景越来越广泛,而智能合约是区块链应用平台的核心,赋予了区块链运行去中心化应用的能力。区块链智能合约的可编程性和开放性,在丰富了区块链自身应用场景的同时也带来了一些问题。
目前,智能合约的生成依赖于开发人员的人工编写。随着区块链应用场景的增多,智能合约的应用需求越来越大,开发人员编写代码的速度有限,且对于不熟悉的功能还需要重新学习合约开发规范,导致智能合约开发效率较低,无法满足智能合约的需求。
针对上述问题,发明人经研究后发现,一些智能合约的代码可能会使用到相同的函数代码,发明人因而想到,可以收集智能合约代码中使用频率较高的函数代码以生成智能合约模板,降低智能合约开发难度。基于此,本申请提供一种智能合约的生成方法、装置、设备、存储介质及程序产品。通过智能合约创建请求中的业务信息确定包含公共函数代码片段的合约模板,并获取基于该合约模板产生的自定义代码片段,再根据合约模板和自定义代码片段生成智能合约。通过合约模板可以减少编写智能合约所需的代码量,降低智能合约开发难度,提高开发效率。
下面以具体的实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图1是本申请实施例提供的一种智能合约的生成方法的流程示意图。如图1所示,该方法包括:
步骤S101,接收智能合约创建请求。
其中,智能合约创建请求包括业务信息。业务信息可以包括智能合约在区块链中所要实现的业务的规则信息。例如,智能合约用于通过区块链实现转账业务,则该智能合约的创建请求中可以包含实现转账业务的业务规则信息或业务逻辑信息。
需要说明的是,本申请实施例提供的智能合约的生成方法可以执行于区块链系统中的区块链节点,该区块链节点可以是部署区块链的服务器或终端。
具体地,区块链节点可以接收其他设备发送的智能合约创建请求,并可以获取该请求中包含的业务信息。其他设备可以是区块链节点所在设备以外的任意设备,例如开发人员开发智能合约所使用的电子设备。在一些可能的实现方式中,区块链节点所在的服务器或终端设备可以提供人机交互界面,开发人员或其他用户可以通过该人机交互界面生成智能合约创建请求。在一些可能的实现方式中,业务信息可以为文本信息。
步骤S102,根据业务信息确定合约模板。
其中,合约模板包括至少一个公共函数代码片段,公共函数代码片段是根据多个历史智能合约中使用的函数代码确定的。历史智能合约可以为区块链系统中已生成的智能合约。
具体地,可以获取若干个历史智能合约,并根据这些历史智能合约的代码提取使用频率较高的函数及函数相关代码作为公共函数代码片段,并可以根据公共函数代码片段生成用于形成智能合约的多个模板,每个模板可以包含不同的公共函数代码片段,根据智能合约创建请求中的业务信息可以选取一个模板作为合约模板。例如,一些历史智能合约可能均存在将用户的银行账户与其他业务系统账户绑定的功能代码,该功能代码可以被提取为公共函数片段代码并生成一个模板,若业务信息所表示的业务为一种移动支付相关的业务,智能合约实现该业务需要绑定用户的银行账户,则可以确定该模板为合约模板。
步骤S103,输出合约模板,并获取基于合约模板生成的自定义代码片段。
其中,自定义代码片段可以是用户根据合约模板编写的代码片段。
具体地,在确定合约模板之后,可以向发起智能合约创建请求的用户输出该合约模板,用户基于该合约模板可以生成自定义代码片段。例如,以智能合约实现的业务是移动支付业务为例,移动支付业务可以包含绑定用户银行账户和通过银行账户进行转账两个步骤,如果合约模板中的公共函数代码片段可以实现绑定用户银行账户这一步骤,则用户可以已有的公共函数代码片段编写用于实现另一步骤的代码,用户编写的这部分代码即为自定义代码。在一些可能的实现方式中,在输出合约模板之后,用户还可以对合约模板中的公共函数代码片段进行修改,例如可以修改代码片段中函数参数等,修改后的代码为自定义代码。
应当说明的是,自定义代码片段可以是用户直接通过区块链节点编写得到,也可以是用户通过其他设备编写后传输到区块链节点,本申请实施例对获得自定义代码片段的方式不作限定。
步骤S104,根据合约模板和自定义代码片段生成智能合约。
具体地,区块链节点可以对合约模板和自定义代码片段进行组合,并可以对组合后的代码进行编译,以得到完整的智能合约。在一些可能的实现方式中,若自定义代码片段包含对合约模板中公共函数代码片段的修改,则区块链节点对合约模板和自定义代码片段进行组合时可以用自定义代码片段替换掉公共函数代码片段的中的相应代码。
上述实施例中,通过智能合约创建请求中的业务信息可以确定包含公共函数代码片段的合约模板,并获取基于该合约模板产生的自定义代码片段,再根据合约模板和自定义代码片段生成智能合约。基于合约模板中的公共函数片段,可以减少编写智能合约所需的代码量,降低智能合约开发难度,提高开发效率。
图2是本申请实施例提供的一种确定合约模板的方法的流程示意图。如图2所示,该方法包括:
步骤S201,根据自然语言处理算法对业务信息进行处理,得到业务标签。
其中,自然语言处理算法(Natural Language Processing,NLP)是一种可以用计算机来分析和生成自然语言的算法,可以用于实现信息抽取、信息转换和分类等功能。
需要说明的是,区块链节点中可以包含预设的公共函数库,该公共函数库包含公共函数代码片段,公共函数代码片段可以与预设的业务标签以键值对的形式存储在公共函数库中。
具体地,若业务信息为一段文本,可以通过自然语言处理算法对该文本进行信息抽取,并根据抽取的信息对业务信息进行分类,以获得业务标签。在一些可能的实现方式中,也可以对业务信息文本进行分词,抽取该文本中的关键词,并可以检测公共函数库中是否存在与关键词匹配的业务标签。
步骤S202,从公共函数库中获取与业务标签对应的公共函数代码片段。
在一些可能的实现方式中,可以在公共函数库中生成以公共函数代码片段的标识或存储地址为键、以及以公共函数代码片段对应的业务标签为值的键值对,根据自然语言处理算法处理得到的业务标签,可以从公共函数库中筛选公共函数代码片段的标识或存储地址,并根据该标识或存储地址获取对应的公共函数代码片段。
步骤S203,根据公共函数代码片段生成合约模板。
在一些可能的实现方式中,基于智能合约开发规范,可以根据与业务标签对应的公共函数代码片段生成对应的合约模板,该合约模板可以包括一个或多个公共函数代码片段。在一些其他可能的实现方式中,生成的合约模板还可以包括一些用于生成智能合约的基础代码,例如可以包括用于智能合约声明或函数调用的代码。
上述实施例中,通过自然语言处理算法可以对文本等形式的业务信息进行处理,根据处理得到的业务标签可以确定对应的公共函数代码片段,并可以进一步得到对应的合约模板。通过这种方式,用户仅需提供用于描述智能合约所实现业务的信息可以得到含有对应函数片段的合约模板,无需根据具体的函数功能编写或选取代码,从而可以降低智能合约代码的编写难度。
在一个实施例中,根据自然语言处理算法对业务信息进行处理,得到业务标签,可以包括:
根据自然语言处理算法提取业务信息中出现频率高于第一阈值的关键词;根据关键词和预设的知识图谱确定业务信息对应的业务标签,知识图谱包括业务关键词与业务标签之间的关系。
其中,知识图谱是把不同种类的信息连接在一起而得到的一个关系网络,它提供了从“关系”的角度去分析问题的能力。知识图谱可以把复杂的知识领域通过数据挖掘、信息处理、知识计量和图形绘制而显示出来,揭示知识领域的动态发展规律,可以应用于智能搜索、文本分析、机器阅读理解、异常监控等场景。知识图谱通常可以分为综合类的知识图谱和专业类的知识图谱两种,专业类的知识图谱主要基于特定专业领域揭示信息之间的关系。
具体地,可以通过自然语言处理算法对业务信息进行分词,并统计分词结果中每个词的出现频率,将出现频率高于第一阈值的词作为关键词,并可以基于预设业务领域的知识图谱分析关键词与知识图谱中的业务标签的关联关系,若关联关系高于一定的标准,则可以将该业务标签用于获取公共函数代码片段。
在一个实施例中,如图3所示,公共函数库可以通过以下方式获得:
步骤S301,获取多个历史智能合约的合约代码。
其中,历史智能合约可以是区块链系统一段时间内生成的智能合约。例如,可以获取区块链系统在最近30天内部署上链的智能合约。
步骤S302,从合约代码中提取使用频率高于第二阈值的函数代码为公共函数代码片段。
其中,第二阈值可以为任意数值。
示例性地,若获取的历史智能合约共有10个,其中某一函数代码被使用在8个历史智能合约中,则可以将该函数代码相关的片段提取为公共函数代码片段。
步骤S303,根据历史智能合约的业务内容确定公共函数代码片段的业务标签。
具体地,可以根据历史智能合约的业务内容确定其业务类型,并根据业务类型生成公共函数代码片段的业务标签。例如,使用公共函数代码片段的历史智能合约所实现的业务为银行转账,则可以将转账作为该公共函数代码片段的业务标签。
步骤S304,根据公共函数代码片段和业务标签生成公共函数库。
具体地,可以根据公共函数代码片段与业务标签之间的关系,将公共函数代码片段的标识与业务标签生成键值对标签,根据多个键值对标签建立公共函数库的索引,并将公共函数代码片段存储在公共函数库中。若一个公共函数代码片段对应多个业务标签,可以采用一键多值的形式生成键值对标签。
在一些可能的实现方式中,在生成公共函数库之后,如图4所示,还可以包括:
步骤S401,获取公共函数代码片段在最近一个时间周期内生成的智能合约中的使用频率。
步骤S402,若使用频率低于第三阈值,将公共函数代码片段从公共函数库中移除。
例如,可以获取最近10天内生成的智能合约的代码,并统计这些代码使用任一公共函数代码片段的次数,若使用次数低于预设的第三阈值,则可以将该公共函数代码片段从公共函数库中移除。
上述实施例中,通过获取历史智能合约的合约代码,可以得到已生成的合约中使用频率较高的公共函数代码,并基于这些代码的片段和合约的业务标签建立公共函数库,且还可以根据最新一段时间内智能合约对函数片段的使用频率更新公共函数库中的函数片段,从而可以为新的智能合约的生成提供可利用的模板,提高智能合约开发效率。
在一个实施例中,如图5所示,若用户是通过目标终端501向区块链节点502发送智能合约创建请求,则区块链节点502可以向该目标终端501发送根据业务信息确定的合约模板,并接收该目标终端501发送的自定义代码片段,该自定义代码片段可以是用户基于该合约模板编写的。
在一个实施例中,如图6所示,获取基于合约模板生成的自定义代码片段,包括:
步骤S601,获取与业务信息对应的多个历史智能合约。
具体地,可以基于自然语言处理算法对智能合约创建请求中的业务信息进行分类,得到待生成智能合约的业务类型,并获取与该业务类型对应的历史智能合约。
步骤S602,从多个历史智能合约中提取使用频率高于第四阈值的功能函数。
具体地,可以从与待生成智能合约的业务类型相同的历史智能合约中提取使用频率高于第四阈值的功能函数,提取得到的功能函数与待生成智能合约的业务关联性更高,可以作为生成自定义代码片段的参考。例如,待生成智能合约用于实现转账业务,获取的与转账业务相关的智能合约有5个,这5个智能合约中有3个使用了同一功能函数,则可以提取该功能函数。
步骤S603,根据功能函数生成自定义代码片段。
具体地,可以将提取到的功能函数发送给用户使用的终端,或者将该功能函数通过人机交互界面展示给用户,从而可以使用户根据该功能函数得到自定义代码片段。
在一个实施例中,业务信息包括业务类型,如图7所示,智能合约的生成方法还包括:
步骤S701,基于业务类型,获取智能合约对应的语法规则信息和语义规则信息。
其中,语法规则信息可以是指对智能合约的语法进行检查所采用的规则信息;语义规则信息可以是指对智能合约的语义进行检查所采用的规则信息。语法规则信息和语义规则信息用于与智能合约的代码信息进行匹配检查,以实现智能合约的语法检查和语义检查,识别智能合约中是否存在安全隐患,并识别出智能合约中不满足规则或不安全的操作。
在一些可能的实现方式中,可以通过设置语义语法规则库,在该语义语法规则库中可以包括多个语法规则信息和多个语义规则信息。其中,不同业务类型的智能合约可以在语义语法规则库中查找到对应的语法规则信息和语义规则信息。语法规则信息和语义规则信息可以基于人工智能训练模型,参考大量不同类型的智能合约安全规范样本与错误样本,然后经过人工标注等方式形成不同类型下的智能合约的语义规则信息和语法规则信息。
步骤S702,根据语法规则信息和语义规则信息,对自定义代码片段进行语法检查和语义检查,得到智能合约的安全信息。
其中,智能合约的安全信息可以表征智能合约的安全性。智能合约的安全信息可以包括确认安全和存在错误的相关信息。存在错误的相关信息具体可以包括:错误代码内容、位置及其相应的错误类型。例如,错误类型可以包括语法错误、语义错误;语法错误可以包括对象缺失、变量名错误等。
在一些可能的实现方式中,基于语法规则信息和语义规则信息,可以对生成的智能合约中的自定义代码片段进行检查,以确定该部分代码是否符合该类型智能合约的语义规则和语法规则。在得到安全信息后,可以根据安全信息生成此智能合约的检测报告,以便于用户进行调试修改。
应当说明的是,生成的智能合约中包含公共函数代码片段和自定义代码片段,公共函数代码片段是从多个历史智能合约中提取得到的,可以不进行语法规则和语义规则的检查。
上述实施例中,基于待生成智能合约的业务类型,可以获取相应类型的语法规则信息和语义规则信息,并基于这些规则信息在智能合约生成后对自定义代码部分进行检查,以得到该智能合约的安全信息。通过本实施例提供的方法,可以只对智能合约中的自定义代码部分进行安全性检查,无需针对智能合约中的公共函数代码片段检查,从而可以加快检查速度和代码修改进度,提高智能合约开发效率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图8为本申请实施例提供的一种智能合约的生成装置的结构示意图,如图8所示,该智能合约的生成装置800包括:
请求接收模块801,用于接收智能合约创建请求,智能合约创建请求包括业务信息;
模板确定模块802,用于根据业务信息确定合约模板,合约模板包括至少一个公共函数代码片段,公共函数代码片段是根据多个历史智能合约中使用的函数代码确定的;
代码获取模块803,用于输出合约模板,并获取基于合约模板生成的自定义代码片段;
合约生成模块804,用于根据合约模板和自定义代码片段生成智能合约。
在一个实施例中,模板确定模块802可以包括:
自然语言处理单元,可以用于根据自然语言处理算法对业务信息进行处理,得到业务标签。
片段获取单元,可以用于从公共函数库中获取与业务标签对应的公共函数代码片段。
模板生成单元,可以用于根据公共函数代码片段生成合约模板。
在一个实施例中,自然语言处理单元可以包括:
第一提取单元,可以用于根据自然语言处理算法提取业务信息中出现频率高于第一阈值的关键词。
知识图谱处理单元,可以用于根据关键词和预设的知识图谱确定业务信息对应的业务标签,知识图谱包括业务关键词与业务标签之间的关系。
在一个实施例中,该智能合约的生成装置800还可以包括:
代码获取单元,可以用于获取多个历史智能合约的合约代码。
第二提取单元,可以用于从合约代码中提取使用频率高于第二阈值的函数代码为公共函数代码片段。
标签确定单元,可以用于根据历史智能合约的业务内容确定公共函数代码片段的业务标签。
库生成单元,可以用于根据公共函数代码片段和业务标签生成公共函数库。
在一个实施例中,该智能合约的生成装置800还可以包括:
频率获取模块,可以用于获取公共函数代码片段在最近一个时间周期内生成的智能合约中的使用频率。
函数移除模块,可以用于在使用频率低于第三阈值的情况下,将公共函数代码片段从公共函数库中移除。
在一个实施例中,代码获取模块803可以包括:
模板发送单元,可以用于向目标终端发送合约模板,目标终端为发送智能合约创建请求的终端。
代码接收单元,可以用于接收目标终端发送的自定义代码片段。
在一个实施例中,代码获取模块803还可以包括:
合约获取单元,可以用于获取与业务信息对应的多个历史智能合约。
函数提取单元,可以用于从多个历史智能合约中提取使用频率高于第四阈值的功能函数。
自定义代码生成单元,可以用于根据功能函数生成自定义代码片段。
在一个实施例中,该智能合约的生成装置800还可以包括:
规则获取模块,可以用于基于业务类型,获取智能合约对应的语法规则信息和语义规则信息。
安全检查模块,可以用于根据语法规则信息和语义规则信息,对自定义代码片段进行语法检查和语义检查,得到智能合约的安全信息。
本实施例提供的智能合约的生成装置,用于执行前述任一方法实施例中的技术方案,其实现原理和技术效果类似,在此不再赘述。
应该理解,上述的装置实施例仅是示意性的,本申请的装置还可通过其它的方式实现。例如,上述实施例中单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本申请各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
图9为本申请实施例提供的一种电子设备的结构示意图。如图9所示,该电子设备90包括:
处理器91,存储器92,以及通信接口93;
所述存储器92用于存储所述处理器91的可执行指令;所述可执行指令可以为计算机执行指令;
其中,所述处理器91配置为经由执行所述可执行指令来执行前述任一方法实施例中的技术方案。
可选的,存储器92既可以是独立的,也可以跟处理器91集成在一起。
可选的,当所述存储器92是独立于处理器91之外的器件时,所述电子设备90还可以包括:
总线94,存储器92和通信接口93通过总线94与处理器91连接并完成相互间的通信,通信接口93用于和其他设备进行通信。
可选的,通信接口93具体可以通过收发器实现。通信接口用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(random access memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
总线94可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
上述的处理器可以是通用处理器,包括中央处理器CPU、网络处理器(networkprocessor,NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
该电子设备用于执行前述任一方法实施例中的技术方案,其实现原理和技术效果类似,在此不再赘述。
本申请实施例还提供一种可读存储介质,所述可读存储介质可以为计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述任一方法实施例提供的技术方案。
本申请实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现前述任一方法实施例提供的技术方案。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

Claims (12)

1.一种智能合约的生成方法,其特征在于,执行于区块链节点,所述生成方法包括:
接收智能合约创建请求,所述智能合约创建请求包括业务信息;
根据所述业务信息确定合约模板,所述合约模板包括至少一个公共函数代码片段,所述公共函数代码片段是根据多个历史智能合约中使用的函数代码确定的;
输出所述合约模板,并获取基于所述合约模板生成的自定义代码片段;
根据所述合约模板和所述自定义代码片段生成智能合约。
2.根据权利要求1所述的生成方法,其特征在于,所述区块链节点包括公共函数库,所述公共函数库中包含公共函数代码片段,所述根据所述业务信息确定合约模板,包括:
根据自然语言处理算法对所述业务信息进行处理,得到业务标签;
从所述公共函数库中获取与所述业务标签对应的公共函数代码片段;
根据所述公共函数代码片段生成合约模板。
3.根据权利要求2所述的生成方法,其特征在于,所述根据自然语言处理算法对所述业务信息进行处理,得到业务标签,包括:
根据自然语言处理算法提取所述业务信息中出现频率高于第一阈值的关键词;
根据所述关键词和预设的知识图谱确定所述业务信息对应的业务标签,所述知识图谱包括业务关键词与业务标签之间的关系。
4.根据权利要求2所述的生成方法,其特征在于,所述公共函数库通过以下方式获得:
获取多个历史智能合约的合约代码;
从所述合约代码中提取使用频率高于第二阈值的函数代码为公共函数代码片段;
根据所述历史智能合约的业务内容确定所述公共函数代码片段的业务标签;
根据所述公共函数代码片段和所述业务标签生成公共函数库。
5.根据权利要求4所述的生成方法,其特征在于,所述生成方法还包括:
获取所述公共函数代码片段在最近一个时间周期内生成的智能合约中的使用频率;
若所述使用频率低于第三阈值,将所述公共函数代码片段从所述公共函数库中移除。
6.根据权利要求1至5任一项所述的生成方法,其特征在于,所述输出所述合约模板,并获取基于所述合约模板生成的自定义代码片段,包括:
向目标终端发送所述合约模板,所述目标终端为发送所述智能合约创建请求的终端;
接收所述目标终端发送的自定义代码片段。
7.根据权利要求1至5任一项所述的生成方法,其特征在于,所述获取基于所述合约模板生成的自定义代码片段,包括:
获取与所述业务信息对应的多个历史智能合约;
从所述多个历史智能合约中提取使用频率高于第四阈值的功能函数;
根据所述功能函数生成自定义代码片段。
8.根据权利要求1至5任一项所述的生成方法,其特征在于,所述业务信息包括业务类型,所述生成方法还包括:
基于所述业务类型,获取所述智能合约对应的语法规则信息和语义规则信息;
根据所述语法规则信息和所述语义规则信息,对所述自定义代码片段进行语法检查和语义检查,得到所述智能合约的安全信息。
9.一种智能合约的生成装置,其特征在于,包括:
请求接收模块,用于接收智能合约创建请求,所述智能合约创建请求包括业务信息;
模板确定模块,用于根据所述业务信息确定合约模板,所述合约模板包括至少一个公共函数代码片段,所述公共函数代码片段是根据多个历史智能合约中使用的函数代码确定的;
代码获取模块,用于输出所述合约模板,并获取基于所述合约模板生成的自定义代码片段;
合约生成模块,用于根据所述合约模板和所述自定义代码片段生成智能合约。
10.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至8任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至8任一项所述的方法。
12.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的方法。
CN202410379677.4A 2024-03-29 2024-03-29 智能合约的生成方法、装置、设备、存储介质及程序产品 Pending CN118154318A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410379677.4A CN118154318A (zh) 2024-03-29 2024-03-29 智能合约的生成方法、装置、设备、存储介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410379677.4A CN118154318A (zh) 2024-03-29 2024-03-29 智能合约的生成方法、装置、设备、存储介质及程序产品

Publications (1)

Publication Number Publication Date
CN118154318A true CN118154318A (zh) 2024-06-07

Family

ID=91285243

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410379677.4A Pending CN118154318A (zh) 2024-03-29 2024-03-29 智能合约的生成方法、装置、设备、存储介质及程序产品

Country Status (1)

Country Link
CN (1) CN118154318A (zh)

Similar Documents

Publication Publication Date Title
US11093240B2 (en) Automating identification of code snippets for library suggestion models
US11494181B2 (en) Automating generation of library suggestion engine models
US20220253308A1 (en) Library Model Addition
US10572370B2 (en) Test-assisted application programming interface (API) learning
CN111562965B (zh) 基于决策树的页面数据校验方法和装置
CN103886376A (zh) 用于基于规则的内容过滤的系统和方法
CN102713834A (zh) 管理记录格式信息
CN109783346B (zh) 基于关键字驱动的自动化测试方法、装置及终端设备
CN110727580A (zh) 响应数据生成、全流程接口数据处理方法及相关设备
CN113158189A (zh) 一种恶意软件分析报告生成方法、装置、设备和介质
CN112016138A (zh) 一种车联网自动化安全建模的方法、装置和电子设备
CN110598419B (zh) 一种区块链客户端漏洞挖掘方法、装置、设备及存储介质
CN109783381B (zh) 一种测试数据生成方法、装置及系统
CN104885060A (zh) 数据漏更新检查装置、数据漏更新检查方法、数据漏更新检查程序
CN114338850B (zh) 报文核对方法、装置、终端设备及计算机可读存储介质
CN118154318A (zh) 智能合约的生成方法、装置、设备、存储介质及程序产品
CN115268847A (zh) 区块链智能合约的生成方法、装置及电子设备
CN111736848B (zh) 包冲突定位方法、装置、电子设备及可读存储介质
CN108875374A (zh) 基于文档节点类型的恶意pdf检测方法及装置
CN113419738A (zh) 接口文档的生成方法、装置及接口管理设备
CN112559331A (zh) 测试方法和装置
CN110349025B (zh) 一种基于未花费交易输出的合约资产防遗失方法及装置
Devos et al. Efficient reuse of domain-specific test knowledge: An industrial case in the smart card domain
CN113591467B (zh) 事件主体识别方法及装置、电子设备、介质
CN118798821A (zh) 数据流通交易违规行为处理方法、设备和计算机存储介质

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination