본문으로 건너뛰기
buybitcoinsmart

용어집 / 라이트닝과 레이어 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%에 채굴 수수료가 더해집니다. 보내는 사람이 경로는 해석되었다고 주장하는데 결제가 실패하면, 인보이스를 탓하기 전에 용량을 확인하십시오.

혼동하기 쉬운 용어

자주 묻는 질문

라우트 힌트가 제 비공개 채널을 노출합니까?

네, 인보이스를 읽는 누구에게나 노출합니다. r 필드는 상대의 노드 ID와 두 사람 사이 채널의 짧은 채널 ID를 모두 평문으로 적으며, 이는 채널이 공지되지 않은 상태에서 도달 가능하려면 치러야 할 대가입니다. BOLT 4의 라우트 블라인딩은 이들을 도입 지점 뒤로 숨기는 더 새로운 방식입니다.

라우트 힌트가 올바르게 보이는데도 결제가 실패하는 이유는 무엇입니까?

힌트는 방향을 알려 주는 것이지 용량이 아니기 때문입니다. 힌트가 가리키는 채널은 해당 금액을 실어 나르기에 충분한 잔액을 상대 쪽에 여전히 갖추어야 하며, 인보이스의 어떤 필드도 그것을 만들어 내지 못합니다. 무엇이든 고쳐 쓰기 전에 인바운드 유동성을 확인하십시오.

인보이스 하나에 라우트 힌트를 둘 이상 담을 수 있습니까?

네. BOLT 11은 작성자가 대안 라우팅 옵션으로 여러 개의 r 필드를 넣을 수 있게 하며, 가장 선호하는 것이 먼저 나열되고 각 필드는 자체적으로 여러 홉을 이어 붙일 수 있습니다. 필드 하나는 태그 필드 데이터에 대한 639바이트 한도로 제한되어 최대 열두 홉까지 들어갑니다.

다음에 읽을 글

관련 용어

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

이 페이지를 영어로 읽기