BTCV光复资讯 > 数字货币 > 抢先交易机器人:埃瑟瑟姆黑暗森林中的怪物

抢先交易机器人:埃瑟瑟姆黑暗森林中的怪物

来源:btcv-光复资讯  |   作者:btcv-光复资讯  |   时间:2020-08-30 07:24  |   点击量:

注:最初的作者是范式研究伙伴丹罗宾逊和圣乔治孔斯坦托普洛斯。

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

挑战

像任何正常人一样,我花了很多时间潜伏在Uniswap Default的支持渠道中(披露:Uniswap是一个范式的投资组合公司)。

周三下午,有人问,偶然发送到匹配合同的Uniswap流动性令牌能否被找回。

我最初的想法是这些代币会被永远锁住,但是那天晚上,我突然意识到如果这些代币还在,任何人都可以找回它们。

当任何人调用Uniswap核心合同上的烧录功能时,该合同将测量其流动性令牌余额并烧录它,并将提取的令牌提供给调用方指定的地址。这是Uniswap v2预期行为的核心部分(Uniswap v2白皮书第3.2节描述了基本机制)。

我找到了这份合同,这些流动代币还在,它们的价值大约是12,000美元。

这意味着三件事:

时间在流逝,即使没有人注意到这笔免费的钱,任何人都可以随时取走自己的流动性,并意外地从合同中得到这些代币;

我可以戴上我的白帽子,试着帮助主人取回他的令牌。这很简单。我只需要调用池的刻录功能,并将我自己的地址传递给它。

只是.我知道这不容易。

黑暗的树林

众所周知,区块链的以太博物馆是一个高度敌对的环境。如果一份聪明的合同可以被用来获利,它最终会被使用。黑客攻击的频繁发生表明一些非常聪明的人花了很多时间检查合同中的漏洞。但这种无情的环境与Mempool(一组未决和未确认的交易)相比相形见绌。如果区块链本身就是一个战场,那么记忆库就更糟糕了:一片黑暗的森林。

《黑暗森林》是我最喜欢的科幻小说,它引入了“黑暗森林”的概念。在这种环境下,探测意味着一些高级捕食者的死亡。在这种环境下,公开确定别人的立场和直接摧毁他们一样好。(这个概念也是以太网测试网上黑暗森林游戏的灵感。(

在埃瑟伦姆普尔,这些顶级捕食者将采取“套利机器人”的形式。套利机器人监控等待的交易,并试图利用它们创造利润机会。对于这些机器人,没有人比菲尔黛安更了解这些机器人了。他和他的同事写了《Flash Boys 2.0》论文,并创造了术语“矿工可提取价值”(MEV)。

菲尔曾经告诉我宇宙恐怖的存在,他称之为“广义跑步者”。套利机器人通常在Mempool中搜索特定类型的交易(如DEX交易或预测机器更新),并试图根据预定的算法进行抢先交易。普通跑步者寻找任何可以通过复制和用他们自己的地址替换来获利的交易。

这就是救援行动不容易的原因。任何人都可以调用刻录功能。如果我提交一个交易来调用burn函数,它就像一个闪烁的“自由货币”标志,直接指向这个有利可图的机会。如果这些怪物真的在记忆池中,他们会看到,复制和变异,并在我的交易被接受之前完成交易。

请注意,这种环境比区块链国本身更残酷。这些免费基金已经在区块链呆了大约8个小时,它们还没有被发现,等待任何人调用burn函数从池中提取流动性令牌。但是在飞行过程中,任何试图捡起它的尝试都会被立即阻止。

救援行动

为了在不通知机器人的情况下提取资金,我需要混淆交易,这样机器人就无法检测到它对Uniswap对的调用,这将涉及到定制合同的编写和部署。虽然我是一个专业的DeFi思想领袖,但我以前从未在以太博物馆部署过合同。

我需要帮助,已经过了午夜。幸运的是,我认识的一些最好的智能合同工程师住在欧洲时区。我在Paradigm的同事圣乔治孔斯坦托普洛斯同意帮助部署合同并提交交易。阿尔伯托单面山卡阿达,我们另一个投资组合公司“收益率”的总工程师,自愿签署了合同。

一些优秀的以太网安全工程师帮助我们想出了一个令人困惑的方案。除了将调用隐藏为内部事务之外,我们还将事务分为两部分:一部分是激活合同的set事务,另一部分是激活合同时节省资金的get事务。具体实现如下:

部署一个Getter契约,当所有者调用它时,它只在被激活时进行一个刻录调用,否则它将被恢复;

部署一个Setter契约,当所有者调用它时,它将激活Getter契约;

在同一个块中提交集合事务和获取事务;

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

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

图:我们的救援脚本

令我们惊讶的是,尽管我们手动提高了煤气费,但设定的交易仍然被Infura拒绝。经过几次失败的尝试和重置,时间给了我们压力,然后我们开始变得草率。我们让第二笔交易溜到下一个街区。

这成了一个致命的错误!

我们的get交易确实包括在内,但有一个unis wapv 2: _ employment _ liquidatory _ burden的错误,这意味着流动性令牌已丢失。结果,在我们的get交易进入mempool后的几秒钟内,有人执行了调用并取走了资金。

怪物吞噬了我们。

课程

第1:课怪物是真实的!

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

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

如果你发现自己处于这种情况,我们建议你联系斯科特毕格罗,一个一直在研究这个话题的安全研究员,他有一个更好的令人困惑的原型实现。

第2:课不要匆忙

即使时间紧迫,我们也应该坚持原来的计划。如果我们在脚本上花费更多的时间,调整契约(也许改变Getter契约使之不做任何事情,而不是在激活之前继续调用),或者甚至同步我们自己的节点以避免使用Infura,我们可能能够将两个事务放在同一个块中。

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

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

或者,如果你碰巧认识一个大的矿工(我们不认识他),你可以让他们直接把你想提交的交易包含在一个块中,完全跳过mempool和怪物。

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

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

如今,矿商们还没有抓住这些机会,把他们的钱留在原地,但没有人能保证他们将来是否会为了自己的利益而重新订购和提交自己的交易。更糟糕的是,他们可能会重建其他矿工开采的区块,试图窃取他们没有声称的墨西哥湾,这导致了区块链的不稳定。

我们相信这种未来是可以避免的。优化(另一个范式投资组合公司)有一个雄心勃勃的愿景,那就是,作为其第2层可伸缩性解决方案“乐观汇总”的一部分,如何将墨西哥湾重新定向以使生态系统受益。

如果您正在考虑墨西哥湾或在这一领域建立一些东西,请联系我们!

感谢阿尔伯托单面山卡达、斯科特毕格罗、菲尔黛安、查理诺伊斯和萨姆孙在本文中给予的帮助。

btcv币
抢先交易机器人:埃瑟瑟姆黑暗森林中的怪物
网站分类
友情链接
    热门文章
    标签云
    btcv币