Lightning Network란 무엇인가? - 라이트닝 네트워크 (2부)
안녕하세요, 암호화폐가 가져올 미래를 꿈꾸는 @cryptodreamers입니다.
지난 Lightning Network 1부에 이어 라이트닝 네트워크의 작동 방식에 대해 알아보려고 합니다.
이전의 글을 참고하실 분은 아래의 링크를 활용해주세요. (1부 : 라이트닝 네트워크란 무엇인가?)
<Ultimate technology, Lightning network>
2부에서 주로 다룰 내용은 라이트닝 네트워크 레이어상에서 발생하는 구체적인 거래의 과정입니다.
특히 일대일의 거래당사자들이 하나의 채널에서 거래를 하는 과정에 대한 것들입니다.
좀 더 쉽게 이해하기 위해, Bob과 Bob이 매일 아침에 들리는 커피숍이 있다고 가정해봅시다.
Bob은 매일 아침 커피숍에서 커피를 마십니다. Bob은 커피숍에 결제를 하기 위해 비트코인을 사용합니다.
라이트닝 네트워크가 있기 전에는 비트코인으로 커피를 마실 수 없었습니다. 왜냐하면 지불하기 위해서는 너무 많은 수수료가 발생하고, 결제하는데 시간도 많이 걸렸기 때문입니다. 커피 한잔을 받기 위해 마냥 기다릴 수는 없었죠.
하지만 이제 속전속결로 비트코인 결제를 할 수 있을 것 같습니다. Bob이 라이트닝 네트워크를 통해 거래를 한다면 어떻게 될까요?
가장 먼저 Bob은 커피숍과 함께 일정금액을 Funding Transaction을 생성하여, 공용의 저금통에 서로의 비트코인을 넣습니다.
(보통 이런 상거래에서는 커피숍은 재화를 제공하고 그 댓가로 Bob에게 비트코인을 받기만 하면 되기 때문에, 커피숍은 0BTC를 넣으면 됩니다.)
공용의 저금통에 돈을 예치하는 이 최초의 거래는 비트코인의 블록체인에 기록되는 거래이며, 그 결과로 Bob과 커피숍이 함께 들어가있는 Payment Channel을 만들 수 있습니다. 라이트닝 네트워크로 1)거래를 시작하기 위해서 최초로 채널을 열거나, 2)거래를 종료하고 채널을 닫는 경우에 한해서 비트코인의 블록체인상에 기록을 남깁니다.
( * 1)과 2)의 시작과 마무리 거래이외에 수시로 발생하는 micro payment과정은 비트코인 블록체인에 기록되지 않습니다.)
<Bob과 커피숍이 개입된 저금통은 두 당사자의 합의가 있어야만 열 수 있습니다.>
그럼 실제로 거래는 어떻게 이루어질까요?
예를 들어 Bob이 커피 한잔을 구매했고 커피숍에 비트코인을 지불해야한다면 거래내역을 장부에 기록합니다. 이 때 발생하는 장부는 총 2장입니다. Bob만 서명한 장부 1장과, 커피숍이 서명한 장부 1장 총 2장이 존재합니다.
왜 장부가 2장이 필요할까요?
거래 당사자의 한 쪽만 서명한 반쪽자리 장부가 2장이 존재하는 이유는 거래를 식별하기 위해서 존재합니다.
예를들어, 오늘 9시에 Bob은 1BTC를 갖고 있었지만, 아침에 커피 한 잔을 구매하고나서 0.1BTC을 커피숍에 지불했다고 해봅시다. Bob은 오전 9시 이후의 최신화된 장부에 0.9BTC라는 잔고가 남아있을 것입니다. 그렇기 때문에 Bob은 오전 9시 이전의 장부에 자신의 잔고가 1BTC로 남아있는 순간이 자신에게 더 유리한 시점이죠. 하지만 커피숍의 입장에서는 Bob과 반대로 거래가 발생한 오전 9시 이후의 최신화된 장부를 당연히 더 중요하게 생각하겠지요. (오전 9시 이후에 0.1BTC를 받은 상황이기 때문에)
Bob의 입장에서는 9시 이전에, 1BTC로 잔고가 적혀있던 자신의 장부가 더 유리하다는 것을 알고 있습니다. 또, 의도적으로 Bob이 9시 이전의 거래장부를 블록체인에 공개해버린다면, 0.1BTC만큼의 재화를 제공받고서, 금액을 지불하지 않을 수도 있지 않을까 불순한 생각을 해볼지도 모릅니다.
Bob이 만약 이런 불순한 의도를 갖고 의도적으로 자신에게 유리한 장부를 블록체인에 Broadcasting을 한다면, 이때 발생하는 이중 사용 문제를 예방하기 위해, 라이트닝 네트워크에서는
- 항상 최신의 거래가 어떤 것인지 판단할 수 있어야 하고, 예전의 거래를 무효화할 수 있어야한다.
- 불순한 의도를 갖고 장부를 broad casting 하는 경우 페널티를 줘야한다.
라이트닝 네트워크에서는
위의 1)번의 문제를 해결하기 위해서는 Timelock기능을 활용하게 됩니다. 유예기간을 두어 잘못된 거래는 취소할 수 있도록 하는 기능입니다. 즉, 비트코인의 블록체인처럼 한 번 기록이 되면 바로 블록에 기입되어 수정을 할 수 없는 것이 아니라, 수정을 할 수 있도록 만들어 놓았기 때문에 잘못된 거래가 Broadcasting된다면 취소할 수 있도록 만든 것입니다.
이어서 2)번의 문제를 해결하기 위해서, 불순한 의도를 갖고 거래를 시도하는 경우, 예치된 금액을 전액 몰수하는 기능이 있습니다.
그러나 어느 장부가 잘못된 장부인지, 누가 올렸는지 어떻게 알 수 있을까요? 바로 그 문제를 해결하기 위해서 장부가 2개가 존재합니다. 각각의 거래당사자는 상대방이 서명을 해준 장부를 Broadcasting할 수 있습니다. 그렇기 때문에 커피숍의 서명이 되어있는 오전 9시 이전의 장부가 블록체인에 Broadcasting되어 정산을 시도했다면 Bob이 불순한 행동을 취했다는 것을 역으로 알 수 있게 됩니다.
이 경우 Bob이 최초 Funding Transaction을 위해 예치했던 1BTC을 몰수함으로써, 시스템적으로 신뢰할 수 있는 거래만 라이트닝 네트워크에서 가능하도록 만들 수 있습니다. Bob의 도덕성에 의존할 필요가 없어지는 것이죠.
하지만 Bob과 커피숍이 아무런 문제가 없이 수시로 거래를 진행했고, 아무런 문제가 없다면 거래를 청산(Settlement)를 할 수 있어야 겠죠.
많은 Micro payment가 이루어진 이후에, 거래를 종료하기 위해서는 장부를 서로 확인하고, 아무 문제가 없다면
블록체인에 통보하여, 최종적인 청산을 하면 됩니다.
자, 지금까지 단순 채널을 통한 Micro payment를 가능하게 해주는 라이트닝 네트워크의 작동원리에 대해 살펴보았습니다. 간단하게 요약 정리해본다면 다음과 같습니다.
- 라이트닝 네트워크는 당사자간의 Payment Channel을 만들어 금액을 예치하고, 수시로 즉각적인 거래를 할 수 있게 만든다.
- 거래가 이루어진 결과에 대한 장부는 서로 서명을 하여 공유하고, 더 이상 거래를 원하지 않을 때에는 Payment Channel을 종료할 수 있다.
- 거래 당사자 중 누군가가 불순한 의도를 갖고 자신에게 유리한 최신화되지 않은 장부를 비트코인의 블록체인에 통보하고, 그 결과를 청산하려한다면 Timelock이 걸려, 즉각적으로 처리 할 수 없도록 되어있다. Timelock이 걸린 과정에서 스스로 취소할 수 있도록 만들어놓았다.
- 또, 불순한 의도를 갖고 청산을 시도했다면 예치금을 모두 몰수하는 페널티를 부여한다.
- 비트코인의 블록체인은 상위의 "법원(Court)"의 개념으로, 거래 당사자간 발생하는 분쟁을 객관적으로 컨트롤하고, 조율해줄 수 있다.
사실, 조셉푼이 작성한 라이트닝 네트워크의 백서를 보신다면, Alice와 Bob의 거래가 상당히 복잡하게 도표로 묘사되어 있습니다.
Alice와 Bob의 거래 예시는 보다 적절하고 상세한 설명이 될 수 있습니다만, 독자의 이해를 쉽게하기 위해 편의상 간소화했음을 알려드립니다. 하지만 라이트닝 네트워크를 심도있게 이해하기 위해서는 백서의 내용을 모두 탐독해보셔야 할 것입니다.