비트코인 라이트닝 네트워크 스터디(4): 결제 채널(Payment Channel)과 거래(Transactions)

지난 비트코인 라이트닝 네트워크 스터디에서는 기본적인 결제 채널(Payment Channel)의 동작 방식과 특징, 그리고 결제 라우팅에 대해서 간략하게 살펴보았습니다. 이번 포스팅에서는 비트코인 라이트닝 네트워크의 결제 채널에 대해서 더욱 자세히 살펴보고, 결제 채널에서 발생하는 거래들의 종류와 특징, 동작 방식 등에 대해서 살펴보도록 하겠습니다.

결제 채널의 특징

지난 포스팅을 통해 알아본 결제 채널의 특징을 요약하면 아래와 같습니다.

  1. 결제의 즉시성: 채널 파트너에 의하여 개설된 결제 채널은 파트너간 결제를 주고 받는 시간이 인터넷 통신 속도에 따라 결정되므로, 결제가 즉시 완료될 수 있습니다.
  2. 비트코인 네트워크의 블록 생성까지 대기할 필요가 없음(Off-Chain 거래): 라이트닝 네트워크에서 채널이 개설되어 있고, 해당 채널을 통해서 상대방과 거래 및 결제를 했다면 결제가 완료될 때까지 비트코인의 블록 생성을 기다릴 필요가 없습니다.
  3. 결제 관련 상대방 노드와의 신뢰 관계 불필요(Trustless): 결제 채널은 암호학적 프로토콜, 다중 서명 주소를 기반으로 개설 및 사용되기 때문에 채널 파트너 간의 신뢰가 불필요하도록 구성되어 있습니다. 결제 시 파트너가 무응답 또는 부정행위를 시도하면 비트코인 스마트 계약(Smart Contract)에 의하여 해당 노드가 패널티를 받도록 설계되어 있습니다.
  4. 개인 정보 보호: 라이트닝 결제 채널에서 이루어지는 거래는 채널 파트너 만이 해당 거래 내역을 공유하여 거래 내역을 외부에 비공개 상태로 유지할 수 있습니다. 모든 거래 내역이 투명하게 공개되는 비트코인 네트워크와 비교했을 때, 라이트닝 네트워크의 결제 채널을 통해 이루어지는 거래는 채널 파트너 간의 잔고만이 비트코인 네트워크에 공개되므로, 개인 정보가 더욱 더 보호됩니다.

결제 채널의 제약사항

결제 채널 개설 및 사용 시 발생하는 제약 사항은 다음과 같습니다.

  1. 결제 채널에서 발생한 거래는 채널 파트너 간의 거래 자금이 이동하는데 필요한 시간은 인터넷 속도에 따라 제약이 발생합니다.
  2. 결제 채널에서 사용 가능한 채널 용량(Channel Capacity)은 채널을 개설했을 때 할당한 비트코인의 양으로 제한됩니다.
  3. 결제 채널의 자금 라우팅 수는 비트코인의 거래의 최대 크기를 넘을 수 없습니다.

자금 거래(Funding Transaction)

비트코인 라이트닝 네트워크의 결제 채널에서 거래는 어떻게 구성되며 어떻게 처리될까요? 지금부터는 결제 채널의 거래에 대해서 살펴보도록 하겠습니다.

결제 채널 개설은 2-of-2 다중서명 주소를 통해 개설됩니다. 라이트닝 네트워크에서 결제 채널을 개설할 때(Openning Channel), 채널 파트너 중 하나의 노드가 비트코인을 다중서명 주소로 보내여 결제 채널에 자금을 할당합니다. 이 거래를 자금 거래(Funding Transaction)이라고 하며, 해당 거래는 아래와 같이 비트코인 네트워크에 기록됩니다(On-Chain).

비트코인 라이트닝 네트워크 채널 개설 시- 자금 거래(Funding Transaction)의 예
비트코인 라이트닝 네트워크 채널 개설 시- 자금 거래(Funding Transaction)의 예

결제 채널을 개설할 때 채널에 비트코인을 할당하기 위해 발생하는 자금 거래는 비트코인 네트워크에서 공개되지만, 결제 채널에 비트코인 자금이 할당되고 난 뒤에는 채널이 닫힐 때까지 결제 채널의 자금이 어떤 거래에 어떻게 사용되었는지 채널 파트너 이외는 알 수가 없습니다(Off-Chain).

또한, 결제 채널의 존재는 채널의 두 노드가 라우팅에 참여하지 않거나 결제 채널을 비공개로 개설하면 채널의 자금이 채널 파트너 이외 다른 노드들이 알 수 있는 방법은 없습니다.

채널 용량(Channel Capacity)

라이트닝 노드가 결제 채널을 개설하기 위하여 자금 거래를 시도했을 때, 다중서명 주소에 비트코인 할당하는 자금의 양을 채널 용량(Channel Capacity)이라고 합니다. 채널 용량은 개설된 결제 채널을 통해서 전송할 수 있는 최대 비트코인 허용량을 말합니다.

자금 거래를 통해서 다중 서명 주소로 보내진 비트코인은 On-Chain에서는 사용할 수 없기 대문에 ‘라이트닝 채널에 잠겨있다’라고도 표현하지만, 자금 거래를 통해 결제 채널에 할당된 비트코인은 라이트닝 네트워크에서 얼마든지 유동적으로 사용 가능하다는 점을 알아두시면 좋을 것 같습니다.

환불 거래(Refund Transaction)

앞서 말씀드린 것처럼 비트코인 라이트닝 네트워크에서 두 노드가 채널의 파트너로써, 결제 채널을 개설하기 위해서는 2-of-2 다중서명 주소에 자금 거래(Funding Transaction)이 발생해야한다고 설명드렸습니다. 2-of-2 다중서명 주소에서 거래를 사용하고 채널에 할당된 자금을 사용하기 위해서는 두 노드, 즉 채널 파트너 모두가 개인 키로 거래에 대한 합의가 있어야만 사용할 수 있습니다.

그러나, 만약 채널 파트너 중 하나의 노드가 더 이상 채널을 사용하고 싶지 않고 채널을 닫기를 원하지만 상대방 노드가 서명을 해주지 않고 결제 채널을 닫기(Closing Channel)를 허용해주지 않는다면 어떻게 해야할까요? 라이트닝 네트워크에서 이러한 문제를 해결하기 위하여 환불 거래(Refund Transaction)을 제공합니다.

아래와 같은 상황이 있다고 가정해봅시다.

철수는 친구 개똥이와 라이트닝 결제 채널을 열기로 결정했습니다. 그래서 각자 2-of-2 다중서명 주소를 만들기 위해서 각자 개인 키, 공개 키 쌍을 만들고 서로의 공개 키를 교환합니다. 이제 서로 나누어 가진 두 개의 공개 키로 2-of-2 다중서명 주소를 만들어서 결제 채널을 개설하였습니다.

물론 결제 채널을 개설하기 위해서 결제 채널에 자금 거래도 이루어졌습니다. 자금 거래, 즉 결제 채널을 개설할 때 비트코인을 결제 채널에 할당하는 거래는 본인이 0.1 BTC를 다중서명 주소로 보내어 친구 개똥이와 결제 채널을 개설하였습니다.

그러나, 갑자기 자금이 필요해진 철수는 더 이상 채널을 사용하고 싶지 않습니다. 그러나 친구 개똥이는 생각이 다릅니다. 친구 개똥이는 결제 채널을 더 유지하고 싶고, 다중서명 주소에 할당된 비트코인을 꺼내고 싶지 않아서 거래에 서명해주지 않습니다. 이때 철수는 더 이상 결제 채널에 할당한 비트코인 0.1 BTC를 뺄 수 없게 되는 것일까요?

라이트닝 네트워크에서는 이러한 리스크를 줄이기 위하여 환불 거래(Refund Transaction)을 제공합니다. 이 거래는 결제 채널에 할당된 비트코인을 다시 비트코인 네트워크로 꺼내고, 결제 채널을 종료(Closing Channel)하기 위한 거래입니다.

즉, 환불 거래는 라이트닝 네트워크의 결제 채널을 개설한 노드의 자금을 보호하기 위한 거래 중 하나이며, 보다 안전하게 자금을 관리할 수 있도록 하는 거래입니다.

약정 거래(Commitment Transaction)

라이트닝 네트워크에서 개설된 채널에서 사용되는 자금은 채널 파트너 간의 합의에 의해서 사용및 관리된다고 말씀드렸는데요. 지금부터 말씀드리는 약정 거래(Commitment Transcation)가 이러한 합의를 실현하는데 중요한 역할을 합니다.

약정 거래란 결제 채널에서 자금 거래로 할당된 비트코인을 각 채널 파트너가 사용하고 남은 현재의 잔고를 증명하기 위해 사용하는, 결제 채널 내부의 거래를 말하는 것으로 상호 신뢰를 필요로하지 않도록 설계되었습니다. 약정 거래는 결제 채널에서 채널 파트너가 자금을 사용했을 때마다 약정 거래에 서명함으로써 계속해서 거래 장부에 최신 버전으로 현재 잔고가 남았다는 것을 “commit”, 스냅샷(Snapshot)하는 것을 말합니다. Git의 commit으로 생각하시면, 쉽게 이해하실 수 있습니다(Git의 commit이란?, 바로가기)

여기서 중요한 점은 각 채널 파트너가 서명된 약정 거래 정보를 소유하고 있다면, 상대 채널 파트너의 협력 없이도 쉽게 자금을 회수할 수 있다는 것입니다. 이것은 채널 파트너 중 하나가 오랜시간 동안 오프라인 상태를 유지하며 채널을 이탈한다거나, 자금 사용에 지속적인 협력을 거부(서명 거부)를 하는 결제 채널의 프로토콜을 위반하는 것으로부터 채널의 자금을 보호할 수 있도록 합니다.

참고로 라이트닝 노드를 운영중인 하드웨어 고장 및 훼손이 발생했을 당시, 라이트닝 네트워크의 채널 백업이 되어 있지 않다면 해당 라이트닝 노드는 결제 채널에서 자금 사용에 대한 약정 거래 장부를 소실한 것과 동일하므로 자금을 회수할 수 없습니다. 그러니 라이트닝 노드를 운영하실 때에는 채널 백업을 반드시 하는 것이 중요합니다.

약정 거래의 동작 방식

예시를 통해서 약정 거래의 동작 방식에 대해서 설명하겠습니다.

라이트닝 네트워크에서 철수와 개똥이가 결제 채널을 열려고 합니다. 철수와 개똥이가 합의하에  각자의 공개 키로 다중서명 주소를 생성하였고, 철수가 해당 주소에 비트코인을 보내어 채널에 비트코인 자금을 할당합니다. 이 트랜잭션은 앞서 설명 드린 자금 거래(Funding Transcation)이면서 첫 번째 약정 거래(Commitment Transaction)이기도 합니다.

초기에는 철수가 결제 채널의 모든 잔고가 가지고 있으며 이것은 첫 번째 약정 거래에 기록되어 있습니다. 그런 다음, 결제 채널에서 철수와 개똥이가 비트코인(사토시)를 주고 받을 때마다, 새로운 약정 거래가 생성되고 약정 거래에 각 채널 파트너에 잔고가 기록됩니다. 이후 각 채널 파트너의 잔고가 변경될 때마다 새로운 약정 거래가 생성되고 잔고가 해당 거래에 기록됩니다.

매번의 약정 거래는 철수와 개똥이가 해당 약정 거래에 서로 서명을 작성하며 생성됩니다. 이렇게 서명으로 생성된 약정 거래는 본인들이 결제 채널의 잔고가 이상없이 거래되었음을 입증하는 것입니다. 이러한 방식으로 라이트닝 네트워크의 결제 채널 내의 각 채널 파트너의 잔고를 계속 추적할 수 있고, 최종적으로 약정 거래가 이루어진 것을 기반으로 결제 채널을 종료하여 비트코인을 반환할 수 있습니다.

결론적으로, 약정 거래는 라이트닝 네트워크에서 중요한 거래 중 하나이며, 채널 파트너 간의 협력과 신뢰 없이도 자금을 안전하게 관리하는데 필수적인 거래입니다.

결론

이번 포스팅에서는 비트코인 라이트닝 네트워크의 결제 채널의 특징과 제약, 그리고 결제 채널에서 발생하는 거래들(자금 거래, 환불 거래, 약정 거래)에 대해서 살펴보았습니다. 라이트닝 노드를 운영하기 위해서 자금을 할당하고, 채널의 거래 상태를 관리 및 유지하기 위해 이를 백업하는 이유 등에 대해서 이해하시는 데 도움이 되었으면 좋겠습니다.

다음 포스팅에서는 결제 채널과 거래에 이어서 채널 파트너의 부정 행위에 대한 패널티 매커니즘, 채널 종료 등에 대해서 살펴보도록 하겠습니다.

참고

  • Mastering the Lightning Network, 바로가기
  • 비트코인 라이트닝 네트워크 스터디(5): 결제 채널의 부정행위와 패널티 매커니즘, 바로가기
  • 비트코인 라이트닝 네트워크 스터디(3): 결제 채널(Payment Channel), 바로가기
  • 비트코인 라이트닝 네트워크 스터디(2): 구성 요소 및 동작 방식, 바로가기
  • 비트코인 라이트닝 네트워크 스터디(1): 비트코인 2계층 기술, 바로가기
  • 비트코인 지갑 Jade wallet 구매 가이드, 바로가기
  • 비트코인 컨펌(Confirmations): 비트코인 거래 처리 얼마나 기다려야 할까요?, 바로가기
  • 나도 이제 비트코인 풀노더, 비트코인 노드 만들기(2), 바로가기

 

Leave a Comment