Wysłanie płatności nie oznacza jeszcze jej potwierdzenia. Zanim górnik umieści ją w bloku, węzły — programy sprawdzające i przekazujące transakcje Bitcoina — mogą przechowywać ją w swoim Mempoolu, lokalnej liście oczekujących transakcji. Pod pewnymi warunkami RBF pozwala przyjąć zamiast niej nową transakcję, która wydaje co najmniej jedno z tych samych UTXO, czyli niewydanych dotąd wyjść. Transakcja zastępująca musi mieć poprawne podpisy i zostać przekazana sieci; sama wyższa opłata nie gwarantuje szybkiego potwierdzenia.
Anna wysłała 20 000 sat, ale płatność nadal czeka. Skrót sat oznacza satoshi, najmniejszą jednostkę bitcoina. Jej portfel proponuje podwyższenie opłaty przez RBF. W prostym przykładzie pierwotna transakcja wydaje 50 000 sat: odbiorca dostaje 20 000 sat, opłata wynosi 200 sat, a 29 800 sat wraca do Anny jako reszta. Zamiennik może nadal płacić odbiorcy 20 000 sat, zwiększyć opłatę do 2 000 sat i zwrócić Annie 28 000 sat. Liczby wyjaśniają zasadę, a nie zalecają aktualnej opłaty. Przed podpisaniem Anna sprawdza adres, kwotę dla odbiorcy i nową łączną opłatę. Portfel musi umieć podpisać wymagane wejścia; portfel sprzętowy być może trzeba ponownie podłączyć. Zamiennik ma nowe txid, identyfikator transakcji, więc odbiorca może potrzebować nowego odnośnika do śledzenia płatności. Podwyższenie opłaty to nie osobna druga płatność z innych UTXO: obie niezależne płatności mogłyby zostać potwierdzone i zapłaciłbyś dwa razy. [1] [2] [12]
Portfel może pokazać wpływ jeszcze przed pierwszym potwierdzeniem. Nazywa się to zero-conf: płatność została zauważona, ale nie ma jej w bloku. Inna wersja może potwierdzić się wcześniej, a widoczny wpływ zniknąć. Dlatego oznaczenie ‘RBF wyłączone’ nie dowodzi pewności płatności. Wydając towar za niepotwierdzoną płatność, świadomie przyjmujesz ryzyko handlowe. Po umieszczeniu transakcji w bloku RBF już jej nie nadpisuje. Ewentualna reorganizacja łańcucha jest innym ryzykiem, z powodu którego przy ważniejszych płatnościach czeka się na więcej potwierdzeń. [1]
Samo RBF nie wymaga zachowania pierwotnego odbiorcy. Zamiennik może podnieść opłatę i nadal płacić tej samej osobie albo wysłać środki gdzie indziej. Obie wersje próbują wydać to samo UTXO: to kolidujące próby, technicznie Double Spend. Sam termin nie przesądza, czy doszło do oszustwa. Napastnik nie może jednak dowolnie podpisać cudzej płatności: zamiennik też musi spełniać warunki wydania, w tym wymagania dotyczące podpisów. Jeśli portfel oferuje ‘anulowanie’ przez zastąpienie płatności przelewem do siebie, jest to próba wyprzedzenia pierwotnej transakcji, a nie gwarantowane cofnięcie płatności. [1]
RBF zmienia samą oczekującą transakcję. Child Pays for Parent (CPFP) pozostawia ją i tworzy nową, wydającą jedno z jej wyjść. Aby otrzymać opłatę z nowej transakcji, górnik musi dołączyć także pierwotną i może ocenić ich wspólną stawkę. Nową transakcję nazywamy potomną, a pierwotną nadrzędną. Może ją utworzyć osoba zdolna wydać dane wyjście, na przykład odbiorca płatności albo nadawca korzystający ze swojej reszty. Możliwości zależą od portfela, wymaganych podpisów i powiązań między transakcjami. CPFP nie zastępuje pierwotnej płatności i również nie gwarantuje terminu potwierdzenia. [2]
Mempool nie jest jedną wspólną kolejką całego Bitcoina. Każdy węzeł prowadzi własną listę i stosuje własne reguły przyjmowania oraz przekazywania oczekujących transakcji. RBF należy do tej lokalnej polityki, a nie do konsensusu określającego poprawność bloków. Górnik może więc wybrać poprawną transakcję kolidującą, której inny węzeł wcześniej nie przechowywał. Full Node sprawdza potem cały blok według reguł Bitcoina; wcześniejsza preferencja jego mempoola nie przesądza o wyniku. Przyjęcie zamiennika przez jeden węzeł nie obiecuje przyjęcia go wszędzie. [1] [6]
Dla użytkownika ważne są dwie różne liczby: całkowity koszt oraz stawka oferowana za rozmiar transakcji. Przy przykładowym rozmiarze 200 vB opłata 200 sat oznacza 1 sat/vB; przy tym samym rozmiarze 2 000 sat oznacza 10 sat/vB. Wirtualny bajt, vB, jest jednostką rozmiaru wyprowadzoną z wagi transakcji. Przebudowa może zmienić jej rozmiar, więc portfel musi przeliczyć również stawkę. Łączna opłata to kwota w satoshi, a stawka opłaty to kwota na wirtualny bajt w sat/vB. Przy pojedynczym zastąpieniu w Core 30 opłata musi pokryć sumę opłat wszystkich usuwanych transakcji oraz dodatkowy koszt według incrementalrelayfee dla rozmiaru zamiennika. Jego stawka musi przewyższać stawki transakcji bezpośrednio kolidujących. Sama wyższa stawka ani zwykłe dodanie satoshi nie wystarcza; Core 30 ma domyślne incrementalrelayfee 0,1 sat/vB, ale ustawienie węzła może być inne. [2] [9]
Od pierwszej oczekującej płatności może już zależeć kolejna: ktoś wydaje wyjście pierwszej, jeszcze niepotwierdzonej transakcji. Takie następujące po niej transakcje nazywamy potomkami. Gdy znika transakcja nadrzędna, potomkowie też nie mogą być używani w mempoolu, więc węzeł musi rozpatrzyć całą dotkniętą grupę. Zastąpienie transakcji nadrzędnej może usunąć z mempoola także potomków wydających jej wyjścia. Nie zawsze chodzi więc o porównanie dwóch transakcji. Przy pojedynczym zastąpieniu Core 30 ogranicza do 100 sumę liczebności potomków transakcji bezpośrednio kolidujących, wliczając te transakcje; obliczenie może liczyć wspólnych potomków wielokrotnie. Opłaty i zależności w pakiecie mogą zatem wpływać na powodzenie zastąpienia. [2]
Węzeł musi też zapobiegać przeciążeniu przez ciągłe przeliczanie zamienników. Służy temu ochrona przed DoS, atakiem na dostępność usługi. UTXO to niewydane wyjście wcześniejszej transakcji; wejście nowej transakcji wskazuje właśnie na nie. Poniższe zasady opisują konkretnie Bitcoin Core 30, a nie niezmienne prawo Bitcoina. Polityka Bitcoin Core 30 dla pojedynczej transakcji zastępującej ogranicza również nowe niepotwierdzone wejścia i liczbę usuwanych transakcji. Zamiennik musi spełniać lokalne reguły dotyczące akceptowanych form transakcji (standardowość), a także reguły rozgłaszania i poprawności, a nie tylko wydawać to samo UTXO. Ograniczenia chronią moc obliczeniową, pamięć i przepustowość; reguły zastępowania pakietów trzeba rozpatrywać oddzielnie w zależności od wersji węzła. Core 31 zmienił tę politykę wraz z wprowadzeniem Cluster Mempool: powiązane niepotwierdzone transakcje rozpatruje się w grupach. Zastąpienie musi poprawić tzw. feerate diagram, czyli wykres zestawiający skumulowane opłaty ze stopniowo zajmowanym miejscem. Nadal obowiązują też inne warunki, w tym wystarczająca łączna opłata i dopłata za rozgłoszenie transakcji zastępującej. Nie przenoś więc automatycznie opisanych wyżej limitów Core 30 na nowsze wersje; sprawdź reguły swojego węzła. [2] [13]
Dlaczego niektóre portfele nadal pokazują przełącznik RBF? Węzły stosujące pierwotną politykę opt-in RBF wymagały wcześniejszego sygnału zgody na zastąpienie. Bitcoin Core 24 pozwolił skonfigurować full-RBF bez tego warunku, Core 28 włączył go domyślnie, a Core 29 usunął przełącznik mempoolfullrbf. Poniższe szczegóły BIP125 wyjaśniają pierwotną sygnalizację, a nie uniwersalną regułę wszystkich dzisiejszych węzłów. BIP125 opisuje jawny sygnał opt-in, gdy co najmniej jedno wejście ma wartość nSequence niższą niż 0xfffffffe, a także dziedziczenie sygnału od niepotwierdzonego przodka. Jest to historyczna polityka, a nie warunek konsensusu. Full-RBF pozwala ocenić zamiennik również bez tego sygnału; brak sygnału nie gwarantuje, że płatności nie da się zastąpić. [1] [3] [4] [5] [6]
Ta część jest dla osób obsługujących własny węzeł. RPC to polecenia służące do odpytywania oprogramowania lub sterowania nim; nie trzeba ich znać, aby użyć przycisku podwyższenia opłaty. RPC getmempoolentry pokazuje stan transakcji, jeśli znajduje się ona w mempoolu tego węzła; testmempoolaccept testuje jedną podpisaną transakcję kandydującą na zamiennik względem bieżącego mempoola i reguł własnego węzła, bez jej rozgłaszania. Wynik nie obiecuje przyjęcia przez inne węzły ani uwzględnienia w wydobytym bloku. Core 28 włączył full-RBF domyślnie przez ustawienie mempoolfullrbf; Core 29 usunął tę opcję. RPC getmempoolinfo podaje parametry opłat, lecz pole fullrbf jest w Core 30 oznaczone jako przestarzałe; zawsze sprawdzaj wersję i konkretną konfigurację. [5] [6] [7] [8] [10] [11]
Pełniejszy obraz uzyskasz, czytając to hasło razem z Transaction Fees, Mempool, CPFP (Child Pays for Parent), Podwójne wydanie, Potwierdzenie, Fee Rate. Do tego hasła prowadzą również odsyłacze z Change Address, Potwierdzenie, Podwójne wydanie, Fee Rate.