Žádné sendviče nejsou povoleny – jak zabránit útokům MEV na AMM

Toto je pokračování mého prvního příspěvku o tom, jak Carbon (a velké virtuální poplatky spojené s pozicí Carbon'y) znemožňují útoky MEV ve stylu sendviče, a Markovy následné příspěvky, které to kvantifikovaly a podívaly se na to, co tyto vzorce znamenají. Tento příspěvek je spíše příspěvkem ve stylu laboratorních poznámek, který pracuje s některými vzorci v Markově nejnovějším článku a dále o nich pojednává.

Pozadí

Zde jsou klíčové vzorce, se kterými pracujeme

z článku 1 a

z článku 2.

Než se pustíme dále do těchto rovnic, chtěl bych si najít chvíli na definování použitých symbolů, protože to výrazně pomůže k pochopení vzorců

  • Q je zisk, který útočník získá pomocí sendvičového útoku, který je založen na dalších parametrech níže, a

  • Δxₐ je velikost předního obchodu, který vede k této konkrétní hodnotě Q. Parametry obchodu jsou

  • Δxᵤ, což představuje velikost obchodu uživatele v podmínkách tokenu,

  • x, což představuje velikost seskupení ve stejných jednotkách jako Δx (virtuální velikost v případě pákového fondu, ale tato analýza ignoruje dopady pákového efektu na hranici), a co je nejdůležitější

  • δ představuje procentní poplatek fondu (v desítkovém vyjádření, např. 10bp = 0,001)

Klíčovou rovnicí, na kterou se zde podíváme, je druhá výše uvedená rovnice. Získá se z prvního odvozením nejprve s ohledem na Δxₐ a poté požadavkem, aby derivace Q s ohledem na Δxₐ zmizela při Δxₐ=0. Tato podmínka zajišťuje, že Δxₐ=0 je optimální pro potenciálního sendvičového útočníka, jinými slovy nedochází k žádnému arbitrážnímu zisku.

Zjednodušení vzorce

Vidíme, že výše uvedený vzorec, jak je napsán, se skládá ze tří termínů, z nichž první dva jsou triviální, protože poskytují řešení, která nejsou finančně zajímavá. Jeden z těchto výrazů ukazuje, že prázdný fond (x=0) neumožňuje sendvičové útoky, a druhé řešení má nepřiměřeně vysokou hodnotu Δxᵤ a může být proto zahozeno. Zbývá nám tedy operační část rovnice, která je následující

Abych parafrázoval to, o čem Mark ve svém článku pojednává, výše uvedená podmínka by neměla být rovnost, ale nerovnost, protože útočníci se samozřejmě nikdy nezapojí do ztrátových transakcí. Proto

  • δ je skutečně inf δ, protože jakýkoli poplatek >δ také zabrání sendvičování

  • Δxᵤ je opravdu sup Δxᵤ, protože jakýkoli obchod <Δxᵤ také zabrání sendvičování a

  • x je skutečně inf x, protože jakákoli likvidita fondu >x také zabrání sendvičování

Mark ve svém článku vyřešil výše uvedenou rovnici pro δ, Δxᵤ a x, čímž získal následující vzorce

Pro nás je nejzajímavější první ze tří výše uvedených vzorců — udává, jak velký musí být poplatek za daný obchod, aby sendvičové útoky přestaly dávat smysl. Trochu jsem to přepsal do nového zápisu, což naznačuje, že pro tuto úroveň poplatku δ a vyšší platí podmínky bez možnosti sendviče

Tento vzorec vypadá neuspokojivě složitě — ale naštěstí má pěknou asymptotiku pro velké hodnoty r=x/Δxᵤ (aka malé obchody):

V grafu pod červenou čárou je skutečná křivka, modrá čára je asymptotika mocninného zákona 1/r a zelená čára je (masivně) zlepšená asymptotika 2/2r+3

(podívejte se zde na základní kalkulačku desmos)

Zatímco r=x/Δxᵤ funguje lépe pro vzorce, finančně intuitivnější veličinou je velikost obchodu normalizovaná na likviditu 1/r = Δxᵤ/x. Je důležité mít na paměti, že se jedná také o procentuální skluz, tedy částku, o kterou obchod o velikosti Δx nepříznivě tlačí cenu fondu o velikosti x.

Zjistíme tedy následující důležitý výsledek:

Minimální výše poplatků, aby obchody nemohly být napadeny

Malé obchody (1 % velikosti poolu nebo méně) nemohou být napadeny sendvičovými útoky, pokud je úroveň poplatku větší než skluz (což je také velikost obchodu normalizovaná na likviditu), tj. δ>Δxᵤ/x. U o něco větších obchodů — do přibližně 10% skluzu — dobře funguje aproximace δ>2/(2r+3) a kromě toho by měl být použit celý vzorec [2] výše.

Maximální velikost obchodu, na kterou nelze zaútočit

Podobně se můžeme dívat na maximální životaschopnou velikost obchodu jako funkci úrovně poplatku, kterou nelze sendvičově napadnout. Začneme rovnicí [3] z článku 2 výše, ale obě strany vydělíme x a δ. Připomínáme, že Δxᵤ/x je velikost obchodu (normalizovaná na likviditu), a proto nový LHS rovnice Δxᵤ/xδ je normalizovaná velikost obchodu (také: skluz) dělená poplatky.

Níže jsme znázornili RHS výše uvedené rovnice

(viz tento graf na desmos)

Způsob, jak interpretovat výše uvedený graf, je následující: pro danou úroveň poplatků (zde 0,2 = 20 % poplatků), jaká je maximální normalizovaná velikost obchodu jako procento poplatků? Pro malé pro malé hodnoty je toto číslo jedna, tj. pro malé poplatky se maximální nesendvičovatelná normalizovaná velikost obchodu rovná výši poplatků. Pokud jsou poplatky vyšší, pak se možná velikost obchodu neúměrně zvyšuje. Např. při 20% poplatcích může být velikost obchodu 20%*1,4=28% velikosti poolu před tím, než je sendvičovatelný.

Měli bychom však poznamenat, že k tomuto nárůstu objemu obchodů dochází pouze u poměrně vysokých úrovní poplatků. Níže je o něco přiměřenější pohled na tento graf s úrovněmi poplatků do 5 %, kde je zlepšení lineární přibližně 5 % na každé 3 % poplatků, a tedy pod 10 % při úrovni poplatků 5 %, tj. není to nijak zvlášť významné ve srovnání s základní hodnotu 100 % (a rozhodně ne u poplatků < 1 %).

Žádné sendviče nejsou povoleny — jak zabránit útokům MEV bylo původně publikováno v CarbonDeFi na médiu, kde lidé pokračují v konverzaci tím, že zvýrazňují tento příběh a reagují na něj.