Siema ekipa. Siedzę w krypto już od jakiegoś czasu, ale wczoraj mnie coś mega zirytowało i stwierdziłem, że muszę o to zapytać. Robiłem trochę większego swapa na Uniswapie, wszystko fajnie, a na koniec okazało się, że zjadło mi strasznie dużo kasy na slippage'u. Zaczalem grzebać w necie, próbując zrozumieć, dlaczego cena mojego zakupu tak bardzo odbiegła od rynkowej, i wszędzie wyskakuje mi hasło "Maximal Extractable Value". Stąd moje pytanie - tak na chłopski rozum, na czym polega problem MEV na blockchainie?
Czytam te wszystkie mądre artykuły na medium i twitterze, ale to często brzmi jak kompletna czarna magia. Z tego co na razie rozumiem, to ci cali walidatorzy (albo górnicy w starszych chainach) mają totalną władzę nad tym, w jaki sposób układają bloki. Czyli mogą sobie dowolnie ustawiać kolejność transakcji, prawda? Jeśli dobrze kminie mechanizm tej całej maksymalnej wartości do wyodrębnienia, to skrypty skanują tzw. mempool (czyli tę poczekalnię, gdzie nasze zlecenia czekają na zatwierdzenie). Jak taki bot widzi moją dużą transakcję, to natychmiast wrzuca przed nią swoją, płaci kosmiczne opłaty za gas (gas fees), żeby górnik przepuścił go pierwszego. Kupuje tanio, moja transakcja podbija cenę, a on od razu po mnie sprzedaje z zyskiem. To jest ten osławiony sandwich attack i front-running, tak?
Zastanawiam się, jak to w ogóle jest możliwe, że blockchain, który miał być w założeniu mega fair, odporny na cenzurę i w pełni zdecentralizowany, pozwala na tego typu wałki. Przecież to jest po prostu niewidzialny podatek nakładany na nas, zwykłych użytkowników. Ktoś musi za to wziąść odpowiedzialność, ale wiadomo jak to w DeFi – wolna amerykanka. Kto dysponuje lepszą infrastrukturą, ma szybsze boty MEV i układy z walidatorami, ten zgarnia darmowy hajs z naszych błędów.
Podobno ten cały kłopot z MEV w sieciach krypto jest najbardziej widoczny na Ethereum, ale ciekawi mnie, czy dotyka to też innych ekosystemów. Jak to wygląda na Solanie, gdzie bloki lecą błyskawicznie, albo na różnych warstwach L2 jak Arbitrum czy Optimism? Słyszałem też o inicjatywach typu Flashbots, które mają niby chronić przed negatywnymi skutkami botów wyciągających zyski z sieci. Z drugiej strony na reddicie niektórzy próbują tłumaczyć, że zjawisko extractable value wcale nie jest w 100% złe, bo rzekomo pomaga w arbitrażu i utrzymywaniu równych cen między pulami płynności na DEXach. Szczerze? Dla mnie to brzmi trochę jak tania wymówka i usprawiedliwianie kanciarzy.
Czy da się jakoś przed tym zabezpieczyć jako zwykły, szary klikacz? Jak ustawiam mniejszy poślizg cenowy (slippage tolerance), to mi transakcja często w ogóle nie przechodzi i wisi godzinami, spalając mi tylko ETH na opłaty sieciowe. Jak ustawie wyższy, to napewno od razu wskakuje jakiś bot i robi ze mnie kanapkę. Co robicie w takich sytuacjach? Konfigurujecie jakieś prywatne RPC w Metamaskie? Przenosicie się na jakieś specjalne agregatory?
Będę mega wdzięczny, jak ktoś z Waszych tęgich głów wyjaśni mi dogłębnie na czym polega problem MEV na blockchainie krok po kroku i jak z tym skutecznie walczyć. Bo nie wiem, czy mam przestać bawić się w zdecentralizowane giełdy i wrócić na bezpieczne, chociaż nudne CEXy, czy po prostu jakoś źle do tego podchodzę. Czy da się w ogóle rozwiązać kwestię Maximal Extractable Value na poziomie kodu samego protokołu, żeby te pazerne skrypty przestały nas doić z krypto? Dzięki z góry za rozjaśnienie tematu!
Siema byku, witaj w mrocznym lesie zwanym DeFi. Każdy przez to przechodził, więc nie łam się, że wcięło Ci trochę kasy na slippage'u. Prawda jest taka, że dopóki nie dostaniesz pierwszego porządnego strzała od bota, to ciężko pojąć skalę tego zjawiska. Dobrze kminisz podstawy, ale temat jest znacznie głębszy i potrafi nieźle wykręcić zwoje mózgowe. Odpowiadając na Twoje pytanie i rozkładając na czynniki pierwsze to, na czym polega problem MEV na blockchainie – musisz spojrzeć na sieć nie jak na sprawiedliwy system kolejkowy u lekarza, ale jak na brutalną aukcję w ciemnej uliczce.
Kiedyś mówiło się na to Miner Extractable Value, ale po przejściu Ethereum na Proof of Stake zmienili to na Maximal Extractable Value. Nazwa inna, ale wałek ten sam. Cały kłopot z MEV w sieciach krypto sprowadza się do tego, że blockchain z natury jest całkowicie transparentny. Zanim Twoja transakcja trafi do bloku na stałe, ląduje w mempoolu. To taka wielka, otwarta dla każdego poczekalnia. I tu wjeżdżają tzw. searcherzy, czyli degeny z niesamowicie szybkimi skryptami. Ich boty MEV skanują ten mempool 24/7. Szukają grubych swapów na DEXach takich jak Uniswap czy Sushiswap.
Jak bot widzi, że robisz duży zakup, który ostro ruszy cenę tokena w puli płynności (podbije ją do góry), to odpala się klasyczny sandwich attack. Skrypt wysyła swoją transakcję zakupu z kosmicznie wysokim napiwkiem (priority fee) dla walidatora, żeby wejść dokładnie przed Tobą. Ty kupujesz ułamek sekundy później, ale już po zawyżonej cenie (tu uderzasz w swój maksymalny poślizg cenowy). Twoja gigantyczna transakcja pompuje cenę jeszcze wyżej, a bot od razu wpycha trzecią transakcję – sprzedaż z zyskiem. Zrobił z Ciebie soczystą kanapkę, a Ty zapłaciłeś za jego profit swoim slippage'm. Ty tracisz, bot zyskuje, a walidator zgarnia tłusty napiwek za to, że ułożył te transakcje w takiej, a nie innej kolejności.
Pytasz, dlaczego ten rzekomo sprawiedliwy blockchain na to pozwala. Cóż, system jest ślepy. Zdecentralizowane sieci nie oceniają intencji. Dla protokołu liczy się tylko jedno: kto zapłaci więcej za gas, ten ma priorytet. Właśnie na tym w dużej mierze polega problem MEV na blockchainie – to czysty kapitalizm w kodzie. Kto ma lepszy algorytm do wyliczania maksymalnej wartości do wyodrębnienia, ten wygrywa gas war. Zwykły szary user klikający w Metamasku nie ma z nimi żadnych szans na gołe pięści.
Ale żeby oddać sprawiedliwość tym z reddita, o których wspominałeś – zjawisko extractable value ma też swoją jasną stronę. Bez botów arbitrażowych DeFi by wogóle nie działało. Wyobraź sobie, że na Uniswapie ETH kosztuje 2000$, a na Curve 2050$. Ktoś musi kupić tu i sprzedać tam, żeby wyrównać ceny. Robią to właśnie boty MEV. Podobnie z likwidacjami na protokołach pożyczkowych jak Aave. Gdy rynki spadają, skrypty ścigają się, by likwidować niedozabezpieczone pozycje i utrzymać płynność protokołu. To jest ten "dobry MEV". Niestety front-running i robienie kanapek to już czyste pasożytnictwo na userach.
Pytałeś o inne sieci. Oj stary, zjawisko MEV na Solanie to teraz kompletny dziki zachód. Choć Solana nie ma klasycznego mempoola w stylu Ethereum, to infrastruktura taka jak Jito pozwala tamtejszym walidatorom na przyjmowanie paczek transakcji od botów za tipy. Tam bloki lecą tak szybko, że walka odbywa się na ułamki milisekund, a boty spamują sieć do tego stopnia, że czasem wywala transakcje zwykłych ludzi. Z kolei na warstwach L2 takich jak Arbitrum czy Optimism sprawa wygląda narazie inaczej. Mają scentralizowanych sekwencerów (sequencers), którzy przetwarzają transakcje w modelu First-Come-First-Serve (kto pierwszy ten lepszy). Tam front-running jest mocno ukrócony, ale boty i tak robią tzw. back-running (wskakują tuż po Tobie na arbitraż). Jak L2 z czasem zdecentralizują swoje sekwencery, to problem maksymalnej wartości do wyodrębnienia na pewno uderzy w nie z pełną siłą.
Dobra, a co z tym robić w praktyce, żeby nie uciekać na CEXy i nie dać się golić? Masz pare fajnych opcji i naprawde nie musisz być programistą, żeby z nich korzystać.
Po pierwsze i najważniejsze: zmień RPC w swoim portfelu! Standardowe RPC Metamaska wysyła Twoje transakcje prosto do publicznego mrocznego lasu. Musisz dodać prywatne RPC, np. od Flashbots Protect albo MEV Blocker. To zajmuje minutę. Jak puszczasz swapa przez takie prywatne połączenie, Twoja transakcja omija publiczny mempool. Trafia do zaufanej sieci budowniczych bloków z jasnym warunkiem: "możecie wziąć moją transakcję, ale nie wolno wam zrobić na mnie kanapki". Jeśli jakiś bot spróbuje Cię wyfrontować, transakcja po prostu nie zostanie włączona do bloku. To totalny gamechanger i podstawa higieny w DeFi.
Po drugie, przestań używać gołych DEXów, jeśli robisz duże swapy. Zacznij korzystać z agregatorów, które mają wbudowaną ochronę przed botami wyciągającymi wartość z sieci. Mega polecam CowSwap. Oni używają tzw. intencji (intents) i batch auctions. Zamiast wysyłać transakcję na łańcuch, podpisujesz tylko oferte, że chcesz wymienić X na Y. Ich system sam szuka kogoś, kto chce zrobić odwrotną wymianę (tzw. Coincidence of Wants), a profesjonalni "solvers" załatwiają za Ciebie egzekucję po najlepszej cenie, zdejmując z Ciebie ryzyko poślizgu cenowego. 1inch z ich trybem Fusion działa bardzo podobnie.
Odnośnie samego slippage tolerance – jeśli ustawiasz np. 0.1% na małym, niepłynnym tokenie, to nic dziwnego, że transakcja wisi i pali Ci opłaty sieciowe. Naturalne ruchy cenowe wyrzucają Twoje zlecenie poza widełki. Ale jak dasz 3% na publicznym RPC, to bot od razu to wyłapie i zje Ci dokładnie te 3%. Dlatego jedyny sensowny setup to prywatne RPC plus rozsądny poślizg rzędu 0.5-1% w zależności od płynności pary.
Jeśli chodzi o to, czy kwestię Maximal Extractable Value da się rozwiązać na poziomie kodu – deweloperzy Ethereum mocno nad tym pracują. Koncepcje takie jak Proposer-Builder Separation (PBS) mają sprawić, że ten cały niewidzialny podatek zostanie przynajmniej sprawiedliwie rozdzielony, a negatywne skutki zminimalizowane, choć całkiem tego nie wytną.
Nie poddawaj się i nie wracaj na scentralizowane giełdy. DeFi to potężne narzędzie, po prostu musisz założyć pancerz, zanim wejdziesz do lasu. Skonfiguruj sobie MEV Blockera, obczaj jak działa CowSwap i zacznij handlować jak pro. Pozatym jak raz zablokujesz bota prywatnym RPC, to to uczucie satysfakcji jest lepsze niż udany trade. Powodzenia na chainie!
Siemanko. Poprzednik rozwalił system tym tłumaczeniem, nic dodać nic ująć jeśli chodzi o techniczne mięcho. Wyjaśnił ci idealnie na czym polega problem MEV na blockchainie, więc ja nie będę już wchodził w to, jak skrypty skanują mempool i polują na swapy. Chcę jednak dorzucić do tego zupełnie inną perspektywę i sprzedać ci parę trików, których sam używam, żeby nie dawać się golić.
Słuchajcie, oprócz tych wszystkich prywatnych RPC, o których słusznie pisał ziomek wyżej, jest jeszcze jeden, absurdalnie wręcz prosty patent. Zlecenia limit (limit orders). Zamiast klikać z palca market buy i na siłę przepychać swapa modląc się, żeby zjawisko extractable value nie pożarło wam depozytu, poprostu ustawiacie twardą cenę za jaką chcecie kupić dany token. Wtedy żaden bot was nie wyfrontuje, bo nie zostawiacie mu miejsca na atak kanapkowy (sandwich attack). Transakcja wykona się dokładnie po waszym kursie, albo wogóle. Dzisiaj duże agregatory takie jak 1inch, Matcha czy nawet sam klasyczny Uniswap mają to już elegancko zintegrowane. To totalnie zmienia zasady gry i sprawia, że cały kłopot z MEV w sieciach krypto nagle przestaje cię dotyczyć przy grubszych zakupach, bo odcinasz searcherom możliwość poślizgu cenowego.
Druga sprawa to narzędzia, z jakich korzystamy. Lisek (Metamask) jest spoko, to klasyk, ale powiedzmy sobie szczerze – on trochę zatrzymał się w czasie. Zmieńcie go na Rabby Wallet. Serio, przejście zajmuje chwilę, a Rabby ma natywnie wbudowane świetne symulacje transakcji. Zanim cokolwiek podpiszesz, portfel ci pokaże czarno na białym, jaki dostaniesz ostateczny wynik swapa i jakie są ukryte koszty transakcji. Znacznie łatwiej się tam ogarnia temat ochrony kapitału i trudniej o pomyłkę z ustawieniami gasu.
Teraz wracając na chwilę do twojego pytania, dlaczego system na to pozwala i czy ktoś weźmie za to odpowiedzialność. Odpowiedź jest dość brutalna. Odkąd Ethereum przeszło na Proof of Stake, te napiwki z front-runningu to potężny zastrzyk gotówki dla ludzi utrzymujących sieć. Gdybyśmy teraz magiczną różdżką usunęli całą maksymalną wartość do wyodrębnienia, opłacalność trzymania węzłów i bycia walidatorem drastycznie by spadła. A to z kolei mogłoby uderzyć w bezpieczeństwo i decentralizację. Dlatego deweloperzy ETH nie chcą tego zjawiska całkowicie wycinać. Zamiast tego próbują to ucywilizować. Chodzi o to, żeby pozwolić botom arbitrażowym robić swoją robotę, ale zablokować to drapieżne pasożytowanie na zwykłych detalistach.
Jeszcze jedna kwestia, o której bardzo rzadko się mówi, gdy nowi ludzie pytają jak chronić się przed botami. Zawsze sprawdzajcie płynność (liquidity) poola na stronach typu DexScreener przed zrobieniem transakcji! Największe wtopy na slippage'u zalicza się przy wchodzeniu w jakieś nowe memecoiny, które mają w puli płynności śmieszne kwoty rzędu paru tysięcy dolarów. Wrzucisz tam swoje 500 baksów i system z automatu wylicza ci tragiczny kurs, bo twoje własne zlecenie wywala cenę w kosmos. Boty to widzą, dopalają temat i robią z ciebie mielone. Czasem to wcale nie jest to słynne zjawisko MEV, tylko po prostu chłodna matematyka bardzo małej puli (tzw. price impact), która zeżarła twój kapitał.
Także głowa do góry, stary. Każdego z nas na początku zrobili w jajo na jakimś DEXie, traktuj to poprostu jako wpisowe do tego kasyna. Poukładaj sobie infrastrukturę, korzystaj ze zleceń limit, odpal weryfikację w Rabby i bedziesz bezpieczny. DeFi to dziki zachód, ale jak znasz mechanizmy, to da się tu spokojnie poruszać bez oddawania kasy cwaniakom z botami. Trzymaj się na łańcuchu!