용어집 / 트랜잭션과 수수료
Child pays for parent
별칭은 CPFP, 조상 채굴, 부모 대신 지불하는 자식입니다.
- Child pays for parent란 무엇입니까?
- Child pays for parent는 확인되지 않은 트랜잭션의 출력을 두 번째 트랜잭션에서 사용하여 낮은 수수료의 트랜잭션을 구제하는 방식이며, 두 번째 트랜잭션의 수수료가 두 트랜잭션을 모두 감당합니다. 채굴업자는 두 트랜잭션을 함께 판단하기 때문입니다.
채굴업자는 트랜잭션을 하나씩 선택하지 않습니다. Bitcoin Core는 2016년 8월의 0.13.0 버전부터 조상 수수료율을 기준으로 트랜잭션을 선택해 왔기 때문에, 후한 자식 트랜잭션이 인색한 부모 트랜잭션을 같은 블록으로 끌어옵니다. 이 단일한 설계 선택이 막힌 결제의 수신자에게, 답하지 않을 수도 있는 송신자를 기다리는 대신 행동할 방법을 줍니다.
작동 방식
수수료율은 비율이며, child pays for parent는 트랜잭션 하나의 비율이 아니라 집단의 비율을 개선하는 방식으로 작동합니다.
블록을 채우는 채굴업자는 가상 바이트당 가능한 한 많은 사토시를 원합니다. 멤풀의 트랜잭션이 미확인 부모 트랜잭션에 의존하면, 채굴 코드는 그것만 단독으로 가져갈 수 없으므로 조상 집합 전체를 평가합니다. 부모와 자식의 합산 수수료를 합산 크기로 나눈 값입니다. 그 수치가 경쟁을 앞서면 둘 다 블록에 들어갑니다. Bitcoin Core의 채굴 선택은 0.13.0부터 이렇게 작동해 왔으며, 이 버전이 트랜잭션별 단순 정렬을 조상 수수료율 정렬로 대체했습니다.
이 산수는 한 번 손으로 계산해 볼 가치가 있습니다. 가상 바이트 141 크기에 1 sat/vB를 지불하는, 즉 141 사토시의 부모 트랜잭션을 가정합니다. 두 트랜잭션이 합쳐 25 sat/vB에 도달하기를 원합니다. 그 코인을 사용하는 입력 1개, 출력 1개의 자식 트랜잭션은 대략 111 가상 바이트이므로, 패키지는 252 가상 바이트이고 총 6,300 사토시가 필요합니다. 부모가 이미 141을 기여했으므로 자식이 6,159를 부담해야 하며, 이는 자식 혼자서 대략 55 sat/vB의 수수료율입니다. 자식은 항상 할증을 지불하는데, 자기 바이트뿐 아니라 다른 사람의 바이트에 대해서도 블록 공간을 사들이기 때문입니다.
두 가지 한도가 이를 제약합니다. 미확인 트랜잭션의 체인은 기본적으로 조상 또는 자손 25개를 넘을 수 없고, 그 계열의 총 크기는 대략 101 킬로 가상 바이트로 제한되므로 자식을 무한정 쌓을 수 없습니다. 그리고 전파는 자동이 아닙니다. 수년 동안 지불이 부족한 부모 트랜잭션을 끌어올린 자식은 이미 부모를 버린 노드들에 의해 그 자체로 거부되었습니다. 그래서 Bitcoin Core 28.0이 2024년 10월에 부모 하나와 자식 하나에 대한 기회주의적 전파를 추가하여, 두 트랜잭션이 하나의 단위로 네트워크를 이동하게 했습니다.
같은 의존성에는 더 고약한 형태가 있습니다. 다른 누군가가 공유된 미확인 트랜잭션에 크고 수수료가 낮은 자식을 붙일 수 있다면, 계열 크기를 부풀려 수수료 인상을 엄청나게 비싸게 만들 수 있습니다. 이 공격을 트랜잭션 피닝(pinning)이라고 하며, 이것이 라이트닝 네트워크와 다른 계약 프로토콜이 이제 단순한 수수료 인상에 의존하지 않고 제한된 트랜잭션 위상을 사용하는 이유입니다.
비트코인을 구매할 때 이것이 중요한 이유
child pays for parent는 수신자가 쓸 수 있는 유일한 수수료 해결책이며, 그래서 멈춘 거래소 출금을 위한 도구입니다.
순서는 이렇습니다. 거래소에서 출금하면, 거래소는 몇 시간 전에 정한 수수료율로 귀하의 결제를 다른 50건과 함께 묶었고, 수수료 압박이 커지면서 그 묶음이 미확인 상태로 남습니다. replace-by-fee는 여기서 소용이 없는데, 그 입력들을 거래소가 서명했기 때문입니다. 대신 할 수 있는 일은 들어오는 코인을 미확인 상태로, 높은 수수료율을 붙여 자기 지갑의 다른 주소로 사용하는 것입니다. 이제 채굴업자는 채굴할 가치가 있는 패키지를 보게 되고, 두 트랜잭션은 함께 확인됩니다.
지갑이 협조해야 합니다. Bitcoin Core, Sparrow, Electrum은 미확인으로 들어오는 코인을 선택해 사용할 수 있게 합니다. 여러 모바일 지갑은 미확인 잔액을 완전히 숨겨서 클릭할 것도 주지 않습니다. 실제 자금을 자기 보관으로 보관할 계획이라면, 수수료가 폭등할 때가 아니라 필요해지기 전에 이를 확인하십시오.
두 가지 주의가 있습니다. 첫째, 자식은 귀하가 받은 바로 그 코인을 사용하므로 수수료가 방금 출금한 돈에서 나가며, 소액 출금에서는 그 비용이 금액의 상당 부분이 될 수 있습니다. 둘째, 자식은 새 주소에 새 코인을 만들어 공개 기록에서 둘을 연결합니다. 출금이 프라이버시를 염두에 둔 설정의 일부였다면, 이런 방식으로 수수료를 올리는 것은 알고 하는 거래여야 합니다.
4 sat/vB 묶음에 막힌 0.02 BTC 출금 구출하기
거래소가 4 sat/vB를 지불하는 묶음으로 귀하에게 0.02 BTC를 보냈는데, 아침이 되도록 30 sat/vB 미만은 확인되지 않는다고 가정합니다. 묶음은 크며 아마 1,500 가상 바이트일 것이고, 그 전부를 지불하는 것은 귀하의 몫이 아닙니다. 귀하의 코인이 포함된 패키지만 매력적으로 보이면 됩니다.
사람들을 놀라게 하는 바로 그 지점이 여기 있습니다. 채굴업자가 평가하는 패키지는 귀하의 몫만이 아니라 부모 전체, 그 1,500 바이트 전부를 포함합니다. 111 바이트 자식을 더하면 패키지는 1,611 가상 바이트이므로, 30 sat/vB에 도달하려면 총 48,330 사토시를 찾아야 합니다. 부모가 그중 6,000을 공급했으므로 자식은 대략 42,330 사토시를 부담해야 하며, 이는 0.02 BTC 출금에서 실제 비용입니다.
이것이 child pays for parent가 일상 도구가 아니라 구출 도구인 이유이며, 큰 거래소 묶음보다 한 사람이 귀하에게 직접 보낸 결제 같은 작은 부모에서 훨씬 잘 작동하는 이유입니다. 때로는 정직한 답이 기다리는 것입니다. 수수료율은 대부분의 주말에 떨어지고, 트랜잭션은 노드가 잊기 전까지 기본적으로 최대 14일 동안 멤풀에 남아 있습니다.
child pays for parent vs replace-by-fee
둘 다 수수료를 올리지만, 반대편 당사자가 사용하며 서로 다른 흔적을 남깁니다. 교체는 원래 트랜잭션을 다시 쓰고, 그 입력에 서명한 키가 필요하며, 새로운 트랜잭션 ID를 만들고, 첫 버전을 사라지게 합니다. child pays for parent는 위에 새 트랜잭션을 더하고, 귀하가 받은 출력의 키만 있으면 되며, 부모에 대해서는 아무것도 바꾸지 않고, 둘 다 영구히 체인에 남깁니다.
교체는 가능할 때 더 저렴한데, 두 트랜잭션이 아니라 한 트랜잭션의 바이트에만 비용을 지불하기 때문입니다. 막힌 결제가 귀하의 지갑에서 나왔다면 언제나 교체를 사용하십시오. 막힌 결제가 다른 사람에게서 왔다면 자식을 선택하십시오.