수수료 대체 (Replace-by-Fee, RBF)
수수료 대체(Replace-by-Fee, RBF)는 아직 블록에 포함되지 않은 비트코인 트랜잭션을, 같은 입력(UTXO)을 사용하면서 더 높은 수수료를 지불하는 새 트랜잭션으로 바꿔치기하는 기능입니다. 흔히 영문 약자 그대로 RBF라고 부르며, Replace by Fee로 띄어 쓰기도 합니다. 새 트랜잭션이 채굴되면 원래 트랜잭션은 같은 코인을 다시 쓸 수 없게 되어 무효가 됩니다.
왜 필요한가
비트코인 트랜잭션은 즉시 확정되지 않습니다. 보낸 트랜잭션은 컨펌을 기다리는 대기열(멤풀, mempool)에 들어가고, 채굴자는 대체로 수수료율이 높은 트랜잭션부터 블록에 담습니다. 설정한 수수료가 너무 낮으면 트랜잭션이 오랫동안 멤풀에 묶여 있을 수 있습니다. RBF를 사용하면 더 높은 수수료를 붙인 대체 트랜잭션을 보내 처리를 앞당길 수 있습니다. 혼잡한 고속도로에서 통행료를 더 내고 특급 차선으로 옮겨 타는 것과 비슷합니다. 대체 트랜잭션에서 받는 주소나 금액을 바꾸는 것도 가능합니다.
주로 다음과 같은 상황에서 씁니다.
- 실수로 수수료를 너무 낮게 설정했을 때
- 네트워크가 혼잡해 트랜잭션이 예상보다 오래 걸릴 때
- 마감이 있는 결제처럼 트랜잭션을 급히 확인받아야 할 때
작동 규칙
- BIP125(옵트인 RBF): 2015년 제안된 방식으로, 원래 트랜잭션이 입력의 시퀀스 번호로 “대체 가능”하다는 신호를 보낸 경우에만 노드가 대체 트랜잭션을 받아들입니다.
- 대체 조건: 대체 트랜잭션은 원래 트랜잭션과 적어도 하나의 같은 입력을 쓰고, 원래보다 더 높은 총수수료와 수수료율을 지불해야 합니다. 그래야 네트워크가 같은 트랜잭션을 공짜로 계속 바꿔 보내는 일을 막을 수 있습니다.
- 풀 RBF(full-RBF): 신호 여부와 관계없이 모든 미확인 트랜잭션의 대체를 허용하는 정책입니다. Bitcoin Core는 버전 24에서 이를 선택 옵션으로 추가했고, 버전 28(2024년)부터 기본값으로 켰습니다.
CPFP와의 차이
수수료가 낮아 멈춘 트랜잭션을 앞당기는 또 다른 방법은 CPFP(Child-Pays-for-Parent)입니다. RBF는 보내는 사람이 원래 트랜잭션을 새 트랜잭션으로 바꾸는 방식인 반면, CPFP는 원래 트랜잭션은 그대로 두고 그 출력을 쓰는 자식 트랜잭션에 높은 수수료를 붙여, 채굴자가 부모와 자식을 함께 담도록 유도하는 방식입니다. CPFP는 받는 사람도 쓸 수 있습니다.
장점과 위험
- 더 빠른 확인: 수수료를 올려 채굴자가 트랜잭션을 먼저 처리하도록 유도할 수 있습니다. 다만 실제 확인 시점은 네트워크 혼잡도와 채굴자의 선택에 달려 있습니다.
- 트랜잭션 제어: 멈춰 있는 트랜잭션을 고치거나, 아직 확인되지 않은 송금을 취소하는 효과를 낼 수 있습니다.
- 미확인 트랜잭션의 이중 지출: RBF는 같은 입력을 다시 쓰는 트랜잭션이므로, 받는 주소를 자신의 주소로 바꾼 대체 트랜잭션을 보내면 미확인 상태의 송금을 사실상 되돌릴 수 있습니다. 그래서 컨펌이 없는(0-conf) 결제를 그대로 받아들이는 상점이나 서비스는 사기 위험이 있으며, 적어도 한 번 이상의 컨펌을 기다리는 것이 안전합니다.
- 복잡성: 지갑 화면에서 원래 트랜잭션과 대체 트랜잭션이 함께 보이는 등 일부 사용자에게 혼란을 줄 수 있습니다.
기억해야 할 사항
- 모든 지갑이나 거래소, 암호화폐 네트워크가 RBF를 지원하는 것은 아니므로, 사용하는 지갑이 지원하는지 먼저 확인해야 합니다.
- 자신이 서명할 수 있는 트랜잭션만 대체할 수 있습니다.
- 네트워크가 매우 혼잡하면 대체 트랜잭션도 바로 처리된다는 보장은 없습니다.
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.