不允许三明治 - 如何防止自动市场做市商的MEV攻击

不允许三明治 - 如何防止自动市场做市商的MEV攻击

不允许三明治 - 如何防止自动市场做市商的MEV攻击

Stefan Loesch

Stefan Loesch

Stefan Loesch

2023年8月11日

2023年8月11日

2023年8月11日

这是我的接着发表的一个帖子,讨论了碳(以及碳持仓中固有的巨大虚拟费用)如何使三明治样式的MEV攻击变得不可能,以及马克后续的帖子,量化了这一点,并且研究了这些公式暗示了什么。这篇帖子更像是一个实验笔记风格的帖子,它使用了马克的最新文章中的一些公式并进一步讨论了它们。


背景

我们在这里使用的关键公式是


三明治利润Q作为其他参数的函数


来自于文章1,以及


当三明治利润为零时参数之间的关系


来自于文章2


在我们进一步研究这些方程之前,我希望花一点时间来定义所使用的符号,这将极大地帮助理解这些公式

  • Q是攻击者基于以下其他参数进行三明治攻击获利,以及


  • Δxₐ是导致Q特定值的前置交易的大小。交易参数为


  • Δxᵤ代表用户交易的大小,


  • x代表与Δx相同单位的池大小(在杠杆池的情况下为虚拟大小,但此分析忽略了杠杆流动性的边界固定的影响),最重要的是


  • δ 代表池的百分比费用(以小数形式,例如10bp = 0.001)


我们将在这里看看的关键方程是上述的第二个方程。它是从第一个方程中通过先对Δxₐ求导,然后要求关于Δxₐ的Q的导数在Δxₐ=0时为零而得来的。这个条件确保Δxₐ=0对于潜在的三明治攻击者来说是最佳的,换句话说,没有套利利润。


简化公式

我们看到上面的公式,如所写的,由三个项组成,前两个项都是微不足道的,因为它们产生的解决方案在经济上是不有趣的。其中一个项表明空的池(x=0)不允许三明治攻击,另一个解决方案在一个不合理大的Δxᵤ值,因此可以被丢弃。因此,我们只剩下公式的操作部分,如下:


上述第二个方程的操作部分


为了解释马克在他的文章中讨论的内容,上述条件不应是一个相等,而应该是一个不等,因为当然攻击者永远不会进行亏损交易。因此

  • δ 实际上是inf δ,因为任何费用 >δ 也将阻止三明治攻击


  • Δxᵤ实际上是sup Δxᵤ,因为任何交易 <Δxᵤ也将阻止三明治攻击,


  • 实际上是inf x ,因为任何池流动性 >x 也将阻止三明治攻击


马克在他的文章中已经为我们解决了上述公式的δ, Δxᵤ和x, 得到了以下公式


来自文章2的公式


对我们来说,上述了三个公式当中,第一个是最有趣的 — 它指示了对于给定交易而言,费用必须有多大,使得三明治攻击不再有意义。我稍微重写了它以新的符号,指示了不允许三明治发生的条件对于这个费率δ及以上成立


不允许三明治攻击的费率水平


这个公式看起来复杂而令人失望 — 但幸运的是,对于r=x/Δxᵤ(即小交易)它在大值时有一个良好的渐近行为:


对于小交易(r=x/Δx)的最小阻力费率水平的渐近行为


在下面的图表中,红线是实际曲线,蓝线是幂律渐近线1/r,绿线是(极大地)改进的渐近线2/2r+3


不允许三明治攻击的最小费用作为r=x/Δx的函数


(请查看这里关于底层desmos计算器的信息)


虽然r=x/Δxᵤ更适合这些公式,但在经济上更直观的数量是流动性标准化交易大小1/r = Δx/x. 重要的是要记住这也是百分比滑点,即交易大小Δx 不利地推动了规模为x的池的价格。


因此,我们得到了以下重要的结果:


使交易无法受到攻击的最低费率水平

小交易(池规模的1%或更少)如果费率大于滑点(这也是流动性标准化交易大小)则无法受到三明治攻击,即δ>Δx/x. 对于略大一些的交易 — 直到约10%的滑点 — 近似值δ>2/(2r+3) 效果很好,超出这个范围应使用上述完整的公式[2]。


最大无法受攻击的交易大小

同样,我们可以看作是一个关于无法受三明治攻击的最大可行交易大小为费率的函数。我们从上面的文章2的方程[3]开始,但将其左右两边分别除以x 和δ. 我们牢记Δx/x 是(流动性标准化)交易大小,因此方程左侧Δx/xδ 是标准化交易大小(也是:滑点)除以费用。


我们已经在下面的图表中绘制了上述方程的右侧


相对于费率的中最大标准化交易大小作为费率的函数


(在desmos上查看此图表


解释上述图表的方法如下:对于给定的费率水平(这里是0.2 = 20%费用),作为费用的百分比的最大标准化交易大小是多少?对于小值来说,这个数字是1,即对于小费用,最大不受三明治攻击的标准化交易大小等于费用水平。如果费用更大,那么可能的交易大小就会不成比例地增加。例如,在20%费用下,交易大小可以是20%*1.4=28%的池大小,在此之前是不可能受到三明治攻击的。



同样的图表但只涉及费率最高为5%


这是我的接着发表的一个帖子,讨论了碳(以及碳持仓中固有的巨大虚拟费用)如何使三明治样式的MEV攻击变得不可能,以及马克后续的帖子,量化了这一点,并且研究了这些公式暗示了什么。这篇帖子更像是一个实验笔记风格的帖子,它使用了马克的最新文章中的一些公式并进一步讨论了它们。


背景

我们在这里使用的关键公式是


三明治利润Q作为其他参数的函数


来自于文章1,以及


当三明治利润为零时参数之间的关系


来自于文章2


在我们进一步研究这些方程之前,我希望花一点时间来定义所使用的符号,这将极大地帮助理解这些公式

  • Q是攻击者基于以下其他参数进行三明治攻击获利,以及


  • Δxₐ是导致Q特定值的前置交易的大小。交易参数为


  • Δxᵤ代表用户交易的大小,


  • x代表与Δx相同单位的池大小(在杠杆池的情况下为虚拟大小,但此分析忽略了杠杆流动性的边界固定的影响),最重要的是


  • δ 代表池的百分比费用(以小数形式,例如10bp = 0.001)


我们将在这里看看的关键方程是上述的第二个方程。它是从第一个方程中通过先对Δxₐ求导,然后要求关于Δxₐ的Q的导数在Δxₐ=0时为零而得来的。这个条件确保Δxₐ=0对于潜在的三明治攻击者来说是最佳的,换句话说,没有套利利润。


简化公式

我们看到上面的公式,如所写的,由三个项组成,前两个项都是微不足道的,因为它们产生的解决方案在经济上是不有趣的。其中一个项表明空的池(x=0)不允许三明治攻击,另一个解决方案在一个不合理大的Δxᵤ值,因此可以被丢弃。因此,我们只剩下公式的操作部分,如下:


上述第二个方程的操作部分


为了解释马克在他的文章中讨论的内容,上述条件不应是一个相等,而应该是一个不等,因为当然攻击者永远不会进行亏损交易。因此

  • δ 实际上是inf δ,因为任何费用 >δ 也将阻止三明治攻击


  • Δxᵤ实际上是sup Δxᵤ,因为任何交易 <Δxᵤ也将阻止三明治攻击,


  • 实际上是inf x ,因为任何池流动性 >x 也将阻止三明治攻击


马克在他的文章中已经为我们解决了上述公式的δ, Δxᵤ和x, 得到了以下公式


来自文章2的公式


对我们来说,上述了三个公式当中,第一个是最有趣的 — 它指示了对于给定交易而言,费用必须有多大,使得三明治攻击不再有意义。我稍微重写了它以新的符号,指示了不允许三明治发生的条件对于这个费率δ及以上成立


不允许三明治攻击的费率水平


这个公式看起来复杂而令人失望 — 但幸运的是,对于r=x/Δxᵤ(即小交易)它在大值时有一个良好的渐近行为:


对于小交易(r=x/Δx)的最小阻力费率水平的渐近行为


在下面的图表中,红线是实际曲线,蓝线是幂律渐近线1/r,绿线是(极大地)改进的渐近线2/2r+3


不允许三明治攻击的最小费用作为r=x/Δx的函数


(请查看这里关于底层desmos计算器的信息)


虽然r=x/Δxᵤ更适合这些公式,但在经济上更直观的数量是流动性标准化交易大小1/r = Δx/x. 重要的是要记住这也是百分比滑点,即交易大小Δx 不利地推动了规模为x的池的价格。


因此,我们得到了以下重要的结果:


使交易无法受到攻击的最低费率水平

小交易(池规模的1%或更少)如果费率大于滑点(这也是流动性标准化交易大小)则无法受到三明治攻击,即δ>Δx/x. 对于略大一些的交易 — 直到约10%的滑点 — 近似值δ>2/(2r+3) 效果很好,超出这个范围应使用上述完整的公式[2]。


最大无法受攻击的交易大小

同样,我们可以看作是一个关于无法受三明治攻击的最大可行交易大小为费率的函数。我们从上面的文章2的方程[3]开始,但将其左右两边分别除以x 和δ. 我们牢记Δx/x 是(流动性标准化)交易大小,因此方程左侧Δx/xδ 是标准化交易大小(也是:滑点)除以费用。


我们已经在下面的图表中绘制了上述方程的右侧


相对于费率的中最大标准化交易大小作为费率的函数


(在desmos上查看此图表


解释上述图表的方法如下:对于给定的费率水平(这里是0.2 = 20%费用),作为费用的百分比的最大标准化交易大小是多少?对于小值来说,这个数字是1,即对于小费用,最大不受三明治攻击的标准化交易大小等于费用水平。如果费用更大,那么可能的交易大小就会不成比例地增加。例如,在20%费用下,交易大小可以是20%*1.4=28%的池大小,在此之前是不可能受到三明治攻击的。



同样的图表但只涉及费率最高为5%


这是我的接着发表的一个帖子,讨论了碳(以及碳持仓中固有的巨大虚拟费用)如何使三明治样式的MEV攻击变得不可能,以及马克后续的帖子,量化了这一点,并且研究了这些公式暗示了什么。这篇帖子更像是一个实验笔记风格的帖子,它使用了马克的最新文章中的一些公式并进一步讨论了它们。


背景

我们在这里使用的关键公式是


三明治利润Q作为其他参数的函数


来自于文章1,以及


当三明治利润为零时参数之间的关系


来自于文章2


在我们进一步研究这些方程之前,我希望花一点时间来定义所使用的符号,这将极大地帮助理解这些公式

  • Q是攻击者基于以下其他参数进行三明治攻击获利,以及


  • Δxₐ是导致Q特定值的前置交易的大小。交易参数为


  • Δxᵤ代表用户交易的大小,


  • x代表与Δx相同单位的池大小(在杠杆池的情况下为虚拟大小,但此分析忽略了杠杆流动性的边界固定的影响),最重要的是


  • δ 代表池的百分比费用(以小数形式,例如10bp = 0.001)


我们将在这里看看的关键方程是上述的第二个方程。它是从第一个方程中通过先对Δxₐ求导,然后要求关于Δxₐ的Q的导数在Δxₐ=0时为零而得来的。这个条件确保Δxₐ=0对于潜在的三明治攻击者来说是最佳的,换句话说,没有套利利润。


简化公式

我们看到上面的公式,如所写的,由三个项组成,前两个项都是微不足道的,因为它们产生的解决方案在经济上是不有趣的。其中一个项表明空的池(x=0)不允许三明治攻击,另一个解决方案在一个不合理大的Δxᵤ值,因此可以被丢弃。因此,我们只剩下公式的操作部分,如下:


上述第二个方程的操作部分


为了解释马克在他的文章中讨论的内容,上述条件不应是一个相等,而应该是一个不等,因为当然攻击者永远不会进行亏损交易。因此

  • δ 实际上是inf δ,因为任何费用 >δ 也将阻止三明治攻击


  • Δxᵤ实际上是sup Δxᵤ,因为任何交易 <Δxᵤ也将阻止三明治攻击,


  • 实际上是inf x ,因为任何池流动性 >x 也将阻止三明治攻击


马克在他的文章中已经为我们解决了上述公式的δ, Δxᵤ和x, 得到了以下公式


来自文章2的公式


对我们来说,上述了三个公式当中,第一个是最有趣的 — 它指示了对于给定交易而言,费用必须有多大,使得三明治攻击不再有意义。我稍微重写了它以新的符号,指示了不允许三明治发生的条件对于这个费率δ及以上成立


不允许三明治攻击的费率水平


这个公式看起来复杂而令人失望 — 但幸运的是,对于r=x/Δxᵤ(即小交易)它在大值时有一个良好的渐近行为:


对于小交易(r=x/Δx)的最小阻力费率水平的渐近行为


在下面的图表中,红线是实际曲线,蓝线是幂律渐近线1/r,绿线是(极大地)改进的渐近线2/2r+3


不允许三明治攻击的最小费用作为r=x/Δx的函数


(请查看这里关于底层desmos计算器的信息)


虽然r=x/Δxᵤ更适合这些公式,但在经济上更直观的数量是流动性标准化交易大小1/r = Δx/x. 重要的是要记住这也是百分比滑点,即交易大小Δx 不利地推动了规模为x的池的价格。


因此,我们得到了以下重要的结果:


使交易无法受到攻击的最低费率水平

小交易(池规模的1%或更少)如果费率大于滑点(这也是流动性标准化交易大小)则无法受到三明治攻击,即δ>Δx/x. 对于略大一些的交易 — 直到约10%的滑点 — 近似值δ>2/(2r+3) 效果很好,超出这个范围应使用上述完整的公式[2]。


最大无法受攻击的交易大小

同样,我们可以看作是一个关于无法受三明治攻击的最大可行交易大小为费率的函数。我们从上面的文章2的方程[3]开始,但将其左右两边分别除以x 和δ. 我们牢记Δx/x 是(流动性标准化)交易大小,因此方程左侧Δx/xδ 是标准化交易大小(也是:滑点)除以费用。


我们已经在下面的图表中绘制了上述方程的右侧


相对于费率的中最大标准化交易大小作为费率的函数


(在desmos上查看此图表


解释上述图表的方法如下:对于给定的费率水平(这里是0.2 = 20%费用),作为费用的百分比的最大标准化交易大小是多少?对于小值来说,这个数字是1,即对于小费用,最大不受三明治攻击的标准化交易大小等于费用水平。如果费用更大,那么可能的交易大小就会不成比例地增加。例如,在20%费用下,交易大小可以是20%*1.4=28%的池大小,在此之前是不可能受到三明治攻击的。



同样的图表但只涉及费率最高为5%


社交

阿尔法!阿尔法!
读所有关于它的信息!

阿尔法!阿尔法!
读所有关于它的信息!

阿尔法!阿尔法!
读所有关于它的信息!

订阅获取有关碳DeFi的最新更新

订阅获取有关碳DeFi的最新更新

订阅获取有关碳DeFi的最新更新