这是一个高度对抗性的游戏。
原文标题:《
DeFi 之道丨以太坊黑暗森林的一次猎杀:套利机器人惨遭套利 130 ETH
》
撰文:CodeForcer
编译:洒脱喜
针对近期频繁发生的以太坊三明治套利交易(sandwich trading),开发者 CodeForcer 创建了一种名为「沙门氏菌」(Salmonella)的 ERC20 诱饵代币,通过这种方式,其在 24 小时内实现盈利 130 ETH,而这也告诉了我们关于以太坊网络 Mempool 黑暗森林的对抗性。
以下是 CodeForcer 撰写的内容:
那些追踪以太坊 mempool 行动的人已意识到了三明治交易的突然兴起,对于不了解这一概念的读者来说,三明治交易是一种非常有趣的策略,其原理就是在受害者交易前后进行交易,并通过产生的滑点实现套利。
比方说,当有人进行一笔资产交易,套利者便抢在他之前购买同一资产(人为地抬高币价),然后等到对方成功买入后,套利者再卖出后即可获利。
这种策略在过去是非常高风险的,因为以太坊无法保证交易一定成功,mempool 是一个很有趣的地方,但它并不是一个安全之地。
然而,随着 FlashBots 等 MEV (矿工可提取价值)服务的兴起,这使得交易者可以创建一些「三明治包」(sandwich bundles),其中 3 笔交易要么全部被执行,要么都不执行。与此同时,矿工交易团队的活动也在增长,他们将「三明治包」直接纳入到自己挖得的区块。
这两种创新的结合,就使得三明治交易者可以进行一些「无风险」的套利活动,这让很多人陷入了兴奋的情绪当中。
但实际上,「无风险」并不是真的没有风险。
为了向大家说明在 mempool 中玩游戏的风险,我演示了一种新的称为「沙门氏菌」(Salmonella)的新交易策略,它涉及到利用通用的抢跑交易设置。三明治交易的目的是利用他人交易造成的滑点来获利,而这种策略的目的是惩罚剥削者。
对区块链进行的快速分析显示,目前一个名为「Ethermine」的团队执行了市场上大部分的三明治交易,在确定了最初的目标后,我开始分析他们的设置。
在撰写本文时,Ethermine 的设置相当基础,其依靠的是 Uniswap router 来执行交易,而交易历史显示 Ethermine 的大部分交易都属于 revert 交易,其智能合约本身也持有各种失败交易的代币,考虑到这些之后,我开始着手创建我的 Salmonella 合约。
Salmonella 合约的前提非常简单,它是一个常规的 ERC20 代币,其行为与正常用例中的任何其他 ERC20 代币完全相同。但是,它有一些特殊的逻辑来检测除指定所有者以外的其他人何时在进行交易,在这些情况下,它只返回指定金额的 10%。
下面就是「有毒」的 transfer 函数:
function_transfer(address sender, address recipient, uint256 amount) internal virtual {require(sender != address(0), "ERC20: transfer from the zero address");require(recipient != address(0), "ERC20: transfer to the zero address");uint256 senderBalance =_balances[sender];require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");if (sender == ownerA || sender == ownerB) {_balances[sender] = senderBalance - amount;_balances[recipient] += amount;} else {_balances[sender] = senderBalance - amount;uint256 trapAmount = (amount * 10) / 100;_balances[recipient] += trapAmount;}emit Transfer(sender, recipient, amount);}
我部署了 Salmonella 合约,然后建立了一个包含 Salmonella 和以太坊的简单 Uniswap 池子。然后,我用二分检索法复制了三明治交易的检测数据,创建了一系列诱饵交易,使得 Ethermine 和其他三明治交易者会认为这是一个有趣的机会。
最后,我编写了一个执行架构,使我能够快速取消交易、更改 gas 价格和重置陷阱 Uniswap 池的状态。
在喝了几杯浓咖啡之后,我开始工作,发出了一系列诱饵交易,谨慎地将价格定在略低于市场 gas 的水平,以保持交易在 mempool 中,但如果价格开始下降,我就取消掉交易。
不到几个小时的时间,我就遇到了第一个目标,并从其机器人那里掠夺了 68 ETH,又过了几个小时后,我又从他们的合约中捞走了 35 ETH。
过了一夜时间之后,我浏览了一下我的 Salmonella 合约,结果发现自己的实验清空了另外 17 个三明治交易合约,当然资金量都要比 Ethermine 要少得多。
我继续执行了这个策略几天,一路上又清空了一堆三明治交易合约,但随着合约部署者调整他们的设置以更好地检测我的有毒代币之后,我的 alpha 策略很快就失效了。
总而言之,这是一个有趣的实验,我现在把它作为一个警告呈现给社区。成为一名 DeFi 堕落者是很有趣的,但在进行交易时你一定要小心,因为这个游戏是高度对抗性的。
Mempool 见!
来源链接: www.8btc.com