DeFi之道丨以太坊黑暗森林的一次猎杀:套利机器人惨遭套利130 ETH
针对近期频繁发生的以太坊三明治套利交易(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堕落者是很有趣的,但在进行交易时你一定要小心,因为这个游戏是高度对抗性的。
微信扫描关注公众号,及时掌握新动向
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场