对此最简单的解决方法是限制符合订单到期条件的区块数量:例如,TWAMM 可以指定订单只能每 250 个区块到期一次,或者大约每小时一次。 取消长期订单 用户可以随时取消长期订单。在实践中,这允许用户可以具体到区块来选择取消自己订单的时间。这不会增加系统的 gas 负担,因为想要取消订单的用户自己支付 gas。 虚拟交易数学定义 假设自 TWAMM 上次执行虚拟交易以来已经有 t 个区块。 为简单起见,假设没有长期订单过期,因此在整个时间段内,出售 X 的矿池在每个区块中出售 xrate,而出售 Y 的矿池在整个时间段内在每个区块中出售 yrate。 那么在此期间售出的 X 的总量是 txrate=xin ,而在此期间售出的 Y 的总量是 tyrate=yin。 让我们将时间段开始时嵌入的 AMM 资产储备额分别设定为 xammStart和 yammStart。 公式 在处理完所有虚拟交易后,嵌入式 AMM 中的 X 储备额为 同时 从常数乘积公式,我们得出 出售 X 的矿池获得了所有没有出现在嵌入式 AMM 资产储备中的 Y——换句话说, 同样, 潜在的攻击向量三明治攻击描述 在 三明治攻击 中,攻击者 Atticus 看到交易者 Trey 即将在 AMM 上进行交易。Atticus 发送了两个订单,将 Trey 的订单夹成三明治,从而从中获利。 想象一下,Trey 向 AMM 发送了一个用 USDC 购买 ETH 的订单。看到这一交易后,Atticus 在 Trey 之前下单在 AMM 上购买 ETH,推动价格上涨。由于他向 AMM 支付费用并产生价格冲击,因此 Atticus 在这一订单上将亏损。 当 Trey 的订单被执行时,他被迫以他原本更高的价格购买 ETH,因为 Atticus 推高了价格。Trey 的订单进一步推高了价格。 现在,Atticus 将他的 ETH 卖回给 AMM。由于自 Trey 的买入已经推高了 AMM 上的价格,因此 Atticus 卖出的价格高于其买入的价格,并且能够实现盈利。 (责任编辑:admin) |