용어집 / 라이트닝과 레이어 2
CLTV 만료 델타
- CLTV 만료 델타란 무엇입니까?
- CLTV 만료 델타는 라이트닝 노드가 다음 홉으로 넘기기 전에 수신 결제의 타임락에서 차감하는 블록 수이며, 가십에서 채널 방향별로 공지됩니다.
라이트닝 경로에서 포워딩을 하는 각 노드는 밀리사토시 단위의 수수료와 블록 단위의 지연이라는 두 가지 가격을 청구하며, CLTV 만료 델타는 그 지연입니다. BOLT 7은 이를 channel_update 메시지의 16비트 필드로 fee_base_msat와 함께 담고 있으며, 채널의 각 측은 각자의 값을 독립적으로 공개합니다. 결제가 막히면 그 블록 누적이 곧 자금이 묶여 있는 시간입니다.
작동 방식
CLTV 만료 델타는 포워딩을 수행할 노드가 선택하며, 그 노드의 송신 방향에만 적용됩니다.
명세의 표현은 정확합니다. 노드는 수신 HTLC의 cltv_expiry에서 차감할 블록 수를 이 필드에 설정해야 합니다. 따라서 델타는 마감 시한이 아니라 간격입니다. 노드는 특정 절대 블록 높이까지 잠긴 결제를 받아들이고, 델타를 자신의 몫으로 남긴 뒤, 다음 홉에는 그 높이에서 델타를 뺀 높이까지 잠긴 결제를 제시합니다. 이 간격은 노드의 안전 여유입니다. 하류 홉이 가능한 마지막 순간에 정산하더라도, 상류에서 청구할 수 있는 블록이 그만큼 남습니다.
모든 공개 채널은 방향별로 하나씩, 두 개의 이러한 숫자를 전달하며, 각각은 이를 설정한 노드가 서명합니다. 이 숫자는 channel_update, 메시지 유형 258에 htlc_minimum_msat 및 두 개의 수수료 필드와 함께 실립니다. 포워딩을 수행할 노드가 공지한 업데이트만 중요합니다. A에서 B로, B에서 C로, C에서 D로 이어지는 경로에서 지불자는 B에서 C로 가는 구간에는 B의 업데이트를, C에서 D로 가는 구간에는 C의 업데이트를 사용하며, 자신의 업데이트는 사용하지 않습니다.
따라서 경로는 역방향으로 구성됩니다. 지불자는 목적지에서 인보이스가 요구하는 최소 최종 만료로 시작해, 각 홉이 공지한 델타를 더해가며 거슬러 올라가고, 누적 합계가 첫 피어에게 건네는 HTLC의 타임락이 됩니다. 노드가 가격을 개정할 때 BOLT 7은 10분 동안 이전 매개변수를 계속 수용하도록 요청합니다. 가십이 모든 지불자에게 동시에 도달하지 않기 때문입니다.
확인할 수 있는 곳
CLTV 만료 델타는 막힌 라이트닝 결제가 잔액을 얼마나 오래 묶어 두는지를 결정하며, BOLT 7의 자체 라우팅 예시는 그 외에는 동일한 두 경로에 수치를 부여합니다.
네 개의 노드 A, B, C, D가 다이아몬드 형태로 배치되어 10, 20, 30, 40 블록을 공지하며, C는 명세가 기본값이라고 부르는 18의 최종 만료 델타를 요구합니다. A는 C에게 4,999,999밀리사토시를 보냅니다. B를 경유하면 A는 피어에게 5,010,198밀리사토시를 건네고, 그중 10,199는 B의 수수료이며, 첫 HTLC는 현재 블록 높이에 80을 더한 값에서 만료됩니다. B의 홉에 20블록, C에 18블록, 그리고 42블록의 추가 여유입니다. D를 경유하면 동일한 결제의 비용은 5,020,398밀리사토시이고 현재 높이에 100을 더한 값에서 만료됩니다. 동일한 발신자, 동일한 수신자, 동일한 금액이지만 노출되는 블록은 20블록 더 많습니다.
그 42는 임의의 여유가 아닙니다. BOLT 7은 델타를 정직하게 합산하여 구성한 경로는 중간 노드가 자신의 위치를 파악할 수 있게 하고, 그로부터 누가 지급받는지 추측할 수 있게 한다고 경고합니다. 따라서 지불자는 무작위 오프셋을 추가할 것을 권고받으며, 이는 수신자로부터 그래프를 바깥으로 따라가며 만나는 델타를 합산하여 구합니다. 명세는 그 결과를 shadow route extension이라고 부릅니다.
포워딩 노드를 운영하지 않는 한 이것은 직접 설정할 수 없습니다. 이 사이트의 리뷰에서 휴대폰에서 실행되는 진정한 자체 완결형 라이트닝 노드라고 평가한 Phoenix는 송신 가격을 0.4%에 4sat를 더한 값으로 공개하며, 그 표는 블록이 아니라 금액에 가격을 매깁니다.
CLTV 만료 델타 vs OP_CHECKLOCKTIMEVERIFY
CLTV 만료 델타는 가십에서 공개되는 라우팅 정책 수치인 반면, OP_CHECKLOCKTIMEVERIFY는 온체인에서 절대 마감 시한을 강제하는 비트코인 스크립트 옵코드입니다.
두 가지는 세 글자를 공유할 뿐 거의 공통점이 없습니다. 델타는 상대적이며 전적으로 오프체인에 존재합니다. 어떤 스크립트에도 나타나지 않고, 어떤 풀 노드도 이를 검증하지 않으며, 이를 설정한 노드가 새로운 channel_update로 개정합니다. OP_CHECKLOCKTIMEVERIFY는 코인에 기록되고, 모든 풀 노드가 검사하며, 코인이 존재한 뒤에는 편집할 수 없습니다.