当前位置:首页区块链抢先交易机器人:以太坊黑暗森林中的怪物

抢先交易机器人:以太坊黑暗森林中的怪物

这是一个可怕而真实的故事。

抢先交易机器人:以太坊黑暗森林中的怪物

挑战

像任何正常人一样,我花了很多时间潜伏在Uniswap discord的支持频道上(披露:Uniswap是paradigment的投资组合公司)。

周三下午,有人问到,是否有可能收回意外发送给匹配合约的Uniswap流动性代币。

我最初的想法是,代币会永远锁在里面,但那天深夜,我突然意识到,如果代币还在,任何人都可以找回。

当任何人调用Uniswap核心合约上的burn函数时,契约会测量自己的流动性代币余额并将其烧掉,将提取的代币提供给调用者指定的地址。这是Uniswap V2预期行为的核心部分(基本机制在Uniswap V2白皮书的第3.2节中描述)。

我找到了合同,流动性代币还在那里,价值约12000美元。

这意味着三件事:

随着时钟的滴答作响,任何人都可以随时取出自己的流动资金,意外地从合同中获得代币,即使没有其他人注意到;

我可以戴上我的白帽子,试着帮主人取回他的代币。很简单。我只需调用池的burn函数并将我自己的地址传递给它。

只是我知道这不容易。

黑暗森林

以太坊区块链是一个高度敌对的环境,这不是什么秘密。如果一个智能合约可以用于盈利,它最终会被使用。黑客攻击的频率表明,一些非常聪明的人花了很多时间检查合同中的漏洞。但与MemPool相比,这种无情的环境显得相形见绌,后者是一组悬而未决、未经确认的交易。如果区块链本身就是一个战场,那么MemPool更糟糕:一片黑暗的森林。

抢先交易机器人:以太坊黑暗森林中的怪物1

“黑暗森林”是我最喜欢的科幻小说,它引入了“黑暗森林”的概念,在这个概念中,探测意味着一些**捕食者的死亡。在这种环境下,公开表明人们的立场和直接摧毁他们一样好。(这个概念也是以太坊beta版《黑暗森林》游戏的灵感来源。)

在以太坊MemPool,这些**捕食者将采取“套利机器人”的形式。套利机器人监控等待的交易,并试图利用它们创造有利可图的机会。没有哪个白帽会比菲尔·戴安更了解这些机器人,他和他的同事一起撰写了flashboys 2.0论文,并创造了术语“miner extractable value”(MeV)。

菲尔曾经告诉我存在一种他称之为“广义跑步者”的宇宙恐怖。套利机器人通常在MemPool中寻找特定类的事务(如DEX事务或预言机更新),并尝试根据预先确定的算法抢占事务。通用的第一个运行者寻找任何可以通过**并替换为自己的地址使抢购有利可图的交易。

这就是为什么这次救援行动不会简单。任何人都可以调用这个burn函数,如果我提交一个名为burn的交易,它就像一个闪烁的“自由货币”标志,直接指向这个有利可图的机会。如果这些怪物真的在MemPool里,他们会看到,**,变异,在我的交易被接受之前完成。

请注意,这种环境比以太坊区块链状态本身更残酷。这些免费资金已经在区块链上运行了大约8个小时,它们还没有被发现,等待任何调用burn函数的人从池中提取出来。但在飞行过程中,任何试图取回它的尝试都会被立即阻止。

救援工作

为了在不通知robot的情况下提取资金,我需要混淆事务,以便robot无法检测到对Uniswap对的调用,这将涉及编写和部署定制契约。虽然我是一个专业的迪福思想**,我从来没有签约以太坊。

我需要帮助,已经过了午夜。幸运的是,我认识的一些**的智能合约工程师住在欧洲时区。我在paradigment的同事georgioskonstantopoulos同意帮助部署合同并提交交易。我们另一家投资组合公司yield的总工程师Alberto Cuesta CaóADA自愿签署了合同。

一些**的以太坊安全工程师帮助我们想出了一个令人困惑的解决方案。除了将调用隐藏为内部事务外,我们还将该事务分为两部分:一部分是激活我们的契约的set事务,另一部分是激活契约时节省资金的get事务。具体实施如下:

部署getter协定。当拥有者调用它时,它只在激活时发出burn调用,否则会被恢复;

部署setter协定。当所有者调用它时,它将激活getter契约;

在同一块中提交set事务和get事务;

抢先交易机器人:以太坊黑暗森林中的怪物2

图:我们的定制智能合约代码

如果攻击者只尝试执行get事务,它将在不调用set事务的情况下恢复。我们希望在攻击者依次执行两个事务之前,我们的事务可以被块包含。

抢先交易机器人:以太坊黑暗森林中的怪物3

图片:我们的救援脚本

出乎我们意料的是,尽管我们手动提高了GAS FEE,但set交易仍被Infra拒绝。在尝试了几次复位之后,我们开始失去压力。我们让第二笔交易溜进下一个街区。

这是个致命的错误!

我们的get交易也包括在内,但是有一个UNISWAVv2:流动性不足,烧掉了错误,这意味着流动性代币不见了。结果,在我们的get事务进入MemPool的几秒钟内,就有人执行了调用并清理了资金。

怪物吞噬了我们。

课程

第1课:怪物是真的!

虽然在智力上,我们知道这些抢占式交易机器人无处不在,但在你真正看到它们的行为之前,你很可能低估了它们。

幸运的是,我们通过许可合同将救援作为内部呼叫。我们以为它能保护我们,但事实并非如此。

如果您发现自己处于这种情况下,我们建议您联系Scott Bigelow,一位一直致力于此主题的安全研究员,他有一个更好的实现模糊原。

第二课:不要鲁莽

即使时间紧迫,我们也应该坚持原来的计划。如果我们花更多的时间在脚本上,调整契约(也许改变getter契约,而不是在激活之前恢复调用),或者甚至同步我们自己的节点以避免使用infraa,那么我们可以将两个事务放入同一个块中。

第三课:不要依赖一般的基础设施

你做得越奇怪,你就越难通过现有的基础设施,比如Infra。在我们的案例中,我们试图提交一个基于区块链的当前状态似乎失败的交易,Infra对此有合理的保障措施。使用我们自己的节点可以避免这个问题。

或者,如果你碰巧认识一个大矿工(我们不知道),你可以要求他们把你提交的交易直接包含到一个区块中,完全跳过MemPool和monsters。

第四课:未来只会变得更加可怕

抢先交易机器人:以太坊黑暗森林中的怪物4

这只是发生在我们身上的先发制人交易的一个例子,类似的事情每天都会发生很多次。今天,第一个交易者只是一个机器人。明天,它可能是一个矿工。

如今,矿工们并没有利用这些机会,把钱留在原地,但也不能保证他们将来会重新订购并提交自己的交易,以服务于自己的利益。更糟糕的是,他们可能会重建其他矿工挖矿的区块,试图窃取他们没有宣称的MEV,从而导致区块链的不稳定。

我们认为这种未来是可以避免的。Optimi,另一个范例投资组合公司,有一个雄心勃勃的愿景,如何重新定位MeV,使生态系统受益,作为其Layer2可扩展解决方案,优化汇总的一部分。

如果您正在考虑MeV,或在这个领域建立什么,请与我们联系!

感谢Alberto Cuesta CaóADA、Scott Bigelow、Phil Daian、Charlie Noyes和Sam sun对本文的帮助。

注:作者是Dan Robinson和Georgios konstantopoulos,范式研究的合作伙伴。

温馨提示:

文章标题:抢先交易机器人:以太坊黑暗森林中的怪物

文章链接:https://www.btchangqing.cn/94507.html

更新时间:2020年12月02日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

区块链

阅读传统金融和数字资产衍生品的区别

2020-8-30 15:41:14

区块链

火币期权即将上线,为业界首家USDT本位正向期权合约

2020-8-30 18:18:43

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索