본문으로 건너뛰기
buybitcoinsmart

용어집 / 트랜잭션과 수수료

수수료 대체(Replace-by-fee)

별칭은 Replace-by-fee, RBF, Replace by fee, Opt-in replace by fee, Full-RBF입니다.

수수료 대체(Replace-by-fee)란 무엇입니까?
수수료 대체(Replace-by-fee)는 미확인 트랜잭션을 더 높은 수수료를 지불하는 동일 트랜잭션의 다른 버전으로 교체할 수 있게 하며, 최신 Bitcoin Core는 원본이 이를 신호했는지 여부와 관계없이 해당 교체를 중계합니다.

BIP-125에 명시되어 있습니다.

수수료 추정치는 시간이 지나면 현실과 맞지 않게 되므로, 비트코인은 발신자가 아직 채굴되지 않은 결제를 다시 작성할 수 있게 합니다. 대체 트랜잭션은 원래 트랜잭션의 수수료 전액을 다시 지불하고 그에 더해 가상 바이트당 최소 1사토시를 추가로 지불해야 하므로, 수수료를 올리는 일은 결코 무료가 아닙니다. 실무적인 규칙은 단호합니다. 확인되지 않은 것은 아무것도 정산된 것이 아니며, 발신자만이 수수료를 올릴 수 있습니다.

작동 방식

대체는 합의 규칙이 아니라 릴레이 정책이므로, 그 동작이 포크 없이 두 번이나 바뀌었습니다.

BIP125는 옵트인 방식을 정의했고 Bitcoin Core는 2016년 2월 23일에 0.12.0에서 이를 출시했습니다. 발신자는 적어도 하나의 입력에 시퀀스 번호를 0xfffffffd 이하로 설정하여 대체될 의사를 표시했고, 그러면 노드는 더 많은 수수료를 지불하는 충돌 트랜잭션을 전달했습니다. 이 플래그를 설정하지 않은 지갑은 사용자 스스로도 고칠 수 없는 결제를 만들어 냈습니다.

그 구분은 사라졌습니다. 2024년 10월에 출시된 Bitcoin Core 28.0은 -mempoolfullrbf 기본값을 켜짐으로 바꾸었으므로, 연결이 잘 된 노드는 이제 첫 트랜잭션이 무엇을 신호했든 더 많은 수수료를 지불하는 충돌 트랜잭션을 전달합니다. 플래그 없는 결제는 “대체될 수 없다”고 여전히 약속하는 지갑 화면은 더 이상 존재하지 않는 네트워크를 설명하고 있는 것입니다.

네 가지 조건이 노드가 교체를 수락할지를 결정하며, 이 조건들은 대체가 무료 재작성으로 네트워크를 범람시키는 데 사용되는 것을 막기 위해 존재합니다:

  • 대체 트랜잭션은 단지 더 높은 수수료율이 아니라, 자신이 축출하는 모든 트랜잭션보다 더 높은 절대 수수료를 지불해야 합니다.
  • 또한 적어도 증분 릴레이 수수료만큼의 추가 금액을 지불해야 하며, 이는 기본값으로 가상 바이트당 1사토시에 새 트랜잭션의 크기를 곱한 값입니다.
  • 원래 트랜잭션이 이미 사용하지 않은 미확인 입력을 끌어올 수 없습니다.
  • 충돌하는 모든 트랜잭션의 자손을 포함하여 한 번에 100개를 초과하는 트랜잭션을 축출할 수 없습니다.

사람들을 놀라게 하는 것은 절대 수수료 규칙입니다. 큰 트랜잭션을 더 나은 수수료율의 작은 트랜잭션으로 줄이는 대체 트랜잭션도 수수료 총액이 줄었기 때문에 여전히 거부될 수 있습니다. 또한 새 수수료만 지불하고 둘 다 지불하지는 않는다는 점에 유의하십시오. 원래 트랜잭션은 폐기되어 결코 채굴되지 않으므로, 이전 수수료는 결코 징수되지 않습니다.

Bitcoin Core는 이를 bumpfee RPC로 제공하며, 대부분의 데스크톱 지갑은 이를 "increase fee" 또는 이와 유사한 라벨이 붙은 버튼으로 감쌉니다. 일반적인 방식은 잔돈 출력을 추가 수수료 금액만큼 줄이는 것이며, 그래서 잔돈을 남기지 않고 전액을 보낸 결제는 다른 입력을 추가하지 않고는 수수료를 올릴 수 없습니다.

비트코인을 구매할 때 이것이 중요한 이유

대체가 문제가 되는 순간은 거래소에서 자신의 지갑으로 출금하거나, 그 지갑에서 다른 사람에게 보낼 때입니다.

자신의 지갑에서 보내는 것이 좋은 경우입니다. 2:00에 수수료율을 골랐는데 멤풀이 깨어났다면, 트랜잭션을 열고 수수료를 올리십시오. 필요해지기 전에 버튼을 제공하는 지갑을 고르십시오. 이는 Bitcoin Core, Sparrow, Electrum 및 Trezor Suite의 일반적인 기능이며, 대신 수수료를 골라 주고 되돌릴 방법을 주지 않는 많은 휴대폰 지갑에는 없는 기능입니다.

거래소에서 출금하는 것이 나쁜 경우입니다. 거래소가 그 트랜잭션을 만들었고 입력에 대한 키를 보유하고 있으며, 거래소만이 이를 대체할 수 있습니다. 고객 지원 부서는 일반적으로 이를 하지 않는데, 출금 배치가 한 번에 수십 명의 고객을 처리하기 때문입니다. 수취 측에서 쓸 수 있는 유일한 수단은 자식이 부모를 위해 지불하기(child pays for parent)이며, 이는 자신에게 도착하는 코인이 확인되지 않았더라도 존재하는 순간 사용할 수 있기 때문에 작동합니다.

수취할 때 대체는 행동 방식을 바꿉니다. 개인 간 거래 시장의 판매자, 대면 거래의 판매자, 또는 미확인 결제로 상품을 넘기는 비트코인 ATM 운영자는 멤풀을 가진 누구나 대체되는 것을 지켜볼 수 있는 트랜잭션을 신뢰하고 있는 것입니다. 전체 대체가 기본값이라는 것은, 플래그 없는 트랜잭션은 확인 0회에서 수락해도 안전하다는 옛 조언이 폐기되었음을 뜻합니다. 블록 하나를 기다리십시오. 중요한 금액이라면 여러 개를 기다리십시오.

지연된 3 sat/vB 출금의 수수료 올리기

자신의 지갑에서 네이티브 SegWit 입력 1개와 출력 2개(하나는 수취인, 하나는 잔돈)로 0.05 BTC를 보낸다고 가정하십시오. 그 트랜잭션은 약 141 가상 바이트이며, 3 sat/vB에서 423사토시의 수수료를 지닙니다.

다음 날 아침 가장 저렴한 확인 수수료율이 20 sat/vB인데 결제가 움직이지 않았습니다. 수수료를 올립니다. 대체 트랜잭션은 같은 141 가상 바이트이므로 20 sat/vB는 2,820사토시의 수수료를 뜻하며, 이는 수취인 금액이 아니라 잔돈 출력에서 가져옵니다. 이 대체의 정책 하한은 원래 423사토시에 141 바이트 전체에 걸친 1 sat/vB를 더한 값, 즉 564사토시이므로 2,820은 이를 여유 있게 넘습니다.

3,243사토시를 지불하는 것이 아닙니다. 2,820을 지불하고, 첫 번째 버전은 채굴되지 않은 채 사라집니다. 수취인은 여전히 정확히 0.05 BTC를 받으며, 트랜잭션 ID가 바뀌므로 이미 누군가에게 옛 ID를 주었다면 새 ID를 보내야 합니다.

비용이 커지는 경우는 줄일 잔돈 출력이 남아 있지 않을 때입니다. 그러면 지갑이 또 다른 입력을 추가해야 하고, 트랜잭션은 대략 209 가상 바이트로 커지며, 같은 20 sat/vB에 이제 4,180사토시가 듭니다.

Replace-by-fee vs 이중 지불

Replace-by-fee와 이중 지불 시도는 같은 메커니즘을 사용하며 돈이 최종적으로 어디로 가는지에서만 다릅니다. 대체는 보통 같은 수취인을 유지하고 추가 수수료를 잔돈에서 가져갑니다. 이중 지불은 출력을 다시 작성하여 코인이 발신자에게 되돌아가거나 완전히 다른 곳으로 가게 하며, 상품을 넘긴 판매자는 아무것도 받지 못합니다.

어떤 노드도 차이를 구별할 수 없습니다. 둘 다 단순히 충돌하는 트랜잭션이고 더 많은 수수료를 지불하는 쪽이 이기기 때문입니다. 이것이 들어오는 결제에 지갑이 붙이는 라벨을 믿지 말고 확인을 기다려야 하는 이유의 전부입니다. 보호는 발신자가 밝힌 의도가 아니라 체인에서의 깊이입니다.

혼동하기 쉬운 용어

자주 묻는 질문

replace-by-fee로 비트코인 트랜잭션을 취소할 수 있습니까?

제한적인 의미에서만 가능하며, 그것도 해당 트랜잭션을 생성한 지갑에서만 가능합니다. 결제가 미확인 상태인 동안에는 동일한 입력을 사용해 자신에게 되돌려 보내고 더 높은 수수료를 지불하는 충돌 트랜잭션으로 대체할 수 있습니다. 일단 확인되면 어떤 것도 이를 되돌릴 수 없습니다.

지갑에서 여전히 replace-by-fee를 활성화해야 합니까?

네트워크를 위해서는 그럴 필요가 없습니다. 2024년 10월에 출시된 Bitcoin Core 28.0 이후로, 노드는 원래 트랜잭션이 신호를 보냈든 보내지 않았든 더 높은 수수료를 지불하는 충돌 트랜잭션을 중계합니다. 이 설정은 자신의 지갑 내부에서는 여전히 중요합니다. 일부 지갑은 자체적으로 신호를 표시한 트랜잭션에만 수수료 인상 버튼을 제공하기 때문입니다.

거래소 출금이 미확인 상태입니다. 여기에 replace-by-fee를 사용할 수 있습니까?

아닙니다. 대체에는 입력에 서명한 개인 키가 필요하며, 거래소 출금의 경우 거래소가 그 키를 보유합니다. 사용자 측에서 사용할 수 있는 도구는 child pays for parent입니다. 들어오는 코인을 높은 수수료의 트랜잭션으로 사용하면 채굴업자가 두 트랜잭션을 모두 처리합니다.

다음에 읽을 글

관련 용어

트랜잭션과 수수료 분야의 다른 용어

이 페이지를 영어로 읽기