용어집 / 라이트닝과 레이어 2
최대 HTLC 처리 중 금액
- 최대 HTLC 처리 중 금액이란 무엇입니까?
- 최대 HTLC 처리 중 금액은 각 라이트닝 피어가 상대방이 동시에 대기 상태로 보유할 수 있는 결제의 총액에 설정하는 한도입니다.
이 한도는 max_htlc_value_in_flight_msat이라는 단일 필드로, 채널이 개설될 때 합의되고 이후 모든 결제에서 적용됩니다. Eclair는 기본값으로 5,000,000,000밀리사토시 또는 채널 용량의 45% 중 더 작은 값을 사용하므로, 60 mBTC 채널에는 27 mBTC가 적용됩니다. 규모가 큰 라이트닝 결제는 충분한 금액이 눈에 보이게 남아 있는 채널에서 실패할 수 있으며, 종종 그 이유가 바로 이것입니다.
작동 방식
최대 HTLC 처리 중 금액은 강제되는 것이 아니라 협상됩니다. 각 측이 상대방이 지켜 주기를 바라는 상한을 선언합니다.
이 필드는 open_channel(메시지 유형 32)에 실려 전송되고 accept_channel(유형 33)로 반환됩니다. 양방향으로 자금이 조달되는 채널에서는 open_channel2(64)와 accept_channel2(65)에 실립니다. BOLT 2는 이를 "a cap on total value of outstanding HTLCs offered by the remote node, which allows the local node to limit its exposure to HTLCs"(원격 노드가 제시하는 미결 HTLC의 총 가치에 대한 상한으로, 로컬 노드가 HTLC에 대한 노출을 제한할 수 있게 합니다)라고 설명합니다. 방향에 주목해야 합니다. 송신하는 숫자는 상대방을 제한하는 것이지 자신을 제한하는 것이 아니므로, 하나의 채널에는 일치할 필요가 없는 두 개의 상한이 존재합니다.
적용 방식은 양쪽 끝 모두에서 단호합니다. 송신 노드는 이미 제시한 총 가치에 새 결제를 더하면 원격 측의 상한을 초과하게 되는 경우 해당 결제를 추가해서는 안 되며, 상대방이 규칙을 위반한 수신 노드는 경고를 보내고 연결을 끊거나 채널을 즉시 실패 처리하도록 지시받습니다. 자매 필드인 max_accepted_htlcs는 대기 중인 결제의 금액이 아니라 개수를 세며, 명세는 이 필드의 상한을 483으로 엄격히 정하고, 채널이 수수료 없는 커밋먼트를 사용할 경우 114로 낮아집니다. 가치 상한에는 이에 상응하는 천장이 없습니다. 이는 순전히 노드 정책이며, 명세의 유일한 안전장치는 수신 노드가 수치가 너무 작아 보이는 채널을 거부할 수 있다는 것뿐입니다.
정지해 있는 자금은 영향을 받지 않습니다. 채널은 정산된 잔액으로 상한의 여러 배를 보유할 수 있는데, 한도는 이동 중인 결제, 즉 채널이 잘못 폐쇄될 경우 온체인에서 풀어내야 할 결제만 계산하기 때문입니다.
확인할 수 있는 곳
최대 HTLC 처리 중 금액은 공개 라이트닝 그래프에 절대 나타나지 않으므로, 어떤 채널 탐색기도 이를 보여 주지 않습니다.
이 값은 한 가지 특정한 방식으로 유출됩니다. BOLT 7은 channel_update를 게시하는 노드가 전달할 최대 단일 결제인 htlc_maximum_msat을 상대방으로부터 받은 max_htlc_value_in_flight_msat 이하로 설정하도록 요구합니다. 따라서 비공개 수치가 공개 수치에 단단한 상한을 씌웁니다. 신중한 상대방은 공개되는 수치를 끌어내리며, 노드는 상대방이 허용하는 것보다 적게 공개할 자유가 있습니다.
기본값은 구현체마다 차이가 커서 중요합니다. Eclair의 참조 구성은 max-htlc-value-in-flight-msat를 5,000,000,000으로, max-htlc-value-in-flight-percent를 45로 설정하고 더 작은 값을 적용하며, 이 설정이 방향별로 적용되므로 양방향을 합치면 수치의 두 배에 이를 수 있다고 밝힙니다. Eclair는 또한 max-accepted-htlcs를 30으로 설정하는 반면, LND의 예시 구성은 default-remote-max-htlcs를 명세의 최댓값인 483으로 설정합니다. 기본값을 그대로 사용하는 두 운영자는 개수만으로도 열여섯 배의 차이를 보일 수 있습니다.
구매자 입장에서의 증상은 설명 없이 실패하는 결제입니다. 금액을 여러 부분으로 나누어도 그 부분들이 같은 채널을 사용하면 해결되지 않는데, 상한이 이들을 합산하기 때문입니다. 해당 eclair 기본값을 공개하는 ACINQ는 이 사이트에서 리뷰한 휴대폰 지갑인 Phoenix도 제공하며, 사용자를 대신해 채널을 개설하는 모든 지갑은 이러한 수치를 대신 선택합니다.
최대 HTLC 처리 중 금액 vs 채널 용량
채널 용량은 채널의 자금 조달 출력에 잠긴 금액인 반면, 최대 HTLC 처리 중 금액은 그 금액 중 어느 정도가 어느 한 시점에 결제 진행 중일 수 있는지를 규율합니다.
용량은 자금 조달 트랜잭션에 의해 고정되고 네트워크 전체에 공지되는 공개적 사실입니다. 처리 중 상한은 비공개로, 두 피어 사이에서만 교환되고, 방향별로 따로 설정되며, 산술이 아니라 정책에 의해 선택됩니다. Eclair의 백분율 기본값은 그 차이를 구체적으로 보여 줍니다. 45%는 각 방향에 별도로 적용되므로, 용량의 절반 이상은 한 번에 한 방향으로 이동하는 것이 금지됩니다. 자신의 쪽에 여유가 충분해 보이는 채널도 결제를 거부할 수 있으며, 이를 거부한 수치는 조회할 수 없습니다.