멈춘 비트코인 트랜잭션 해결법: RBF, CPFP, 재전송 완전 가이드
비트코인 트랜잭션이 미확인 상태로 멈췄다면? Replace-By-Fee(RBF), Child-Pays-for-Parent(CPFP), 재전송(Re-broadcast) 도구를 활용한 해결 방법을 단계별로 안내한다.
비트코인 트랜잭션을 보내고 TXID를 확인했는데, 몇 시간째 미확인 상태로 멈춰 있다. 멤풀이 혼잡하고, 수수료가 너무 낮았고, 트랜잭션이 멈췄다. 비트코인을 사용하다 보면 가장 흔하게 겪는 문제 중 하나인데, 완전히 해결 가능하다.
이 가이드에서는 멈춘 비트코인 트랜잭션을 해결하는 세 가지 방법, 각각의 적용 시점, 그리고 과정을 쉽게 만들어주는 도구를 소개한다.
트랜잭션이 멈추는 이유
비트코인 트랜잭션은 멤풀에 들어갔지만, 마이너가 더 높은 수수료를 내는 트랜잭션을 우선 처리하면서 계속 밀릴 때 멈추게 된다. 이런 상황이 발생하는 원인은 다음과 같다:
- 수수료를 너무 낮게 설정 — 수수료율(sat/vB)이 마이너가 현재 우선 처리하는 수준보다 낮은 경우
- 멤풀이 갑자기 가득 참 — 전송 이후 수수료 급등이 발생해 내 트랜잭션이 대기열 뒤로 밀린 경우
- 지갑의 수수료 추정이 부정확 — 일부 지갑은 실시간 멤풀 혼잡도를 반영하지 못하는 오래된 수수료 추정 방식을 사용
멈춘 트랜잭션은 소실된 것이 아니다. 비트코인이 사라진 게 아니다. 단지 아직 블록에 포함되지 않았을 뿐이다. 결국 확인되거나, 약 14일(336시간) 후 노드가 멤풀에서 해당 트랜잭션을 제거하면 자금은 마치 트랜잭션이 없었던 것처럼 지갑으로 돌아온다.
하지만 14일은 너무 길다. 지금 바로 해결하는 세 가지 방법을 알아보자.
방법 1: Replace-By-Fee (RBF)
적합한 경우: 본인이 직접 보낸 트랜잭션이고, 지갑이 RBF를 지원할 때.
RBF는 동일한 입력(input)을 사용하되 더 높은 수수료를 지정한 대체 트랜잭션을 생성하는 방법이다. 새 트랜잭션이 기존 트랜잭션을 무효화하고, 마이너는 수수료가 더 높은 버전을 포함시킨다.
조건
- 원래 트랜잭션에 RBF 시그널링이 활성화되어 있어야 한다(시퀀스 번호 < 0xfffffffe). 대부분의 최신 지갑은 기본적으로 이 기능을 활성화한다.
- 발신자만 사용 가능 — 수신자는 RBF를 사용할 수 없다.
실행 방법
Bitcoin Core에서:
bitcoin-cli bumpfee "your-stuck-txid"
Bitcoin Core가 현재 멤풀 상태를 기반으로 적절한 수수료율의 대체 트랜잭션을 자동 생성한다.
지갑 앱에서: 대부분의 지갑(Sparrow, Electrum, BlueWallet, Nunchuk)은 미확인 트랜잭션에 “Bump Fee” 또는 “Speed Up” 버튼을 표시한다. 버튼을 클릭하고, 새 수수료율을 선택한 뒤 확인하면 된다.
적절한 수수료 선택: mempool.space 또는 txid.uk에서 현재 수수료율을 확인한다. 대체 수수료를 “보통 우선순위(medium priority)” 수준 이상으로 설정하면 몇 블록 내에 확인된다.
RBF가 활성화되지 않은 경우
원래 트랜잭션에 RBF 시그널링이 없더라도, 일부 노드는 full RBF(Bitcoin Core 26.0부터 기본 활성화)에 따라 대체를 수락한다. 다만 아직 모든 마이너와 노드가 full RBF를 지원하는 것은 아니다. RBF를 사용할 수 없다면 CPFP를 사용하자.
방법 2: Child-Pays-for-Parent (CPFP)
적합한 경우: 수신자인 경우, 또는 RBF를 사용할 수 없을 때.
CPFP는 RBF와 다르게 동작한다. 멈춘 트랜잭션을 대체하는 대신, 멈춘 트랜잭션(부모)의 출력을 사용하는 새 트랜잭션(자식)을 생성한다. 자식 트랜잭션이 부모와 자신 모두를 커버할 만큼 높은 수수료를 지불한다. 마이너는 두 트랜잭션을 함께 확인하는 것이 수익이 된다고 판단하고, 패키지로 포함시킨다.
조건
- 멈춘 트랜잭션에서 사용 가능한 출력이 필요하다 — 발신자라면 잔액 출력(change output), 수신자라면 수신 출력.
- 지갑이 미확인 UTXO를 사용할 수 있어야 한다.
실행 방법
Bitcoin Core에서:
bitcoin-cli sendtoaddress "your-address" 0.001 \
"" "" false true null "unset" null 25
마지막 파라미터(25 sat/vB)는 부모 + 자식의 합산 수수료율이 현재 멤풀 우선순위 임계값을 초과하도록 충분히 높게 설정해야 한다.
지갑 앱에서: Sparrow Wallet에서 미확인 트랜잭션을 우클릭 → “Accelerate Transaction (CPFP)“를 선택한다. 지갑이 필요한 자식 수수료를 자동으로 계산해준다.
필요한 자식 수수료 계산
자식 트랜잭션은 부모의 부족한 수수료를 보상해야 한다:
필요한 자식 수수료율 =
(목표_총_수수료 - 부모_실제_수수료) / 자식_vsize
예시: 부모 TX가 200 vB이고 수수료가 400 sat(2 sat/vB)이라면, 패키지 평균을 10 sat/vB로 맞추려면 총 목표는 2,000 sat이다. 자식이 1,600 sat을 내야 한다. 자식이 150 vB라면, 자식 단독 수수료율은 약 10.7 sat/vB가 된다.
방법 3: 재전송(Re-broadcast)
적합한 경우: 멤풀에서 완전히 제거된 트랜잭션.
약 14일이 지나면 노드는 미확인 트랜잭션을 제거한다. 트랜잭션이 제거되었다면, 원래의 원시 트랜잭션을 다시 전송하거나, 더 높은 수수료로 새 트랜잭션을 생성할 수 있다.
재전송 방법
tx.txid.uk 사용:
- tx.txid.uk → Broadcast로 이동
- 서명된 원시 트랜잭션 hex를 붙여넣기
- broadcast를 클릭 — 비트코인 네트워크에 트랜잭션이 전송됨
Bitcoin Core 사용:
bitcoin-cli sendrawtransaction "raw-tx-hex"
공개 API 사용:
curl -X POST https://mempool.space/api/tx \
-d "raw-tx-hex"
원래 트랜잭션이 제거된 상태라면, 낮은 수수료의 기존 트랜잭션을 재전송하기보다 현재 적정 수수료율로 새 트랜잭션을 만드는 것이 나을 수 있다.
어떤 방법을 사용해야 할까?
| 상황 | 방법 | 이유 |
|---|---|---|
| 본인이 보냈고, 지갑이 RBF 지원 | RBF | 가장 간단 — 대부분의 지갑에서 버튼 하나로 해결 |
| 수신자인 경우 | CPFP | 수신자가 사용할 수 있는 유일한 방법 |
| RBF 미활성화, 본인이 발신자 | CPFP (잔액 출력 이용) | 잔액 출력을 사용해 패키지 수수료를 올림 |
| TX가 멤풀에서 제거됨 | 재전송 | TX가 멤풀에 없으므로 재전송 필요 |
| 매우 오래된 미확인 TX (14일 이상) | 새 트랜잭션 | 현재 수수료율로 새 TX 생성 |
트랜잭션 상태 확인
해결을 시도하기 전에 트랜잭션의 현재 상태를 확인하자:
- txid.uk — TXID를 붙여넣으면 확인 상태, 수수료율, 위치를 볼 수 있다
- tx.txid.uk — 원시 트랜잭션 디코딩 및 전송
- mempool.space — 멤풀 내 위치와 예상 확인 시간을 시각적으로 확인
트랜잭션이 확인 완료로 표시되면 문제가 자연히 해결된 것이다. “not found”로 표시되면 멤풀에서 제거되었을 수 있으므로, 재전송하거나 새 트랜잭션을 생성하자.
멈춤 방지 방법
가장 좋은 해결책은 예방이다:
- 전송 전 수수료율 확인 — mempool.space 또는 txid.uk에서 현재 수수료율 확인
- 항상 RBF 활성화 — 지갑에서 RBF 시그널링이 기본 활성화되어 있는지 확인
- 수수료 추정을 현명하게 — 확신이 없으면 “이코노미”가 아닌 “보통” 또는 “높음” 우선순위 선택
- 수수료 급등 시 전송 자제 — 멤풀이 심하게 혼잡하면 해소될 때까지 대기
- 트랜잭션 일괄 처리 — 여러 건의 결제를 하나의 트랜잭션으로 합쳐 총 수수료 절감
더 읽을거리
- 멤풀이란 무엇인가? — 트랜잭션 대기실 이해하기
- 비트코인 수수료 가이드 — 수수료의 작동 원리와 계산 방법
- TXID란 무엇인가? — 트랜잭션 ID의 생성과 활용
- Replace-By-Fee (RBF) — RBF 메커니즘 기술 심화
- CPFP (Child Pays for Parent) — CPFP 패키지 릴레이의 작동 방식
- 멤풀 혼잡 — 수수료 급등이 발생하는 이유와 대처법
- 트랜잭션 전송하기 — 원시 hex에서 비트코인 네트워크까지