原创 区块链以太坊上剖析庞氏骗局数据集:不同的角度分析

2019-11-28 14:41 178 1 3 分类: 机器人/ AI 文集: 人工智能
本文是对以太坊中庞氏骗局的第一次全面调查,这是目前智能合约最突出的平台。我们构建了庞氏骗局的数据集,并从不同的角度对它们进行了分析。更具体地说,我们的贡献可归纳如下:

  • 确定智能合约何时实施庞氏骗局的一套标准。我们的标准只考虑合同实施的收集和分配资金的逻辑,而忽略了外部因素,例如,广告或游戏化方案的方式。
  • 部署在以太坊上的庞氏方案的公共数据集(goo.gl/CvdxBp),与我们的分类标准一致,通过检查合同的源代码来构建数据集。我们从区块链探索者可获得源代码的合同开始,在其中找到138个庞氏骗局。我们通过在区块链中搜索其字节码与已经归类为庞氏的合同非常相似的合同,将此集合扩展为184个方案。通过手动检查反编译代码来排除误报。
  • 一个开源工具(github.com/blockchain-unica/ethereum-ponzi),它从以太坊区块链中提取我们数据集中庞氏骗局的所有交易,记录货币的所有传入和传出运动,并计算所呈现的分析在本文中。
  • 分析我们馆藏合同的源代码。我们发现大多数合同都有一些共同的模式,其中很多都是通过现有模式的微小变化获得的。我们设计了庞氏骗局的粗略分类法,根据用于重新分配支出的模式对它们进行分类。我们表明,每个类别的计划都无法实现公平的资金分配。此外,我们发现分析合同中存在若干安全漏洞,可能被对手利用来窃取资金。
  • 衡量庞氏骗局的经济影响,量化通过它们交换的总价值。
  • 衡量庞氏骗局用户收益和损失的指标。我们专注于顶部10方案(具有最多交易数量的方案),具有最有趣的特征(用户数量,交易数量或交换的以太网)。在大多数情况下,我们观察到庞氏骗局的典型模式:少数用户获得了很多,而大多数用户只是亏钱。
  • 分析不同观点下庞氏骗局的时间行为。首先,我们研究庞氏骗局的生命周期,这是预测计划何时崩溃的重要指标。然后,我们分析合同流入和流出之间的相关性。最后,我们衡量每月的交易量。
  • 衡量计划之间支付不平等程度的指标。该指标可以揭示诈骗者如何选择受害者:公平分配支付意味着该计划由大量支付少量资金的受害者提供;相反,不平等的分配通常意味着该计划从少量投入大量资金的“大鱼”中获利。
  • 用户可以遵循的一套指导方针,以保护自己免受庞氏骗局的影响。

庞氏骗局是金融欺诈行为,在高利润的承诺下吸引用户。实际上,用户只能通过加入该计划的新用户的投资来偿还:因此,庞氏骗局在用户停止加入后很快就会崩溃。庞西计划起源于150年前的离线世界,从那时起迁移到数字世界,首先接近网络,最近一直悬于像比特币这样的加密货币。像以太坊这样的智能合约平台为诈骗者提供了一个新的机会,他们现在有可能制造“值得信赖的”欺诈手段,但仍然会让用户赔钱,但至少可以保证“正确”执行。我们对以太坊的庞氏骗局进行全面调查,从各种观点分析他们的行为及其影响。

23.3技术介绍

为了构建庞氏骗局的数据集,我们首先检索在以太坊区块链上发布的合约的Solidity代码。由于区块链只存储EVM字节码,为此我们依赖区块链浏览器Etherscan,它允许开发人员上传合同的Solidity代码,并验证他们的编译是否与区块链上的EVM代码相匹配。

通过手动检查这些合同的Solidity代码,我们检测到138个满足图2中所有要求的合同,因此可以归类为庞氏方案。由于此样本中的所有合同都相对较小(<120LOC,包括评论),手动检查准确到足以检查要求。作为进一步检查,对于所有这些合同,我们研究了他们用来重新分配资金的模式,这是我们在之后分类的基础。为了保持安全(即避免误报),我们没有在这个集合中包含那些过于复杂而无法确定是否满足要求的合同。

在以太坊上剖析庞氏骗局:识别,分析和影响

表23-1 按投入的以太数量计算的前十名庞氏骗局计划。

我们执行第二个搜索阶段以扩大我们的收藏。更具体地说,我们在以太坊区块链中搜索其字节码类似于我们的初始集合中确定的一些庞氏方案的合同。这是通过以下步骤完成的:

  1. 我们使用蒙特卡罗算法来估计以太坊区块链上两个任意 EVM合约之间的归一化Levenshtein距离(NLD)。全国民主联盟是两个字符串之间相似性的标准衡量标准。两个字符串之间的非标准化 Levenshtein距离测量一个人必须改变以改变第二个字符串中的第一个字符串的字符数(例如,“Ponzi”和“Banzai”之间的距离是3)。的归一化版本是一个度量,并且它的值是在0(完全平等)和1(完全不平等)范围内的实数。在这些计算之后,我们估计从区块链下载的两个任意EVM合同之间的NLD为0.79。
  2. 我们计算初始样本中的合同与以太坊区块链上的所有合同之间的全国民主联盟。我们认为,作为潜在的庞氏骗局,任何与我们样本中某些合同的全国民主联盟低于0.35的合同。两个值0.35和0.79相距很远,以确保误报率低,即初始样本的NLD低于0.35的合同,但它们不是庞氏骗局。此搜索产生了0个潜在的新庞氏骗局计划,未包含在我们最初的138份合约中。
  3. 我们将在线Solidity Decompiler 6 应用于第二阶段中找到的0合约的EVM字节码,并且我们手动将获得的Solidity代码与第一阶段中找到的相应Ponzi方案的代码进行比较。在46个案例中,我们发现合同代码之间存在实质性匹配,因此我们将这些合同添加到我们的集合中。

总之,我们最终得到了184个庞氏方案的数据集,我们在goo.gl/CvdxBp上提供了这个数据集(如表1)。我们强调,我们的集合并没有包括已多年来发表了复仇的所有庞氏骗局。例如,合约PonziUnlimited 7公然是一个庞氏骗局,但要检测其逻辑是否满足图2的要求并不是立竿见影的,因此我们不会将其包含在我们的收藏中。

在以太坊上剖析庞氏骗局:识别,分析和影响

图23-2 将合同分类为庞氏骗局的标准

对于我们数据集中的每个庞氏方案,我们从以太坊区块链收集其所有交易(包括外部和内部)。更具体地说,对于每个交易,我们记录下列数据:(i)封闭块的编号;(ii)在区块链上公布的日期;(iii)寄件人的地址;(iv)接收人的地址;(v)交易转移的以太币数量;(vi)一个布尔值,记录事务执行是否导致错误;(vii)一个布尔值,指示交易是外部交易还是内部交易。我们为此目的开发的脚本利用了Etherscan Ethereum Developer API,可以在github.com/blockchain-unica/ethereum-ponzi上找到它们。

基于执行的合同源代码的分析,我们设计了庞氏骗局的粗略分类法,根据用于重新分配货币的模式对它们进行分类。我们的分类包括四个类别,其原型代表显示在图23-3,图23-4,图23-5,图23-6中。我们在下面讨论我们的分类法的类别。

树形方案使用树数据结构来引起用户之间的排序。每当用户加入该方案时,她必须将另一个用户指定为邀请者,该用户将成为其父节点。如果未指示邀请者,则父节点将是根节点,即方案的所有者。在大多数方案中,用户选择要投入的金额,并且该金额存在下限。新用户的钱在她的祖先之间分配,其逻辑是最近的祖先,她的份额越大。由于节点的子节点数没有限制,节点拥有的子节点(和后代)越多,它将产生的钱越多。

我们在图23-3展示了这种原型方案。要加入该方案,用户必须发送一些钱,并且必须指明将成为其父节点的邀请者。如果数量太低(行15),或者如果用户已经在场(行16),或者如果邀请者不存在(行17),用户被拒绝; 否则她被插入树中(行19)。一旦用户加入,她的投资将在她的祖先之间共享(行25-29),将每个级别的金额减半。

在这个方案中,用户无法预见她将获得多少:这取决于她能够邀请多少用户,以及他们将投入多少。保证获利的唯一一个是所有者,即树的根节点。对于这种方案的例子是Etheramid和DynamicPyramid。

在以太坊上剖析庞氏骗局:识别,分析和影响

图23-3 一个树形的方案

在以太坊上剖析庞氏骗局:识别,分析和影响

图23-4 链状方案

链状方案是树形方案的一种特殊情况,其中树的每个节点只有一个子节点(因此,用户之间引起的排序是线性的)。此类别中的方案通常将投资乘以预定义的常数因子,该因子对所有用户都是相等的。该计划开始按照到达顺序一次一个地回馈用户,并且全部:收集所有新投资,直到获得到期金额。在那一刻,合同一次性发回支付,然后转移到链中的下一个用户。投资金额可以是固定的,也可以是免费的,或者具有下限。通常,合同所有者保留每笔投资的费用。

我们在图23-4展示了一个典型的链形方案,它使每个用户的投资增加了一倍。要加入该方案,用户将msg.amount ETH发送到合同,从而触发回退功能(行14)。合同要求最低费用1 ETH:如果msg.amount低于此最小值,则拒绝用户(行15); 否则,她的地址被添加到数组(行17),并且数组长度递增。11 合同所有者保留10%的投资(行22)。剩下的资金,合同试图偿还以前的用户。如果余额足以支付索引支付的用户,则合同向用户支付她的投资乘以2(行25)。之后,合同会尝试向下一个用户付款,依此类推,直到余额足够。

在该方案中,如果方案继续运行,用户可以准确地预测她将获得多少; 金额与她投入的金额成正比。这种例子有Doubler,DianaEthereum和ZeroPonzi。

瀑布方案类似于用户订购的链形方案,但对于货币分配的逻辑却不同。每一笔新投资都投入到投资者链中,以便每个投资者都可以分享。由于逻辑是先到先得的,并且分配始终从链的开头开始,因此链中的用户可能永远不会获得任何金钱。

我们在图23-5展示了这种类型的原型方案,其入口收费为1ETH(行19)10%所有者的费用(行24)和支付6%每个回合的用户投资。支付逻辑从线开始27。如果合同余额足以支付阵列中的第一个用户(位置pos = 0),则合同将发送给该用户6%她的原始投资(行29-30)。之后,合同将尝试支付阵列中的下一个用户,依此类推,直到余额用完为止。在随后的投资中,阵列再次迭代,仍然从第一个用户开始。

为确保所有用户都能收到付款(与要求R3一致),新用户的投资必须与用户数量成比例增长。这种方案的例子是TreasureChest和PiggyBank。

移交计划是链式计划的一个实例,其中入场费由合同确定,并且每当新投资者加入计划时它就会增加。新的投资者的通行费给予全额前一个:因为入口收费越来越多,以前的投资者作出了即时利润。在每个时刻,只有一个投资者正在收钱,一旦她获得报酬,她就会将这一特权交给下一个用户。

在以太坊上剖析庞氏骗局:识别,分析和影响

图23-5 瀑布计划

在以太坊上剖析庞氏骗局:识别,分析和影响

图23-6 移交方案

一个典型的例子如图23-6所示。要加入该方案,用户必须至少向合约发送价格 ETH,从而触发线路的后备功能(行11)。合同将该金额转发给前用户,减去合同中保留的费用(行13)。然后,记录新用户的地址(行14),价格加倍(行15)。合同所有者可以通过调用sweepCommission来撤回其份额。

在移交计划中,在投资时,用户确切知道他们将获得多少收益。然而,由于随着计划的进行收费增加,后来的用户更有可能损失他们的钱(与要求R4一致)。移交计划的范例代表是KingOfTheEtherThrone。

本文由南京大学软件学院2016本科生高毓彬翻译转述.

广告

文章评论 2条评论)

登录后参与讨论

curton 2019-12-3 15:49

学习了

FPFA兔兔爸 2019-11-28 19:58

牛!居然把 以太坊 搞得这么明白!
相关推荐阅读
红旗不倒 2019-12-05 15:22
工业相机与智能相机打灯小技巧、光源的种类和特征
即使观测检测相同的目标物,一旦使用的照明方式改变,观测检测到的画面就会发生惊人的变化。以往经常有即使调整倍率光圈或者更换镜头也无法观测到目标的情况,其实只要稍微变换照明,即可轻松观察。想要熟练使用工业...
红旗不倒 2019-12-04 15:53
国产芯片飞腾了FT-2000A/2,FT-2000+/64,FT-2000/4怎样
国产事业蒸蒸日上之国产芯片最近两年国产芯片发迅速,很大一部分原因是美国要求禁止向违反美国制裁法规与出口管制禁令的通讯企业出售美国芯片或其他部件,这对于许多企业来说是致命的打击;从2008年开始中国芯片...
红旗不倒 2019-12-04 15:44
中国企业家(马云和任正非),这两大高峰为什么那么成功
不知道大家是否还记得,小米科技的雷总曾经开玩笑的说:“马云强大的不得了,是我们中国企业家里最成功的人”。因为很多企业的老板都在赚着辛苦钱,而马云不一样,靠服务器就可以赚钱,当我们都在睡觉的时候,他依然...
红旗不倒 2019-12-04 15:31
比特币和加密货币Altcoins为什么很值得研究分析
比特币已成为历史上最成功的加密货币。在20031年安静发布后的两年内,尽管只是粗略地分析了系统的设计,但比特币的经济价值仍高达数十亿美元。从那时起,越来越多的文献论证了该系统的属性,发现了对其的攻击行...
红旗不倒 2019-12-04 15:25
ETHIR: 以太坊字节码高层次分析框架,相关方法和工具
创建分布式一致性的方法已经产生了一系列用于构建复制事务日志(区块链)的分布式协议。这些技术进步使得分散加密货币的诞生成为可能,比如比特币。比特币最著名的实现之一Ethereum在复制分布式存储中加入了...
红旗不倒 2019-12-04 15:20
区块链的分散应用程序(DApp)的自动化测试
随着基于区块链的分散式应用(DApp)最近越来越受欢迎,我们迫切需要有效的测试方案和工具。由于应用程序与区块链的交互引入的复杂性,现有的测试方法变得不适用。在本文中,我们提出了一个名为Sungarit...
广告
我要评论
2
1
广告
关闭 热点推荐上一条 /1 下一条