본문으로 건너뛰기
buybitcoinsmart

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

블라인드 경로

블라인드 경로란 무엇입니까?
블라인드 경로는 라이트닝 노드로 향하는 경로로, 수신자가 각 홉의 공개 키를 조정된 키로 교체하기 때문에 발신자는 실제 목적지를 알 수 없습니다.

수신자가 경로를 구성해 건네주므로, 지불자는 공개된 도입 지점까지만 라우팅합니다. BOLT 12 인보이스에 블라인드 경로가 없으면 거부되며, 블라인드 홉은 경로의 나머지 부분과 함께 양파 패킷의 고정된 1300바이트 페이로드를 공유합니다. 라이트닝 목적지를 공개하는 경우, 블라인딩은 그 목적지에서 노드 ID를 숨깁니다.

작동 방식

블라인드 경로는 지불하는 노드가 아니라, 도달되기를 원하는 노드가 거꾸로 구성합니다.

수신자는 자신으로 향하는 실제 경로와 무작위 임시 키에서 시작하며, 이로부터 각 홉이 별도의 설명 없이 다음 홉을 계산할 수 있도록 배열된 경로 키의 연쇄를 도출합니다. 모든 홉은 결국 수신자와 ECDH 비밀을 공유하게 되고, 그 비밀로부터 두 가지가 나옵니다. 첫째는 블라인딩 인자로, 공유 비밀을 키로 한 blinded_node_id 문자열의 HMAC이며, 수신자가 이를 해당 홉의 공개 키에 곱합니다. 그 홉은 동일한 인자를 도출해 자신의 개인 키에 적용하므로 결과에 대해 여전히 서명할 수 있지만, 다른 누구도 그 키를 공개된 그래프와 대조할 수 없습니다. 둘째는 암호화 키로, 논스를 모두 0으로 둔 ChaCha20-Poly1305로 해당 홉을 위한 작은 명령 블롭을 봉인하는 데 사용됩니다.

공개되는 것은 짧습니다. 평문 상태의 도입 지점, 시작 경로 키 1개, 그리고 각각 봉인된 블롭과 짝을 이룬 조정된 키 목록입니다. 블롭 안에는 해당 홉이 읽는 필드가 들어 있습니다: 지불이 다음으로 향할 곳을 나타내는 short_channel_id 또는 next_node_id, 적용해야 할 수수료와 CLTV 델타를 위한 payment_relay, 최대 만료와 최소 HTLC 크기를 위한 payment_constraints, 패딩, 그리고 마지막 홉에서는 path_id입니다.

이러한 선택 중 세 가지는 기능적이라기보다 방어적입니다. 지불자가 아니라 수신자가 모든 블라인드 홉의 수수료와 타임록을 정하므로, 중간 노드는 경로 도중에 가격을 올려 어떤 지불이 실패하는지 지켜볼 수 없습니다. 수신자는 모든 블롭을 하나의 길이로 패딩하고 버려질 더미 홉을 덧붙일 수 있으므로, 실제 길이는 형태로부터 읽을 수 없습니다. 그리고 path_id는 예컨대 프리이미지 같은 비공개 데이터를 담으므로, 수신자는 공격자가 의심하는 모든 노드에 발사한 경로를 받아들이는 대신 자신이 구성한 경로를 확인할 수 있습니다.

BOLT 12는 마지막 위장 조각을 더합니다. 블라인드 홉마다 수수료를 두는 대신, 인보이스는 경로마다 정확히 blinded_payinfo 1개를 담습니다: 밀리사토시 단위의 기본 수수료, 백만분율 단위의 비례 요율, 집계된 CLTV 델타 1개, 최소 및 최대 HTLC 크기, 그리고 기능 벡터입니다. 명시된 이유는 홉별 세부 정보가 경로를 구별해 주는 비균일성을 쉽게 드러내기 때문입니다.

비트코인을 구매할 때 이것이 중요한 이유

블라인드 경로는 라이트닝 네트워크의 중간이 여러분에 대해 아는 것을 바꾸고, 여러분 자신의 첫 홉이 아는 것에 대해서는 아무것도 바꾸지 않습니다.

경로 블라인딩은 도입 지점 이후의 홉을 숨기며, 여러분의 지갑이 연결되는 노드, 곧 여러분의 금액과 목적지를 보는 노드에 대해서는 아무 말도 하지 않습니다. 이 사이트의 지갑 리뷰 41건 중 4.0점으로 평가한 Phoenix는 이 점에 대해 유난히 솔직합니다: ACINQ의 자체 FAQ는 이 지갑이 호스팅 방식의 수탁형 지갑 대비 어떠한 프라이버시 이점도 제공하지 않으며, ACINQ가 지불의 최종 목적지와 금액을 안다고 밝힙니다. 여러분이 지불하는 오퍼에 담긴 블라인드 경로는 그것을 바꾸지 않습니다.

수탁은 이 질문을 완전히 없앱니다. 이 사이트가 2.7점으로 평가하고 주의 표시를 붙인 Wallet of Satoshi는 수탁 모드에서 키를 보관하므로 지불의 양 끝 모두 자신의 기록입니다. 이 서비스는 2023년 11월 23일에 미국 고객에 대한 서비스를 중단했고, 이후 유럽연합 전역에서 수탁 서비스를 종료했습니다. 지불이 제공자의 장부를 떠나지 않는다면 여러분에 관한 어떤 것도 블라인드되지 않습니다.

블라인딩이 여러분에게 이점을 줄 수 있는 지점은 출금 그 자체입니다. 이 사이트에서 가장 높은 4.6점을 받은 라이트닝 우선 플랫폼인 Strike는 이체에 자체 수수료를 더하지 않고 여러분이 지정한 라이트닝 목적지로 지급합니다. BOLT 11 인보이스를 건네면 여러분의 노드를 건네는 것입니다: 서명에는 복구 ID가 실려 있어 수취인 키를 그것으로부터 복구할 수 있습니다. 오퍼는 지불자가 이를 지원하는 곳이라면 그 자리에 대신 도입 지점을 둡니다.

대가는 진단 측면에 있습니다. 블라인드 경로 내부의 홉은 귀속 데이터가 없는 실패를 반환하고, 도입 지점은 오류를 전달하기 전에 무작위 지연을 더하라는 지시를 받으므로, 탐색으로는 수신자가 얼마나 멀리 있는지 측정할 수 없습니다. 따라서 블라인드 목적지로의 출금이 실패해도 거의 아무것도 알려주지 않으므로, 플랫폼을 탓하기 전에 여러분이 관리하는 지갑에서 시험해 보십시오.

Dave가 Bob과 Carol을 거쳐 Alice에게 경로를 건네는 사례

라이트닝 명세는 블라인드 경로 개념을 네 사람의 이름을 통해 풀어 설명하는데, 이는 대수보다 따라가기 쉽습니다.

Dave는 Alice가 자신임을 모른 채 지불받고자 합니다. 그는 공개 노드 2곳, 즉 Bob과 Carol을 거쳐 자신으로 들어오는 경로를 고르고, 세 사람 모두가 각자의 키를 도출하도록 경로 키의 연쇄를 구성합니다. 그런 다음 블롭 3개를 봉인합니다: Bob에게 Carol 앞으로 전달하라고 알리는 것, Carol에게 Dave 앞으로 전달하라고 알리는 것, 그리고 메타데이터와 path_id를 담아 자신을 위한 것 1개입니다. 마지막으로 Bob을 Bob 프라임으로, Carol을 Carol 프라임으로, Dave를 Dave 프라임으로 바꾸는 인자를 도출합니다.

Alice는 세 줄을 받습니다: 첫 노드는 Bob이고, 여기 첫 경로 키가 있으며, 여기 Bob 프라임, Carol 프라임, Dave 프라임의 순서가 각각 봉인된 블롭과 짝을 이룬 채 있습니다. 그녀는 일반적인 공개 그래프를 통해 Bob에게 도달하며, 이는 의도된 것입니다: 명세는 중간 노드의 지원이 필요 없고 읽을 수 있는 오류를 반환하므로 도입 지점까지의 비블라인드 구간을 권장합니다. Bob은 자신의 명령을 봉인 해제하고 다음이 Carol이라는 것만 알게 되며, 도출된 경로 키를 양파와 함께 전달합니다. Carol은 그 키를 두 번 사용합니다. 한 번은 양파를 조정하는 데, Alice가 Carol이 아니라 Carol 프라임에 암호화했기 때문이며, 한 번은 자신의 명령을 봉인 해제하는 데 사용합니다. Dave는 마지막에 이를 받고 수락하기 전에 path_id를 확인합니다.

각자가 결국 아는 것을 세어 보십시오. Alice는 Bob을 압니다. Bob은 자신이 도입 지점이며 다음이 Carol임을 압니다. Carol은 블라인드 지불이 자신을 거쳤음을 알지만 Dave가 수신자인지 또 다른 중계 노드인지 구별할 수 없습니다. Dave는 그것을 구성한 유일한 사람이므로 모든 것을 압니다.

블라인드 경로 vs 경로 힌트

블라인드 경로와 경로 힌트는 같은 질문, 즉 공개 그래프가 볼 수 없는 노드에 어떻게 도달할 것인가에 답하며, 그 과정에서 정반대의 양을 드러냅니다.

경로 힌트는 BOLT 11 인보이스의 r 필드이며 평문입니다. 각 항목은 264비트 공개 키, 64비트 짧은 채널 ID, 기본 수수료, 비례 요율, CLTV 델타를 모두 평문으로 담으므로, 인보이스를 가진 누구든 여러분이 어느 연결성이 좋은 노드에 연결되어 있는지 압니다. 블라인드 경로는 도입 지점을 지명한 뒤 어두워집니다: 이후의 모든 홉은 그래프의 어떤 것과도 일치하지 않는 조정된 키이며, 수수료는 항목별이 아니라 집계되어 도착합니다. 블라인드 경로는 경로 힌트가 결코 하지 않았던 역할도 떠맡습니다. BOLT 11 인보이스의 payment_secret 및 payment_metadata 필드를 대신합니다.

블라인드 경로 vs 양파 라우팅

양파 라우팅은 홉으로부터 지불자를 숨기고, 블라인드 경로는 지불자로부터 수취인을 숨깁니다.

단순한 양파 라우팅에서 발신자는 공개 그래프에서 모든 홉을 고르고 홉마다 암호화 계층 1개를 감싸므로, 어떤 전달 노드도 누가 지불하는지, 경로의 어디에 있는지 알지 못합니다. 발신자는 여전히 목적지의 실제 노드 ID를 포함한 전체 경로를 알며, 이는 상점에 지불하는 데는 문제없지만 재사용 가능한 목적지를 공개하는 데는 쓸모가 없습니다. 경로 블라인딩은 아무것도 대체하지 않고 빠진 절반을 채웁니다: 블라인드 경로를 통한 지불은 여전히 양파이며, 블라인딩은 그 위에 겹쳐진 키 조정입니다. 둘은 충분히 분리 가능하여, 프라이버시를 원하지 않는 수신자는 자기 자신만을 포함하는 1홉 경로를 구성하고 그래도 자신의 노드 ID를 드러낼 수 있습니다.

혼동하기 쉬운 용어

자주 묻는 질문

블라인드 경로는 제 라이트닝 노드를 모든 사람으로부터 숨깁니까?

아닙니다. 도입 지점은 평문으로 공개되며, 보통 지갑 제공업체가 운영하는 노드인 귀하의 첫 홉은 그 뒤의 홉들로부터 경로가 무엇을 숨기더라도 귀하가 보내는 모든 결제를 봅니다.

블라인드 경로는 라이트닝 결제 비용을 더 높입니까?

보통은 조금 높아집니다. 지갑이 가장 저렴한 경로를 찾는 대신 수신자가 블라인드 홉의 수수료와 타임록을 고정하기 때문입니다. BOLT 12 인보이스는 이를 홉당 가격이 아니라 하나로 집계된 기본 수수료에 경로당 비례 요율을 더한 형태로 표시합니다.

BOLT 12 오퍼로 한 결제가 아무 설명 없이 실패한 이유는 무엇입니까?

블라인드 경로 내부의 실패는 의도적으로 정보를 담지 않기 때문입니다. 해당 홉들은 귀하에게 돌아가는 귀속 데이터를 담지 않는 형태로 오류를 반환하며, 도입 지점에는 실패를 전달하기 전에 무작위 지연을 추가하라는 지시가 내려집니다. 그래서 누구도 경로를 탐침하여 수신자가 얼마나 멀리 있는지 측정할 수 없습니다.

블라인드 경로는 블라인드 서명과 같은 것입니까?

같은 단어를 쓰지만 아닙니다. 블라인드 서명은 Cashu와 Fedimint이 사용하는 Chaumian 기법으로, 민트가 나중에 알아볼 수 없는 지폐에 서명하게 하는 것이고, 블라인드 경로는 홉들이 조정된 공개 키로 공개되는 라이트닝 경로입니다.

다음에 읽을 글

관련 용어

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

이 페이지를 영어로 읽기