Lightning Network
Lightning Network
본 포스트는 DNext 2nd Crypto Night 강연 내용과 강의 자료를 바탕으로 작성하였다.
Channel
SegWit의 도입으로 블록 크기를 2 ~ 3배 확대시키는 효과를 얻었다. 그러나 거래량이 지속적으로 증가하게 되면 확대 효과를 본 블록 크기를 넘어서는 것은 시간 문제이다. 즉 SegWit은 비트코인 확장성 문제의 근본적인 해결책이 아니다. 블록 크기 증가, SegWit 이외의 해결책은 빈번히 일어나는 거래에 대해서는 블록체인에 기록을 하지 말고 처리하는 것이다. SegWit과 CSV(Check Sequence Verify)1가 블록체인에 거래를 기록하지 않고 거래가 가능하도록 한다. SegWit은 하나의 거래에서는 하나의 거래 ID만 갖도록 하고 CSV는 특정 시간 훙에 블록에 거래가 기록되게 하여 결제 채널을 형성하데 중요한 역할을 하였다.
결제 채널은 거래를 원하는 당사자들이 블록체인을 통하지 않고도 서로에 대한 신뢰로 결제할 수 있는 방법이다. 결체 채널은 빠른 속도와 낮은 수수료로 결제를 전송할 수 있는 장점이 있다. 다중 서명 주소를 생성하고 결제 당사자들이 미리 적립금을 예치하면 채널이 형성된다. 다중 서명 주소란 비트코인 주소의 한 형태로서 M-N 다중 서명 주소에 전송한 비트코인은 지정된 M명 중 N명이 동의해야 사용이 가능하다. 결제 채널에서 2-2 다중 서명 주소의 경우 결제의 당사자인 두 명 모두가 동의해야 예치금을 사용할 수 있다. 예치금을 적립해놓는 거래를 초기(Opening) 거래라고 하고 초기 거래는 블록체인에 기록된다.
2-2 다중 서명 주소를 사용하는 결제 체널로 예를 들어보도록 하겠다. Alice와 Bob이 각각 5BTC의 예치금(총 10BTC)을 2-2 다중 서명 주소에 적립한다. 적립한 예치금을 사용하려면 Alice와 Bob 모두의 서명이 필요하다.
Alice가 Bob에게 1BTC를 송금할 일이 생겼다. 결제 채널이 열려 있는 상황에서 Alice는 Bob에게 1BTC를 보내는 거래를 생성하여 블록에 기록하지 않고 예치금(10BTC)을 사용하여 본인(Alice)에게 4BTC를 전송하는 위탁 거래를 생성한다.
예치금은 다중 서명 주소에 적립되어 있으므로 Alice가 거래를 생성하고 서명하더라도 Bob이 서명하지 않으면 거래가 블록에 기록되지 않는다. 위탁 거래가 Bob에게 전송되는 것뿐이다. Alice는 Bob에게 위탁 거래와 함께 시크릿을 전송한다.
Bob은 Alice에게 신뢰를 주기 위해 다중 서명 주소에 적립된 예치금을 이용하여 본인(Bob)에게 6BTC를 전송하는 위탁 거래를 생성하고 Alice에게 위탁 거래와 함께 시크릿을 전송한다.
양측은 서로 본인의 서명만 추가하면 바로 사용 가능한 동일한 내용의 위탁 거래를 가지게 된다.
결제 채널의 핵심은 상호 동의하에 채널 종료 전까지 서로 교환한 위탁 거래 금액을 사용하지 않는 것이다. 둘 중 하나라도 위탁 거래에 서명하면 다중 서명 주소에 적립된 예치금이 사용되고 결제 채널은 종료된다. 정상적인 결제 채널은 양측이 동의해서 위탁 거래에 서명하고 블록체인에 기록함으로써 종료되는 것이다. 하지만 Alice와 Bob 중 누구라도 약속을 어길 수 있기 때문에 이를 방지하기 위해 시크릿을 함께 보낸다.
시크릿은 원칙적으로 본인만 알고 있는 키값으로 시크릿을 이용하면 서명을 생성할 수 있다. 결제 채널에서는 위탁 거래를 생성할 때마다 서로 키값을 공유한다.
Alice가 생성한 위탁 거래는 두 개의 출력값으로 하나는 Alice의 주소로 출력하고 다른 하나는 다시 다중 서명 주소로 출력한다. 이 다중 주소는 특정 시간, 예를 들면 블록이 1000개 생성되기 후에는 Bob이 남은 금액 6BTC를 사용할 수 있지만 그 전에는 Alice가 남은 금액을 사용할 수 있다.
Bob이 약속을 어기고 1000개 블록이 생성되기 전까지는 서명을 하더라도 남은 예치금(6BTC)를 사용할 수 없다. 반면 Alice는 Bob의 시크릿을 가지고 있기 때문에 그의 서명을 생성해서 남은 예치금을 가져갈 수 있다.
마찬가지로 Alice 또한 Bob이 생성한 위탁 거래에 서명을 하더라도 1000개의 블록에 생성되기 전까지는 남은 금액(4BTC)을 사용할 수 없다.
양측 모두 위탁 거래에 서명을 하지 않았다면 결제 채널은 계속 유지된다. Alice가 Bob에게 1BTC를 전송하는 거래가 끝난 후 Bob이 Alice에게 3BTC를 보내려고 한다. 이때 지난 위탁 거래를 기반으로 새로운 위탁 거래를 생성하지 않고 최초 거래를 기반으로 Bob이 3BTC, Alice가 7BTC를 보유하고 있는 위탁 거래를 각각 발행하고 서로 교환한다. 위탁 거래는 빈번히 교환될 수 있고 그때마다 이전 위탁 거래의 시크릿을 서로 교환한다. 이전 거래의 시크릿을 교환하는 이유는 위탁 거래가 교체된 상황에서 한쪽이 거래를 무시한다면 언제든 이전 위탁 거래에서 예치금을 가져올 수 있도록 하기 위해서이다.
양측이 모든 거래가 종료되었다면 상호 동의하에 최종 위탁 거래에 해당하는 만큼 예치금을 나눠 갖는 새로운 거래를 작성하여 블록체인에 전파한다. 결제 채널이 성공적으로 열렸다가 닫혔으면 최초(Opening) 거래와 마감(Closing) 거래 두 개만 블록체인에 기록한다. 결제 채널은 거래가 빈번히 진행되는 상황에서만 사용해야 이저미 있다. 예를 들면 거래가 100번 진행되는 상황이라면 최초 거래와 마감 거래 두 개만 블록체인에 기록하므로 두 개 거래에 해당하는 수수료만 지불하면 된다. 2017년 12월 수수료를 기준으로 하면 결제 채널을 사용하지 않고 거래를 진행하면 수수료가 $3700($37 * 100)이지만 결제 채널을 이용하면 수수료가 $74($37 * 2)이다. 그러나 거래가 한 번만 진행되는데 결제 채널을 사용한다면 오히려 비효율적이다. 결제 채널을 사용하지 않고 거래를 한 번 진행하면 수수료가 $37이지만 결제 채널을 사용하면 $74이기 때문이다.
앞에서 언급했듯이 SegWit과 CSV는 결제 채널을 형성하는데 중요한 역할을 하였다. SegWit은 위탁 거래가 빈번히 교체되는 위탁 거래를 검증하는 상황에서 하나의 거래에 대해 하나의 유일한 거래 ID만을 존재하도록 함으로써 결제 채널의 신뢰성을 부여하였다. CSV는 특정 시간을 측정하여, 예를 들면 블록이 1000개 생성되었는지를 검사하여 1000개의 블록이 생성될 때까지 결제 채널이 열려 있음을 표현해준다.
Lightning Network
라이트닝 네트워크는 Alice와 Carol이 거래를 하려고 할 때 각각 Alice ↔ Bob, Bob ↔ Carol 채널만 열려 있어도 Alice ↔ Carol 채널이 연결된 것과 같은 효과를 볼 수 있다는 개념이다. 채널이 연결된 효과란 Alice이 Carol에게 돈을 전송하려고 할 때 Alice가 Bob에게, Bob이 Carol에게 각각 열린 결제 채널을 통해 전송하는 방식을 의미이다. 금액이 각각의 채널에서 순차적으로 전송되기 위해서 HTLC(Hash Time-Lock Contracts)를 사용한다. HTLC는 CSV와 유사한 CLTV(Check Lock Time Verify) 명령어로 구현된다.
결제 채널을 열 수 있는 권한에 제한은 없지만 결제 채널을 열 때 적립한 예치금 만큼만 직접 거래 혹은 채널 연결을 통한 중개 거래가 가능하다. 많은 노드륻이 결제 채널을 열면 많은 사용자들이 라이트닝 네트워크에 의해 낮은 수수료와 빠른 전송의 효과를 볼 수 있다.
그러나 라이트닝 네트워크가 비트코인의 가치를 훼손한다는 우려가 존재한다. 비트코인이 가치를 갖는 이유는 탈중앙화라는 철학 때문이다. 라이트닝 네트워크는 중앙화로 회귀시킬 수 있다. 결제 채널은 누구나 열 수 있지만 많은 거래를 중개하기 위해서는 결국 많은 예치금을 적립할 수 있는 많은 자본금이 필요하다. 큰 자본금을 쥐고 있는, 큰 유동성을 보유한 노드(허브)에게로 거래가 몰리게 될 것이다. 허브는 원활한 서비스를 위해 서버를 운영하게 될 것이고 점점 많은 거래가 몰리게 되면 사용자로부터 수수료를 높이게 될 것이다. 허브는 마치 은행과 같은 역할을 하게 될 것이다.
그리고 라이트닝 네트워크는 블록체인 코어팀이 아닌 Lightning, Blockstream, Blockchain 세 회사에서 개발을 진행하고 있다. 공공재로서의 성격을 띄어야 할 비트코인의 프로토콜이 사기업에서 개발을 진행하는 점도 우려스러운 부분이다. 라이트닝 네트워크 뿐만 아니라 비트코인 코어 개발자들의 다수가 Blockstream 소속이라는 점을 보면 비트코인이 초창기 사토시 나카모토가 지향하던 철학에 부합하는 방향으로 발전하고 있는지를 고민해볼 시점이다.
-
CSV는 BIP 112에서 제안되어 버전 0.12.1 클라이언트부터 도입된 명령어이다. 이 명령어는 특정 시간 후에 블록에 거래가 기록되게 한다. ↩