全网唯一标准王
(19)国家知识产权局 (12)发明 专利 (10)授权公告 号 (45)授权公告日 (21)申请 号 202111662475.3 (22)申请日 2021.12.31 (65)同一申请的已公布的文献号 申请公布号 CN 114462045 A (43)申请公布日 2022.05.10 (73)专利权人 国网浙江省电力有限公司物资 分 公司 地址 310000 浙江省杭州市下城区凤起路 378号5-6层 专利权人 国网浙江浙电招标咨询有限公司 (72)发明人 张莹 顾晔 徐天天 陈甜妹  岑雷扬  (74)专利代理 机构 浙江千克知识产权代理有限 公司 33246 专利代理师 赵佳(51)Int.Cl. G06F 21/57(2013.01) G06K 9/62(2022.01) (56)对比文件 Zhen Yang等.A Multi- Modal Transformer-based Code Sum marizati on Approach for Smart Co ntracts. 《2021 IE EE/ ACM 29th Internati onal Conference o n Program Comprehensi on (ICPC) 》 . 《IE EE》 , 2021,1-12. 审查员 娄晓宇 (54)发明名称 一种智能合约漏洞检测方法 (57)摘要 本发明公开了一种智能合约漏洞检测方法, 包括如下步骤: 构建与智能合约训练样本对应的 训练操作 码, 滑动窗口对训练操作码进行遍历 截 取以获得多个训练操作 码片段, 生成与训练操作 码对应的训练操作码片段集; 将Transformer模 型作为智能合约漏洞检测模型, 采用训练操作 码 片段集对Transformer模型进行训练; 对待检测 智能合约进行预处理生成待检测操作码, 滑动窗 口对待检测操作码进行截取生成待检测操作码 片段 集 , 将 待 检 测操 作 码 片段 集 输 入 至 Transformer模型; 由分类器输出智能合约漏洞 检测结果。 Transformer模型会对具体训练操作 码片段和其他所有训练操作码片段之间的相关 性进行计算, 因此最终训练完成的Transformer 模型在实际使用的时候能够输出充分展现智能 合约漏洞线索的结果。 权利要求书1页 说明书5页 附图1页 CN 114462045 B 2022.09.09 CN 114462045 B 1.一种智能合约漏洞检测方法, 其特 征在于, 包括如下步骤: 步骤S1: 构建与智能合约训练样本对应的训练操作码, 以窗口大小为n的滑动窗口对训 练操作码进行遍历截取以获得多个训练操作码片段, 每个训练操作码片段包含多个训练操 作码单元, 选取部分或全部训练操作码片段生成与训练操作码对应的训练操作码片段集; 步骤S1中, 同一个训练操作码对应的训练操作码片段集有多个, 训练操作码片段集分为正 训练操作码片段集和负训练操作码片段集; 其中, 训练操作码经过滑动窗 口的遍历截取后依次生成训练操作码片段x1, x2, ......, xm, 锁定训练操作码片段x1, x2, ......, xm中的无漏洞训练操作码片段, 选取若干无漏洞训 练操作码片段作为正训练操作码片段集, 选取无漏洞训练操作码片段上下文处的若干有漏 洞训练操作码片段作为负训练操作码片段集; 有漏洞训练操作码片段生成负训练操作码片段集的过程中, 保留有漏洞训练操作码片 段在x1, x2, ......, xm中的相对位置信息, 以使Transformer模型在步骤S2中能够进行位置 嵌入; 步骤S2:将Transformer模型作为智能合约漏洞检测模型, 采用训练操作码片段集对 Transformer模型进行训练, 直至损失函数达 到最小值, 以使 Transformer模型训练完成; 生成训练操作码片段集后, 构建负训练操作码片段集对应的漏洞信息矩阵, 漏洞信息 矩阵中包含多种漏洞类型信息, 步骤S2 ’: 对训练完成后的Tr ansformer模型输入负训练操 作码片段集, 使 得Transformer模 型输出分类器训练数据, 利用漏洞信息矩阵和分类器训练 数据对分类 器进行训练; 步骤S3: 对待检测智能合约进行预处理, 以生成待检测操作码, 以窗口大小为n的滑动 窗口对待检测操作码进行遍历截取, 以生成待检测操作码片段集, 将待检测操作码片段集 输入至Transformer模型; 步骤S4: Transformer模型将结果输出至分类器, 由分类器输出智能合约漏洞检测结 果。 2.根据权利要求1所述的智能合约漏洞检测方法, 其特征在于, 正训练操作码片段集数 量为负训练操作码片段集数量的1 ‑1.5倍。 3.根据权利要求1所述的智能合约漏洞检测方法, 其特征在于, 训练操作码的构建方法 如下: 爬取智能合约训练样本的Soli dity源码, 采用Solc编译器将Soli dity源码编译成字 节码, 字节码根据以太坊黄皮书中的对应关系生成原始操作码, 原始操作码经移除操作数 后得到训练操作码。 4.根据权利要求1所述的智能合约漏洞检测方法, 其特征在于, Transformer模型中包 含有用于进行 特征降维的全连接层。权 利 要 求 书 1/1 页 2 CN 114462045 B 2一种智能合约 漏洞检测方 法 技术领域 [0001]本发明涉及一种智能合约漏洞检测方法, 属于数据 漏洞检测领域。 背景技术 [0002]智能合约是区块链技术中的一个重要的新兴分支, 其语言尚未成熟, 开发人员水 平有限, 因此现有的绝大部分已有的智能合约 或多或少都有漏洞, 且智能合约的数据量也 相对不足。 [0003]针对智能合约漏洞检测现阶段主要依靠训练完成的CNN, 并采用分词器对智能合 约操作码以操作码单元为基本单元的方式进行拆 分, 但是CNN本质上是一个n ‑gram模型, 这 就导致在对智能合约中特定操作码单元计算关联分数的时候只会考虑该特定操作码单元 之前的操作码单 元, 这就导致CNN的训练效果很 差, 不能很好 地识别智能合约漏洞。 [0004]也因此, 大部分情况下CNN更多地只适用于视觉图像以及自然语言处理, 在对智能 合约漏洞检测上的应用存在很大的局限性。 发明内容 [0005]本发明所要解决的技术问题在于克服现有技术的不足而提供一种智能合约漏洞 检测方法。 [0006]解决上述 技术问题, 本发明采用如下技 术方案: [0007]一种智能合约漏洞检测方法, 包括如下步骤: [0008]步骤S1: 构建与智能合约训练样本对应的训练操作码, 以窗口大小为n的滑动窗口 对训练操作码进 行遍历截取以获得多个训练操作码片段, 每个训练操作码片段包含多个训 练操作码单元, 选取部 分或全部训练操作码片段生成与训练操作码对应的训练操作码片段 集; [0009]步骤S2:将Transformer模型作为智能合约漏洞检测模型, 采用训练操作码片段集 对Transformer模型进行训练, 直至损失函数达 到最小值, 以使 Transformer模型训练完成; [0010]步骤S3: 对待检测智能合约进行预处理, 以生成待检测操作码, 以窗口大小为n的 滑动窗口对待检测操作码进行遍历截取, 以生成待检测操作码片段集, 将待检测操作码片 段集输入至Transformer模型; [0011]步骤S4: Transformer模型将结果输出至分类器, 由分类器输出智能合约漏洞检测 结果。 [0012]本发明的有益效果 为: [0013]Transformer模型在自身自注意力机制作用下通过训练操作码片段集进行训练的 时候, 在针对具体训练操作码片段相关性计算的环节, 会对具体训练操作码片段和 其他所 有训练操作码片段之间的相关性进行计算, 因此最终训练完成的Tr ansformer模型在实际 使用的时候能够输出充分展现智能合约漏洞线索的结果, 同时具体训练操作码片段和其他 所有训练操作码片段之间的相关性计算为并行运算, 因此Tr ansformer模型的训练过程也说 明 书 1/5 页 3 CN 114462045 B 3

.PDF文档 专利 一种智能合约漏洞检测方法

文档预览
中文文档 8 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共8页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种智能合约漏洞检测方法 第 1 页 专利 一种智能合约漏洞检测方法 第 2 页 专利 一种智能合约漏洞检测方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 22:43:36上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。