본문으로 건너뛰기
buybitcoinsmart

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

LNURL

LNURL이란 무엇입니까?
LNURL은 인코딩된 링크 1개를 따라 라이트닝 지갑이 서버에서 새로운 인보이스, 출금 또는 로그인 챌린지를 가져오게 하는 소규모 웹 프로토콜 모음입니다.

라이트닝 인보이스는 만료되며 한 번만 결제할 수 있기 때문에 인쇄하거나 게시하기에 불편합니다. LNURL은 인보이스 앞에 HTTPS 요청을 두어 이 문제를 해결합니다. 지갑은 결제하려는 시점에 서버에서 결제 요청을 받아옵니다. 명세는 BOLT 외부에 있으며 LUD-01부터 번호가 매겨집니다.

작동 방식

LNURL은 정적인 링크를 지갑과 서버 사이의 실시간 대화로 바꿉니다.

링크 자체가 핵심입니다. 원래 형태인 LUD-01에서는 HTTPS URL을 lnurl 접두사와 함께 bech32로 인코딩하여, QR 코드로 인쇄되거나 채팅 창에 입력되어도 견디는 문자열을 만듭니다. 더 새로운 LUD-17 형태는 인코딩을 생략하고 일반 URL 앞에 lnurlp: 같은 평범한 스킴 접두사를 사용하므로 더 짧고 디버깅하기 쉽습니다. 어느 쪽이든 지갑은 링크를 디코딩하고 GET 요청을 수행한 뒤, 어떤 종류의 상호작용인지 알려주는 JSON을 받습니다.

그 JSON의 tag 필드가 이후의 모든 것을 결정합니다. LUD-06은 결제 흐름인 payRequest를 정의합니다. 서버는 콜백 URL과 밀리사토시 단위의 minSendable 및 maxSendable, 그리고 지갑이 표시하는 메타데이터 문자열을 반환합니다. 사용자가 금액을 선택하면 지갑이 그 금액으로 콜백하고, 서버는 정확히 그 금액에 대한 BOLT11 인보이스를 새로 발행하여 반환합니다. LUD-03은 반대 방향으로 작동하는 withdrawRequest를 정의합니다. 서버가 돈을 제공하고 지갑이 이를 받을 인보이스를 제공합니다. LUD-02는 피어에게 채널을 요청합니다. LUD-04는 auth를 정의하며, 지갑이 도메인별로 파생된 키로 챌린지에 서명하는데, 일부 라이트닝 사이트가 비밀번호 없이 로그인하는 방식이 이와 같습니다.

이해할 가치가 있는 안전성 속성은 좁습니다. LNURL은 인보이스가 링크의 도메인에서 왔고 그 금액이 사용자가 승인한 금액과 일치함을 보장합니다. 지갑이 결제 전에 반환된 인보이스를 확인하기 때문입니다. 그 도메인을 누가 통제하는지에 대해서는 아무것도 보장하지 않습니다. 시장 노점에서 실제 코드 위에 붙여 놓은 LNURL 코드를 스캔하면 공격자의 서버로 결제되며, 결제는 설계된 대로 정확히 성공합니다.

사용되는 곳

대부분의 사람은 LNURL이라는 단어를 본 적 없이 LNURL을 접합니다.

팁 및 기부 페이지는 QR 코드 뒤에서 LNURL-pay를 사용하므로, 같은 인쇄 코드가 서로 다른 100명의 고객에게, 100가지의 서로 다른 금액으로 작동합니다. 비트코인 콘퍼런스의 경품과 faucet 카드는 LNURL-withdraw를 사용합니다. 스캔하면 지갑이 조용히 인보이스를 생성하고, 사토시는 눈에 보이는 인보이스 없이 도착합니다. 일부 라이트닝 지갑과 웹 서비스는 LNURL-auth를 로그인 시스템 전체로 사용합니다.

가장 큰 도입은 간접적입니다. user@domain 형태인 라이트닝 주소는 LUD-16에 정의되어 있으며 LNURL-pay 위에 직접 구축됩니다. 주소는 잘 알려진 HTTPS 경로로 변환되고, 그 이후의 흐름은 일반적인 LUD-06입니다. 지갑이 라이트닝 주소를 지원한다면 이미 LNURL을 지원하는 것입니다.

주된 유의점은 가용성입니다. 중간에 웹 서버가 있기 때문에 LNURL 코드의 신뢰성은 그 서버와 TLS 인증서의 신뢰성을 넘지 못합니다. BOLT11 인보이스는 한 번 생성되면 서버가 오프라인이어도 결제할 수 있지만, LNURL 링크는 그렇지 않습니다.

LNURL vs BOLT11 인보이스

LNURL은 결제 요청을 얻는 방법이고, BOLT11 인보이스는 결제 요청 그 자체입니다. 이 단 하나의 차이가 두 가지의 속성을 설명합니다. 인보이스는 자체 완결적이며 수취인 노드가 서명하고 정해진 시간 동안 유효하며 한 번만 결제할 수 있습니다. LNURL 링크는 금액도, 결제 해시도, 서명도 포함하지 않으며 무기한 유효하고, 각 결제자가 새로운 인보이스를 유발하므로 몇 명의 결제자에게든 작동합니다. 인보이스를 인쇄하면 한 시간 안에 만료됩니다. LNURL 코드를 인쇄하면 해당 도메인이 그 역할을 그만둘 때까지 계속 작동합니다.

혼동하기 쉬운 용어

자주 묻는 질문

LNURL은 라이트닝 명세의 일부입니까?

아닙니다. BOLT는 라이트닝 프로토콜 자체를 정의하는 반면, LNURL은 LUD-01부터 번호가 매겨지고 자체 저장소에서 유지되는 별도의 문서 모음입니다. 지갑 지원은 의무가 아니며 지갑마다 다릅니다.

LNURL 코드를 스캔하는 것은 안전합니까?

변조로부터는 안전하지만 대체로부터는 안전하지 않습니다. 지갑은 인보이스가 링크의 도메인에서 왔고 사용자가 승인한 금액과 일치하는지 확인하지만, 공격자의 코드로 물리적으로 바꿔치기된 코드는 설계된 대로 정확히 공격자에게 결제합니다.

관련 용어

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

이 페이지를 영어로 읽기