
Zablokowane transakcje: dlaczego się zdarzają i jak wyciąga z tego zastąpienie opłatą
Wysłałeś płatność. Portfel pokazuje „oczekująca". Mija godzina. Potem trzy. Eksplorator bloków pokazuje twoją transakcję siedzącą w mempoolu, niepotwierdzoną, najwyraźniej na zawsze.
Nic się nie zepsuło i nic nie przepadło. Po prostu złożyłeś za niską ofertę na aukcji, a aukcja wciąż trwa.
Opłaty to aukcja, a nie cena
Miejsce w bloku jest ograniczone i takie pozostanie. Każdy blok mieści ograniczoną ilość danych transakcyjnych, a górnicy wybierają, które transakcje włączyć. Wybierają według stawki opłaty — satoshi za bajt wirtualny — bo to maksymalizuje ich przychód.
To znaczy, że opłata, którą dołączasz, nie jest ceną za usługę. Jest ofertą na nieprzerwanej aukcji przeciwko wszystkim innym, którzy próbują wejść do następnego bloku.
Wynikają z tego dwie rzeczy, obie sprzeczne z intuicją:
Twoja opłata ma znaczenie tylko w odniesieniu do opłat wszystkich pozostałych. Ta sama opłata, która w zeszły wtorek potwierdziła się w dziesięć minut, w ruchliwy weekend może leżeć dwa dni. W twojej transakcji nic się nie zmieniło; zmieniła się konkurencja.
Nie ma żadnego limitu czasu. Transakcja ze zbyt niską ofertą nie wygasa i nie zawodzi. Czeka w mempoolu, podczas gdy wyprzedzają ją oferty wyższe, i może czekać w nieskończoność. Węzły w końcu usuwają ze swoich mempooli bardzo stare transakcje — zwykle po jakichś dwóch tygodniach — ale to lokalne ustawienie porządkowe, a nie reguła protokołu, i nie możesz na tym polegać jako na drodze ucieczki.
Ten drugi punkt sprawia, że zablokowane transakcje są tak nieprzyjemne. Żadnego komunikatu o błędzie, żadnego zwrotu, żadnego oczywistego działania. Tylko wskaźnik, który kręci się i nigdy nie kończy.
Dlaczego twoja utknęła
Szacunek opłaty był nieświeży. Estymatory czytają niedawne warunki. Jeśli mempool zapełni się między twoim szacunkiem a rozgłoszeniem — duża giełda konsolidująca środki, mint NFT, fala ordinals — twoja oferta natychmiast ląduje poniżej rynku.
Wybrałeś próg ekonomiczny i dostałeś dokładnie to, o co prosiłeś. Progi niskiego priorytetu to wprost zakład, że zator zelżeje. Zwykle tak jest. Czasem nie.
Twoja transakcja jest fizycznie duża. Stawka jest liczona za bajt, więc transakcja wydająca wiele drobnych wejść kosztuje więcej potwierdzenia niż prosta na tę samą kwotę. Portfele pełne pyłu zderzają się z tym bez przerwy.
Wydajesz niepotwierdzone wejście. Jeśli wydasz resztę z transakcji, która się nie potwierdziła, twoja nowa nie potwierdzi się, dopóki nie zrobi tego poprzednia. Jedna zablokowana płatność potrafi po cichu osadzić na mieliźnie wszystko, co po niej idzie.
Zastąpienie opłatą: właściwa naprawa
Zastąpienie opłatą, opisane w BIP 125, pozwala rozgłosić zamiennik niepotwierdzonej transakcji, płacący wyższą opłatę. Węzły porzucają oryginał i przekazują nową; górnicy biorą lepszą ofertę. Potwierdzić może się tylko jedna z dwóch — wydają te same wejścia, więc z konstrukcji wzajemnie się wykluczają.
To nie jest druga płatność. To ta sama płatność, z nową ofertą.
W praktyce liczą się dwa szczegóły.
Transakcja musi być z góry oznaczona jako zastępowalna. RBF jest dobrowolny: sygnalizuje się go, ustawiając numer sekwencji wejścia poniżej 0xfffffffe. Konwencją Bitcoin Core jest 0xfffffffd i to właśnie ustawia SSP — dosłownie 0xffffffff - 2 w konstruktorze transakcji. Jeśli transakcja nie została oznaczona jako zastępowalna przy tworzeniu, większość węzłów odmówi przyjęcia zamiennika, a twoje możliwości mocno się zawężą.
Zamiennik musi przekroczyć pewną dolną granicę, a ta oczywista granica jest błędna. Czwarta reguła BIP 125 wymaga, by zamiennik płacił co najmniej pierwotną opłatę plus własny rozmiar po minimalnej stawce przekazywania. Tu ludzie się potykają: podniesienie z „ekonomicznej" na „normalną" może podnieść stawkę, gdy rozmiar niemal się nie zmienia, a jeśli rachunek wypadnie za nisko, węzeł odrzuci zamiennik i nic nie osiągnąłeś. SSP wylicza tę granicę jawnie, zanim zbuduje zamiennik, więc nowa opłata na pewno przechodzi regułę 4, zamiast zostać po cichu odrzucona przez sieć.
W SSP niepotwierdzona, zastępowalna transakcja pokazuje na liście transakcji akcję Zastąp opłatą. Wypełnia z góry tego samego odbiorcę i tę samą kwotę oraz przenosi opłatę zastępowanej transakcji, by można było policzyć granicę, a potem prowadzi cię przez podpisanie zamiennika na obu urządzeniach, dokładnie tak jak przy każdej innej płatności. Drugi podpis nadal jest wymagany — zamiennik to nowa transakcja, a nic nie podpisuje się jednym urządzeniem.
Nie każdy łańcuch na to pozwala
RBF to decyzja polityki, a nie powszechna funkcja, i łańcuchy obsługiwane przez SSP naprawdę się różnią:
| Łańcuch | Zastępowalne w SSP |
|---|---|
| Bitcoin | Tak |
| Litecoin | Tak |
| Dogecoin | Tak |
| Ravencoin | Tak |
| Bitcoin Cash | Nie |
| Zcash | Nie |
| Flux | Nie |
Wyłączenie Bitcoin Cash jest po stronie łańcucha zamierzone: BCH usunął RBF, żeby płatności bez potwierdzeń były pewniejsze w punktach sprzedaży. To realny kompromis, a nie przeoczenie — zyskujesz zaufanie do niepotwierdzonych płatności i tracisz możliwość poprawienia zbyt niskiej oferty. Zcash i Flux również nie przekazują zamienników.
Na tych łańcuchach transakcję z za niską wyceną trzeba przeczekać. Co jest najmocniejszym argumentem, żeby na łańcuchu, który nie pozwoli tego cofnąć, w ogóle nie licytować za nisko.
Co robić, gdy się zdarzy
Najpierw trochę poczekaj. Zatory w mempoolu mają swoje szczyty. Transakcja, która o dwudziestej pierwszej wygląda na straconą, często potwierdza się w nocy, gdy zaległości spływają. Zajrzyj do wizualizatora mempoola, zanim wydasz pieniądze na naprawę.
Jeśli jest zastępowalna, a ci się spieszy, zastąp ją. Wybierz stawkę powyżej obecnej stawki dolnej krawędzi następnego bloku, a nie tylko powyżej swojej pierwotnej. Licytowanie odrobinę wyżej od przegranej oferty to sposób, żeby robić to dwa razy.
Nie rozgłaszaj drugiej płatności. Jeśli pierwsza w końcu się potwierdzi, zapłaciłeś dwa razy. Zamiennik jest bezpieczny właśnie dlatego, że wzajemnie wyklucza się z oryginałem; osobna transakcja nie.
Nie wydawaj reszty z zablokowanej transakcji. Doczepisz drugą zablokowaną transakcję do pierwszej.
Jeśli nie możesz zastąpić, czekaj. Na łańcuchach bez RBF transakcja albo potwierdzi się, gdy zator zniknie, albo w końcu zostanie usunięta z mempooli, po czym monety znów da się wydać. Nie próbuj usług „anulowania"; coś takiego nie istnieje.
Jak uniknąć tego następnym razem
Patrz na opłatę, a nie tylko na etykietę progu. „Ekonomiczna" znaczy co innego w spokojną niedzielę, a co innego podczas skoku opłat. Większość portfeli, SSP włącznie, pokazuje ci rzeczywistą stawkę.
Uczciwie dopasuj pilność do opłaty. Płatność, która naprawdę nie ma znaczenia przez dobę, powinna używać niskiej opłaty — po to ten próg istnieje. Płatność, którą będziesz nerwowo odświeżać, nie.
Utrzymuj porządek w zbiorze UTXO. Konsolidowanie drobnych wejść, kiedy opłaty są niskie, sprawia, że każda przyszła transakcja jest mniejsza i tańsza. To najskuteczniejsza rzecz, jaką długoterminowy posiadacz może zrobić w sprawie opłat, a najlepszy moment to ten, gdy nikt inny nie chce miejsca w bloku.
Wybieraj łańcuchy i momenty świadomie. Strategia opłat to prawdziwa umiejętność, a większość jej polega po prostu na zauważeniu, że miejsce w bloku bywa w pewnych porach tańsze niż w innych.
Zablokowana transakcja to jeden z niewielu naprawdę niegroźnych problemów w kryptowalutach. Twoje monety nigdy nie opuściły twojej kontroli, nie ma w tym żadnego atakującego, a naprawa jest dobrze opisaną funkcją protokołu. Wygląda na sytuację awaryjną tylko dlatego, że interfejs nie oferuje żadnego pocieszenia — co samo w sobie jest powodem, by rozumieć, co dzieje się pod spodem.


