这笔抢先交易 花了 25.000001111 Gwei(比我们使用的 Gwei 数高了 .000001111Gwei),与我们的交易被写入同一区块,明显是截胡行动。 植入追踪器既然我们的陷阱已经成功地俘获了一个机器人(我们也付出了一定的代价),我们可以提炼出一些有趣的洞察。 首先,交易显示未直接执行对智能合约的调用。该机器人不是复制了交易并从其拥有的帐户中盲目发送,而是还通过代理智能合约传递了该交易,其代理智能合约充当了执行这些交易的智能钱包。 我们现在可以追踪之前和未来的交易,仔细看一下这个机器人到底有多大神通,以及其如何运行。 这个机器人使用其自有的代理合约 反向编译该合约,显示了两个主要函数: 「Withdraw」主要是将该合约中的所有资金发送给机器人的运营者。另一个函数接受部分参数:要调用的合约,参数清单并传递价值参数。 有了这个函数,这个代理合约扮演了机器人运营者的智能钱包。除了能执行调用外部函数的功能外,它还可以确保交易开始时的余额至少等于结束时的余额,否则可以还原交易,从而避免在调用未知合约时可能造成的资金损失(当然不包括 Gas)。 利用 Dune Analytics 工具,我们可以看到这个机器人自 2018 年 5 月开始运营以来收获颇丰。 假设这个机器人一直使用同一个智能代理和收款地址来发起抢先交易,我们可以估计其共赚到了约 17 ETH。 该机器人不同时间段赚到的资金 (以 ETH 为单位) 第三轮:这些机器人有多智能?既然我们已经确信这个机器人程序是主动对我们发起攻击,那么我们想测试是否可以通过第二个合约(代理合约)混淆我们对合约的调用,从而从合约中成功提取诱饵资金,该代理将调用一个函数来从诱饵合约(giver)中提取诱饵资金。(该合约还具有「收款」函数,可将资金退还给我们)。 我们部署了 ProxyTaker 合约 ,调用适当的函数,试图提取资金。由于通过代理的行动的成本比之前略高一些, giver 合约的余额又上调至 0.055 ETH。结果是我们的交易立刻被另一个机器人抢先交易 。 这一次机器人的手法更令人叹为观止。该机器人不仅能侦测出我们的提取交易,而且能从一个 (责任编辑:admin) |