지난 포스팅은 비트코인 라이트닝 네트워크의 부정행위 방지를 위한 패널티 메커니즘에 대해서 살펴보았고, 이번에는 라이트닝 네트워크에서 채널 발표와 채널 닫기에 대해서 알아보겠습니다. 라이트닝 네트워크를 사용하기 위해서는 기본적으로 채널이 존재해야 하며, 채널을 통해 사토시 전송 및 라우팅이 가능합니다.
그런데, 채널은 어떻게 만들어지고, 다른 라이트닝 노드들은 어떻게 채널들을 찾아서 사토시를 전송 및 라우팅을 할 수 있는 것일까요? 이번 포스팅에서 그 이유를 알아보도록 하겠습니다.
채널 발표(Announcing the Channel)
결제 채널을 개설하기로한 두 채널 파트너는 그들이 개설할 채널을 전체 라이트닝 네트워크에 공개적으로 알리는 공개 채널을 개설할 수도 있고, 자신들만이 결제 채널을 사용하도록 프라이빗하게 채널을 개설할 수도 있습니다(그러나 다른 노드들이 프라이빗 채널을 발견할 수도 있습니다).
먼저, 공개 채널은 라이트닝 네트워크에 채널을 개설했음을 발표하기 위하여 가십 프로토콜(Gossip Protocol)을 사용하여 자신들의 채널 용량(Channel Capacity), 채널의 위치, 채널 수수료 등에 대한 정보를 다른 노드들에게 전파합니다. 이렇게 공개 채널로 개설된 결제 채널은 다른 라이트닝 노드에게 지불을 위한 라우팅(Routing)에 사용될 수 있으며, 이를 통해 채널 파트너들에게 라우팅 수수료를 지불하도록 할 수 있습니다.
또한, 이렇게 공개 채널은 다른 노드들이 공개 채널을 알 수 있게 함으로써 라이트닝 내부의 라우팅 지도를 만들 수 있습니다. 이렇게 생성된 지도는 라이트닝 노드들이 사토시를 라우팅할 때 지불 경로를 찾을 수 있도록 하는데 사용됩니다.
반면에 채널 파트너들은 채널 개설을 라이트닝 네트워크에 발표하지 않을 수도 있으며, 이를 통해 다른 라이트닝 노드들이 쉽게 알지 못하는 프라이빗한 채널을 만들 수 있습니다. 프라이빗한 채널은 여전히 채널 파트너 간에 사토시 지불에 사용될 수 있지만, 해당 채널의 존재를 알지 못하는 노드는 프라이빗 채널을 알지 못하기 때문에 사토시 라우팅에 사용할 수 없습니다.
채널 종료(Closing the Channel)
Mastering the Lightning Network 책에서 말하길, 채널을 종료하는 가장 좋은 방법은, 채널을 닫지 않는 것이라고 말합니다. 이게 무슨 뚱딴지 같은 소리인지 지금부터 알아보도록 하겠습니다.
채널 파트너가 개설한 채널은 채널 개설하거나 채널을 종료할 때도 비트코인 On-Chain 네트워크를 사용하므로 비트코인 수수료가 발생합니다. 이 때문에 채널을 가능한 한 오래 열어두라고 말합니다.
그러나, 때때로 라이트닝 노드를 운영 중인 서버 환경의 변경이라던지 현실 세계에서 자금이 필요한 상황이 발생했을 때 필요에 따라 채널을 닫아 자금을 회수하는 것이 필요합니다. 이 때 채널을 닫는 세 가지 방법이 있습니다.
상호 협력 하에 채널 종료(Mutual Close)
상호 협력 하에 채널 종료(이하 상호 닫기)는 양쪽 채널 파트너가 합의하여 채널을 종료하는 방법으로, 라이트닝 네트워크에서 가장 추천되는 방법입니다. 채널을 종료하고자 할 때는 채널 파트너간 합의가 필요하며, 양쪽 파트너의 채널 내 잔액을 최신 약정 거래 기록에 따라 공정하게 배분해야 합니다.
상호 닫기로 채널 종료가 결정되면, 해당 채널에서는 더 이상 사토시 라우팅 시도가 허용되지 않으며, 진행 중이었던 라우팅 시도는 타임 아웃 후 제거됩니다. 채널 종료 결정 후 이를 완료하는 데까지는, 진행 중이었던 라우팅 처리, 약정 거래 기록 확인 후 잔액 배분 등에 시간이 걸리므로 일부 시간이 소유될 수 있습니다.
채널 종료도 약정 거래와 유사한 방식으로 기록되며(어떻게 다른 지 구체적으로 알 지 못합니다.), 해당 거래에는 시간 잠금(Timelock)이 포함되지 않습니다.
채널 종료에 발생하는 수수료는 채널을 닫기로 요청한 파트너에서 지불하는 것이 아니라, 처음 채널 개설을 요청했던 노드에 수수료가 부담됩니다. 이것은 다른 두 가지 채널 종료 방식에도 동일하게 적용됩니다. 채널 종료에 필요한 채널 내부의 동작들이 종료되면, 비트코인 On-Chain에서는 채널 종료 사실을 확인하고 각 채널 파트너는 채널 잔액을 분배 받습니다.
강제 종료(Force Close)
강제 종료는 채널의 한쪽 파트너가 다른 파트너의 동의 없이 채널 종료를 시도하는 방법입니다. 이 방법은 상호 닫기보다 더 많은 수수료, 비용이 들 수 있으며 상호 종료보다 빠르게 처리됩니다. 이는 일반적으로 한쪽의 채널 파트너가 다른 채널 파트너와 연결이 끊어졌을 때 사용하여 억지로 채널을 종료하여 자금을 회수하기 위해 사용합니다.
채널 강제 종료는 채널 강제 종료를 요청한 노드가 가진 마지막 약정 거래 기록을 가지고 채널 종료라는 새로운 약정 거래를 생성하는 것과 동일합니다. 이에 따라 비트코인 네트워크는 강제 종료 요청을 한 파트너의 약정 거래 기록이 가장 최신 버전의 약정 거래 기록인지 아닌지 구분할 수 없습니다. 이에 따라 강제 종료 요청을 한 채널 파트너의 상대방에게 이점을 제공하도록 되어 있습니다.
여기서 채널을 강제로 종료 당한 파트너에게 주는 이점이란, 채널 종료를 요청한 파트너에게는 시간 잠금을 주어 채널 종료 후에도 비트코인을 일정 시간동안 사용하지 못하도록 강제하며, 상대 파트너에게는 채널 종료 즉시 해당 비트코인을 사용 가능하도록 하는 것입니다. 이러한 시간 잠금은 상대 파트너에게 채널 강제 종료로 인한 잔금 배분이 마지막 약정 거래 기록에 의한 것인지 아닌지 구분할 수 있는 시간을 부여하는 것이며, 최선 약정 거래기록이 아닌 이전 약정 거래 기록으로부터 채널 종료를 시도했을 때 강제 종료 기록이 포함된 약정 거래를 취소하도록 하는 기회를 제공하는 것입니다.
결제 채널 강제 종료 수수료
결제 채널 강제 종료 시 거래 수수료는 상호 닫기 수수료보다 더 높습니다. 이유는 다음과 같습니다.
첫째, 채널 강제 종료에 포함된 채널 종료 수수료는 상대방 채널 파트너가 해당 약정 거래에 서명할 수 없기 때문에 라이트닝 프로토콜 개발자들은 해당 거래 수수료를 강제 종료 요청 시점에서 존재하는 수수료율에 최대 5배까지 높도록 설정해놓았기 때문입니다.
둘째, 채널 강제 종료 시 채널에 사토시 라우팅이 존재한다면 이에 대한 시간 잠금 계약 또한 위반한 것으로 간주되어 이로 인해 채널 강제 종료에 포함되는 약정 거래의 크기가 증가하고 이에 따라 더 많은 수수료가 부과됩니다.
이러한 이유로 라이트닝 네트워크에서는 채널 강제 종료를 권장하지 않고 있으며, 강제 종료는 채널 강제 종료를 요청한 노드의 자금은 시간 잠금에 의하여 더 오랫동안 사용할 수 없게 되고 더 많은 수수료를 부과하므로, 라이트닝 노드 운영자들은 보다 신중히 채널 개설과 채널 종료를 해야합니다.
프로토콜 위반(Protocol Breach)에 의한 종료
프로토콜 위반으로 인한 채널 종료는 채널 파트너가 부정행위를 할 때 발생하며 채널 내 자금을 안전하게 보관하고 상대 파트너의 모든 채널 자금을 회수하기 위해 발생하는 채널 종료입니다.
프로토콜 위반은 채널 파트너의 새로운 거래 제안 목적이 악의적인지 아닌지 중요한 것이 아니라, 라이트닝 네트워크의 프로토콜 정책에 위반한 동작이 발생했을 때를 말합니다. 이러한 결제 채널 내 상대방의 프로토콜 위반을 탐지하려면 24시간 거래 기록을 감시하는 Watch-tower 소프트웨어가 필요합니다.
Watch-tower 소프트웨어가 결제 채널 내 상대 파트너의 프로토콜 위반을 성공적으로 탐지하면 자동으로 패널티 메커니즘을 동작하도록 하며, 상대 파트너의 채널 자금을 모두 회수합니다. 그러나, 프로토콜 위반으로 채널을 종료하는 것은 권장 사항이 아니며 채널을 닫을 때 채널 파트너와 협력적으로 문제를 해결하고 상호 닫기를 시도할 것을 권장합니다.
결론
이번 포스팅에서는 비트코인 라이트닝 네트워크의 채널 개설 시 선택할 수 있는 공개 채널 여부와 채널을 종료할 수 있는 방법 세 가지에 대해서 살펴보았습니다. 라이트닝 노드를 운영하기 위해서 필수적으로 해야하는 채널 개설과 채널 종료에는 많은 수수료가 부과될 수 있으므로, 본인이 운영 중인 상황에 따라 계획적으로 채널 개설 및 종료를 실행해야 합니다.
참고
- Mastering the Lightning Network, 바로가기
- 비트코인 라이트닝 네트워크 스터디(5): 결제 채널의 부정행위와 패널티 매커니즘, 바로가기
- 비트코인 라이트닝 네트워크 스터디(4): 결제 채널(Payment Channel)과 거래(Transactions), 바로가기
- 비트코인 라이트닝 네트워크 스터디(3): 결제 채널(Payment Channel), 바로가기
- 비트코인 라이트닝 네트워크 스터디(2): 구성 요소 및 동작 방식, 바로가기
- 비트코인 라이트닝 네트워크 스터디(1): 비트코인 2계층 기술, 바로가기
- 비트코인 지갑 Jade wallet 구매 가이드, 바로가기
- 비트코인 컨펌(Confirmations): 비트코인 거래 처리 얼마나 기다려야 할까요?, 바로가기
- 나도 이제 비트코인 풀노더, 비트코인 노드 만들기(2), 바로가기