Slippage i price impact — wyjaśnienie

·7 min czytania·Autor: SSP Editorial Team
Diagram zestawiający cenę wyceny swapa z ceną finalną po price impact i slippage.

Slippage i price impact — wyjaśnienie

Widzisz wycenę: 1 ETH za 3 200 USDC. Potwierdzasz swap. Kilka sekund później transakcja jest rozliczona, a do Ciebie trafia 3 187 USDC. Nikt Cię nie zhakował, nikt nie zmienił reguł w trakcie — po prostu spotkałeś dwa najczęściej źle rozumiane mechanizmy on-chainowego handlu: price impact (wpływ na cenę) i slippage (różnicę między ceną oczekiwaną a faktyczną).

Ten artykuł rozkłada oba pojęcia na czynniki pierwsze, z myślą o użytkownikach samodzielnej pieczy. Pod koniec lektury będziesz wiedzieć, dlaczego liczba, którą widziałeś, nie zawsze jest tą, którą otrzymujesz, co naprawdę robi ustawienie "slippage tolerance" i jak o nim myśleć, gdy wykonujesz swap z SSP Wallet albo z dApp.

Dlaczego wycena to tylko wycena

Większość swapów on-chain nie idzie przez tradycyjną książkę zleceń. Idzie przez Automated Market Maker (AMM): smart contract, który trzyma dwa aktywa w liquidity pool i wycenia je według wzoru. Najpopularniejszy wzór to reguła stałego iloczynu, zwykle zapisywana jako x * y = k:

  • x to ilość token A w puli.
  • y to ilość token B.
  • k to stała, którą pula stara się zachować.

Gdy wymieniasz token A na token B, naruszasz proporcję x do y. Pula automatycznie aktualizuje cenę, tak by k pozostawało mniej więcej stałe. To właśnie ta aktualizacja jest źródłem price impact.

Wycena to migawka stanu puli z poprzedniej chwili. Zanim Twoja transakcja zostanie zmajnowana, pula często już się zmieniła — uderzyły w nią inne swapy, przeszły bloki, a Twój własny trade zaraz pchnie ją jeszcze dalej. Liczba, którą zobaczyłeś, była uczciwa. Po prostu nie była obietnicą.

Price impact: koszt Twojego własnego trade’u

Price impact to zmiana ceny wywołana wyłącznie Twoim trade’em, przy założeniu, że pomiędzy wyceną a wykonaniem nic innego się nie zmieni. Jest mechaniczny, przewidywalny i całkowicie zależny od głębokości puli.

Eksperyment myślowy. Wyobraź sobie pulę ETH/USDC z 100 ETH i 320 000 USDC. Cena krańcowa to mniej więcej 3 200 USDC za ETH. Teraz:

  • Wymień 1 ETH. Zabierasz maleńki kawałek rezerw puli. Nowa cena drgnie ledwie o włos. Otrzymasz coś bliskiego 3 200 USDC, minus opłata puli. Price impact mały — może kilka punktów bazowych.
  • Wymień 10 ETH. Wyraźnie ruszyłeś proporcją. Faktycznie uzyskana średnia cena będzie znacznie poniżej 3 200 USDC za ETH. Price impact już rzędu kilku procent.
  • Wymień 50 ETH. Pochłaniasz jedną trzecią płynności puli. Cena wykonania się zapada. Price impact może iść w dziesiątki procent.

Wniosek: większy trade w stosunku do głębokości puli oznacza większy price impact. Podwojenie trade’u więcej niż podwaja koszt, bo każda kolejna jednostka uderza w gorszą krzywą. Portfele i agregatory zwykle pokazują tę wartość w procentach na ekranie swapa. Wszystko powyżej kilku procent traktuj jako ostrzeżenie, nie jako przypis.

Price impact nie jest opłatą wypłacaną komuś konkretnemu — to koszt bycia własną drugą stroną wobec krzywej.

Slippage: różnica między wyceną a wykonaniem

Slippage to różnica między ceną, której się spodziewałeś, a ceną, po której Twój swap rzeczywiście się wykonał. Slippage zawiera w sobie price impact, ale obejmuje też wszystko inne, co dzieje się między chwilą, w której widzisz wycenę, a chwilą, w której transakcja ląduje on-chain:

  • Inne transakcje uderzające w tę samą pulę. Każdy, kto wykonuje swap w tym samym bloku lub w blokach między Twoją wyceną a potwierdzeniem, zmienia stan puli.
  • Czas między wyceną a wykonaniem. Nawet kilka sekund wystarczy, by pula dryfowała, zwłaszcza na aktywach zmiennych.
  • Twój własny price impact. Jak wyżej — sam trade przesuwa cenę, względem której zostanie wykonany.
  • MEV. Searcherzy mogą "kanapkować" oczekujący swap, ustawiając transakcje tuż przed i tuż po nim. Rozwijamy ten temat w artykule MEV, frontrunning i ataki sandwich.

Price impact możesz modelować. Slippage to to, co faktycznie się stało.

Ustawienie slippage tolerance

Skoro sieć nie potrafi zagwarantować dokładnej ceny między wyceną a wykonaniem, interfejsy swap pozwalają Ci ustawić slippage tolerance: maksymalne akceptowalne odchylenie od podanej ceny. Jeżeli rzeczywiste wykonanie byłoby gorsze niż wycena - tolerancja, smart contract cofa swap.

Brzmi schludnie, ale to realny kompromis:

  • Zbyt niska. Transakcja revertuje, bo pula odeszła poza Twój limit. Revert i tak kosztuje gas — płacisz za nieudaną próbę i wychodzisz z pustymi rękami. W ruchliwe dni na aktywach zmiennych potrafisz zaliczyć kilka nieudanych swapów, zanim któryś przejdzie.
  • Zbyt wysoka. Transakcja przechodzi prawie zawsze, także w przypadkach, w których boty MEV celowo poruszyły cenę przeciwko Tobie. 5% tolerancji na popularnym tokenie to zielone światło dla ataków sandwich. Dostaniesz najgorszą cenę, na jaką Twoja tolerancja pozwala.

Nie istnieje uniwersalnie poprawna liczba. 0,1% tolerancji na głębokiej parze stablecoinów to rozsądne ustawienie. To samo na chudym tokenie w środku newsa to gwarantowany revert. Pragmatyczne wyjście to zacząć od małych wartości i regulować: jeśli swap się cofa, podnieś tolerancję delikatnie; jeśli jesteś kanapkowany — obniż ją i rozważ inną drogę albo mniejsze paczki.

Jak to wygląda od strony SSP

SSP daje Ci dwie ścieżki do swapowania, a każda eksponuje Cię na slippage trochę inaczej:

  • Wbudowany agregator portfela (powierzchnia buy/sell/swap wewnątrz SSP). Agregator dobiera trasę między venue i prezentuje Ci jedną finalną wycenę wyjścia. Większość slippage’u na poziomie trasy jest obsługiwana wewnątrz tego flow; Ty potwierdzasz albo anulujesz na podstawie finalnej liczby, którą widzisz. UX tych przepływów omówiliśmy w swapowaniu krypto z poziomu SSP.
  • Swap w dApp przez WalletConnect. Kiedy łączysz SSP bezpośrednio z jakimś DEX, interfejs swapa należy do dApp — łącznie z ustawieniem slippage tolerance. Liczbę ustawiasz Ty, konsekwencje też są Twoje. SSP jedynie współpodpisuje transakcję, której dApp żąda, po Twoim zatwierdzeniu w rozszerzeniu i potwierdzeniu na SSP Key. Czytaj ekran swap dApp uważnie.

Natura multisig 2-z-2 w SSP nie zmienia matematyki AMM, ale oznacza, że każdy swap wymaga potwierdzenia na dwóch urządzeniach. To dodaje kilka sekund między "kliknąłem potwierdź" a "tx weszła do mempool" — kolejny powód, dla którego wycena i finalne wykonanie nie zawsze się zgadzają.

Praktyczne wskazówki

Krótki checklist, który sprawdza się na większości chainów i DEX-ów:

  1. Najpierw przetestuj na małą skalę. Zanim wymienisz dużą pozycję, puść mały kawałek tą samą trasą. Jeśli price impact jest niepokojący już przy małym trade, przy dużym będzie znacznie gorzej.
  2. Patrz na procent price impact. Jeśli portfel go pokazuje, dla transakcji o normalnej wielkości traktuj wartości powyżej 1–2% jako czerwoną flagę. Agregatory i głębsze pule zwykle to rozwiązują.
  3. Patrz na koszt końcowy, nie tylko na kurs. Opłaty gas na Ethereum to dodatkowy koszt ponad price impact i slippage. Mechanikę opłat omówiliśmy w opłatach gas na Ethereum dla użytkowników samodzielnej pieczy. EIP-1559 oznacza, że opłata, którą płacisz, może się poruszyć między podpisem a wpadnięciem bloku — to kolejny powód, dla którego "cena ruszyła, kiedy potwierdzałem."
  4. Wybieraj głębokie pule. Płynność to przyjaciel price impact. Para z 50 mln USD płynności wchłonie Twój trade dużo lepiej niż para z 500 tys. USD.
  5. Ustawiaj tolerancję świadomie. Nie przyjmuj wartości domyślnej w ciemno. Nie podbijaj jej do 5% tylko po to, żeby nieudany swap przeszedł — ta porażka często coś Ci mówi.
  6. Jeśli jesteś kanapkowany raz za razem, zmień trasę. Mniejsze paczki, inny agregator lub MEV-świadomy RPC mogą zmienić wynik.

Najważniejsze

Price impact to nieubłagana matematyka handlu z pulą: rośnie z wielkością trade’u i maleje z płynnością. Slippage to brudna rzeczywistość wykonania w publicznym mempoolu, w którym inne transakcje, czas i Twój własny trade ruszają ceną. Twoja slippage tolerance to dźwignia, która decyduje, czy Twoja tx prędzej revertuje, czy zostanie kanapkowana. Korzystaj z niej z rozwagą.

Kiedy swapujesz w SSP, ta sama fizyka działa, niezależnie od tego, czy idziesz przez wbudowany agregator, czy przez dApp via WalletConnect. Różnica jest taka, kto ustawia tolerancję — a gdy zrozumiesz, co ustawiasz, możesz trzymać obie opcje bez niespodzianek.

Dalsza lektura

Udostępnij ten artykuł

Powiązane artykuły