Aucun sandwich n'est autorisé — comment empêcher les attaques MEV sur AMM

Ceci fait suite à mon article initial sur la façon dont Carbon (et les gros frais virtuels inhérents à une position Carbon'y) rendent impossibles les attaques MEV de style sandwich, et aux articles ultérieurs de Mark qui quantifiaient cela et examinaient ce que ces formules impliquent. Cet article s'apparente davantage à un article de style notes de laboratoire qui fonctionne avec certaines des formules du dernier article de Mark et en discute plus en détail.

Arrière-plan

Les formules clés avec lesquelles nous travaillons ici sont

de l'article 1, et

de l'article 2.

Avant d'aller plus loin dans ces équations, je souhaite prendre un moment pour définir les symboles utilisés car cela facilitera grandement la compréhension des formules.

  • Q est le profit qu'un attaquant réalise avec une attaque sandwich basée sur les autres paramètres ci-dessous, et

  • Δxₐ est la taille de l'échange initial qui conduit à cette valeur particulière de Q. Les paramètres commerciaux sont

  • Δxᵤ qui représente la taille de l'échange d'utilisateurs en termes de jetons,

  • x qui représente la taille du pool dans les mêmes unités que Δx (taille virtuelle dans le cas des pools à effet de levier, mais cette analyse ignore les implications bloquées aux limites de la liquidité à effet de levier), et surtout

  • δ représente le pourcentage de frais du pool (en termes décimaux, par exemple 10 pb = 0,001)

L’équation clé que nous examinerons ici est la deuxième équation ci-dessus. Il est obtenu à partir du premier en dérivant d'abord par rapport à Δxₐ, puis en exigeant que la dérivée de Q par rapport à Δxₐ disparaisse à Δxₐ = 0. Cette condition garantit que Δxₐ=0 est optimal pour l’attaquant potentiel du sandwich, en d’autres termes, il n’y a pas de profit d’arbitrage.

Simplifier la formule

On voit que la formule ci-dessus, telle qu'écrite, est constituée de trois termes, dont les deux premiers sont triviaux car ils donnent des solutions qui ne sont pas financièrement intéressantes. L'un de ces termes montre qu'un pool vide (x=0) ne permet pas d'attaques sandwich, et l'autre solution a une valeur déraisonnablement élevée de Δxᵤ et peut donc être rejetée. Il nous reste donc la partie opération de l'équation qui est la suivante

Pour paraphraser ce que Mark explique dans son article, la condition ci-dessus ne devrait pas être une égalité mais une inégalité car, bien entendu, les attaquants ne s'engageront jamais dans des transactions déficitaires. Donc

  • δ est vraiment inf δ car tout frais >δ empêchera également la prise en sandwich

  • Δxᵤ est vraiment sup Δxᵤ car tout échange <Δxᵤ empêchera également la prise en sandwich, et

  • x est vraiment inf x car toute liquidité de pool > x empêchera également la prise en sandwich

Mark a dans son article résolu l'équation ci-dessus pour δ, Δxᵤ et x, donnant les formules suivantes

Pour nous, la première des trois formules ci-dessus est la plus intéressante  : elle indique le montant des frais qui doit être élevé pour une transaction donnée afin que les attaques sandwich n'aient plus de sens. Je l'ai légèrement réécrit dans la nouvelle notation, indiquant que les conditions sans sandwich possibles sont valables pour ce niveau de frais δ et au-dessus.

Cette formule semble d'une complexité décevante — mais heureusement, elle a une belle asymptotique pour les grandes valeurs de r=x/Δxᵤ (c'est-à-dire les petites transactions) :

Dans le graphique ci-dessous, la ligne rouge est la courbe réelle, la ligne bleue est l'asymptotique de la loi de puissance 1/r et la ligne verte est l'asymptotique (massivement) améliorée 2/2r+3.

(voir ici pour le calculateur desmos sous-jacent)

Bien que r=x/Δxᵤ fonctionne mieux pour les formules, sur le plan financier, la quantité la plus intuitive est la taille de transaction normalisée en termes de liquidité 1/r = Δxᵤ/x. Il est important de garder à l'esprit qu'il s'agit également du pourcentage de glissement, c'est-à-dire du montant par lequel une transaction de taille Δx fait pression négativement sur le prix d'un pool de taille x.

Nous trouvons donc le résultat important suivant :

Niveaux de frais minimaux afin que les transactions ne puissent pas être attaquées

Les petites transactions (1 % de la taille du pool ou moins) ne peuvent pas être attaquées par des attaques sandwich si le niveau des frais est supérieur au slippage (qui est également la taille de la transaction normalisée en termes de liquidité), c'est-à-dire δ>Δxᵤ/x. Pour les transactions légèrement plus importantes — jusqu'à environ 10 % de glissement — l'approximation δ>2/(2r+3) fonctionne bien, et au-delà de cela, la formule complète [2] ci-dessus doit être utilisée.

Taille maximale des échanges qui ne peut pas être attaquée

De la même manière, nous pouvons examiner la taille maximale viable d’une transaction en fonction du niveau de frais qui ne peut pas être attaqué en sandwich. Nous commençons par l'équation [3] de l'article 2 ci-dessus mais nous divisons les deux côtés par x et par δ. Nous rappelons que Δxᵤ/x est la taille de la transaction (normalisée en termes de liquidité), et donc le nouveau LHS de l'équation Δxᵤ/xδ est la taille normalisée de la transaction (également : slippage) divisée par les frais.

Nous avons tracé le RHS de l'équation ci-dessus ci-dessous

(voir ce tableau sur desmos)

La façon d'interpréter le graphique ci-dessus est la suivante : pour un niveau de frais donné (ici 0,2 = 20 % de frais), quelle est la taille maximale normalisée d'une transaction en pourcentage des frais ? Pour les petites valeurs, ce nombre est l'unité, c'est-à-dire que pour les petits frais, la taille maximale normalisée des échanges non sandwichables est égale au niveau des frais. Si les frais sont plus élevés, la taille possible des transactions augmente de manière disproportionnée. Par exemple, avec des frais de 20 %, la taille de la transaction peut être de 20 %*1,4 = 28 % de la taille du pool avant d'être prise en sandwich.

Il convient toutefois de noter que cette augmentation de la taille des transactions ne se produit que pour des niveaux de frais assez élevés. Ci-dessous une vue légèrement plus raisonnable sur ce graphique avec des niveaux de frais allant jusqu'à 5% où l'amélioration est linéaire à environ 5% pour chaque 3% de frais et donc inférieure à 10% à un niveau de frais de 5%, c'est-à-dire pas particulièrement significatif par rapport à une valeur de base de 100 % (et certainement pas à des frais de 1 %).

Aucun sandwich n'est autorisé — comment prévenir les attaques MEV a été initialement publié dans CarbonDeFi sur Medium, où les gens poursuivent la conversation en soulignant et en répondant à cette histoire.