Lightning Network는 결제 채널을 통해 비트코인을 주고받는 네트워크입니다. 비트코인 기본 네트워크의 규칙을 바탕으로 작동하므로 두 번째 계층이라고 부릅니다. 참여자는 매번 기본 네트워크에 결제를 기록하는 대신, 이미 잠가 둔 비트코인을 어떻게 나눌지 합의하고 그 배분을 갱신합니다. 별도의 코인을 쓰는 것은 아닙니다. 서로 협력하면 빠르게 결제할 수 있고, 협력이 끝나더라도 미리 준비한 Bitcoin 거래로 정산할 수 있습니다.
일반적인 비트코인 결제는 제한된 블록 공간을 다른 거래와 경쟁하며 기록될 차례를 기다립니다. Lightning은 다른 방식을 사용합니다. 먼저 참여자들이 결제 채널을 마련한 뒤, 서명된 데이터를 교환하면서 자금 배분을 바꿉니다. 정상적으로 협력하는 동안에는 완료된 결제를 하나씩 블록에 기록할 필요가 없습니다. 최종 정산의 기반은 여전히 Bitcoin 거래입니다. 이 추가 계층이 비트코인의 규칙을 없애거나 자체 토큰을 발행하지는 않습니다. [2] [1]
채널은 실제 비트코인으로 뒷받침되는 두 참여자 사이의 약정입니다. 개설할 때 기본 네트워크에서 funding transaction, 즉 자금을 넣는 거래를 만듭니다. 그 거래의 출력은 사용 조건이 붙은 일정 금액이며, 채널 자금의 바탕이 됩니다. 참여자는 채널을 닫을 때 자금을 나눌 수 있도록 서명된 commitment transactions를 준비합니다. 따라서 잔액 변화는 이미 잠긴 비트코인에 대한 권리 배분을 바꾸는 것이지, 비트코인을 새로 만드는 것이 아닙니다. [2]
직접 관리하는 지갑에서는 키와 채널 운영에 필요한 데이터를 통제할 수 있어야 합니다. 어떤 앱은 이를 직접 처리하고, 어떤 앱은 보조 서비스를 이용합니다. 반면 수탁 서비스에서는 운영자가 자금과 채널을 관리합니다. 화면에 표시되는 잔액은 운영자가 얼마를 인출할 수 있도록 인정하는지에 대한 기록입니다. Lightning이라는 이름이나 화면의 금액만으로는 두 방식을 구분할 수 없습니다. 누가 서명할 수 있는지, 무엇을 백업하는지, 어떤 서비스의 가용성에 의존하는지 알아야 합니다. [2]
채널 상대방에게 결제하면 두 사람이 새로운 자금 배분에 서명합니다. 일반적인 채널 구조에서는 이전 상태를 철회합니다. 철회된 상태로 정산하려는 시도는 부정행위를 한 쪽이 자기 자금을 잃는 결과로 이어질 수 있습니다. 따라서 앱의 숫자를 임의로 바꾸는 것과는 다릅니다. 상대방이 협력을 중단해도 미리 준비한 commitment transaction을 이용해 Bitcoin에서 일방적으로 채널을 닫을 수 있습니다. 다만 이런 보호에는 올바른 상태 데이터와 제때의 대응이 필요합니다. [3]
단순화한 채널에서 내 쪽에 1 000 000 sat, 상대방 쪽에 0 sat가 있다고 가정해 보겠습니다. Satoshi, 줄여서 sat는 BTC의 가장 작은 단위입니다. 상대방에게 200 000 sat를 직접 보내면 내 몫은 800 000 sat, 상대방 몫은 200 000 sat가 됩니다. 총액은 그대로이며, 이 갱신 자체에 새로운 블록은 필요하지 않습니다. 이 예에서는 수수료와 필수 준비금을 제외했습니다. 실제 채널에서 표시된 잔액 전부를 보낼 수 있다는 뜻은 아닙니다. [3]
수취인과 직접 연결된 채널이 없어도 결제할 수 있습니다. 여러 채널을 거쳐 보낼 수 있지만, 각 구간에는 결제 방향으로 이동할 수 있는 자금이 있어야 합니다. 이것이 방향별 유동성, 즉 해당 방향으로 실제 보낼 수 있는 금액입니다. 자금이 반대편에 있다면 총용량이 커도 도움이 되지 않습니다. 준비금, 처리 중인 결제의 한도, 전달 수수료, 노드가 온라인인지 여부도 결과에 영향을 줍니다. [3]
여러 채널을 거치는 결제는 HTLC로 연결됩니다. HTLC는 Hashed Timelock Contract의 약자입니다. 자금을 받을 권리에 조건을 붙이는 방식으로, 합의한 암호학적 지문에 맞는 동일한 비밀을 공개해야 하며 시간 조건도 적용됩니다. 이 비밀을 preimage라고 합니다. 수취인이 이를 공개하면 마지막 결제금을 받을 수 있고, 중개자도 각자 들어오는 결제금을 받을 수 있습니다. 수취인에 가까울수록 기한이 짧아져 중개자에게 대응할 시간을 남겨 줍니다. 결제가 완료되지 않으면 관련 시간 조건에 따라 자금을 돌려받을 수 있지만, 즉시 가능한 것은 아닙니다. [3]
경로에 필요한 방향의 자금이 부족하거나, 노드가 오프라인이거나, 수수료가 설정한 한도를 넘을 수 있습니다. 채널 정보가 오래되었을 수도 있습니다. 이때 지갑은 다른 경로를 시도하거나, 지원하는 경우 결제를 나눠 보낼 수 있습니다. 따라서 한 번의 실패가 곧 도난이나 비트코인의 소멸을 뜻하지는 않습니다. 그렇다고 보통 결제가 빠르다는 이유만으로 모든 결제 요청이 첫 시도에 즉시 성공한다고 보장할 수도 없습니다. [3]
채널의 최신 상태를 보호하고 상대방이 철회된 상태를 공개하지 않는지 지켜봐야 합니다. watchtower는 이런 시도를 감시하고 제때 대응할 수 있는 서비스로, 이 과정을 도울 수 있습니다. 하지만 모든 백업이나 사용 중인 지갑의 복구 절차를 대신하지는 않습니다. Seed Phrase는 키를 복구하기 위한 단어 목록이지만, 이것만으로 필요한 채널 데이터까지 복구되지 않을 수 있습니다. 따라서 사용하기 전에 백업과 복구 방법, 의존하는 보조 서비스를 이해해야 합니다. [4] [5] [6]
채널을 열고 닫을 때는 Bitcoin 거래를 사용합니다. 일방적으로 닫으면 대기 시간과 수수료가 생기고, 미완료 HTLC를 처리하기 위한 추가 거래가 필요할 수 있습니다. 처리 중인 결제에 묶인 자금은 관련 조건에 따라 해결될 때까지 잠겨 있을 수 있습니다. 실패했다고 즉시 무료로 반환되는 것은 아니며, 평소 결제가 빠르다고 기본 네트워크로 인출하는 속도까지 같은 것은 아닙니다. 그래도 Bitcoin에서 정산할 수 있다는 점이 직접 관리하는 채널을 뒷받침합니다. [4]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 트랜잭션, SegWit, Taproot, 지갑, Transaction Fees. 다음 항목에서도 이 글을 참조합니다 지갑, SegWit, Taproot, 비트코인 주소.