본문으로 건너뛰기

거래 가속화: RBF와 CPFP

비트코인 거래를 보냈는데 수수료를 낮게 설정해 몇 시간 동안 대기하는 일이 있습니다. 대기 중인 거래가 아직 블록에 포함되지 않았다면, 거래의 우선순위를 높이는 방법으로 RBF와 CPFP를 사용할 수 있습니다. 실제로 가능한지는 서명 장치 기능과 노드의 거래 교체·멤풀 정책에 따라 달라집니다. 서명 장치는 개인키로 거래에 서명하는 도구입니다.

두 방법은 비슷해 보이지만 작동하는 주체와 조건이 다릅니다. RBF는 기존 거래와 충돌하는 거래를 더 높은 수수료로 제출해 기존 거래를 교체하려는 방식이고, CPFP는 부모 거래의 미확정 출력을 소비하는 자식 거래에 높은 수수료를 붙여 두 거래가 함께 처리되도록 유도하는 방식입니다.

RBF: 수수료로 거래를 교체하기

RBF는 Replace-by-Fee의 줄임말로, 대기 중인 거래를 더 높은 수수료의 거래로 교체하려는 기능입니다. 비트코인 정책에는 거래가 교체 가능하다는 신호를 미리 표시하는 옵트인 방식이 있습니다. 한편 노드가 신호가 없는 거래도 교체 대상으로 허용하는 풀 알비에프 정책도 있으므로, 신호가 모든 환경에서 필수 조건이라고 일반화할 수 없습니다. 실제 이용 가능 여부는 서명 장치 기능과 노드 정책에 따라 달라집니다.

수수료는 네트워크 상황에 따라 적절한 수준이 달라질 수 있습니다. 보낼 때는 충분해 보였던 수수료도 대기 중인 거래가 몰리면 상대적으로 낮아질 수 있습니다. 거래가 오래 대기하면 거래가 지목한 잔액이 묶여 다른 곳에 사용하기 어려워집니다.

공연장 대기 줄에 표를 내는 상황으로 생각할 수 있습니다. 표마다 적힌 값이 다르고, 값이 높은 표부터 안으로 들어간다면 낮은 값을 적은 표는 계속 뒤로 밀릴 수 있습니다. 이때 같은 입력을 지목하면서 더 높은 값을 적은 새 표를 다시 내는 것이 RBF의 비유입니다. 새 거래가 정책 조건을 충족해 받아들여지면 이전 거래와 충돌하며, 채굴자가 새 거래를 선택할 수 있습니다.

RBF가 성립하는 조건

RBF로 거래를 교체하려면 일반적으로 다음과 같은 점을 확인해야 합니다.

  • 기존 거래가 아직 블록에 포함되지 않아야 합니다.
  • 기존 거래가 옵트인 교체 가능 신호를 가졌거나, 해당 노드가 풀 알비에프 정책을 사용해야 합니다.
  • 새 거래가 기존 거래와 충돌하는 입력을 사용해야 합니다.
  • 새 거래의 수수료가 기존 거래를 대체할 만큼 높아야 합니다.
  • 노드 정책의 추가 수수료, 거래의 후손과 충돌 거래 등 다른 정책 조건도 충족해야 합니다.

이미 블록에 포함된 거래를 RBF로 바꾸는 것은 아닙니다. 서명 장치 앱에서 교체 기능을 제공하지 않거나 연결된 노드가 교체 거래를 받아들이지 않으면 사용할 수 없습니다. 신호가 없다고 해서 모든 노드에서 반드시 불가능하다고도, 신호만 있으면 반드시 성공한다고도 할 수 없습니다.

RBF로 무엇을 바꿀 수 있을까

가장 흔한 사용 방식은 받는 사람과 금액을 그대로 두고 수수료만 올리는 것입니다. 수수료가 올라가면 보통 보내는 사람이 돌려받을 잔돈이 줄어듭니다.

기술적으로는 받는 사람이나 금액을 바꾼 충돌 거래를 만들 수도 있습니다. 그래서 거래가 블록에 확정되기 전에는 받는 쪽에서 입금을 확정된 것으로 보지 않는 관행이 있습니다. RBF는 송금 취소 버튼이 아닙니다. 하는 일은 이전 거래를 없던 일로 만드는 것이 아니라 다른 거래로 교체하려는 것입니다.

미확정 거래를 자신에게 보내는 충돌 거래로 대체할 수 있는 경우도 있지만, 원거래가 먼저 블록에 포함될 수 있어 성공이 보장되지 않습니다. 수신자가 입금을 표시했거나 그 거래를 바탕으로 다른 처리를 했는지는 기술적인 교체 조건과 별개의 문제입니다. 이미 확정된 거래를 취소하는 기능은 아닙니다.

RBF를 사용하는 방법

서명 장치 앱에서 대기 중인 거래의 상세 화면을 열고, 수수료 올리기나 비슷한 이름의 기능을 찾습니다. 새 수수료를 선택하면 앱이 교체 거래를 만들고, 사용자가 다시 서명해 전송합니다.

올린 수수료는 대개 보내는 사람의 잔돈에서 빠집니다. 받는 사람이 받을 금액을 그대로 두는 경우가 많기 때문에, 수수료가 늘어난 만큼 보내는 사람에게 남는 금액이 줄어듭니다.

CPFP: 자식 거래가 부모 거래를 끌어올리기

CPFP는 Child Pays for Parent의 줄임말입니다. 대기 중인 부모 거래의 미확정 출력을 소비하는 유효한 자식 거래를 만들고 서명해 높은 수수료로 내보내면, 채굴자가 부모 거래와 자식 거래를 한 묶음으로 보고 함께 처리하도록 유도할 수 있습니다.

자식 거래를 만들려면 해당 미확정 출력을 소비할 권한과 서명할 수 있는 키가 있어야 합니다. 따라서 받는 쪽은 자신에게 지급된 미확정 출력을 사용할 수 있고, 보낸 쪽은 부모 거래에 남겨 둔 자신의 잔돈 출력을 사용할 수 있습니다.

RBF는 기존 거래를 보낸 쪽이 교체하는 방식입니다. 반면 CPFP는 받는 쪽도 사용할 수 있는 방법입니다. 보낸 사람이 RBF에 필요한 기능을 사용하지 못하거나 직접 대응하지 못할 때 활용할 수 있습니다.

앞차가 고장 나 길을 막고 있고 뒤차가 지나가지 못하는 상황으로 생각할 수 있습니다. 앞차 주인과 연락이 되지 않아도 뒤차가 견인차를 부르고 비용을 낼 수 있습니다. 견인차가 앞차를 끌어내면 두 차가 함께 길에서 빠져나옵니다. CPFP에서는 뒤차에 해당하는 자식 거래가 비용을 부담해 부모 거래까지 함께 처리되도록 만드는 것입니다.

부모와 자식 거래의 관계

대기 중인 거래를 부모 거래라고 하고, 그 거래의 결과를 지목해 만든 새 거래를 자식 거래라고 합니다. 자식 거래는 부모 거래의 미확정 출력에 의존하므로, 부모 거래가 먼저 또는 같은 블록에서 앞선 순서로 처리되어야 합니다.

채굴자는 자식 거래의 수수료만 따로 보지 않고, 부모와 자식을 함께 포함할 때 얻는 수수료와 크기를 고려합니다. 합산 수수료율은 부모와 자식의 수수료 합계를 두 거래의 합산 가상 크기로 나눈 값입니다. 따라서 자식 거래에 충분히 높은 수수료를 붙이면 부모 거래의 낮은 수수료를 함께 보완할 수 있습니다.

부모 거래의 수수료가 아주 낮을수록 자식 거래가 메워야 할 부족분은 커집니다. 서명 장치 앱이 필요한 수수료를 자동으로 계산해 주기도 하며, 직접 정할 때는 부모와 자식을 합산한 수수료율과 거래 크기를 살펴봐야 합니다.

CPFP를 사용할 수 없는 경우

CPFP는 부모 거래가 아직 미확정이고, 사용자가 그 거래의 미확정 출력을 소비하는 유효한 자식 거래를 만들고 서명할 수 있을 때 사용합니다. 부모 거래가 이미 블록에 포함되었다면 더 이상 가속할 필요가 없습니다.

어떤 노드의 멤풀에서 부모 거래가 퇴출되거나 해당 노드가 부모 거래를 확보하지 못하면, 그 노드는 자식 거래를 단독으로 처리하거나 중계하지 못할 수 있습니다. 그렇다고 부모 거래 자체가 합의상 무효가 되는 것은 아닙니다. 부모가 다시 전파될 수 있는 상황도 있습니다. 반대로 충돌 거래가 먼저 확정되는 등 부모 거래가 실제로 무효가 되면 자식 거래도 사용할 수 없습니다.

또한 서명 장치 앱이나 거래소가 아직 CPFP 기능을 제공하지 않을 수도 있습니다. 앱에 따라 수수료 올리기, 가속하기 또는 영어로 speed up과 같이 표시됩니다.

CPFP를 사용한다고 해서 무료로 순서가 앞당겨지는 것은 아닙니다. 새 자식 거래의 수수료를 사용자가 추가로 부담하므로 전체 비용은 늘어납니다. 기다리는 시간과 추가 비용을 비교해 선택해야 합니다.

RBF와 CPFP 비교

구분RBFCPFP
기본 방식기존 거래와 충돌하는 더 높은 수수료의 거래로 교체하려 합니다.새 거래에 높은 수수료를 붙여 부모 거래와 함께 처리되도록 합니다.
누가 주로 사용하나보낸 쪽이 사용합니다.미확정 출력을 소비할 권한이 있는 받는 쪽이나 보낸 쪽이 사용할 수 있습니다.
필요한 조건기존 거래가 미확정이고, 옵트인 신호 또는 풀 알비에프 정책과 기타 정책 조건을 충족해야 합니다.부모 거래가 미확정이고, 사용자가 그 출력으로 유효한 자식 거래를 만들고 서명할 수 있어야 합니다.
비용새 거래의 수수료를 더 높입니다.자식 거래의 수수료를 추가로 부담합니다.
취소 여부송금 취소가 아니라 거래 교체 시도입니다.부모 거래를 취소하지 않고 함께 처리되도록 유도합니다.

RBF는 서명 장치와 연결된 노드가 교체를 허용하고 필요한 조건을 충족할 때 사용할 수 있습니다. 표시가 없거나 받는 쪽에서 직접 대응해야 한다면 CPFP가 남는 방법이 될 수 있지만, 미확정 출력을 소비할 권한과 서명 능력이 필요합니다.

거래를 보낼 때는 네트워크 상황과 긴급성을 고려하고, 필요하다면 RBF 허용 여부와 서명 장치의 CPFP 지원 여부를 미리 확인할 수 있습니다. 거래가 확정되기 전에는 받는 쪽도 입금이 뒤집힐 가능성을 고려해야 합니다.

관련 개념은 멤풀에서 거래가 대기하는 공간을, 거래에서 거래의 기본 구조를 확인할 수 있습니다.

링크 복사하기X에 공유페이스북에 공유쓰레드에 공유