摘要

随着区块链智能合约的广泛应用,出现了大量针对智能合约的漏洞攻击,智能合约的安全性成为国内外研究的新关注点。针对智能合约机器学习漏洞检测方法特征选取自动化程度低、误报率高,而深度学习语义建模不足,提取的抽象特征缺乏可解释性等问题,提出了一种基于词嵌入和Shapelet时序特征的智能合约漏洞检测方法。首先,获取智能合约操作码,并采用词嵌入技术将其编码,获得操作码的语义向量特征表示;其次,将编码后得到的操作码序列,应用时序分析方法Shapelet-Transform获取智能合约操作码的Shapelet时序特征;最后,结合机器学习分类技术构建了漏洞检测模型。实验表明:二分类模型的准确度为82.15%,比FastText方法高19.40%,比TextCNN方法高5.92%;多分类模型的准确度为84.95%,比FastText方法高12.04%,比TextCNN方法高8.18%。该模型可以实现智能合约特征码时序特征的自主学习,在具备较高精确度的前提下,同时提供了可解释性漏洞检测依据。