52 / 691BIP125

Replace-by-Fee (RBF)

Zastąpienie niepotwierdzonej transakcji transakcją z wyższą opłatą

Replace-by-Fee (RBF) jest lokalną polityką mempoola i rozgłaszania transakcji Bitcoina. Pozwala przyjąć zamiennik kolidujący z niepotwierdzoną transakcją, jeśli spełnia reguły węzła dotyczące opłat, poprawności i ochrony przed DoS.

RBF dotyczy transakcji przed potwierdzeniem. BIP125 opisał sygnalizację opt-in i reguły zastępowania związane z Bitcoin Core 0.12. Full-RBF nie wymaga tej sygnalizacji: Core 24 pozwolił go skonfigurować, Core 28 włączył go domyślnie, a Core 29 usunął przełącznik mempoolfullrbf. RBF nie zmienia konsensusu ani potwierdzonego bloku; wpływa na to, którą poprawną, niepotwierdzoną transakcję spośród kolidujących węzeł przechowuje i rozgłasza.

RBF zastępuje w mempoolu jedną lub więcej niepotwierdzonych transakcji, z którymi transakcja zastępująca współdzieli co najmniej jedno wydawane wejście. Nie nadpisuje przez to transakcji już potwierdzonych w bloku. Zamiennik zmienia dane transakcji i ma inny txid; musi sam spełniać warunki wydania wejść, w tym wymagane podpisy. [BIP 125 — Opt-in Full Replace-by-Fee Signaling] [Bitcoin Core v30.0 — Mempool replacement policy]

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ć. [BIP 125 — Opt-in Full Replace-by-Fee Signaling] [Bitcoin Core 0.12.0 release notes]

RBF jest lokalną polityką mempoola i przekazywania transakcji, a nie regułą konsensusu. Górnik może wybrać kolidującą transakcję poprawną według konsensusu, której inny węzeł wcześniej nie miał w mempoolu. Full Node weryfikuje wynikowy blok zgodnie z konsensusem, niezależnie od wcześniejszych preferencji własnego mempoola. [BIP 125 — Opt-in Full Replace-by-Fee Signaling] [Bitcoin Core 29.0 release notes]

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ć reguły standardowości, rozgłaszania i poprawności, a nie tylko wydawać ten sam UTXO. Ograniczenia chronią CPU, pamięć i przepustowość; reguły zastępowania pakietów trzeba rozpatrywać oddzielnie w zależności od wersji węzła. [Bitcoin Core v30.0 — Mempool replacement policy]

Łą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. [Bitcoin Core v30.0 — Mempool replacement policy] [Bitcoin Core 30.0 release notes]

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. [Bitcoin Core v30.0 — Mempool replacement policy]

RBF podnosi opłatę przez zastąpienie samej transakcji wydającej wejścia. Child Pays for Parent (CPFP) zachowuje transakcję nadrzędną i dodaje potomka z dostateczną opłatą, aby górnik mógł ocenić ich wspólną stawkę. Wybór zależy od kontrolowanych wyjść, możliwości podpisania potrzebnych wejść i grafu transakcji; CPFP nie zastępuje transakcji nadrzędnej. [Bitcoin Core v30.0 — Mempool replacement policy]

Podwójne wydanie oznacza kolidujące próby wydania tego samego UTXO. RBF jest sposobem, w jaki węzeł wybiera między takimi niepotwierdzonymi transakcjami według własnej polityki. Kolidujący zamiennik może służyć zarówno uczciwemu podniesieniu opłaty, jak i przekierowaniu niepotwierdzonej płatności. RBF nie uprawnia osoby trzeciej do wydawania wejść bez spełnienia ich warunków. [BIP 125 — Opt-in Full Replace-by-Fee Signaling]

Zero-conf oznacza płatność bez potwierdzenia, a nie bez konfiguracji. Bitcoin nie gwarantuje, że pierwsza transakcja zauważona przez sprzedawcę zostanie uwzględniona w bloku. Full-RBF uwydatnia tę granicę: przyjęcie zero-conf jest decyzją o ryzyku handlowym, a nie ostatecznym rozliczeniem w Bitcoinie. [BIP 125 — Opt-in Full Replace-by-Fee Signaling]

RPC getmempoolentry pokazuje stan niepotwierdzonej transakcji; 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ę. [Bitcoin Core 28.0 release notes] [Bitcoin Core 29.0 release notes] [Bitcoin Core getmempoolinfo RPC] [Bitcoin Core testmempoolaccept RPC] [Bitcoin Core getmempoolentry RPC] [Bitcoin Core v30.0 — Mempool RPC implementation]

Pełniejszy obraz uzyskasz, czytając to hasło razem z Opłaty transakcyjne, Mempool, CPFP (Child Pays for Parent), Podwójne wydanie, Potwierdzenie, Fee Rate. Do tego hasła prowadzą również odsyłacze z Wyjście reszty, Potwierdzenie, Podwójne wydanie, Fee Rate.

DOC · 001BIP 125 — Opt-in Full Replace-by-Fee SignalingSpecyfikacja ↗DOC · 002Bitcoin Core v30.0 — Mempool replacement policyDokumentacja ↗DOC · 003Bitcoin Core 0.12.0 release notesDokumentacja ↗DOC · 004Bitcoin Core 24.0.1 release notesDokumentacja ↗DOC · 005Bitcoin Core 28.0 release notesDokumentacja ↗DOC · 006Bitcoin Core 29.0 release notesDokumentacja ↗DOC · 007Bitcoin Core getmempoolinfo RPCDokumentacja ↗DOC · 008Bitcoin Core testmempoolaccept RPCDokumentacja ↗DOC · 009Bitcoin Core 30.0 release notesDokumentacja ↗DOC · 010Bitcoin Core getmempoolentry RPCDokumentacja ↗DOC · 011Bitcoin Core v30.0 — Mempool RPC implementationŹródło pierwotne ↗
Najpierw źródła · To nie jest porada inwestycyjna