一种智能合约程序函数检索方法

文档序号:27830744发布日期:2021-12-07 22:12阅读:98来源:国知局
一种智能合约程序函数检索方法

1.本发明属于区块链技术领域,特别涉及一种智能合约程序函数检索方法。


背景技术:

2.智能合约实际上是区块链上的自动执行代码,可自动实现各方或业务逻辑之间的协议条款。智能合约开发人员在查看已有的智能合约函数时候需要借助第三方工具(如vscode),输入目标程序函数名称进行检索,第三方工具会自动将所有包含目标程序函数关键字的文件全部列出,需要用户一一筛选,过程比较繁琐和耗时。
3.bert是2018年10月由google ai研究院提出的一种预训练模型,提供一个供其它任务迁移学习的模型,该模型可以根据任务微调或者固定之后作为特征提取器。
4.基于此,提出一种智能合约程序函数检索方法,解决智能合约函数快速搜索问题,以帮助智能合约开发者降低代码重复开发,提高工作效率。


技术实现要素:

5.有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供本发明针对目前技术发展的需求和不足之处,提供一种智能合约程序函数检索方法。
6.首先,本发明提供一种智能合约程序函数检索方法,解决上述技术问题采用的技术方案如下:
7.s01、从智能合约中提取智能合约函数和函数注释;
8.s02、使用智能合约函数注释生成索引,使用智能合约函数哈希生成唯一的id;
9.s03、使用预训练语言模型作为编码器,将智能合约函数注释转化为特征向量;
10.s04、将智能合约函数id、索引、注释和注释特征向量、编程语言类型、智能合约内容等特征存储在智能合约函数库;
11.s05、用户输入智能合约函数检索描述语、编程语言类型,进行初步检索;
12.s06、将用户输入智能合约函数检索描述语使用bert生成词向量,与初步检索智能合约函数注释向量列表分别进行相似度计算;
13.s07、判断相似度是否超过预设值,如果相似度超过预设值,返回按相似度排列的智能合约函数列表,如果相似度没有超过预设值,则返回为空。
14.具体的,所述智能合约可以是不同类型编程语言的智能合约程序,智能合约函数必须要求有注释。所述步骤s02中索引可以是主键索引、复合索引或者聚簇索引等,生成唯一的id可以是md5、sha

2等哈希算法。所述步骤s03使用预训练语言模型,可以是bert、xlnet、roberta、albert等公开的自然语言预训练模型也可以是自己制定的预训练模型,对智能合约函数的注释每个句子生成句向量,对生成句字向量进行拼接,得到对智能合约函数注释的向量表示;所述步骤s04智能合约函数库,可以使用关系型数据库如mysql,也可以是非关系型数据库如mongodb。所述步骤s05进行初步检索,检索方法可以单个键也可以是多个键组合进行检索。所述步骤s06中相似度计算方法是使用余弦相似性方法。所述步骤
s07中预设值可以根据智能合约函数库大小以及实际需求来决定。
附图说明
15.后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。本发明的目标及特征考虑到如下结合附图的描述将更加明显,附图中:
16.图1为本发明所述的一种智能合约程序函数检索方法流程图。
具体实施方式
17.为了清晰地阐述本发明,使本发明实施例的目的、技术方案和优点更加清楚,下面结合了本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,以令本领域技术人员参照说明书文字能够据以实施。下面将附图结合具体实施方式对本发明的技术加以详细说明。
18.本发明本实施例提出一种智智能合约程序函数检索方法,该方法的实现过程包括:
19.s01、从etherscan网站爬取智能合约程序,编写从智能合约中提取智能合约函数和对应的函数注释程序,实现智能合约函数抽取功能;
20.s02、对抽取的每一个智能合约函数,使用sha

256算法对函数生成智能合约函数唯一的id,对智能合约函数的注释使用主题模型的方法抽取关键词作为索引;
21.s03、使用预训练语言模型bert作为编码器,对智能合约函数的注释每个句子生成句向量,对生成句字向量进行拼接,得到对智能合约函数注释的向量表示;
22.s04、将智能合约函数id、索引、注释和注释特征向量、编程语言类型、智能合约内容文本目录等特征存储在mysql数据库中;
23.s05、用户输入智能合约函数检索描述语“secret auction”,编程语言类型solidity,使用sql模糊查询like条件语句进行模糊,同时满足编程语言类型是solidity,查询结果作为初步检索结果;
24.s06、将用户输入智能合约函数检索描述语使用bert生成词向量,与初步检索智能合约函数注释向量列表分别进行余弦相似度计算,计算公式如下:
[0025][0026]
s07、判断相似度是否超过预设值,如果相似度超过0.7,返回按相似度排列的智能合约函数列表,如果相似度没有超过0.7,则返回为空。


技术特征:
1.一种智能合约程序函数检索方法,其特征在于,该方法的实现过程包括:s01、从智能合约中提取智能合约函数和函数注释;s02、使用智能合约函数注释生成索引,使用智能合约函数哈希生成唯一的id;s03、使用预训练语言模型作为编码器,将智能合约函数注释转化为特征向量;s04、将智能合约函数id、索引、注释和注释特征向量、编程语言类型、智能合约内容等特征存储在智能合约函数库;s05、用户输入智能合约函数检索描述语、编程语言类型,进行初步检索;s06、将用户输入智能合约函数检索描述语使用bert生成词向量,与初步检索智能合约函数注释向量列表分别进行相似度计算;s07、判断相似度是否超过预设值,如果相似度超过预设值,返回按相似度排列的智能合约函数列表,如果相似度没有超过预设值,则返回为空。2.根据权利要求1所述一种智能合约程序函数检索方法,其特征在于,所述步骤s01中智能合约可以是不同类型编程语言的智能合约程序,智能合约函数必须要求有注释。3.根据权利要求1所述一种智能合约程序函数检索方法,其特征在于,所述步骤s02中索引可以是主键索引、复合索引或者聚簇索引等,生成唯一的id可以是md5、sha

2等哈希算法。4.根据权利要求1所述一种智能合约程序函数检索方法,其特征在于,所述步骤s03使用预训练语言模型,可以是bert、xlnet、roberta、albert等公开的自然语言预训练模型也可以是自己制定的预训练模型,对智能合约函数的注释每个句子生成句向量,对生成句字向量进行拼接,得到对智能合约函数注释的向量表示。5.根据权利要求1所述一种智能合约程序函数检索方法,其特征在于,所述步骤s04智能合约函数库,可以使用关系型数据库如mysql,也可以是非关系型数据库如mongodb。6.根据权利要求1所述一种智能合约程序函数检索方法,其特征在于,所述步骤s05进行初步检索,检索方法可以单个键也可以是多个键组合进行检索。7.根据权利要求1所述一种智能合约程序函数检索方法,其特征在于,所述步骤s06中相似度计算方法是使用余弦相似性方法。8.根据权利要求1所述一种智能合约程序函数检索方法,其特征在于,所述步骤s07中预设值可以根据智能合约函数库大小以及实际需求来决定。

技术总结
本发明公开了一种智能合约程序函数检索方法,该方法具体包括下述步骤:S01、从智能合约中提取智能合约函数和函数注释;S02、使用智能合约函数注释生成索引,使用智能合约函数哈希生成唯一的ID;S03、使用预训练语言模型作为编码器,将智能合约函数注释转化为特征向量;S04、将智能合约函数ID、索引、注释和注释特征向量、编程语言类型、智能合约内容等特征存储在智能合约函数库;S05、用户输入智能合约函数检索描述语、编程语言类型,进行初步检索;S06、将用户输入智能合约函数检索描述语使用预训练语言模型生成词向量,与初步检索智能合约函数注释向量列表分别进行相似度计算;S07、判断相似度是否超过预设值。相似度是否超过预设值。相似度是否超过预设值。


技术研发人员:王荣 王乾宇 蔡维德
受保护的技术使用者:北京航空航天大学
技术研发日:2021.09.10
技术公布日:2021/12/6
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1