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

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

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

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

挑战

像任何正常人一样,我花了很多时间潜伏在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,从而导致区块链的不稳定。

我们认为这种未来是可以避免的。Optimism,另一个范例投资组合公司,有一个雄心勃勃的愿景,如何重新定位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日

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

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

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

2020-8-30 15:41:14

区块链

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

2020-8-30 18:18:43

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