본문으로 건너뛰기
buybitcoinsmart

용어집 / 라이트닝과 레이어 2

더스트 HTLC

더스트 HTLC란 무엇입니까?
더스트 HTLC는 커밋먼트 트랜잭션에서 자체 출력을 가질 만큼 크지 않은 라이트닝 결제로, 강제 종료가 발생하면 채널 당사자 어느 쪽도 아닌 채굴업자에게 이 금액이 돌아갑니다.

라이트닝 채널은 진행 중인 결제가 더스트 한도에 회수 수수료를 더한 금액보다 적으면 그 결제를 위한 출력을 만들지 않으며, 그 금액은 채굴 수수료가 됩니다. 더스트 한도가 546사토시이고 킬로웨이트당 수수료율이 5,000이면 3,861사토시 미만은 모두 잘려 나갑니다. 이 돈은 해당 결제가 아직 이동 중일 때 채널이 강제 종료되는 경우에만 손실됩니다.

작동 방식

더스트 HTLC는 판단이 아니라 계산으로 결정됩니다. 채널 소유자가 선택한 더스트 한도에 온체인에서 해당 결제를 청구하는 데 드는 비용을 더한 금액이 기준입니다.

BOLT 3은 버려지는 출력을 잘린(trimmed) 출력이라고 부릅니다. 자신이 제공하는 결제의 경우 채널은 금액에서 HTLC-timeout 수수료를 뺀 값을 확인하고, 받는 결제의 경우 금액에서 HTLC-success 수수료를 뺀 값을 확인합니다. 이 두 트랜잭션은 앵커가 없는 채널에서 각각 663과 703 웨이트 유닛의 무게를 가지므로, feerate_per_kw가 5,000일 때 각각 3,315사토시와 3,515사토시의 비용이 듭니다. 더스트 한도 546사토시를 기준으로 하면 제공 결제의 임계값은 3,861사토시, 수령 결제의 임계값은 4,061사토시가 됩니다.

BOLT 3의 계산 예시는 이 손실을 보여 줍니다. 해당 수수료율에서 네 건의 결제가 진행 중입니다. 제공 HTLC는 5,000사토시와 1,000사토시이고, 수령 HTLC는 7,000사토시와 800사토시입니다. 5,000과 7,000은 각각 출력을 받습니다. 1,000과 800은 잘려 나가고, 커밋먼트 트랜잭션의 수수료는 기본 5,340사토시에서 7,140사토시로 올라갑니다. 이 추가된 1,800사토시는 정확히 사라진 두 결제분이며, 종료를 채굴하는 쪽에 지급됩니다.

각 당사자는 자신의 dust_limit_satoshis를 선택하므로 한 채널의 두 커밋먼트 트랜잭션은 어떤 결제가 더스트로 간주되는지에 대해 서로 다를 수 있습니다. BOLT 2는 상대방이 354사토시 미만의 값을 제안하면 노드가 해당 채널을 실패 처리하도록 하고, 자신이 너무 크다고 판단하는 값은 거부할 수 있게 합니다. 한도가 높은 상대방은 잘린 결제로 가득 찬 커밋먼트를 게시할 수 있기 때문입니다.

앵커 채널은 이 계산을 바꿉니다. option_anchors 또는 zero_fee_commitments에서는 2단계 HTLC 트랜잭션이 수수료를 싣지 않으므로 계산에서 빠지고, 임계값은 더스트 한도 자체로 낮아집니다. 이런 경우 BOLT 3은 노드가 dust_limit_satoshis를 의도적으로 높이라고 지시합니다. 한도를 넘지만 실제 수수료율에서는 회수할 수 없는 출력은 UTXO 집합만 오염시키기 때문입니다.

BOLT 2는 각 결제가 아니라 총액에 상한을 둡니다. 노드의 max_dust_htlc_exposure_msat는 그 자체로 정책의 문제인데, 이 한도를 넘으면 노드는 커밋된 후 들어오는 HTLC를 실패 처리하고 프리이미지를 공개하지 않아야 하며, 이를 통해 발생 가능한 손실을 깔끔한 실패로 바꿉니다.

확인할 수 있는 곳

더스트 HTLC는 지갑의 인터페이스가 아니라 지갑의 수탁 모델에서 나타나며, 이 사이트에 등재된 41개의 지갑 리뷰는 이 지점에서 뚜렷하게 갈립니다.

Phoenix는 휴대전화에서 실제 자기 보관형 라이트닝 노드를 실행하므로 채널도 사용자 것이고 이 노출도 사용자 것입니다. ACINQ는 전송 시 0.4%에 4사토시를 더해 청구하며, 그 전송 하나하나가 잘림이 닿을 수 있는 HTLC입니다. BlueWallet의 라이트닝 쪽은 LNDHub 서버의 계정이므로 운영자가 채널을 보유합니다. 사용자는 잘린 결제를 떠안지 않는 대신 그 운영자를 떠안습니다.

잘림은 종료 시점에 다시 나타납니다. BOLT 2는 더스트 HTLC를 포함해 어느 커밋먼트 트랜잭션에도 HTLC가 남아 있지 않을 때에만 종료 협상을 허용하므로, 온체인 관찰자가 볼 수 없는 300사토시의 결제도 협력 종료를 계속 붙잡아 둡니다.

더스트 HTLC vs 더스트 한도

더스트 한도는 노드가 선택하는 숫자이고, 더스트 HTLC는 그 숫자에 수수료를 더한 값과의 비교에서 진 결제입니다.

한도는 채널 매개변수로, open_channel과 accept_channel에서 설정되며 이후 어떤 메시지로도 전달되지 않습니다. 잘림은 움직이는 결과입니다. 앵커가 없으면 임계값이 feerate_per_kw를 따라가므로, 같은 2,500사토시의 결제라도 멤풀이 한산하면 실제 출력이 되고 멤풀이 붐비면 잘려 나갑니다.

두 개념은 적용되는 단계도 다릅니다. Bitcoin Core의 임계값, 즉 레거시 출력의 경우 546사토시이고 pay-to-witness-script-hash의 경우 330사토시인 이 값은 존재하는 트랜잭션에 대한 중계 정책입니다. 잘린 HTLC는 출력 자체가 기록되지 않으므로 이 검사에 결코 도달하지 않습니다.

혼동하기 쉬운 용어

자주 묻는 질문

더스트 HTLC로 실제로 돈을 잃을 수 있습니까?

그렇습니다. 다만 잘린 금액만, 그리고 해당 결제가 아직 진행 중일 때 채널이 강제 종료되는 경우에만 잃습니다. 정상적으로 정산되거나 실패한 결제는 영향을 받지 않습니다. 잘림은 누군가 커밋먼트 트랜잭션을 게시할 경우 그것이 어떤 모습일지를 결정할 뿐이기 때문입니다.

라이트닝 노드가 아주 작은 결제를 거부한 이유는 무엇입니까?

이유 중 하나는 더스트 HTLC 최대 노출 상한입니다. BOLT 2는 해당 HTLC를 수락하면 채널의 총 잘린 잔액이 운영자가 설정한 한도를 넘게 될 경우, 노드가 커밋된 후 그 HTLC를 실패 처리하고 프리이미지를 보류하라고 지시합니다.

앵커 채널은 더스트 HTLC를 없애 줍니까?

아닙니다. 앵커 채널은 2단계 HTLC 수수료를 계산에서 제외하므로 임계값은 일반 더스트 한도로 되돌아갑니다. 그래서 BOLT 3은 그 2단계 비용을 감당하도록 dust_limit_satoshis를 높이는 것이 타당하다고 말하며, 노드는 피어에게 Bitcoin Core 자체의 값보다 높은 한도를 허용해야 하는데, 그 값은 240사토시에서 546사토시까지입니다.

다음에 읽을 글

관련 용어

라이트닝과 레이어 2 분야의 다른 용어

이 페이지를 영어로 읽기