용어집 / 라이트닝과 레이어 2
라우트 힌트
- 라우트 힌트란 무엇입니까?
- 라우트 힌트는 라이트닝 인보이스에 실리는 항목으로, 공개 노드와 채널 및 그 수수료를 명시하여 지불자가 채널이 공지되지 않은 수취인에게 도달할 수 있게 합니다.
비공개 채널은 공개 가십 그래프에 절대 나타나지 않으므로, 인보이스 자체가 경로의 마지막 구간을 담아야 합니다. BOLT 11은 수취인에게 공개 채널이 없을 때 힌트 하나를 필수로 정하며, 각 홉은 51바이트를 차지합니다: 노드 ID, 채널 ID, 기본 수수료, 비례 수수료, CLTV 델타입니다. 공지된 채널이 없는 휴대폰 지갑으로 출금이 되는 것은 바로 그 바이트가 있기 때문입니다.
작동 방식
라우트 힌트는 문자 r로 표기되는 BOLT 11 태그 필드에 실려 이동하며, 이 필드는 단일 값이 아니라 목록을 담습니다.
각 항목은 다섯 개의 값을 차례로 이어 붙인 것입니다: 264비트 pubkey, 64비트 short_channel_id, 32비트 fee_base_msat, 32비트 fee_proportional_millionths, 16비트 cltv_expiry_delta입니다. 합계는 408비트로, 홉당 정확히 51바이트입니다. 항목은 공개 노드에서 수취인을 향하는 정방향 경로로 배열되며, 각 pubkey는 해당 채널의 끝이 아니라 시작에 있는 노드를 가리킵니다.
마지막 세 값은 공개 노드라면 BOLT 7에 따라 channel_update로 브로드캐스트했을 값입니다. 비공개 채널은 아무것도 브로드캐스트하지 않으므로, 지불자가 그 홉의 수수료를 알 수 있는 곳은 인보이스뿐입니다.
작성자 규칙의 범위는 좁습니다: 수취인의 키와 연결된 공개 채널이 없으면 인보이스는 r 필드를 적어도 하나 담아야 합니다. 작성자는 대안 경로를 제공하기 위해 여러 개를 넣을 수 있으며, 가장 선호하는 것이 먼저 옵니다. 상한은 태그 필드 자체로, 그 데이터는 1023개의 5비트 묶음, 즉 639바이트를 넘을 수 없어 한 필드에 최대 열두 홉까지 들어갑니다.
힌트는 지시가 아니라 조언입니다: 지불자는 제시된 채널 순서를 사용할 수 있으며, 명세는 이 필드를 "limited routing assistance"라고 부릅니다. BOLT 4의 라우트 블라인딩은 같은 문제에 대한 이후의 답입니다. 수취인은 평문 노드 ID와 채널 ID 대신 도입 지점과, 조정된 노드 ID 및 각 홉에 암호화된 데이터를 보내는 사람에게 건네주므로 보내는 사람이 누가 경로에 있는지 알지 못한 채 사용 가능한 경로를 얻습니다.
확인할 수 있는 곳
라우트 힌트는 인보이스 디코더가 비공개 경로에 대해 추가 라우팅 정보로 표시하는 것입니다.
명세 자체의 메인넷 테스트 벡터는 20밀리비트코인 인보이스로, 힌트가 붙은 두 홉을 거칩니다: 채널 66051x263430x1800에 기본 수수료 1밀리사토시, 20백만분율, 3블록 CLTV 델타이고, 다음은 197637x395016x2314에 2밀리사토시, 30백만분율, 4블록입니다. 이 두 홉은 인보이스의 bech32 문자 중 164개를 차지하며, 이는 결제 해시와 결제 시크릿을 합한 것보다 많습니다.
같은 구조는 실제에서도 나타납니다. 이 사이트가 리뷰한 지갑 41개 중 하나인 Phoenix는 채널을 공개 그래프가 아니라 ACINQ와 유지하며, 그 채널이 공지되지 않는 경우 위의 규칙에 따라 모든 인보이스가 ACINQ의 노드를 명시해야 합니다. 해당 리뷰에서 인용한 ACINQ 자체의 FAQ는 이미 자신이 사용자의 결제 목적지와 금액을 안다고 인정하고 있습니다. 힌트는 이 공개를 외부로 확장하는데, 사용자에게 지불하는 사람이 사용자가 어느 제공자를 이용하는지 알게 되기 때문입니다. Strike 같은 거래소에서 라이트닝으로 출금하면, 지불자로서의 거래소가 지갑이 발행한 인보이스에서 읽어 낸 힌트 홉의 기본 수수료와 비례 수수료를 지불합니다.
라우트 힌트 vs 인바운드 유동성
라우트 힌트는 지불자에게 사용자를 찾는 방법을 알려 주고, 인바운드 유동성은 결제가 도착한 뒤 그것이 들어갈 자리가 있는지를 결정합니다.
둘은 외부에서 보면 똑같아 보이는 방식으로 실패하며, 인보이스를 수정해서 고칠 수 있는 것은 하나뿐입니다. 힌트가 완벽하게 구성되고 올바른 수수료를 제시하더라도, 그 채널에서 사용자 쪽에 여유가 없으면 결제는 마지막 홉에서 여전히 실패합니다. Phoenix는 이를 해결하는 가격을 공개합니다: 이미 인바운드 유동성이 있으면 수취는 무료이고, 지갑이 공간을 만들기 위해 온체인으로 나가야 하면 1%에 채굴 수수료가 더해집니다. 보내는 사람이 경로는 해석되었다고 주장하는데 결제가 실패하면, 인보이스를 탓하기 전에 용량을 확인하십시오.