52 / 691BIP125

Replace-by-Fee (RBF)

미확인 거래를 더 높은 수수료 거래로 교체

Replace-by-Fee (RBF)는 Bitcoin의 로컬 mempool 및 거래 전파 정책입니다. 노드의 수수료, 유효성, DoS 방지 규칙을 충족하면 미확인 거래와 충돌하는 대체 거래를 받아들일 수 있습니다.

RBF는 확인 전 거래를 다룹니다. BIP125는 Bitcoin Core 0.12와 관련된 opt-in 신호와 교체 규칙을 설명했습니다. 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는 하나 이상의 입력에서 nSequence가 0xfffffffe보다 작으면 명시적 opt-in 신호로 보며, 미확인 조상으로부터 신호를 상속하는 방식도 설명합니다. 이는 역사적 정책이며 합의 조건이 아닙니다. 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은 mempoolfullrbf 기본값으로 full-RBF를 켰고 Core 29는 이 옵션을 제거했습니다. getmempoolinfo는 수수료 매개변수를 제공하지만 Core 30의 fullrbf 필드는 사용 중단 예정으로 표시됩니다. 버전과 실제 설정을 확인해야 합니다. [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.

DOC · 001BIP 125 — Opt-in Full Replace-by-Fee Signaling명세 ↗DOC · 002Bitcoin Core v30.0 — Mempool replacement policy문서 ↗DOC · 003Bitcoin Core 0.12.0 release notes문서 ↗DOC · 004Bitcoin Core 24.0.1 release notes문서 ↗DOC · 005Bitcoin Core 28.0 release notes문서 ↗DOC · 006Bitcoin Core 29.0 release notes문서 ↗DOC · 007Bitcoin Core getmempoolinfo RPC문서 ↗DOC · 008Bitcoin Core testmempoolaccept RPC문서 ↗DOC · 009Bitcoin Core 30.0 release notes문서 ↗DOC · 010Bitcoin Core getmempoolentry RPC문서 ↗DOC · 011Bitcoin Core v30.0 — Mempool RPC implementation1차 출처 ↗
1차 출처 우선 · 투자 조언이 아닙니다