← 最新论文
💻 computer science

Malicious Code Detection in Smart Contracts via Opcode Vectorization

本文提出了一种基于机器学习的方法,通过对操作码进行分类和简化来检测智能合约中的恶意代码,并比较了 N-Gram 和 TF-IDF 向量化方法在原始操作码与处理后操作码上的有效性,以优化用于分类器训练的特征提取。

原作者: Huanhuan Zou, Zongwei Li, Xiaoqi Li

发布于 2026-02-03
📖 1 分钟阅读☕ 轻松阅读

原作者: Huanhuan Zou, Zongwei Li, Xiaoqi Li

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

把区块链想象成一个巨大的、公开的数字账本,人们在上面编写“智能合约”。请不要把这些合约看作法律文件,而要将它们视为自动运行的自动售货机。你投入金钱,机器检查规则,如果一切正确,它就会给你零食。如果机器内部的代码损坏或设有隐藏陷阱(恶意代码),你可能会损失金钱,或者机器可能会完全崩溃。

这篇论文就像是一群安全警卫,试图弄清楚如何在有人受伤之前,识别出损坏或被操纵的自动售货机。以下是他们尝试实现这一目标的方法,用通俗易懂的方式进行了解释:

1. 问题所在:过多的语言

智能合约是用代码编写的,但区块链并不阅读人类编写的“英语”版本(源代码)。它只理解一种非常特定的、机器人式的语言,叫做操作码(Opcodes)

  • 类比: 想象合约是一份食谱。人类阅读的是英文版的食谱(“加入两杯面粉”)。然而,区块链只理解一系列化学指令(“将成分 A 与成分 B 混合”)。
  • 问题: 有数百种这样的化学指令。如果你只是随机地列出它们,计算机很难分辨出一份安全的食谱和一份有毒的食谱之间的区别。

2. 解决方案:分组与计数

作者决定教计算机如何通过将这些机器人指令转化为一个简单的数字列表(向量)来阅读它们。他们分三步完成了这项工作:

  • 步骤 A:指令分组(简化)
    与其将每一个指令都视为独特的,不如将相似的指令归为一类。

    • 类比: 假设你有 32 种不同类型的“按下”(Push)按钮(Push1, Push2... Push32)。与其记住 32 个不同的按钮,作者决定直接把它们都统称为“按下”。他们对其他组(如“跳转/Jump”或“数学/Math”)也采取了同样的操作。这样做减少了噪音,使列表变得更短、更容易研究。
  • 步骤 B:观察配对(N-Gram)
    他们不仅观察单个指令,还观察紧挨在一起的指令对

    • 类比: 如果你在食谱中看到“盐”这个词,这很常见。但如果你看到“盐”紧接着出现了“毒药”,那就是一个红旗(警示信号)。他们通过观察这些配对(例如“按下”紧接着“跳转”)来理解合约的流程。
  • 步骤 C:衡量重要性(TF-IDF)
    他们使用了一种数学技巧来确定哪些配对实际上是重要的。

    • 类比: 如果几乎所有安全的食谱都会用到“混合然后倾倒”这一对动作,那么这一对动作就没什么特别之处。但如果某一个特定的指令对只出现在“有毒”的食谱中,那么这一对指令就是一个巨大的线索。他们给那些稀有的、可疑的指令对赋予高分,而给常见的指令对赋予低分。

3. 实验:训练侦探

一旦他们将合约转化为这些数字列表,他们就会将它们输入到五个不同的“侦探”计算机(机器学习模型,如决策树和随机森林)中,以观察它们是否能识别出坏的合约。

  • 结果: 他们尝试了两种方法进行测试。
    1. 方法 1: 仅查看原始指令列表。
    2. 方法 2: 查看简化的配对及其重要性得分(即上述方法)。
  • 结果: 第二种方法(观察配对)对于一个特定的侦探(决策树)来说效果略好,但总体而言,结果褒贬不一。

4. 巨大的障碍:缺乏坏样本

作者面临的最大问题不是数学,而是数据

  • 类比: 想象你正在试图教一只狗识别狼。你给狗看了 500 张绵羊的照片,但你只有 80 张狼的照片
  • 现实情况: 在现实世界中,大多数智能合约是安全的。恶意的合约非常罕见。由于他们只有极少量的“坏”合约可以研究,计算机模型会感到困惑。由于没有足够的“狼”的照片来进行对比,它们无法学会识别“狼”的模式。

5. 未来:建立更大的图书馆

作者总结道,虽然他们将机器人代码转化为数字列表的方法是一个好主意,但他们需要更多的数据来证明其完美运作。

  • 他们下一步计划做什么: 他们想要制造一个机器人(网络爬虫),自动从互联网上收集数以千计的合约,以创建一个更大的图书馆。他们还想尝试使用“无标签”的合约来教计算机(即让计算机自己猜测哪些是坏的),因为寻找这么多已知的“坏”合约实在太难了。

总结:
这篇论文提出了一种巧妙的方法,将智能合约的机器人语言转化为计算机可以轻松比较的格式。他们发现观察指令对是有帮助的,但他们遇到了一个瓶颈,因为世界上可用于训练其系统的“坏”合约样本实在是太少了。在他们的安全警卫能够被完全信任之前,他们还需要更多的数据。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →