关键词:
智能合约
代码复用
相似性检测
控制流图
图卷积神经网络
摘要:
区块链是一种去中心化的分布式账本技术,可用于建立不依赖中间方的可信数据交换和价值传输系统。随着这一技术的不断演进与提升,智能合约凭借其去中心化、不可篡改、透明化等独特优势,正逐渐渗透并深度融入金融、物流等传统领域。然而,随着智能合约应用的不断拓展,代码复用现象日趋普遍,无疑为漏洞扩散埋下了隐患。合约漏洞沿复用链传播,可能造成资产盗窃、链上运行混乱等问题,这不仅会动摇公众对区块链技术的信心,更将严重阻碍区块链生态的健康发展。面对这一挑战,我们亟需积极探索精准鲁棒的代码审计与漏洞修复机制,搭建可信、安全的区块链应用生态运行环境。
针对代码复用给区块链生态带来的威胁,智能合约相似性检测技术应运而生。最早的探索主要是基于属性计数和结构表示的方法,随后深度学习模型在源码或字节码层面高效提取代码特征并进行特征匹配计算相似度,成为该领域的主流技术,推动了性能和效率的提升。但由于基于深度学习的合约相似性检测方法仍面临着可解释性不足、特征表示不完整、语义识别困难等瓶颈。有鉴于此,本文聚焦于以下两种相似性检测方法:
(1)基于函数块和控制流图的智能合约字节码相似性检测技术。首先,从字节码中提取出函数块,利用哈希算法对其进行特征编码,计算语义局部相似性;其次将控制流图输入到图卷积神经网络中,得到图嵌入向量,计算结构全局相似性;进一步地,设计算法将全局和局部相似性进行融合,得到融合信息;最后融合三种信息得到合约的相似性结果。
(2)基于加权控制流图的智能合约字节码相似性检测技术。首先,从字节码中提取出函数块,并设计计算函数块权重的算法,为每一个函数块赋予语义权重;其次利用函数块对控制流图进行加权操作,增强控制流图的语义表达能力;进一步地,将增强语义后的控制流图输入到GCN与SimRank算法相结合的编码器中;最终输出整合结构和语义信息的图嵌入向量,计算相似性得到合约相似性结果。
实验结果可以得出,基于函数块和控制流图的相似性检测方法取得了77.53%的准确率,而基于加权控制流图的相似性检测方法也在此基础上展现了更好的检测能力,在语义级别识别任务上取得了87.01%的准确率,高于当前最优方法。这些数据印证了我们方法能够有效捕获代码的结构和语义信息,实现更细粒度的相似性检测。我们相信,这些方法能够为智能合约字节码相似性检测提供新的思路,开启相关研究的新视角。