Mempool
Zbiór transakcji oczekujących na włączenie do bloku — poczekialnia między "wysłane" a "potwierdzone". Każdy węzeł sieci utrzymuje własną kopię mempoolу. Walidatorzy wybierają transakcje z tej kolejki według własnych reguł, zazwyczaj preferując wyższe opłaty. Transakcje w mempoolу są publiczne i widoczne dla wszystkich uczestników sieci.
Droga transakcji od kliknięcia do potwierdzenia
Gdy klikasz "zatwierdź" w portfelu, twoja transakcja jest podpisana kluczem prywatnym i wysyłana do węzłów sieci. Węzły sprawdzają, czy podpis jest poprawny, czy masz wystarczający balans i czy opłata za gas jest sensowna. Jeśli tak — transakcja trafia do ich lokalnego mempoolу i jest rozsyłana do innych węzłów.
Tam czeka, aż walidator/miner zdecyduje ją włączyć do bloku. Na Ethereum bloki wychodzą co ~12 sekund. Jeśli sieć jest niezatłoczona, twoja transakcja wejdzie w kilkanaście sekund. Jeśli sieć jest przeciążona i twoja opłata za gas jest za niska — transakcja może czekać godzinami lub przepaść.
Po włączeniu do bloku transakcja jest "potwierdzona" — ale finalizacja (pewność, że nie zostanie cofnięta) wymaga kilku kolejnych bloków. Dla normalnych transakcji wystarczy 1-3 potwierdzenia. Dla bardzo dużych kwot czeka się na 6+.
Dlaczego mempool jest publiczny i co z tego wynika
Oczekujące transakcje są widoczne dla wszystkich — każdy węzeł, każdy programista, każdy bot. To jest nieodłączna cecha zdecentralizowanej sieci: nie ma centralnego serwera, który trzymałby je w sekrecie.
Boty MEV non-stop monitorują mempool. Gdy widzą twoją dużą transakcję swap na DEX-ie, mogą ją "obsłużyć" przez sandwich attack: kupić token przed tobą (podnosząc cenę), przepuścić twoją transakcję po gorszym kursie, i sprzedać po niej z zyskiem. Wszystko w ciągu jednego bloku.
Dlatego coraz więcej interfejsów DEX oferuje "MEV protection" — prywatne RPC (np. Flashbots Protect), które wysyłają transakcję bezpośrednio do walidatora z pominięciem publicznego mempoolу. Bot nie może zobaczyć transakcji, zanim nie jest już w bloku.
Jak zarządzać transakcją w mempoolу
- Przyspiesz
- Wyślij tę samą transakcję z tym samym nonce, ale wyższą opłatą za gas. Większość portfeli ma przycisk "Speed up". Walidatorzy przyjmą wersję z wyższą opłatą.
- Anuluj
- Wyślij transakcję z tym samym nonce, zero ETH do siebie, z wyższą opłatą. Gdy ta wejdzie do bloku, "zużywa" nonce i oryginalna transakcja jest nieważna.
- Poczekaj
- Jeśli sieć się odkorki, transakcja z niską opłatą może wejść sama po czasie. Bitcoin węzły trzymają transakcje 2 tygodnie, Ethereum może je wcześniej odrzucić przy przeciążeniu.
- MEV protection
- Zmień RPC w portfelu na Flashbots Protect lub MEV Blocker. Transakcja trafia bezpośrednio do walidatora z pominięciem publicznego mempoolу.
Transakcja w mempoolу to nie potwierdzenie
"Transakcja jest pending" nie znaczy, że jest już bezpieczna. Pending = czeka w kolejce. Może zostać zastąpiona, odrzucona lub czekać bez końca. Nie dostarczaj towarów, nie odblokowuj usług i nie traktuj przelewu jako finalnego, dopóki transakcja nie ma co najmniej kilku potwierdzeń w blockchainie.
