저자: 로렌조
출처: https://www.voltage.cloud/blog/how-async-payments-on-lightning-network-work
원래 2023년 10월에 출판되었습니다. BOLT12 사양은 2024년 9월에 BOLT에 병합되었습니다.
소개
라이트닝 네트워크는 비트코인의 거래 처리량을 확장하는 솔루션이 되고자 합니다. 하지만 라이트닝 네트워크의 세부 사항을 깊이 파고들면서 여전히 개선이 필요한 부분들을 발견하게 되었습니다. 그중에서도 주목할 만한 부분은 "비동기 결제"라는 개념입니다. 이 기능이 구현된다면 결제 프로세스와 사용자 경험이 크게 향상될 수 있습니다.
기존의 온체인 비트코인 결제는 비동기 방식 덕분에 매우 간단합니다. 예를 들어 설명해 보겠습니다. 앨리스가 밥에게 기타 레슨 비용을 지불하려고 한다고 가정해 보겠습니다. 앨리스는 밥의 소셜 미디어 프로필을 방문하여 프로필에서 비트코인 주소를 확인합니다. 밥에게 송금하려면 앨리스는 이 주소를 복사하여 비트코인 지갑의 수신자 필드에 붙여넣고 "보내기"를 클릭합니다. 이 거래는 대기열에 추가되고 비트코인 블록체인에서 확인됩니다. 밥이 지갑을 열면 앨리스가 보낸 추가 송금 내역이 표시됩니다.
하지만 앨리스가 라이트닝 네트워크를 통해 밥에게 송금하려는 경우, 사용자 경험은 달라집니다. 송금인과 수취인 모두 온라인 상태여야 하며 정보를 교환해야 합니다.
절대적으로 완벽하다고는 할 수 없지만, 이 차이점은 Lightning Network에서 동기식 결제와 비동기식 결제를 설명하는 기초를 마련해줍니다.
라이트닝 네트워크 결제 개요
비동기 결제의 개념을 이해하려면 먼저 Lightning Network에서 결제가 어떻게 구현되는지 이해하는 것이 좋습니다.
라이트닝 네트워크에서 앨리스가 밥에게 결제를 보내려면 먼저 밥에게 송장을 요청해야 합니다. 즉, 밥은 라이트닝 지갑을 직접 열고 앨리스의 결제에 대한 송장을 생성해야 합니다. 기존 비트코인 주소와 달리 라이트닝 네트워크 송장은 일회용입니다. 같은 송장을 여러 번 결제하면 송금자가 자금을 잃을 수 있습니다.
(역자 주: 비트코인 주소는 재사용이 가능하지만, 주소 재사용은 주소 소유자의 개인정보를 침해하는 나쁜 습관입니다. 송장을 이중으로 지불하면 지불이 완료된 후 지불의 보안을 보장하는 해시 프리이미지가 노출되어 수신자가 아닌 중개 노드가 두 번째 지불을 수령하다 수 있으므로 발신자에게 리스크 초래합니다. 이러한 이유로 송장을 재사용하는 것은 수신자에게도 안전하지 않습니다.)
밥의 송장을 받은 앨리스는 자신의 라이트닝 지갑을 사용하여 송장 정보를 기반으로 결제를 보냅니다. 이 과정에서 앨리스의 결제는 일련의 라이트닝 채널을 거쳐 밥의 노드(라이트닝 지갑으로 제어됨)에 도달합니다. 결제를 받으면 밥의 노드는 영수증을 보냅니다. 이 영수증은 각 중간 노드가 수수료를 받았는지 확인하고 앨리스에게 결제가 성공적으로 완료되었음을 보장합니다. 결제가 도착했을 때 밥의 노드가 오프라인 상태(영수증 전송 실패)이면 결제는 완료되지 않고 보류 상태로 남습니다. 라이트닝 네트워크 프로토콜은 자금 손실을 방지하지만, 특히 모바일 기기에서 지속적인 온라인 상태를 유지하기 어렵다는 점에서 사용자 경험 측면에서 어려움을 야기합니다.
요약하자면, Lightning Network 결제는 두 가지 동기성 장벽에 직면합니다.
- 수신자에게 송장을 생성하도록 초대해야 합니다.
- 지불인이 지불을 보낼 때 수취인은 온라인 상태여야 합니다.
비동기 결제 처리
비동기 결제의 효과
라이트닝 네트워크 내에서 비동기 결제를 구현하면 수신자가 오프라인 상태일 때도 결제가 가능합니다. 중개 노드는 결제를 안전하게 보관하고 수신자가 네트워크에 다시 연결되어 결제를 받을 수 있을 때만 결제를 전달합니다.
간단한 방법
언뜻 보기에 라이트닝 결제를 비동기 방식으로 처리하는 것은 쉬워 보입니다. 송장 교환 문제는 밥의 노드가 미리 여러 송장을 생성하여 제3자 서버에 저장한 다음, 요청 시 서버가 송장을 전달하도록 함으로써 해결할 수 있습니다. 결제 확인 문제는 결제 전달 경로의 마지막 노드가 밥의 노드가 온라인 상태가 될 때까지 결제를 일시적으로 보류하도록 함으로써 해결할 수 있습니다.
그러나 이러한 접근 방식에는 수많은 문제가 있습니다. 가장 명백한 문제는 신뢰가 필요 없도록 설계된 결제 시스템에 신뢰가 도입된다는 것입니다. 수취인은 송장의 "보관자"가 정직한 서비스를 제공할 것이라고 믿어야 합니다. 또 다른 문제는 송장이 만료될 수 있다는 것입니다. 마지막으로, 결제가 공중에서 중단되기 때문에 결제 전달 경로에 있는 모든 노드는 밥이 온라인으로 돌아오거나 송장이 만료될 때까지 유동성의 일부를 잠가야 합니다. 이는 전달 노드가 유동성을 효율적으로 관리해야 하는 상황에서, 불확실한 기간 동안 유동성을 잠그는 것은 비효율적이므로 부정적인 결과입니다.
우리는 더 잘할 수 있을까?
2021년, Matt Corallo는 비동기 결제를 개선할 수 있는 절충안을 제안했습니다. 이를 위해서는 송신자와 수신자 모두 라이트닝 서비스 제공자(LSP)를 사용하는 " LNURL "을 사용해야 합니다. 그는 LNURL을 사용하여 비동기 방식으로 송장을 생성하는 방안을 제안했습니다. 이 송장에는 수신자가 LSP에 연결되어 있지만 현재 오프라인 상태임을 송신자에게 알리는 태그가 포함될 수 있습니다. 그러면 송신자는 긴 시간 제한을 가진 결제 지시를 LSP에 전송하여 특정 메시지를 수신할 때까지 결제를 보류해 달라고 요청합니다.
결제를 받는 LSP는 결제 금액을 즉시 전달하지 않고, 송금인의 자금만 미완료 결제를 위해 "잠겨" 둡니다. 송금인은 수취인의 LSP에게 수취인이 다시 온라인 상태가 되면 자신의 LSP로 메시지를 보내도록 지시합니다. 그러면 송금인은 안전하게 로그오프할 수 있습니다. 수취인이 다시 온라인 상태가 되면, LSP는 지불인의 LSP로 메시지를 보내 결제 금액 전달을 시작합니다.
이 전략은 언제든지 제3자 수탁기관의 필요성을 제거합니다. 즉, 자금을 횡령할 수 없으며, 기술적으로 LSP는 규제 목적으로 수탁기관으로 정의될 수 없습니다. 또한, BOLT 12 사양이 완성되면 LNURL을 대체할 수 있습니다. 이를 통해 비동기 결제가 외부 서버에 덜 의존하게 됩니다(LNURL은 외부 서버에 의존합니다).
LNURL 방식의 문제점은 사용자가 여전히 제3자를 신뢰하여 송장을 제공해야 한다는 것입니다. 이러한 서비스 제공업체가 송장을 재사용하여 LSP가 자금을 횡령하지 않을 것이라는 보장이 없습니다. 이 문제를 개선하는 한 가지 방법은 PTLC를 사용하는 것입니다. PTLC를 사용하려면 송금인과 LNURL 서비스 제공업체가 공모하여 자금을 횡령해야 하지만, 송금인이 그렇게 할 이유는 없습니다.
신뢰 관계에 대한 완벽한 해결책은 없지만, 위의 간단한 접근법보다는 나은 접근법들이 있습니다. Matt의 제안은 LNURL 제공자를 신뢰하는 것에 기반하며, 간단한 접근법과 마찬가지로 이미 결제 기한이 지난 상태입니다.
결론적으로
비트코인 결제를 더 빠르고 효율적으로 만들기 위한 경쟁에서 라이트닝 네트워크는 선두 주자로 부상했습니다. 하지만 그 잠재력에도 불구하고, 라이트닝 결제의 동기식 특성은 현재 사용자 경험의 격차를 부각시키고 있습니다.
기존 비트코인 결제는 보내는 사람과 받는 사람이 동시에 온라인에 접속할 필요가 없어 간편하고 유연합니다. 반면, 라이트닝 결제는 양측 모두 동시에 온라인에 접속해야 하므로 사용에 잠재적인 장벽이 됩니다.
제3자 송장 보관 기관이나 노드 지연 전달 전략에 의존하는 것과 같은 조잡한 솔루션은 무신뢰성을 추구하는 시스템에 신뢰를 부여합니다. LNURL과 라이트닝 네트워크 제공업체를 활용하는 Matt Corallo의 2021년 제안은 유망한 기반을 제공합니다. 이는 유동성 고정을 최소화하고, 제3자 보관 기관을 없애며, 곧 출시될 BOLT12 사양과의 호환성을 보장합니다. 그러나 LNURL과 관련된 신뢰 문제는 여전히 우려 사항입니다. PTLC와 같은 혁신은 보안을 강화할 것입니다.
라이트닝 네트워크에서 비동기 결제를 구현하는 모험이 시작되었으며, 다양한 제안된 솔루션을 통해 원활하고 신뢰할 수 있는 결제 환경이 더욱 가까워지고 있습니다.
(위에)