RBF касается транзакций до подтверждения. BIP125 описал opt-in сигнализацию и правила замены, связанные с Bitcoin Core 0.12. Full-RBF не требует этого сигнала: Core 24 сделал его настраиваемым, Core 28 включил по умолчанию, Core 29 удалил переключатель mempoolfullrbf. RBF не меняет консенсус или подтверждённые блоки; он влияет на то, какую допустимую неподтверждённую конфликтующую транзакцию узел хранит и распространяет.
RBF заменяет одну или несколько неподтверждённых транзакций mempool, с которыми имеет хотя бы один общий расходуемый вход. Транзакции, уже подтверждённые в блоке, он не переписывает. Замена меняет данные и имеет другой txid; она сама должна удовлетворять условиям расходования входов, включая необходимые подписи. [BIP 125 — Opt-in Full Replace-by-Fee Signaling] [Bitcoin Core v30.0 — Mempool replacement policy]
BIP125 описывает явный opt-in сигнал, когда хотя бы один вход имеет nSequence ниже 0xfffffffe, а также наследование сигнала от неподтверждённого предка. Это историческая политика, а не требование консенсуса. Full-RBF позволяет оценить замену без такого сигнала; его отсутствие не гарантирует незаменимость платежа. [BIP 125 — Opt-in Full Replace-by-Fee Signaling] [Bitcoin Core 0.12.0 release notes]
RBF — локальная политика mempool и relay, а не правило консенсуса. Майнер может выбрать допустимую по консенсусу конфликтующую транзакцию, которой другой узел раньше не имел в mempool. Full Node проверяет полученный блок по консенсусу независимо от прежнего выбора своего mempool. [BIP 125 — Opt-in Full Replace-by-Fee Signaling] [Bitcoin Core 29.0 release notes]
Политика Bitcoin Core 30 для одной заменяющей транзакции ограничивает также новые неподтверждённые входы и число вытесняемых транзакций. Замена должна соответствовать правилам стандартности, распространения и допустимости; одного расходования того же UTXO недостаточно. Ограничения защищают CPU, память и пропускную способность; правила пакетной замены рассматривают отдельно для версии узла. [Bitcoin Core v30.0 — Mempool replacement policy]
Общая комиссия — сумма в satoshi, ставка — сумма за виртуальный байт в sat/vB. Для одиночной замены в Core 30 комиссия должна покрывать сумму комиссий всех вытесненных транзакций и дополнительную стоимость по incrementalrelayfee за размер замены. Её ставка должна превышать ставки непосредственно конфликтующих транзакций. Одного увеличения ставки или добавления satoshi недостаточно; в Core 30 incrementalrelayfee по умолчанию равна 0,1 sat/vB, но настройки узла могут отличаться. [Bitcoin Core v30.0 — Mempool replacement policy] [Bitcoin Core 30.0 release notes]
Замена родительской транзакции может вытеснить из mempool потомков, расходующих её выходы. Поэтому сравнение не всегда ограничено двумя транзакциями. Для одиночной замены Core 30 ограничивает сумму количеств потомков непосредственно конфликтующих транзакций, включая их самих, числом 100; общие потомки могут учитываться несколько раз. Комиссии и связи пакета влияют на успех замены. [Bitcoin Core v30.0 — Mempool replacement policy]
RBF повышает комиссию, заменяя саму расходующую транзакцию. Child Pays for Parent (CPFP) сохраняет родительскую и добавляет дочернюю с достаточной комиссией для оценки их общей ставки майнером. Выбор зависит от контролируемых выходов, возможности подписать нужные входы и графа транзакций; CPFP не заменяет родительскую. [Bitcoin Core v30.0 — Mempool replacement policy]
Двойное расходование означает конфликтующие попытки потратить один UTXO. RBF определяет, как узел выбирает между такими неподтверждёнными транзакциями по своей политике. Замена может честно повысить комиссию или перенаправить неподтверждённый платёж. RBF не даёт постороннему права расходовать входы без выполнения их условий. [BIP 125 — Opt-in Full Replace-by-Fee Signaling]
Zero-conf означает платёж без подтверждения, а не без конфигурации. Bitcoin не гарантирует включение в блок первой транзакции, замеченной продавцом. Full-RBF подчёркивает эту границу: принятие zero-conf — решение о коммерческом риске, а не окончательный расчёт в Bitcoin. [BIP 125 — Opt-in Full Replace-by-Fee Signaling]
getmempoolentry показывает состояние неподтверждённой транзакции; testmempoolaccept проверяет одну подписанную замену-кандидата относительно текущего mempool и правил узла, не распространяя её. Результат не обещает принятия другими узлами или включения в блок. Core 28 включил full-RBF значением mempoolfullrbf по умолчанию; Core 29 удалил эту опцию. getmempoolinfo сообщает параметры комиссий, но поле fullrbf в Core 30 помечено устаревающим; всегда проверяй версию и конкретную конфигурацию. [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]
Для полной картины прочитайте эту статью вместе с Комиссии за транзакции, Mempool, CPFP (Child Pays for Parent), Двойная трата, Подтверждение, Fee Rate. На эту статью также ссылаются Выход сдачи, Подтверждение, Двойная трата, Fee Rate.