Swap memecoinów na Solanie bez przepłacania: slippage, price impact, priority fee i opłaty
Rozkładamy jeden swap na koszty, które widzisz w naszym arkuszu transakcji: co znaczy „Minimum do otrzymania”, dlaczego wycena wygasa, jak działa sandwich attack, gdzie czai się transfer fee Token-2022 i ile naprawdę zarabiamy na Twoim swapie.

Najważniejsze wnioski
- Slippage tolerance, price impact, priority fee i platform fee to cztery różne koszty. Wyższa tolerancja nie poprawia ceny, tylko dopuszcza gorszy wynik
- „Minimum do otrzymania” to najgorszy wynik, który akceptujesz. Gdy rynek pójdzie dalej, transakcja się nie wykona, ale opłatę sieci i tak zapłacisz
- Wycena wygasa, bo transakcja na Solanie ma ograniczoną ważność, a cena się zmienia. Po wygaśnięciu nasz terminal blokuje podpis
- Niski slippage to najskuteczniejsza obrona przed sandwich attack. Żadne narzędzie nie usuwa MEV całkowicie
- Token z transfer fee Token-2022 traci część każdego transferu, także przy kupnie i sprzedaży, a stawka może się zmienić po Twoim zakupie
- MEMECOINY pobiera 0,75% od każdego swapu w swoim terminalu. Bezpośrednio w Jupiter Ultra większość par kosztuje mniej
Cztery różne koszty jednego swapu[2][1][6]
Swap memecoina na Solanie w naszym terminalu idzie przez Jupiter Swap API. Zanim cokolwiek podpiszesz, arkusz „Podgląd wyceny” pokazuje trzy wiersze: „Minimum do otrzymania”, „Wpływ na cenę” i „Łączne opłaty swapu”. Pod przyciskiem „Szczegóły opłat i trasy” są kolejne: „Szacowana ilość”, „Poślizg”, „Opłata MEMECOINY”, „Opłata Jupiter / trasy” i „Opłata sieci (szac.)”. Każdy z nich odpowiada innemu kosztowi i warto ich nie mieszać.
Price impact wynika z rozmiaru Twojego zlecenia względem liquidity puli: im większa transakcja w płytkiej puli, tym gorsza średnia cena. Jupiter podaje go w polu priceImpact w punktach procentowych, a my pokazujemy go w wierszu „Wpływ na cenę”. Slippage tolerance to coś innego: granica, o ile wykonanie może odejść od kwotacji, zanim transakcja zostanie odrzucona. Priority fee to opłata dla walidatora za szybsze włączenie transakcji do bloku. Platform fee to opłata pośrednika, u nas „Opłata MEMECOINY”.
- Price impact: koszt rozmiaru zlecenia w danej puli, wiersz „Wpływ na cenę”
- Slippage tolerance: dopuszczalne odejście od kwotacji, wiersz „Poślizg” i ustawienie „Maks. poślizg”
- Priority fee i opłata bazowa sieci: wiersz „Opłata sieci (szac.)”
- Platform fee: wiersze „Opłata MEMECOINY” i „Opłata Jupiter / trasy”, razem w „Łączne opłaty swapu”
Co naprawdę znaczy „Minimum do otrzymania”[2][7]
Wiersz „Minimum do otrzymania” to minimum received, czyli najmniejsza ilość tokena, jaką transakcja może Ci dać. Bierzemy ją z pola otherAmountThreshold, które Jupiter opisuje jako minimalną kwotę wyjściową po uwzględnieniu slippage. Gdy Jupiter jej nie poda, liczymy ją sami: szacowaną ilość pomniejszamy o ustawiony slippage i zaokrąglamy w dół.
Minimum nie jest prognozą ani gwarancją straty. To granica: jeśli cena zdąży się zmienić bardziej, niż pozwala tolerancja, transakcja zostanie odrzucona zamiast wykonać się gorzej. Odrzucona transakcja nie jest jednak darmowa. Dokumentacja Solany mówi wprost, że opłata transakcyjna jest pobierana niezależnie od tego, czy transakcja się powiedzie.
Dlatego przed podpisem patrz najpierw na „Minimum do otrzymania”, a dopiero potem na „Szacowana ilość”. Szacunek pokazuje wynik przy obecnej cenie, minimum pokazuje, na co się zgadzasz w najgorszym przypadku.
Slippage w terminalu: Auto, 0,5%, 1%, 3% albo własny[2][1][3][5]
W ustawieniu „Maks. poślizg” masz Auto, trzy gotowe wartości: 0,5%, 1% i 3%, oraz własne pole od 0,1% do 10%. W trybie Auto nie wysyłamy parametru slippageBps, a Jupiter według swojej dokumentacji sam dobiera odpowiedni slippage. W Ultra Mode robi to Real-Time Slippage Estimator (RTSE), który ustawia tolerancję osobno dla każdego swapu na podstawie rodzaju tokena, zmienności, głębokości liquidity i obciążenia sieci, tak żeby była możliwie niska, a transakcja nadal przeszła.
Jupiter opisuje też drugą stronę: za niski slippage zwiększa liczbę nieudanych transakcji, a za wysoki naraża na gorszą cenę. Powyżej 3% pokazujemy ostrzeżenie: „Poślizg powyżej 3% zwiększa ryzyko gorszej ceny i ataków typu sandwich.”
Pod wierszem „Poślizg” widzisz tryb, który zwrócił Jupiter: ultra albo manual. Dokumentacja Jupitera wymienia slippageBps i referralAccount wśród parametrów, które przełączają zlecenie w tryb manual i mogą ograniczyć routing. Nasze zlecenia zawsze zawierają referralAccount, bo przez niego pobieramy opłatę, więc spodziewaj się tam wartości manual.
Dlaczego wycena wygasa[8][1]
Transakcja na Solanie zawiera recent blockhash, który według dokumentacji Solany jest ważny przez 150 slotów. Jupiter dla tras agregatora zwraca lastValidBlockHeight jako twardą granicę: po tej wysokości bloku transakcja jest nieważna. Trasy RFQ, czyli kwotowane przez market makera, mają własny czas wygaśnięcia expireAt i według Jupitera zwykle żyją krócej niż kwotacje agregatora. Jupiter radzi podpisać i wysłać transakcję od razu, bo w oknie ważności cena może zmienić się na Twoją niekorzyść.
Przeglądarka nie przeliczy wysokości bloku na czas bez dodatkowego zapytania do RPC, więc dla tras agregatora przyjmujemy stałe, ostrożne okno 45 sekund. Gdy trasa RFQ ma wcześniejsze expireAt, obowiązuje ono. Od okna odejmujemy jeszcze 3 sekundy zapasu, więc licznik w arkuszu „Szczegóły transakcji” startuje od najwyżej 42 sekund i pokazuje na przykład „ważna 30 s”.
Gdy licznik dojdzie do zera, zobaczysz „wygasła” i komunikat „Wycena wygasła. Odśwież ją przed podpisaniem.” Podpis jest wtedy zablokowany. Nowa wycena to nie formalność: liczy się od nowa przy aktualnej cenie, więc ilości mogą być inne.
Priority fee i opłata sieci[6][7][1][2]
Każda transakcja na Solanie płaci opłatę bazową 5000 lamportów za podpis. Połowa jest spalana, połowa trafia do walidatora. Priority fee jest opcjonalna i liczy się ją jako cenę compute unit w mikrolamportach razy limit compute units, podzieloną przez milion i zaokrągloną w górę. Cała priority fee trafia do walidatora. Obie opłaty są pobierane także wtedy, gdy transakcja się nie powiedzie.
Nie ustawiamy priority fee ręcznie. Jupiter stosuje własną strategię priority fee dopasowaną do warunków w sieci, a pole prioritizationFeeLamports w jego odpowiedzi obejmuje priority fee i tipy, na przykład dla Jito. Wiersz „Opłata sieci (szac.)” sumuje opłatę za podpis, priority fee, jeśli płacisz ją Ty, i depozyt rent za nowe konto tokena, gdy portfel go jeszcze nie ma (dopisek „zawiera depozyt rent”). Gdy opłaty sieci pokrywa Jupiter, wiersz mówi „pokrywa Jupiter”.
Przed podpisem nasz serwer sprawdza transakcję. Jeśli priority fee przekracza 0,005 SOL, odmawiamy podpisu z komunikatem „Opłata priorytetowa jest nienaturalnie wysoka. Odmówiono podpisu.”
Opłata MEMECOINY 0,75% i ile kosztuje to samo gdzie indziej[1][2][3]
Zarabiamy na swapach wykonanych przez nasz terminal. Do każdego zlecenia Jupitera dodajemy referralAccount z opłatą 75 punktów bazowych, czyli 0,75% wartości swapu. Jupiter dopuszcza opłatę referral od 50 do 255 punktów bazowych, zatrzymuje 20% opłaty integratora i nie pobiera wtedy osobnej opłaty platformy. Z 0,75% do MEMECOINY trafia więc 0,6% wartości swapu, a 0,15% do Jupitera. Ty płacisz 0,75%.
Wiersz „Opłata MEMECOINY” pokazuje stawkę i kwotę w tokenie, w którym Jupiter ją pobiera. „Opłata Jupiter / trasy” pokazuje to, co Jupiter dolicza ponad naszą stawkę, na przykład zwrot kosztów transakcji bez gazu (gasless). Gdy nic nie dolicza, zobaczysz „brak dodatkowej”. „Łączne opłaty swapu” to pole feeBps, które Jupiter opisuje jako łączną stawkę opłat swapu, plus dopisek „+ sieć”, gdy płacisz opłatę sieci. Serwer odrzuca transakcję, w której opłata platformy jest wyższa niż 0,75%.
Uczciwe porównanie: w Jupiter Ultra bez pośrednika opłata według dokumentacji wynosi 0,1% dla większości par, 0,5% dla tokenów młodszych niż 24 godziny, a dla części par stablecoinów i LST 0%. Jeśli jedynym kryterium jest najniższa opłata, swap bezpośrednio na jup.ag kosztuje mniej niż przez nasz terminal.
MEV i sandwich attack: co pomaga, a co nie[10][11][5][3][4][1]
Dokumentacja Solany opisuje sandwich attack tak: searcher wykrywa Twój oczekujący swap i wykorzystuje kolejność transakcji. Najpierw kupuje token przed Tobą i podnosi cenę, potem sprzedaje go po Twojej transakcji i zgarnia różnicę. Twój swap wykonuje się po gorszej cenie, ale nadal w granicy, na którą się zgodziłeś. Dlatego ta sama dokumentacja nazywa niski slippage najskuteczniejszą pojedynczą obroną: mniejsze okno to mniejszy zysk dla atakującego.
Na Solanie kolejność może ustalać bundle. Jito definiuje bundle jako listę do 5 transakcji wykonywanych po kolei i atomowo, wszystko albo nic, a do jego rozpatrzenia potrzebny jest tip, minimum 1000 lamportów. Jito oferuje też jitodontfront: konto, które po dodaniu do instrukcji wymusza, by transakcja była pierwsza w każdym bundle. Jito zastrzega, że to może ograniczyć sandwich attack, ale go nie gwarantuje, i działa tylko dla transakcji wysłanych przez block engine.
Jupiter pisze, że Ultra Mode ma wbudowaną ochronę przed MEV przez prywatne wysyłanie transakcji, co obniża ryzyko, ale go nie usuwa, bo MEV nie da się w pełni wyeliminować na żadnym blockchainie. Ręczny tryb na jup.ag, Manual Mode, według Jupitera nie ma ochrony przed MEV. Nasze podpisane transakcje wysyłamy przez endpoint /execute Jupitera, ale dokumentacja API nie mówi, czy zlecenia w trybie manual mają tę samą ochronę co Ultra, więc jej nie obiecujemy.
- Trzymaj slippage nisko. Auto pozwala RTSE dobrać najniższą wartość, przy której transakcja przechodzi
- Nie podnoś tolerancji tylko dlatego, że jedna transakcja się nie wykonała
- Duże zlecenie w płytkiej puli to łatwy cel. Rozważ mniejszą kwotę
- Porównaj „Minimum do otrzymania” z tym, co pokazuje portfel przed podpisem
Pułapka transfer fee w Token-2022[9]
Token na Token-2022 może mieć rozszerzenie transfer fee. Mint określa stawkę w punktach bazowych i maksymalną opłatę od jednego transferu, a kwota każdego transferu jest pomniejszana o tę opłatę. Pobrana część zostaje na koncie odbiorcy, skąd wypłacić ją może tylko withdraw_withheld_authority wskazany w mincie. Zmiana stawki zaczyna obowiązywać dwie epoki później.
Swap to też transfer: przy zakupie token przechodzi z puli do Ciebie, przy sprzedaży od Ciebie do puli. Token z transfer fee traci więc część wartości w obie strony, niezależnie od naszej opłaty i price impact. Stawka sprawdzona dziś może być inna za kilka dni, bo osoba z uprawnieniem do konfiguracji opłaty może ją zmienić po Twoim zakupie.
Kwotacja sprzedaży przed zakupem[2][1]
Zanim kupisz, sprawdź wyjście. W terminalu wybierz „Kup”, wpisz kwotę w SOL w polu „Płacisz” i zanotuj „Szacowana ilość”, którą pokazuje też pole „Otrzymasz (szac.)”. Potem przełącz na „Sprzedaj”, wpisz tę samą liczbę tokenów i przeczytaj „Minimum do otrzymania” oraz „Wpływ na cenę” po stronie SOL. Kwotacja nie wymaga podłączenia portfela.
Różnica między kwotą w SOL, którą płacisz, a tym, co odzyskałbyś od razu po sprzedaży, to Twój koszt wejścia i wyjścia przy niezmienionej cenie: dwie opłaty swapu, price impact w obie strony i ewentualny transfer fee. Jeśli ten koszt jest duży albo kwotacja sprzedaży się nie pojawia, potraktuj to jako sygnał, że wyjście może być trudne. Kwotacja to migawka: liquidity może zniknąć po Twoim zakupie.
Przykład liczbowy na hipotetycznym tokenie
Poniższe liczby są hipotetyczne. Pokazują, jak czytać arkusz, a nie jak zachowa się konkretny token. Kupujesz TOKEN za 1 SOL z ustawieniem „Maks. poślizg” 1%.
„Szacowana ilość”: 2 000 000 TOKEN. „Poślizg”: 1%, więc „Minimum do otrzymania”: 1 980 000 TOKEN. „Wpływ na cenę”: −0,80%. „Opłata MEMECOINY”: 0,75%, tu 0,0075 SOL. „Opłata Jupiter / trasy”: brak dodatkowej. „Opłata sieci (szac.)”: 0,000105 SOL (5000 lamportów za podpis i 100 000 lamportów priority fee). Kwotacja sprzedaży 2 000 000 TOKEN na zakładce „Sprzedaj” pokazuje „Szacowana ilość” 0,9694 SOL. Gdyby cena stała w miejscu, wejście i wyjście kosztowałoby około 3,1%: mniej więcej 1,5 punktu procentowego to dwie opłaty po 0,75%, a reszta to price impact w obie strony. Przy slippage 1% sandwich attack może zepchnąć Cię najwyżej do 1 980 000 TOKEN. Przy 10% granica spadłaby do 1 800 000 TOKEN, czyli o 200 000 TOKEN więcej do stracenia. Gdyby TOKEN miał transfer fee 2% poniżej limitu maksymalnej opłaty, kupno i sprzedaż zabrałyby dodatkowo prawie 4%.
Przed podpisem: lista kontrolna
Ta kolejność zajmuje minutę i odpowiada wierszom arkusza. Jeśli któryś punkt budzi wątpliwość, nie podpisuj, tylko odśwież wycenę albo zmniejsz kwotę.
- Pełny adres tokena i sieć się zgadzają, a raport ryzyka nie pokazuje transferFee bez wyjaśnienia
- „Wpływ na cenę” jest niski dla Twojej kwoty. Od 1% wiersz jest wyróżniony
- „Maks. poślizg” to Auto albo niska wartość. Ostrzeżenie powyżej 3% traktuj poważnie
- „Minimum do otrzymania” to wynik, który naprawdę akceptujesz
- „Łączne opłaty swapu” i „Opłata sieci (szac.)” są zgodne z oczekiwaniem
- Kwotacja sprzedaży dla tej samej ilości pokazuje akceptowalny koszt wyjścia
- Licznik w „Szczegóły transakcji” nie wygasł, a kwoty zgadzają się z oknem portfela
- Wchodzisz tylko kwotą, której stratę zniesiesz
Źródła
Materiały pierwotne wykorzystane do sprawdzenia informacji. Numer przy sekcji wskazuje powiązane źródło. Link nie oznacza rekomendacji opisywanego aktywa.
- 01Jupiter Developers: Order & Execute (Swap API V2)
- 02Jupiter Developers: Get Order (Swap API), parametry i pola odpowiedzi
- 03Jupiter: Ultra Mode
- 04Jupiter: Manual Mode
- 05Jupiter: Risks and Limitations
- 06Solana: Fees
- 07Solana: Fee Structure
- 08Solana: Transactions (ważność recent blockhash)
- 09Solana: Transfer Fees (Token-2022)
- 10Solana: MEV Protection with Jito DontFront
- 11Jito: Low latency transaction send (bundles, tips, jitodontfront)
Widzisz błąd albo nieaktualną informację? Napisz na kontakt@memecoiny.pl. Jak poprawiamy błędy
