以太坊的“黑暗中的掠夺者”

释放双眼,带上耳机,听听看~!
以太坊的黑暗森林怪物并不是开玩笑的。这些Frontrunning的机器人可以分析它们从未在智能合约中使用过的智能合约调用和功能,以获取潜在利润。

作者:Alex menuskin

以太坊的黑暗森林怪物不是玩笑。这些前端运行的机器人可以分析智能合约中从未使用过的智能合约调用和功能,以获取潜在利润。

鉴于人们对这些机器人普遍缺乏了解,我们开始了一次狩猎之旅,以进一步了解这种情况,看看它们有多普遍。我们设法“捕获”了一些常见的前端机器人,并分析了它们的行为。我们研究了他们的效率和他们的贸易被“猎杀”的可能性。我们还测试了不同的方法来避免它们。

什么是前台?

通常,frontrunning是在已知未来事务发生之前获取执行队列中事务的第一个操作。

前台运行的一个简单例子是交易所竞价。假设有人打算在uniswap上购买大量eth,这足以推高eth的价格。从这种情况中获益的一个方法是在购买大量eth之前进行交易,同时保持较低的价格。然后,在价格飙升之后,eth的销售获得了利润。

除此套利示例外,前台运行在许多其他交易中也很有价值,包括清算、购买稀有NFT或简单的用户错误。从事务中提取值的顺序称为MeV。

在以太坊上,前台运行是通过在事务中提供略高的事务费来实现的,这鼓励矿工在构建块时更早地进行排序,并首先执行更高的支付事务。因此,如果从同一个合约调用中获利的两个交易放在同一个块中,则只有第一个交易获利。

行为学

丹·罗宾逊和乔治奥斯·康斯坦托普洛斯在eth的一篇博客文章《黑暗森林》中描述了一次试图抢跑的尝试,12000美元落入了一个复杂的捕食者手中。捕食者非常先进,它可以跟踪以太坊交易池中的任何有价值的交易,并通过前台运行获得利润。

“黑森林”的故事一开始太“恐怖”了,令人难以置信。事实上,我们有理由怀疑这种“食肉动物”的存在。资金如何从大量机器人严密监控的套利平台uniswap中撤出?可能是“常规”套利者吗?

今年早些时候,我们的深入分析证明情况并非如此。这不是普通的机器人。它成功地调用了一个我们知道以前从未调用过的契约函数。尽管在代理合同上出现了混乱,但smart还是被撤销了。

至少可以说,这是相当令人担忧的。监视事务池中任何事务的能力是一种超级强大的武器。令人担忧的是,一些服务已经开始公开提供“暗池”交易层。

“暗池”事务层不使用infra等服务,甚至不使用私有节点,而是直接将事务发送给矿工,并承诺不会将事务传播到网络的其他部分,从而确保事务的安全性不受掠夺者的侵害。

在试图从一份脆弱的合同中榨取960万美元时,Samczun和Co.采用了类似的方法。不难想象,矿工们开始自己使用前线机器人,只为那些支付额外费用的人提供安全通道。

与以太坊的其他元素不同,例如可以在开发环境或测试网络中测试的智能合约,这些机器人只存在于以太坊的主网络上。除了一些初步的实验外,他们还试着测试净交易的财务影响。此外,他们不必像其他人一样遵循同样的规则,因为他们的逻辑是隐藏的。

我们不知道这些前线掠食者什么时候决定进攻。所以,在某种程度上,追踪这些食肉动物就像追逐稀有动物。我们不想把重点放在任何OKEX交易所的领跑者,只是具体和一般的。

为了确保我们捕获的领跑者是“真正的”领跑者,我们需要一个独特的陷阱。陷阱是一个新创建的契约,由一个sha256哈希秘密字符串启动,其中包含一些可用资金。只有提供了秘密,锁定的资金才能提取,资金将直接发送给提取交易的发送方。

这个想法是发送一个“诱饵”交易,提供正确的秘密,看看是否有人试图复制它,然后自己提供秘密,以获得可用的资金。如果有人在诱饵交易之前拿到了钱,这意味着有人可以在交易池中分析交易,复制交易的相关内容,并为自己提供秘密。

有趣的是,他们会提供一个他们以前不知道的秘密,一个他们以前从未见过的合同,来获得这笔钱。

典的领跑者是如何工作的?

这个实验的一个重要部分是了解领跑者是如何工作的。但是,如果有人构建了一台赚钱机器,它可能不会在GitHub上共享。因此,我们只能根据工程犯的行为来观察和分析。

一个建筑物通常需要两个共同的部分。第一个组件是以太坊帐户。无论是否有智能钱包代理,修改后的交易都可以发送到账户。第二个是“后端”,即大脑的运作,它大多发生在链条之下。操作员使用技术来检查池中的每个事务,解析它,替换它的参数(例如,TX调用者),并确定它是否有任何利润。

以太坊的“黑暗中的掠夺者”插图

一个理性的机器人不会试图做一个成本高于潜在利益的交易。尤其是在交易成本增加的时候。因此,要吸引机器人上钩,我们需要一个最小的利润。

此外,时间也很关键,因为需要分析事务池中的每个事务(其中许多事务)。挖掘以太坊区块平均需要12秒。如果事务成本足够高,则必须在下一个块到达之前对其进行足够快的分析和替换。

这是一个概率过程。可以在事务广播后立即挖掘块,这样机器人就没有时间成功地分析它并广播正在运行的事务。

有了这些考虑和一些想法,我们测试了机器人捕捉诱饵需要多长时间。

设置陷阱

我方合同(中标人)的初始余额为0.035 eth,当时价值约20美元。任何提供合同中存储的哈希正确图像的人都可以得到这笔钱。为了获得资金并充当掠夺者的触发器,一个单独的帐户(接收者)将通过提供适当的quot;反向图像quot;来尝试提取资金。

第一轮:直呼合约

为了确保基线陷阱有效,我们首先使用接收者帐户调用合同。在第一次尝试时,交易费用相对较高(由eth框架设定),我们成功地收回了资金。

这可能是因为利润太低,无法吸引掠食者,或者是因为贸易挖掘太快,他们无法做出反应。显然,这不是我们想要捕捉的。

第二轮:给他们时间思考

在这一轮中,我们解决了以前的问题。我们增加了潜在利润,降低了交易费用,这样交易就不会被挖得太快,给机器人时间去发现它。合同还增加了0.04以太(比以前多0.005)。

这次,我们成功了。等了大约3分钟,这笔交易才被挖掘出来。根据合同的内部交易,我们可以发现资金流向了他人。

当前事务使用25.000001111 Gwei(000001111 Gwei高于我们使用的值),并在尝试“提取”的同一区块中进行开采。

列车跟踪器

既然我们已经成功地找到了一个机器人(花费了一定的代价),我们可以想出一些有趣的见解。首先,事务表示对契约的调用不是直接执行的。机器人不只是复制交易,盲目地从它拥有的账户发送交易,而是通过代理智能合约传递交易,作为智能钱包来执行这些交易。

现在我们可以跟踪过去和将来的事务地址,看看机器人有多成功以及它是如何工作的。

以太坊的“黑暗中的掠夺者”插图1

反编译合同有两个主要功能

“取款”基本上是将合同中的资金全部交给合同的经营者。另一个函数接受一些参数:要调用的协定、参数列表和传递的值参数。

通过此功能,代理合约可以充当运营商的智能钱包。它除了能够执行和调用外部函数外,还可以保证交易开始时的余额至少与交易结束时的余额一样多,否则可以收回,从而避免可能的资金损失(当然交易成本除外)。

通过沙丘分析,我们可以看到自2018年5月以来机器人的成功程度!

假设这个特定的机器人总是使用相同的代理和发送地址来发布交易,我们可以估计它的总收入约为17 eth(在撰写本文时约为10000美元)。

以太坊的“黑暗中的掠夺者”插图2

第三轮:他们有多聪明?

既然我们确信机器人会攻击我们,我们就要测试是否可以将我们的调用与第二个从我们的合同中提取诱饵的合同(一个代理将调用一个函数从给予者那里提取诱饵)混淆。(合同中还有一个“收款”功能,可以把钱退给我们。)。

我们部署了proxytaker合同并调用了相应的函数来提取我们的资金。由于代理集资成本略高,中标金额略高,为0.055 eth。你看,我们的交易马上被另一个机器人拿走了。

这个更让人印象深刻。机器人不仅可以检测到我们的提取事务,还可以从一个内部调用,从一个完全不同的合同中识别它!它以创纪录的速度完成了这一壮举。我们的提取交易在几秒钟内就被挖掘出来了(机器人也是如此)。

机器人的身份也很有趣。BOT合同主要由该账户操作。该账户对etherescan发表了评论,将其与黑客试图从脆弱的Bancor智能合约中提取用户资金的案件联系起来。

考虑到机器人的相同行为模式(从账户a调用代理并将资金转移到账户b)以及事件的临近程度,我们有理由认为机器人在事件中也在对白色黑客执行常见的前台运行操作。

这个机器人比上一个复杂得多。它不仅专注于eth,还进行各种套利交易。

从它所收集的账户余额来看,它也要成功得多。目前,余额约为300以太坊(在撰写本报告时约为18万美元)。我们也可以从合同地址中减去所有的资本流入和流出来估计收入,总共约900以太。这只是一个粗略的估计,因为该账户可能进行了与其前端业务无关的交易。下面是所有具有正值的robot事务的列表。

上一轮:成功提取

为了让这个挑战更有趣一点,我们做了另一个让人困惑的尝试,这次使用了一个只有我们才能使用的代理合同,一个拥有者。

设置类似于第三轮。中标合同中增加了0.05 eth。这笔资金也在同一笔交易中转回给我们,而不是保留在合同中。

在第一次尝试中,我们花了大约一分钟的时间来挖掘拥有者合约的交易,我们成功地提取了资金。

重复实验。这一次,giver合同被重新填写了0.06 eth,这是我们迄今为止使用的最高付款额,以确保较低的付款额不是缺乏前期尝试的原因。

交易费用也被故意定在相对较低的水平。交易等待了约7分钟,但资金仍被成功提取。

只允许所有者转发交易的自有代理组合会阻止两个领先者成功解析数据并为自己牟利。

以太坊的“黑暗中的掠夺者”插图3

只有合同所有者才允许执行调用请求,或者资金被发送到与调用合同不同的目标,这有助于避免抢先尝试。

毕竟,机器人很可能会执行任意代码调用;这可能是自我保护。有理由相信,如果利润得不到保证,他们将避免不必要的风险或交易成本损失。

那么,我们赢了吗?

你怎么认为。我们签了新合同,有个秘密只有我们知道。很明显,我们发现的两个领先者操作着交易池中的所有交易,他们在利润方面做得很好。

上次我们为什么能抵制正面进攻?

很难说。也许机器人没有冒险与经过身份验证的合同进行通信,或者钱被转移到另一个地址的事实是出乎意料的。当然,这并不意味着这是一种完全避免领先者的方法。最有可能的是,有更复杂的机器人潜伏在交易池L中,他们不愿意为这么小的利润冒险。

结论

在这个简短的实验中,我们可以证明,有通用的前端运行机器人,他们是非常复杂的。

当然,我们知道我们的实验远未完成或确定。还有许多其他机器人有非常不同的触发器和操作模式。诸如潜在上行空间、通信模式和最小复杂性(例如交易费用限制)等因素可能会影响它们的操作方式。

然而,我们相信我们的工作提供了一个概念证明,并进一步揭示了这些通用前端机器人是如何工作的。

现在可怕的现实是,如果有一个能产生利润的合同,任何人都可以称之为合同,即使合同非常模糊,也有可能被一个抢先的机器人抢占。

因此,了解这些机器人以及它们是如何工作的非常重要,这样我们就可以在现在和将来建立更安全的系统。像flashbots这样的项目试图通过使MeV采矿民主化并使其成为公共资源来实现这一点。我们希望这项研究将有助于实现这一目标。

如果您遇到过这些机器人,或者正在研究更复杂的欺骗技术,请随时与我们联系。通过分享您的经验,我们将更好地了解这些机器人,并为我们所有人建立一个更安全的加密社区。

感谢tal be#ry、Omer shlomovitz、Oded leiba、Dan Robinson和其他人在本文中的帮助

附录

赠与人合同

以太坊的“黑暗中的掠夺者”插图4

代理合同

以太坊的“黑暗中的掠夺者”插图5

业主合同

以太坊的“黑暗中的掠夺者”插图6

人已赞赏
政策资讯

Tether在波场网络中额外发行4亿美元

2021-1-4 7:22:25

政策资讯

北京商报:比特币价格的大幅上涨,一方面是机构的推动,另一方面是散户的涌入

2021-1-4 7:30:26

12 条回复 A文章作者 M管理员
  1. 币圈花哥

    今天买,明天山腰,后天山顶

  2. JAR

    这两天市场又活跃了

  3. 责任,信任

    真精神!!!!!!区块链

  4. BCVoice

    应该还不错

  5. 哈喽

    楼主,支持!

  6. 比特币课堂

    让我来见识一下fil的韭菜是怎么被割的

  7. 比特币频道

    哈哈~关注一下

  8. 凤雏悟币689

    不错嘛~又有零花钱了,只是我是个holder,返佣卡对我没啥作用,其他都挺好

  9. 老外币事

    比特币问渠哪得清如许,为有源头活水来。

  10. 小怪物

    楼主福如东海,万寿无疆!比特币

  11. 吉祥子

    出了比特币,其他的都是垃圾

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索