Jeżeli wykonujesz transakcje blockchain, z pewnością natknąłeś się na słowo „mempool”. Jest to skrót od Memory Pool, swoistej poczekalni, gdzie dane są przechowywane w oczekiwaniu na przetworzenie. Jego rola jest jednak większa, niż sugerować może ten prosty opis.
Co to jest ten mempool?
Blockchain tworzy permanentną księgę transakcji. Gdy raz zostanie ona zapisana, nie da się już jej usunąć ani poprawić. Transakcje te mogą kolidować ze sobą, dlatego potrzebny jest mechanizm który pozwoli ustalić ich wzajemne relacje. Mempool jest zatem swoistą strefą przejściową, która umożliwia porządkowanie transakcji, nadawanie im priorytetu i ułatwia budowanie bloków.
Każdy węzeł prowadzi własny mempool. Choć węzły non-stop komunikują się ze sobą, zawartość ich pul pamięci nie jest dokładnie taka sama, choćby ze względu na różną ich wielkość. Zgodność danych mempool między węzłami szacowana jest na mniej więcej 95%.
Mempool to bufor, gromadzący wysłane przez użytkowników transakcje, które nie zostały jeszcze zapisane na blockchainie.
Rola mempool wykracza poza proste przechowywanie transakcji. Służy on jako mechanizm koordynujący rozpowszechnianie transakcji w oparciu o znaczniki czasowe, priorytety czy zależności między nimi. Transakcje, które nie przeszły weryfikacji są usuwane, aby np. ochronić sieć przez podwójnym wydatkowaniem.
Mempool, Bitcoin i Ethereum
Choć oba te blockchainy używają mempool, ich zadania i zasady działania są nieco inne. Wynika to z architektury tych systemów.
Elementy wspólne
Każdy pełny węzeł, w tym górnicy i walidatorzy, utrzymuje własny mempool. Mogą one nieznacznie różnić się między poszczególnymi węzłami. Buforują one niepotwierdzone transakcje (tx), zatem ich zawartość stale się zmienia (nowe tx dochodzą, stare wypadają).
W obu systemach pule pamięci mają decydujący wpływ na rozpowszechnianie transakcji i tworzenie bloków. Transakcje w mempool są przetwarzane z uwzględnieniem priorytetu, wynikającego m.in. z wysokości opłat transakcyjnych.
Różnice
W Ethereum, zamiast górników, transakcje przetwarzają walidatorzy. Inny jest używany model danych: UTXO kontra model oparty na kontach. Różna jest także złożoność transakcji: BTC obsługuje proste transfery, ETH złożone smartkontrakty. System opłat w BTC oparty jest o stawki sat/byte, w ETH o Gwei i opłaty za gaz.
Walidatorzy Ethereum nie wybierają samodzielnie transakcji tak jak górnicy BTC, ale weryfikują i potwierdzają bloki proponowane przez innych walidatorów. Niepotwierdzone transakcje BTC zazwyczaj są usuwane po ok. 2 tygodniach, Ethereum nie stosuje takiego limitu.
Dodawanie transakcji do mempool BTC
W założeniu do mempool trafiają wszystkie ważne transakcje, wysłane do dowolnego węzła sieci. Aby transakcja doszła do skutku, konieczne są następujące kroki:
- Użytkownik inicjuje transakcję z dApp lub portfela.
- Następnie podpisuje tę transakcję za pomocą swojego klucza prywatnego.
- Portfel wysyła podpisaną transakcję do węzła sieci.
- Węzeł weryfikuje, czy transakcja jest ważna i jeśli tak, dodaje ją do swojego mempool.
- Węzeł rozsyła (propaguje) tę transakcję do innych węzłów w sieci.
- Te węzły otrzymują transakcję, weryfikują ją, przenoszą do swojego mempoola i rozsyłają do kolejnych węzłów.
- Górnicy również otrzymują transakcję, zatwierdzają ją i próbują dodać ją do wykopywanego bloku.
- Zwycięski górnik dodaje blok z transakcją do łańcucha.
- Nowy blok jest rozsyłany po węzłach sieci.
- Węzły otrzymują nowy blok, widzą zawartą w nim transakcję i usuwają ją ze swojego mempoola.
To, że Twoja transakcja znajduje się w mempool, nie oznacza jeszcze, że górnik musi ją odebrać i zapisać w bloku.
Konfiguracja mempool a wydajność sieci
Rozmiar mempool ma duży wpływ na skalowalność i bezpieczeństwo blockchain.
Duży mempool pomieści wiele transakcji, ale może to prowadzić do opóźnień w ich rozpowszechnianiu, co wpływa na wydajność. Wymaga także dużych zasobów od węzłów, co może prowadzić do centralizacji sieci.
Mały mempool z kolei jest narażony na szybkie przepełnienie. Drastycznie rosną opłaty transakcyjne. Transakcje mniej opłacalne trafiają na koniec kolejki, lub są usuwane. Mały mempool ma także problemy z zapewnieniem stałego dopływu transakcji innym węzłom.
Pojedynczy użytkownik może „przepchnąć” swoją transakcję, definiując wyższą opłatę za gaz, jednak nie rozwiązuje to globalnego problemu wydajności sieci.
Monitorowanie stanu mempool
Użytkownik może sporo zyskać, jeśli jest zorientowany w bieżących warunkach pracy i obciążeniu puli pamięci. Pomagają mu w tym eksploratory mempool, nieco podobne do omawianych wcześniej eksploratorów blockchain.
Jednym z najbardziej znanych narzędzi tego typu jest mempool.space. Pozwala on zobaczyć stan puli oraz oczekujące transakcje. Jest przydatny do szacowania stawek opłat, ułatwia też np. finalizację zablokowanych transakcji. Sprawdzimy jak działa w łańcuchu Bitcoina.
- Lista nadchodzących (zielone) i ostatnio sfinalizowanych (niebieskie) bloków. Najbliższy finalizacji jest blok zielony, znajdujący się tuż obok przerywanej linii.
- Elementy przykładowego bloku. Każdy z nich określa takie parametry, jak:
- średni koszt transakcji (sat/vB)
- rozpiętość opłat transakcyjnych
- łączną sumę wniesionych opłat w BTC
- liczbę transakcji w bloku
- czas od (lub do) finalizacji bloku
Pod spodem widzimy także, komu udało się wykopać ten konkretny blok.
- Wysokość średnich opłat transakcyjnych w danym momencie i przeciętny czas finalizacji bloku.
- Bieżącą zawartość mempool.
- Informacje o minimalnej wymaganej stawce, liczbie transakcji oraz zużyciu pamięci
- Wykres obrazujący aktualną relację cenową vB/s.
- Listę transakcji, które zostały przyspieszone przy pomocy RBF.
- Listę ostatnich transakcji wraz z ich parametrami.
Dzięki użyciu takich narzędzi możemy monitorować obciążenie sieci i w optymalny sposób dobierać wysokość płaconych kosztów transakcyjnych. Po wysłaniu transakcji możemy także monitorować jej status.
Mempool jest mało spektakularnym, ale kluczowym elementem blockchain. Jego znajomość pozwoli ci nie tylko dokonywać szybkich i ekonomicznych transakcji, ale pozwoli także zrozumieć mechanikę oszustw w rodzaju Front Running czy Spam Attack. A jak wiadomo – wiedza to potęga.
FAQ – wszystko na temat mempool
Co to jest mempool?
Mempool to tymczasowy zbiór niepotwierdzonych transakcji, bufor przechowujący je przed włączeniem do bloku.
Czy można usunąć transakcję z mempool?
Usunięcie transakcji nie jest możliwe, ale można zastąpić ją nową transakcją z wyższą opłatą.
Czy mempool w Bitcoin i Ethereum działa tak samo?
Ogólna koncepcja jest podobna, jednak mempool w Ethereum obsługuje bardziej złożone transakcje i ma inny system opłat niż Bitcoin.
Czy każdy węzeł w sieci blockchain ma własny mempool?
Tak, każdy pełny węzeł utrzymuje własną, lokalną kopię mempool, wciąż koordynowaną z innymi węzłami.
Czy mempool ma wpływ na prywatność transakcji?
Tak. Udostępnia informacje o transakcjach, co może mieć znaczenie dla prywatności użytkowników.
Ile transakcji mieści się w bloku Bitcoina?
Zależy to od rodzaju transakcji, po aktualizacji SegWit jest to na ogół 2000-4000 tx. Teoretycznie może ich być więcej, jednak pojemność bloku nie musi być w pełni wykorzystana, zależy to od polityki górników.
Ile transakcji BTC przetwarzają górnicy w ciągu 1 dnia?
Istnieje wiele zmiennych, jednak w 2024 jest to średnio 400-500 tysięcy transakcji. W początkach lipca mempool zawiera ok. 200 000 tx, co teoretycznie wymaga 12h na ich przetworzenie.
Co to znaczy, że średnia opłata wynosi np. 5 s/vB?
Za każdy (wirtualny) bit danych płacisz 5 Satoshi. Jeśli Twoja transakcja ma powiedzmy 250 bajtów, średnia opłata za transakcję to 1250 Satoshi, czyli 0,75 $ przy cenie BTC 60 000$. Na ogól tx mają 200-600 bajtów.
Inwestowanie jest ryzykowne. Inwestuj odpowiedzialnie.