
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:
xto ilość token A w puli.yto ilość token B.kto 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:
- 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.
- 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ą.
- 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."
- 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.
- 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.
- 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.


