区块链安全防护论文翻译:Chen, Weili, et al. "Detecting ponzi schemes on ethereum: Towards healthier blockchain technology." Proceedings of the 2018 World Wide Web Conference. 2018.
区块链技术变得越来越流行,同时它还也引来了一些骗局,例如,典型的庞氏骗局被发现在区块链上赚了大钱,这具有非常负面的影响。为了帮助解决这个问题,本文提出了一种利用数据挖掘和机器学习方法检测区块链上的庞氏骗局的方法。通过在以太坊上验证智能合约,我们首先从智能合约的用户账户和操作代码中提取特征,然后构建一个分类模型来检测作为智能合约实现的潜在庞氏骗局。实验结果表明,所提出的方法可以达到较高的实际使用精度。更重要的是,该方法甚至在其创建之时也可用于检测庞氏骗局。通过使用所提出的方法,我们估计有超过 400 个庞氏骗局在以太坊上运行。基于这些结果,我们建立了一个统一的平台来评估和监控每个创建的智能合约,以对欺诈进行早期预警。
比特币的创建使匿名参与者之间的价值转移成为可能,而无需依赖权威的第三方[27]。比特币结合了许多成熟的技术,例如数字签名方案,工作量证明机制,分布式技术等等。区块链是比特币的重要组成部分,是由点对点网络通过分布式共识机制维护的不断增长的价值转移交易记录列表。区块链现在是学术界和工业界的一个热点 [36, 43]。比特币及其衍生的区块链技术通常被称为下一代互联网 [9],因为与传统的信息互联网相比,它们创造了价值互联网。已经创建了许多基于区块链的项目。以太坊是一个基于开源区块链的分布式平台。以太坊对应的代币称为以太币。以太坊提供了一个图灵完备的虚拟机来执行智能对比。智能合约是相互不信任的参与者之间的计算机协议,当满足预设条件时,它会自动在区块链上执行 [4, 37]。智能合约的执行不能被终止,也不依赖于受信任的权威。智能合约可以应用于各种领域 [7, 15, 30]。支持智能合约的区块链平台被认为是第二代区块链[9]。
任何新技术都容易被骗局利用。例如,电子邮件的兴起会产生大量垃圾邮件。区块链作为一种新兴技术,由于缺乏监管和匿名特性,也吸引了许多骗局。庞氏骗局,一种以近 100 年前臭名昭著的欺诈者命名的经典欺诈,也有其基于区块链的形式 [3, 38]。庞氏骗局是一种欺诈性投资操作,运营商通过新投资者支付的收入,而不是合法的商业活动或金融交易的利润,为老投资者创造回报 [39]。在庞氏骗局中,许多参与者,尤其是那些后验者,将损失大部分投资资金。显然,庞氏骗局损害了经济,在许多国家被禁止。据报道,各种各样的庞氏骗局正在使想参加区块链技术但不了解其工作原理的人大赚一笔[16,25,35]。最近的一项研究估计,2013年9月2日至2014年9月9日,比特币诈骗已筹集了超过700万美元[38]。
如今,许多庞氏骗局把自己伪装成了智能合约的面纱[3]。我们将这些庞氏方案称为智能庞氏方案和相应的智能合约庞氏方案合约。由于参与者对持续还款的信心是庞氏骗局成功运作的关键因素,智能合约似乎是庞氏骗局的一个有吸引力的工具,因为它是自动执行的,不能在区块链上终止。更重要的是,发起人保持匿名。图1显示了典型的智能庞氏骗局的宣传图片。宣传语如下:“你好!我叫鲁比西!我是以太坊区块链上新的和经验证的金字塔智能合约。当你寄给我1etrh时,我会将数量乘以,当余额足够时再寄回你的地址。我的乘数是动态的(最小值x1.2,最大值x3),因此我的支出在未来几个月会加速并得到保证”正如宣传的那样,智能合约相对盈利,回报似乎很快就会到来。然而,真正的支付方式却远未被描述。通过手工检查合同交易,我们发现合同中有112个参与者,但只有22个参与者从合同中获利。两个最幸运的参与者获得了超过40%的利润,而创造者就是其中之一。显然,这份合同伤害了大多数其他参与者。
上面介绍的例子形象地表明,检测基于区块链的庞氏骗局是一项紧迫的任务。尽管一些用户在参与庞氏骗局时完全意识到可能的损失 [24, 29],但检测潜在的庞氏骗局仍然是一个挑战,因为
1) 用户和投资者对区块链的理解不足,更不用说背后的欺诈骗局了;
2)对于国家当局和监管机构来说,区块链技术非常新,不知何故处于法律制度的灰色地带[12]。因此,为了使区块链相关市场健康合法,开发检测基于区块链的庞氏骗局的技术不仅紧迫而且至关重要。检测基于区块链的庞氏骗局并非易事,因为区块链的用户本质上是匿名的。鉴于智能合约是由代码组成的,因此可以通过查看其源代码来手动检查智能合约是否为庞氏骗局。然而,更糟糕的是,智能合约的源代码可能被隐藏了。事实上,在以太坊区块链上实现智能合约只需要字节码。现在有超过一百万个智能合约在以太坊上运行,但只有不到四千个拥有源代码。这意味着不仅创建者而且潜在的智能庞氏骗局的逻辑都被隐藏了。这引发了许多问题:以太坊上存在多少个的庞氏骗局智能合约?有哪些类型的庞氏骗局智能合约?他们的特点是什么?庞氏骗局智能合约的影响有多大?在回答这些问题之前,首先要回答的也是最重要的问题是:如何在没有源代码的情况下检测庞氏骗局智能合约?
该论文的一个关键贡献是在其创建时对检测智能庞氏骗局的可行性进行了实验验证。 因为我们从操作代码中提取了代码特征,在合约部署后可以公开访问。 这个结果意义重大,因为通过使用该模型,我们可以:1)即使源代码是有意隐藏的,也能检测到智能庞氏骗局; 2) 在智能庞氏骗局造成任何损害之前对其进行检测; 3)在此基础上搭建了一个风险预警平台。本文的其余部分组织如下。 第 2 节简要介绍了 Etherem 平台和一些关键概念。 第 3 节详细描述了数据、提取的特征和分类模型。第 4 节总结了实验结果和分析。最后,我们总结了第 5 节的相关工作,并在第 6 节总结了论文。
如上所述,智能合约通常是用高级语言编写的。Solidity是一种面向对象的高级语言,其语法类似于JavaScript。Solidity是运行在EVM上的以太坊平台中的一种重要语言。为了理解如何从源代码中识别智能庞氏骗局,我们提供了一个用solidity编写的简化智能合约(表1)。代码片段是从Rubixi中提取出来的,只留下关键代码来理解为什么它是一个智能庞氏骗局。一般来说,智能合约由两部分组成:函数和数据。函数可以由来自其他帐户或合同的事务或消息调用。在函数执行期间,可以更新该合约的数据。表1第2行到第11行的代码是数据定义,用于描述合同的当前状态。例如,balance记录智能合约的当前余额,结构体Participant记录投资者的地址和付款。第14行中的函数Rubixi是一个构造函数,在创建合约时只运行一次。第17行中没有名称的函数只包含对addPayout的函数调用,称为fallback函数。当帐户向合约发送eth且没有发送数据时执行。因此,当参与者向合同投资时,将触发第19行中定义的函数addPayout。这个函数是合同的关键,因为它实现了庞氏骗局的主要逻辑:1)记录投资者的地址和付款(第21-22行);2) 计算“小费”(第28行);(3)在余额足够时支付给以前的投资者(第29-34行)。
请注意,传播的高利润(见图 1)由变量 pyramidMultiplier 控制,该变量首先设置为 300(第 6 行),然后从第 10 个参与者减少到 200(第 23 行),从第 10 个参与者减少到 150(第 25 行)第 25 位参与者。显然,为了吸引早期参与者,合约所有者承诺为他们提供更高的利润。值得一提的是,对于参与者承诺的利润,应该将 pyramidMultiplier 设置为 100 以上。从参与者那里收取费用是经营庞氏骗局的主要目的。 从代码片段中可以清楚地看到Rubixi收取每笔投资10%的费用,并通过在第37行中调用函数collectAllFees收取费用。从第29行到第34行的while循环试图通过其投资向所有先前的参与者付款 下单直到余额不够。 这段代码清晰的展示了合约支付的逻辑,显然可以识别为庞氏骗局。 这些交易是公开可用的,可以使用提供的 API 从 ethereum.io下载。
2.3部署合约如上所述,以太坊合约是驻留在以太坊区块链中的一系列“以太坊虚拟机代码”或“EVM代码”。我们称之为合约的字节码。为了方便地编写智能合约,使用了一种高级语言(如Solidity语言)。因此,要部署合约,首先要做的是将源代码编译成EVM字节码。EVM字节码由一系列字节组成。每个字节都是一个操作。为了便于人们阅读,每个操作都对应一个助记符形式。例如,EVM字节码0x10的助记符形式是LT,这意味着小于比较。我们把LT和EVM字节码的这种助记符形式称为操作码。
以太坊黄皮书的附录[40]包含了EVM字节码及其助记形式(即操作码)的完整列表。反汇编程序5可用于从字节码获取协定的操作码。操作码由一系列操作码和操作数组成。例如,Rubixi中操作码的前5行是:PUSH1 0x60; PUSH1 0x40; MSTORE; CALLDATASIZE; ISZERO. PUSH1。PUSH1是一个操作码,0x40是一个操作数。为了使合约可以从其他帐户调用,智能合约的字节码应该部署在以太坊主网络中。以零帐户(地址为0的帐户)为目标的特殊事务将创建新合约。合同的字节码作为该交易的有效载荷提供并将被执行;结果将存储在新合同账户的代码字段中,并永久记录在区块链上,直到合同被创建者终止。新合同的地址将返回给创建者,然后可以与其他人共享。
3数据,特征提取和分类模型
为了建立一个有效的模型来检测智能庞氏骗局,从网站 http://etherscan.io 收集了 1382 个经过验证的智能合约。之前的一项研究报告 [3] 这些智能合约是经过人工检查的,以检查它是否是智能庞氏骗局。我们重新检查结果并将它们整理为我们模型中的真实数据。具体而言,共收集到 131 份庞氏骗局合约和 1251 份非庞氏骗局合约。为了建立模型,我们下载了相应的数据并从数据中提取了两类特征。本节概述了数据和功能。还介绍了特征提取方法。
3.1 数据
从图 2 中可以看出,我们收集了包括交易和源代码在内的两种数据。交易数据以 JSON 文件的形式包含普通交易和触发交易。所有这些数据都是通过 etherscan.io6 提供的 API 收集的。请访问我们的网站7了解更多详细信息。值得注意的是,由于ethescan.io的限制,只能下载最近10000笔交易。然而,这个限制对我们的研究影响很小,被忽略了。合同的源代码对于检测其功能非常重要。然而,开源代码不是强制性的,尽管建议在以太坊平台上进行公开检查。为了建立一个可用于检测潜在的智能庞氏骗局的实用模型,我们只依赖字节码,它对任何合约都是公开可用的。我们首先通过使用以太坊本地客户端编译源代码来获取字节码。然后使用反汇编工具获取操作码。最后,我们提取所有操作码并计算它们在合约中的频率。
3.2 账户特征
由于欺诈行为,庞氏骗局与普通组织相比有几个独特的特点。庞氏合约至少有三个特点:1)这些合约一旦投资到该合约,通常会向账户发送 Ether; 2)有些账户收到的付款次数比投资次数多,例如,经常从合约中收取费用的创作者; 3) 合约余额可能较低,因为庞氏骗局总是试图保持快速和高回报的形象。庞氏骗局的内在特征决定了它的行为,可以用来判断它是否是庞氏骗局。合约的以太流很好地代表了这种行为。为了显示行为特征,我们介绍了合约的以太流程图,并通过使用相应的交易进行绘制。与常用的现金流图不同,以太流图用于显示合约与其参与者之间的交易。交易有两个方向:参与者从合约发送或接收以太币。我们将第一个方向表示为投资交易,第二个表示为参与者的支付交易。图中红色圆圈表示投资,绿色表示支付交易。 x 轴代表时间线,而 y 轴代表个体参与者。通过阅读图表,我们可以很容易地看到每个参与者沿着时间线参与的交易。交易中相应的以太币金额由圆圈或三角形的大小反映。合约和参与者之间的交易按照交易时间戳的顺序排列在一条水平线上。参与者按他们与合约的第一笔交易的时间戳排序。因此,第 0 个参与者通常是合约的创建者。一般而言,在正常的经济活动中,投资交易之后应该是支付交易,但在智能庞氏骗局中则不然。
图 3 和图 4 显示了两个合约的以太流图:Rubixi 和 LooneyLottery。 Rubixi 是典型的智能庞氏骗局,LooneyLottery是普通的彩票游戏智能合约。 Rubixi 合约的 Ether 流程图(图 3)显示,合约的创建者及其早期参与者是游戏的赢家。合同涉及近 120 名参与者,但大部分付款与前 25 名幸运参与者有关。值得注意的是,第 54 位参与者存在异常行为(在图中显示为灰色虚线),因为他或她只发送了两次但多次收到付款。出现这种异常行为是因为源代码中存在可用于更改合约所有者并收取费用的错误 [2]。两个图之间可以发现一个显着的差异:图 3 包含更多的参与者,但与图 4 相比,许多参与者与合约的交互较少。 从支付角度来看,每个合约的支付相对较少,但大部分支付在图 3 属于前参与者,但图 4 中的付款表现出更多的随机性。这些差异可以很容易地通过合约的功能推导出来。因此,反过来,帐户行为可用于对智能合约进行分类。
通过查看Rubixi的Ether流程图,我们可以发现:1)支付交易通常发生在投资交易之后,这表明合约通常支付给已知账户; 2)很多投资交易没有跟随支付交易; 3)部分参与者的支付交易多于投资交易。基于这些观察和特征:我们提取合同中的七个关键特征如下:
• Known rate已知率(Kr):每次合约进行付款前已投资的接收方比例。高 Kr 意味着合约与已知账户的交互更多。我们认为智能庞氏骗局的 Kr 非常高。
• 余额(Bal):智能合约的余额。
• N_investment (N_Inv) :投资数量。
• N_payment (N_pay) :付款次数。
• 差异指数(D_ind):该指数用于衡量合约中所有参与者的支付和投资之间的计数差异。假设有 p 个参与者属于该合约,v 是一个向量,长度为 p,mi,ni 表示第 i 个参与者的投资和获得支付次数。为了计算差异指数,向量 v 的每个元素首先通过 v[i] = ni − mi 计算,然后:
其中 s 是 向量v 的偏度。对于智能庞氏骗局合约,D_ind 通常为负数,因为许多参与者投资更多而收到的更少。
• 支付率(Pr):至少收到一笔付款的投资者比例。
• N_maxpay (N_max):支付给参与者的最大计数。表 1 显示了提取特征的三个统计数据:均值、中值和标准差 (Sd)。该表包含两部分:上半部分是所有庞氏骗局合约的结果,下半部分是非庞氏骗局合约。
从表中可以清楚地看出,庞氏骗局合约和非庞氏骗局合约的统计数据有很大的不同。例如,庞氏骗局合约的已知利率 (Kr) 的中位数为 1,但非庞氏骗局合约仅为 0.5。庞氏骗局合约的高Kr表明,很多合约都支付给曾经投资过的人,这是庞氏骗局合约的一个显着特征。至于余额(Bal),两种方案的中位数差异很小,但标准差(Sd)的差异非常大。庞氏骗局合约的低标准差表明许多合约的余额相对较低。另一方面,非庞氏骗局合约的高标准差表明一些合约的余额非常大。同时,由于非庞氏骗局合约的中位数仅为0.1,这意味着一半的非庞氏骗局合约的余额小于0.1。事实上,许多非庞氏骗局合约的余额为零。
3.3 代码特点
操作码成功地分析了智能合约的潜在问题,因为它从以太坊虚拟机(EVM)的角度反映了智能合约的逻辑[2, 6]。我们期望从操作码中提取的特征可用于检测潜在的智能庞氏骗局。我们提取了所有操作码并计算了它们的频率。在 1382 个合约的操作码中可以找到 64 种不同的操作码。
图 5 显示了上述两个智能合约中操作码的云图。三个最常用的操作码,PUSH、DUP 和 SWAP 被删除,以使图形更容易看到。这是因为 EVM 是基于堆栈的,这些操作码经常出现在每个合约中。虽然仅通过观察操作码的云图无法识别智能合约的类型,但很容易看出两个智能合约有明显的不同。直观上,至少有两个显着差异:Rubixi 包含更多的判断,而 LooneyLottery 包含更多的随机性。实际上,从图中可以清楚地看出第一个差异,Rubixi 合约包含相对更多的 JUMPI(7.8%),而 LooneyLottery 合约包含更多的 JUMP(2.6%)。这两个操作码的区别在于前者是后者的条件版本。检测第二个差异需要更多的观察。 LooneyLottery 合约包含 4 个时间戳,而 Rubixi 不包含任何时间戳。原因是操作码 TIMESTAMP 用于获取块的时间戳,这是系统常用的随机变量。以上分析表明操作码特征在检测庞氏骗局合约方面可能是可行的.
为了以高精度和低误报将庞氏骗局合约与其他智能合约区分开来,我们使用 XGBoost,它是最流行的机器学习算法之一,并在许多问题中被证明是一种很好的方法 [5]。本小节简单介绍了 XGBoost 及其参数。 XGBoost 是“Extreme Gradient Boosting”的缩写,是梯度树提升 [13] 的改进版本。与 GBM 不同,XGBoost 引入了两个重要的改进:正则化和树修剪。基本上,XGBoost 在目标函数中提供了正则化,用于避免基于树的模型中的过度拟合。同时,它将树修剪方法从遇到负损失时停止到后修剪。具体来说,假设数据集中有 N 个智能合约 {(xi ,yi) |i = 1, 2, 。 . . , N},其中 xi ∈ R d 是提取的与第 i个 智能合约相关的d维的特征,yi ∈ {0, 1} 是分类标签,使得 yi = 1 当且仅当智能合约是经过验证的庞氏骗局计划合同。我们使用 XGBoost 旨在最小化以下目标函数:
其中L是训练损失函数,Ω 是regulation term。训练损失函数衡量模型对训练数据的预测能力,调节项惩罚模型的复杂性,这有助于避免过度拟合。与传统的直接返回分类标签的分类模型不同,本文提出了一种二元分类的logistic回归模型。任何预测概率大于0.5的合同都被认为是庞氏骗局合同。相应的 logistic损失函数如下:
至于regulation term,首先要做的是重新定义一棵树,方便衡量复杂度。 具体来说,在 XGBoost 中,树是将实例映射到叶子权重的函数。
其中ω是树的叶子权重,T是叶子的数量,q代表树结构。 树的复杂度定义为
其中 γ 和 λ 是模型的参数。 为了集成树,目标函数重写如下:
K是树的数量。 对于学习过程,XGBoost 引入了加法训练,从不断预测开始,每次添加新函数如下:
通过应用上述方程,目标函数可以写为
XGBoost 旨在找到最佳 ft 以在每一步最小化此函数。 为了生长树,它尝试添加一个特征的最佳分割,使每个叶节点的增益最大化。 XGBoost 采用后剪枝方法,将一棵树生长到最大深度,然后以负增益递归剪枝所有叶子分裂。
4 实验结果和特征分析
在本节中,我们展示了我们的实验结果。首先,我们描述了实验设置和评估指标。然后,总结了基于比较两类提取特征的实验。最后,我们分析特征的重要性。
4.1 实验设置数据集。为了比较两类特征的判别力,我们对三种特征进行了实验:账户、操作码及其组合。对于这三个实验,我们首先采用 5 折交叉验证来寻找模型的最佳参数,然后将相应的数据分成 80% 用于训练和 20% 用于测试,并使用找到最佳参数。表 2 总结了平均结果。评估指标。与分类问题中常用的错误率指标不同,我们使用精度、召回率和F-score三个指标来评估模型的性能。下面是一个简单的介绍:
从表中可以得出几个结论。 首先,令我们惊讶的是,帐户功能在检测智能庞氏骗局方面效率不高。 我们预计帐户功能会有良好的表现,因为智能庞氏骗局的行为有所不同。 然而,低召回率表明基于这些特征的模型几乎没有用。 相比之下,操作码功能正如预期的那样非常高效。 这个结果的可能原因可能是许多智能合约是实验性的,这使得很难从行为中检测它们的类型。 事实上,许多智能合约没有交易。 另一个可能的原因是账户特征数量太少。 其次,相应的指标表明仅基于操作码特征的模式可用于检测智能庞氏骗局。 最后,可以通过将操作码特征与帐户特征相结合来提高模型的性能。
4.3 特征分析
为了进一步理解提取特征的判别能力,我们在图 6 中显示了十个最重要的特征。 图中操作码的描述总结在表 3 中。
从图中可以清楚地看出,最显着的特征是GASLIMIT,用于获取区块的gas limit。为了更好地理解为什么 GASLIMIT 是最重要的特征,我们首先计算具有操作码的合约数量,发现庞氏骗局合约中有 57% 的合约具有该操作码,而在非庞氏骗局合约中只有 4%。因此,与其他合约相比,智能庞氏合约更多地指的是区块的 gas 限额。然而,这个结果是违反常识的,因为对于一个智能庞氏骗局来说,获得区块的gas limit是完全没有必要的。为了找到真正的原因,我们选择了一些操作代码中带有GASLIMIT的庞氏骗局合约的源代码。我们希望找出是什么源代码带来了这个。我们发现这些合约因为导入了 oracle API从未导致该操作码的出现频率上升。
另一个值得一提的操作码是CALLER,用于获取调用者地址。这是因为庞氏骗局合约需要记录这些投资者。 其余的操作码中的大多数都与算术运算相关。 一般来说,那些操作码似乎表示一类特殊的合约,它们有更多的支付交易,需要记住调用者并且有很多算术运算。 因此,庞氏骗局合约就属于它。 在十个最重要的特征中,只有一个账户特征(D_ind)被发现。 这并不奇怪,因为差异指数是第 3.2 节中讨论的区分性帐户特征。
4.4 应用
为了估计以太坊上智能庞氏骗局的数量,之前的研究通过使用两个字节码文件之间的相似性来检测隐藏的智能庞氏骗局(没有源代码的庞氏骗局合约)[3]。论文中发现了 54 个隐藏的智能庞氏骗局。为了验证我们模型的可靠性,我们根据代码特征预测了模型的 54 个隐藏合约。结果显示,54 个(83%)合约中有 45 个是智能庞氏骗局。为了理解为什么剩下的 9 个合约未能被我们的模型检测为庞氏骗局合约,我们手动检查了它们的所有交易。调查结果如下:
• 两个合同(00xb56e95aea830b0242be6a5d0239ed7f71408563b和0x0abce3be0075d067e12da8d266de752e20ff9842)实际上有源代码。他们指的是 github 上的同一个项目。通过阅读介绍页面和查看源代码,可以发现它不是一个庞氏骗局智能合约,而是一种游戏。我们的模型成功地排除了它。
• 合约(0x79280ded572a0a7dfd31dfcc5baef3121ef0fee6) 只与创建者交互。虽然我们不能说它不是一个庞氏骗局合约,但从交易记录来看,它更像是一个测试交易合约。另一个合约 13 有 5 笔成功交易,但只有一次支付到一个陌生地址,可能不是智能庞氏骗局,因为余额相对较大,交易模式不符合 [3] 中总结的任何一种智能庞氏骗局。
• 一个只有一笔金额大于 0 的交易(包括正常交易和触发交易)且所有触发交易都是来自未知账户的函数调用的合约 (0x0d5919572552c6c8c752aa402bd033f2b2886bbc),不能成为智能庞氏骗局合约。类似的情况可以在另一份合同中找到(0xa820487e57656771b21ab533cb99e8d347aa20ef)。
• 两份合同(0x5158cf97c3e001b402ccb0f9063736ee8d6dad5a 和 0xf52ecc525d998eb880911a268b0fa4bc7d69a435) 的付款顺序很奇怪。参与者很少,但前面的参与者比后面的参与者更晚收到付款,这表明他们可能不是庞氏骗局智能合约。
• 最后一个合约(70xa1c1983aa3599657a74cf5a563e880eedc57ae4f),与智能庞氏骗局的行为类似,但支付比投资多,因此很难得出结论。这些发现表明,与字节码相似性相比,我们的模型在检测智能庞氏骗局方面更准确。为了估计以太坊上有多少智能庞氏骗局,我们首先下载了 2017 年 5 月 7 日之前创建的所有合约(与 [3] 中的日期范围相同)。共获得280704份合约。然后我们提取这些智能合约的所有操作码特征并用我们的模型进行预测。该模型发现了 386 个智能庞氏骗局(包括这些已验证的)。因此估计在 2017 年 5 月 7 日前在以太坊平台上运行的智能庞氏骗局将近 434 个(386×精度/召回),占所有合约的 0.15%。图 7 显示了检测到的智能庞氏骗局的计数以及相应的分数(概率)。从图中可以清楚地看出,被检测到的智能庞氏骗局的得分相对较高,说明庞氏骗局的问题比估计的更严重。事实上,最近的研究报告中只有 191 个智能庞氏骗局 [3],远远少于这里估计的数量。
5 相关工作
自比特币诞生以来,区块链技术成为研究热点。在文献中可以找到三种类型的研究。第一种类型侧重于底层机制。提出了许多共识机制,例如权益证明 (PoS) [17]、实用拜占庭容错 (PBFT) [14, 21] 和涟漪 [34]。此外,一些研究侧重于改进现有机制[11]。第二类讨论区块链技术的应用。由于区块链技术具有许多有利的特性,因此可以在金融服务[20, 31]、物联网(IoT)[7, 10]和社会服务[28]中找到许多应用。最后但最相关的工作类型是区块链上的数据挖掘。由于具有公共可访问性,区块链为数据分析提供了前所未有的机会来回答各种问题,例如使用特征 [22, 33, 41] ,匿名性 [1, 32] 和经济行为分析 [18, 19]。更多信息可以在服务 [44] 中找到。随着互联网的发展,在线“高收益”投资计划(HYIP)成为庞氏骗局的典型形式。使用从 HYIP 网站收集的数据对其经济方面进行了初步分析 [24]。在 [29] 中进行了更详细的研究,其中建立了一个模型来估计 HYIP 的营业额和利润。两篇论文都关注使用中心化虚拟货币的 HYIP。区块链技术的创建使加密货币成为诈骗者的理想货币。在区块链中,账本记录每一笔交易,这些交易可以公开访问。因此,研究人员可以获得有价值的数据来调查区块链上的骗局。在不同的骗局中,比特币是最引人注目的[8, 23, 26]。 Marie Vasek 和 Tyler Moore 对基于比特币的骗局进行了实证分析 [38]。他们发现了 32 个 HYIP,估计涉及超过 400 万美元。最近的一项研究侧重于智能庞氏骗局的经济方面 [3],他们使用归一化的 Levenshtein 距离 [42] 作为字节码之间相似性的度量来检测隐藏的智能庞氏骗局。与他们的研究不同,本文的重点是寻找一种可验证的方法来检测字节码中的智能庞氏骗局。
6 结论和未来工作
基于区块链和加密货币的金融诈骗已成为一个重要的研究问题。随着区块链技术的发展,庞氏骗局现在处于智能合约的面纱之下。在这项研究中,我们提出了一种检测智能庞氏骗局的方法。使用人工检查的样本和XGBoost,构建基于提取的账户特征和代码特征的回归树模型。实验结果表明,所提出的模型具有较高的准确性,可用于实际检测潜在的智能庞氏骗局。最重要的结果是,使用我们提取的在任何正在运行的合约中可公开访问的代码特征,就足以构建一个实用模型,用于在创建庞氏骗局合约时对其进行检测。此外,我们估计以太坊上有超过 400 个智能庞氏骗局,远远超过之前的估计。今后,我们将从三个方面进一步研究。首先,扩展ground truth数据,改进分类模型。随着拥有源代码的智能合约数量每天不断增加,可以通过手动检查源代码来扩展真实数据。有了更多的真实数据,就可以开发出更准确可信的模型。其次,建立一个统一的平台,为每一个可能的骗局对每一个智能合约进行评估和评分。我们注意到 Github 上有一个开源项目来跟踪当前所有的以太坊骗局18。但是,该网站通过手动用户报告收集数据并将它们组合在一起。我们正在尝试建立一个类似的网站,专注于通过数据挖掘方法检测智能合约。第三,研究其他类型的骗局。除了智能庞氏骗局,许多其他骗局都在利用区块链技术。有必要研究这个问题来推动区块链技术的发展