재고하는 라이트닝 네트워크: 비트코인 확장 꿈을 실현하기 위한 전력 집중
원문 제목:《Rethinking Lightning》
원저자:benthecarman
편집:BTCStudy
지난 몇 달 동안, 나는 비트코인 커뮤니티가 라이트닝 네트워크에 점점 더 지쳐가고 있다는 느낌을 받았다. 솔직히 말해서, 이는 전적으로 타당하다. 2017년, 우리가 받은 약속은 "이것이 분산된 결제 네트워크가 되어, 항상 저렴한 결제를 제공하고, 누구나 자신의 노드를 운영할 수 있을 것" 이었다. 오늘날, 라이트닝 네트워크의 일반 사용자들은 실제로 라이트닝 네트워크를 사용하지 않고, 단지 호스팅 지갑을 사용하고 있다; 그리고 그 중 소수의 라이트닝 노드를 운영하는 사용자들은 종종 이것이 힘든 작업이라는 것을 발견한다. 우리는 Mutiny Wallet의 동료들과 함께, 경량의 자가 보관 지갑을 개발하려고 시도하며 이 모든 것을 변화시키고자 했고, 나는 우리가 이 꿈을 잘 실현했다고 생각한다. 이 글에서는 이러한 문제를 분석하고, 라이트닝 네트워크를 이해하는 새로운 관점을 제시하며, 이것이 비트코인의 미래에 무엇을 의미하는지 논의할 것이다.
라이트닝 네트워크의 사용자 경험 도전 중 첫 번째이자 가장 어려운 문제는 채널 유동성이다. (번역자 주: 이는 사용자가 잔액뿐만 아니라 결제 한도와 수취 한도를 가져야 함을 의미한다.) 오늘날, 라이트닝 네트워크 외에 다른 결제 시스템에서는 이러한 문제가 존재하지 않기 때문에, 이는 많은 사용자들에게 혼란을 초래한다. 더 나쁜 것은, 이 문제를 해결할 수 있는 실용적인 요령이 없다는 것이다. Muun Wallet은 "온체인 지갑 + 잠수함 스왑" 모델을 사용하여 이 채널 유동성 문제를 우회했으며, 이 솔루션은 평소에는 매우 잘 작동하지만, 수수료가 상승하는 날이 오면, 모든 사용자는 이것이 진정한 라이트닝 지갑이 아니라는 것을 깨닫게 된다. (번역자 주: 이 모델에서는 사용자가 누구와도 채널을 생성하지 않고, 온체인 자금과 오프체인 자금의 교환을 통해 라이트닝 결제를 실현한다; 사용자가 라이트닝 결제를 시작할 때마다 온체인 거래를 해야 하므로, 사용자의 결제 비용은 네트워크 수수료율에 연동되며, 요금이 상승할 때 드러난다.) 더 나은 해결책은 JIT 유동성이며, 이는 우리가 Mutiny에서 하는 방식이거나 채널 연결 기술(피닉스가 이미 구현함)이다. (번역자 주: "JIT"는 "Just in time"의 약자로, "즉시 확보"를 의미하며, 대체로 수취 한도를 초과하는 결제가 도착할 때 새로운 채널이 생성되어 사용자가 충분한 수취 한도를 확보하게 된다.) 이러한 솔루션은 부분적으로 유동성 문제를 추상화하지만, 여전히 부족하다. 우리는 종종 고객 지원 채널에서 사용자가 왜 일부 결제에는 수수료가 있고 다른 결제에는 없는지 질문하는 것을 보게 된다. 사실, 채널 유동성은 대부분의 최종 사용자에게는 유용한 사용자 경험이 아니다.
라이트닝 네트워크의 또 다른 주요 문제는 오프라인 수취 문제이다. 본질적으로, 당신은 온라인 상태여야 하며, 개인 키를 사용하여 결제를 서명하고 청구해야 한다. 기술적으로는, 이 문제를 해결할 수 있는 지속적인 발전의 규격 제안이 있지만(본질적으로 사용자가 언제 온라인 상태에서 수취해야 하는지를 알리는 알림 시스템을 만드는 것), 여전히 근본적인 문제를 해결하지 못하고 한계가 있다. 이 문제를 해결하기 위한 몇 가지 시도가 있었으며, 가장 유명한 것은 Zeus Pay의 라이트닝 주소이다. 본질적으로, 이는 막힌 결제를 생성한 다음 수취인이 온라인 상태가 되어 결제를 수취하기를 기다리는 것이며, 이는 사람들에게 무수한 문제를 야기하고, 심지어 우리 Mutiny는 사용자에게 그들에게 결제하는 것을 금지해야 했다. 이는 많은 강제 채널 종료 사건을 초래했기 때문이다. 이는 난제이다. 왜냐하면 나머지 모든 비트코인/암호화폐 생태계의 작업 방식은 사용자가 주소를 복사-붙여넣기만 하면 언제든지 그 주소로 결제할 수 있으며, 친구에게 지갑을 열어야 한다고 상기시킬 경고가 없기 때문이다. 라이트닝 주소와 같은 것은 처음부터 네트워크 서버가 필요하기 때문에 상황을 더욱 악화시킨다.
나는 채널 유동성 문제와 오프라인 수취 문제는 자가 보관 라이트닝 지갑이 대중화되지 못하는 두 가지 가장 두드러진 이유라고 생각한다. 대부분의 사용자는 이 두 가지 문제 중 하나를 듣게 되면 "그냥 포기하자"고 생각하고, 훨씬 더 쉬운 호스팅 지갑을 사용하게 된다. 만약 우리가 이 두 가지 문제만 있다면, 나는 자가 보관 라이트닝 지갑이 여전히 좋다고 생각하며, 아마도 사람들이 라이트닝 네트워크를 사용하는 주류 방식이 되지는 않겠지만, 우리는 사용자 경험을 충분히 좋게 만들어 많은 사람들이 자주권 방식으로 라이트닝 네트워크를 사용할 수 있게 할 수 있다. 그러나 표면 아래에는 더 많은 문제가 있다.
채널 유동성은 문제이지만, 또한 기만적이다. 당신이 10만 사토시의 수취 한도를 가지고 있을 때, 당신은 최대 10만 사토시의 결제를 받을 수 있다고 생각하지만, 그렇지 않다. 당신은 종종 어떤 결제도 받지 못한다. 이는 온체인 수수료 때문이다. 라이트닝 채널에서 결제가 발생할 때마다, 당신은 새로운 사전 서명 거래를 생성해야 하며, 이 거래는 처리 중인(아직 완료되지 않은) 각 결제에 대해 출력을 배치해야 하며, 이러한 출력은 거래의 크기에 영향을 미치므로 수수료를 제공해야 한다; 네트워크 수수료율이 높을수록 당신의 유동성은 줄어든다(수수료에 할당된다). 우리가 Mutiny에서 강제 채널 종료 문제의 대부분을 해결했을 때, 이 문제는 가장 많은 고객 지원 요청이 되었다. 당신이 모든 것을 올바르게 수행하고, 유동성을 이해하며, 결제에 충분한 유동성을 준비했더라도, 결제가 여전히 실패할 수 있다. 왜냐하면 온체인 수수료가 너무 높기 때문이다. 이는 항상 실망스럽다. 왜냐하면 라이트닝 네트워크의 모든 의미는 당신이 온체인 수수료를 지불할 필요가 없다는 것이 아닌가? 기본적으로 현재 모든 라이트닝 채널은 온체인 수수료율이 충분히 높아지면 쓸모없는 것이 될 수 있다. 왜냐하면 한 번의 결제를 위해 너무 많은 준비금이 필요하기 때문이다. 분명히 이는 과장된 표현이지만, 내가 전달하고자 하는 바는 분명하다: 온체인 수수료는 채널을 열고 닫는 비용에만 영향을 미치는 것이 아니라, 당신이 부지런한 노드 운영자라 하더라도, 수수료율이 낮을 때만 채널을 열어도 충분하지 않다. 당신의 채널은 충분히 커야 하며, 미래의 어느 시점에서, 온체인 수수료율의 어떤 수준에서도, 당신의 모든 HTLC 결제에 대해 온체인 수수료를 지불할 수 있을 만큼 커야 한다. 온체인 수수료가 계속 상승함에 따라, 이 문제는 더욱 심각해질 것이다.
이 보증금 문제를 해결하기 위해 제안된 솔루션은 "앵커 채널", "트랜잭션 패키지 포워딩", "일회성 앵커" 등이다. 이러한 아이디어는 가치가 있으며, 괜찮지만, 어느 정도는 문제를 덮어두는 것에 불과하다. 이들은 실제로 수수료 보증금을 매우 낮게, 심지어 제로로 만들 수 있지만, 그 대가는 당신이 강제 채널 종료 작업에 대해 수수료를 추가하기 위해 사용할 수 있는 온체인 자금이 필요하다는 것이다. 그래야 거래가 블록 확인을 받을 수 있다. (번역자 주: 여기서 해결책의 핵심은 "CPFP"로, 높은 요금의 하위 거래를 사용하여 부모 거래의 매력을 높이는 것이다; 따라서 부모 거래, 여기서는 채널의 약속 거래는 수수료를 준비할 필요가 없으며, 자금 점유 문제도 없다. 그러나 저자가 언급한 대로 대가가 있다.) 이는 다시 한 번 자가 보관 지갑 사용자 경험을 깨뜨린다. 왜냐하면 그들은 라이트닝 네트워크 자금 외에 온체인 자금을 보유해야 하며, 그래야 수수료를 추가할 수 있기 때문이다. 필요한 온체인 자금의 규모는 여전히 온체인 수수료율에 따라 동적으로 결정된다. 이 문제를 해결하는 방법에는 다른 사람들이 수수료를 추가하도록 도와주는 것이 포함되지만, 이는 신뢰할 수 있는 제3자를 도입하게 되므로 이상적이지 않다.
우리가 라이트닝 노드가 해야 할 모든 균형을 나열하고, 특히 높은 수수료 환경이 그것에 미치는 영향을 고려할 때, 나는 불가피하게 생각하게 된다. 우리는 도대체 무엇을 하고 있는가? 우리가 가고 있는 길이 잘못된 것인가? 라이트닝 네트워크는 여전히 처음부터 끝까지 매우 강력한 결제 프로토콜이지만, 그 한계는 그것이 확장성을 필요로 한다는 것이다. 기본적으로 내가 나열한 모든 문제는 당신이 큰 라이트닝 노드를 가질 때 사라진다------당신은 많은 유동성과 높은 가동 시간을 가지고 있다. 우리는 이 모든 것을 최적화해야 한다. 시장은 우리에게 교육해왔다. 수년 동안 90% 이상의 라이트닝 사용자가 호스팅 지갑을 사용하고 있다. 왜냐하면 그것이 확장성에서 더 잘 작동하기 때문이다. 그렇다면 우리는 호스팅 지갑을 사용하지 않고 대규모 라이트닝 노드를 어떻게 사용할 수 있을까?
안타깝게도, 현재의 대규모 라이트닝 네트워크 인프라와 자가 보관 솔루션을 결합하는 것은 여전히 역부족이다. 지금까지 이 점을 달성할 수 있는 유일한 진정한 방법은 우리가 앞서 언급한 Muun Wallet이지만, 이는 문제를 진정으로 해결하지는 않는다. 왜냐하면 모든 것이 단지 온체인 거래일 뿐이기 때문이다. 그러나 Muun은 몇 가지를 잘했다. 라이트닝 네트워크에 대한 더 간단한 프로토콜 인터페이스 아키텍처를 설계하는 것은 천재적인 아이디어이며, 우리에게 두 세계의 가장 좋은 것을 제공한다. 우리는 빠르고 저렴한 결제를 시작할 수 있으며, 그 큰 남자는 라이트닝 노드를 운영하여 수수료를 받을 수 있다. 방금 시작된 Aqua Wallet은 본질적으로 Muun Wallet과 같지만, Liquid에서 운영되고 있으며, 이는 좋은 임시 방편이지만 근본적인 문제를 해결하지는 않는다.
우리가 계속 나아가기 전에, 우리는 한 걸음 물러서서 우리가 해결하려고 하는 문제를 분석해야 한다. 비트코인에는 근본적인 확장성 제한이 있다: 블록 크기이다. 만약 우리가 무한한 블록 크기를 가질 수 있다면, 우리는 어떤 Layer 2 솔루션도 필요하지 않을 것이다. 왜냐하면 우리는 단지 온체인 결제만 하면 되기 때문이다. 그러나 우리는 현실 세계에 살고 있으며, 1MB의 블록 크기 제한이 있어, 우리가 온체인에서 확인할 수 있는 거래 수를 제한한다. 라이트닝 네트워크는 비트코인에 대한 엄청난 향상이다. 왜냐하면 우리는 모든 거래를 온체인에 게시할 필요가 없고, 단지 채널을 열면 거의 무한한 수의 결제를 시작할 수 있기 때문이다. 그렇다면, 라이트닝 네트워크는 왜 결정적인 해결책이 되지 못하는가? 왜냐하면 라이트닝 네트워크는 결제를 오프체인으로 이전할 수 있게 해주지만, 모든 권리를 오프체인으로 이전할 수 있게 해주지 않기 때문이다. 본질적으로, 라이트닝 네트워크는 결국 하나의 UTXO가 특정 사용자에게 귀속된다는 것에 여전히 의존하고 있다. 따라서 온체인에서의 모든 거래가 특정 라이트닝 채널에 귀속되더라도, 우리는 여전히 한계에 부딪히게 된다------자신의 채널을 가질 수 있는 사람의 수는 결국 제한적이다. 우리가 필요한 것은 UTXO의 소유권을 확장하고 라이트닝 네트워크와 상호작용할 수 있는 또 다른 Layer 2이다. 그래야 우리는 결제 용량을 확장하는 동시에 소유권 용량을 확장할 수 있는 방법을 가질 수 있다.
그렇다면 우리는 소유권 용량을 어떻게 확장할 수 있을까? 간단히 말해, 오늘날의 답은 호스팅(custody)이다. 순수한 호스팅 제공자(예: Wallet of Satoshi)든, 회색 지대에 있는 것(예: fedimint와 Liquid)든, 오늘날 우리가 사용할 수 있는 유일한 방법은 호스팅 또는 연합 브릿지이다. 비트코인에서, 하나의 UTXO의 소유권을 여러 당사자에게 위임할 수 있는 유일한 방법은 다중 서명이다. 그러나 이는 사용자가 상호작용할 때마다 모든 사용자가 온라인 상태여야 하며, 이 길을 충분히 멀리 가면 결국 라이트닝 네트워크를 다시 발명하게 된다.
그렇다면 우리는 실패할 운명인가? 자주권 방식으로 비트코인을 확장할 방법이 없는가? 다행히도, 답은 부정적이다. 그러나 우리는 몇 가지 소프트 포크가 필요하다. 제한 조항(covenant)은 소유권 용량을 확장하는 방법이다. 많은 제한 조항 제안이 있지만, 궁극적으로 그들이 제안하는 것은 당신이 자산이 어디에 사용될지, 어떻게 사용될지를 제한할 수 있는 비트코인 주소를 가질 수 있는 방법을 추가하는 것이다. 이는 이상하게 보일 수 있지만, 오늘날의 비트코인에는 이미 이러한 것이 존재한다. OP_CTLV(CheckLockTimeVerify)는 2016년의 소프트 포크에서 활성화되었으며, 특정 locktime 값을 가진 거래만을 사용하여 비트코인 주소의 자금을 사용할 수 있도록 하여, 당신이 UTXO를 사용할 수 있는 시간을 제어할 수 있게 해준다. 현재의 제한 조항 제안은 당신이 UTXO를 어디에 사용할 수 있는지를 제어할 수 있게 해준다. 이 간단한 요소가 있으면, 우리는 소유권 용량을 확장할 수 있는 다양한 프로토콜을 개발할 수 있다.
그러나 미래는 어둡지 않다. 제한 조항이 없더라도 우리는 비트코인을 확장할 수 있다. 다만 이상적인 방식은 아니다. Mutiny에서는 지갑 내에서 fedimint 구현을 전력으로 추진하고 있으며, 개인적으로(그리고 우리 팀의 다른 사람들도) 이는 현재 비트코인의 최선의 확장 솔루션이라고 생각한다. Fedimint는 우리가 한 그룹과 동적으로 소유권을 공유할 수 있는 능력을 제공하며, 라이트닝 네트워크와 상호작용할 수 있는 게이트웨이를 통해 이를 가능하게 한다. 이는 현재 기술 하에서 비트코인 확장 꿈의 정점이며, 우리는 이를 현실로 만들기 위해 최선을 다할 것이다.