비트코인 라이트닝 네트워크 스터디(5): 결제 채널의 부정행위와 패널티 매커니즘

지난 포스팅에서 비트코인 라이트닝 네트워크 결제 채널의 특징과 제약 사항, 그리고 결제 채널에서 발생하는 거래 세 가지에 대해서 살펴보았습니다. 복습해보면, 결제 채널을 개설하기 위해 초기에 결제 채널에 비트코인을 할당 하는 것을 자금 거래(Funding Transaction), 결제 채널의 부정 행위, 채널 상대 파트너의 오프라인 상태의 지속으로부터 결제 채널 자금을 회수하기 위한 환불 거래(Refund Transaction), 그리고 결제 채널에서 발생한 모든 거래 내역을 순차적으로 연결한 약정 거래(Commitment Transaction)에 대해서 지난 포스팅에서 살펴보았습니다.

이번 포스팅에서는 결제 채널 개설 후 채널 파트너 간 거래가 수행될 때 발행할 수 있는 부정행위, 그리고 부정행위를 방지하고 예방할 수 있는 방법, 패널티 매커니즘에 대해서 살펴보도록 하겠습니다.

이전 상태 번복을 이용한 결제 채널의 부정행위

어린 시절에 동전 가운데에 구멍을 뚫어서 실로 매달은 후, 자판기에 해당 동전을 넣었다가 실을 되감아서 그 동전을 빼내서 다시 사용하고 이를 무한 반복해서 자판기의 모든 음료를 구매하는 상상을 해보신적 있나요? 동전을 자판기에 넣었으면 지불이 완료된 것인데, 이것을  동전 구멍과 실을 이용하여 다시 자판기에 동전을 투입하기 전으로 되돌아가서 또다시 동전을 자판기에 넣는 행위를 반복하는 부정 행위, 이를 이전 상태 번복을 이용한 부정행위라고 볼 수 있겠습니다.

동전 구멍을 이용한 자판기 무한 사용 부정행위
동전 구멍을 이용한 자판기 무한 사용 부정행위

비트코인 네트워크 뿐만 아니라, 라이트닝 네트워크의 결제 채널에서도 이와 같은 이전 상태 번복을 이용해서 부정행위를 일으킬 수도 있습니다. 이럴 때, 비트코인 라이트닝 네트워크는 어떠한 방식으로 해당 부정행위를 방지하는지 지금부터 천천히 살펴보도록 하겠습니다.

비트코인 라이트닝 네트워크의 부정행위

먼저, 실제로 라이트닝 네트워크의 결제 채널에서 발생할 수 있는 거래 번복 부정행위에 대해서 살펴보도록 하겠습니다.

철수와 친구 개똥이는 결제 채널을 개설하기로 약속하고, 철수는 이를 이행하기 위하여 채널 개설에 필요한 비트코인 0.1 BTC를 결제 채널에 할당합니다. 철수가 결제 채널에 할당한 0.1 BTC는 철수의 소유이므로 철수는 결제 채널에서 개똥이에게 자신이 결제 채널에 할당한 BTC를 사용할 수 있습니다.

철수는 개똥이에게 결제 채널을 통해서 0.05 BTC를 보냅니다. 철수와 개똥이는 0.05 BTC 거래에 상호 합의하여 서명을 완료하여 약정 거래(Commitment Transaction) 생성을 완료하였고, 결제 채널에서 최신 약정 거래에 따라서 철수의 잔액은 0.1 BTC – 0.05 BTC = 0.05 BTC 입니다.

그런데, 갑자기 철수는 악마의 속삭임을 듣게 됩니다. 악마가 말하길, “야, 철수야. 우리가 개똥이를 속여서 비트코인을 뺏어오는게 어때? 개꿀? 개똥이에게 다음과 같이 이야기해봐. ‘내 약정 거래 장부에 따르면, 우리가 채널을 처음 개설했을 때 내가 거액의 0.1 BTC를 채널에 예치했고, 이것이 나의 약정 거래 장부의 최신버전이며, 나의 잔액은 0.1 BTC 이야. 그리고, 나 지금 이 채널을 닫고 싶어. 그래서 마지막 거래 장부인 0.1 BTC를 나에게 줘.’ 라고 말해!”

위와 같은 상황을 이전 상태 번복을 이용한 부정행위라고 합니다. 라이트닝 네트워크 결제 채널에서의 거래는 약정 거래로, 채널 파트너 철수와 개똥이의 서명이 모두 들어가 있으므로 이전 상태의 약정 거래 기록이 최신 버전이라고 우기는 철수의 행동을 막을 수는 없습니다.

이 때, 개똥이는 철수가 이전 상태의 약정 거래가 최신 버전이라고 우기는 철수를 막고, 이러한 부정행위가 다시는 발생하지 않도록 만드는 매커니즘이 필요하다는 것을 깨달았습니다. 또한, 라이트닝 네트워크는 기본적으로 채널 파트너, 즉 거래 당사자들 외에 거래 정보를 공개하지 않기 때문에 다른 노드들의 도움을 받을 수도 없습니다. 그렇다면 어떻게 해야 이러한 번복 부정행위를 방지할 수 있을까요?

번복 부정행위 방지 패널티 메커니즘

비트코인은 기본적으로 거래를 만들어 내는 것에 대해서 검열하지 않고 있기 때문에, 누구라도 이전의 거래 기록을 가지고 부당하게 거래를 이어 나가는 것을 시도할 수 있습니다. 이러한 부정 행위를 막기 위해서 기본적으로 라이트닝 네트워크 결제 채널은 이전의 약정 거래 기록을 사용하여 새로운 거래를 제안하는 하는 게시자에게 강력한 처벌을 하도록 하는 패널티 메커니즘이 구성되어 있습니다.

패널티 메커니즘은 이전 상태 번복을 사용한 거래 제안자는 자신의 모든 결제 채널 잔액을 채널 파트너 상대에게 몰수 당하도록 설계되어 있습니다. 이러한 패널티 메커니즘은 결제 채널의 자금 몰수 처벌로 부정 행위를 미연에 방지할 수 있습니다.

패널티 메커니즘 동작 방식

그런데, 이러한 패널티 메커니즘은 어떻게 동작하며, 과연 얼마나 신뢰할 수 있는 것일까요? 만약, 철수가 사용한 이전의 약정 거래가 이전 버전이 아니라 정말 최신의 약정 거래이며 개똥이가 자신이 가지고 있는 약정 거래 장부가 최신이라고 거짓말을 하고 있는 것일 수도 있지 않을까요?

지금부터 이에 대해서 더욱 자세하게 알아보도록 하겠습니다.

앞서, 비트코인 라이트닝 네트워크에서는 채널 파트너 간에 거래 성사 후 합의된 잔고 정보를 나타내는 약정 거래를 사용한다고 말씀드렸습니다. 이러한 약정 거래는 각 채널 파트너의 잔고 정보를 부정행위로부터 보호하고 안전하게 정보를 전달하기 위해 두 가지, 시간 잠금(Timelock)과 철회 비밀(Revocation secret)를 사용합니다.

시간 잠금(Timelock)

먼저, 시간 잠금은 채널 파트너 중 하나가 약정 거래가 발생하지마자 잔고를 새로운 거래에 사용하는 것을 막는 방법을 말합니다. 다시 말해, 약정 거래는 시간 잠금을 걸 수 있으며, 시간 잠금을 통해서 채널 파트너는 거래 처리 후 생성된 새로운 잔고를 사용하기 위해서 일정 시간을 기다리도록 만드는 것입니다. 약정 거래의 시간 잠금은 거래가 게시된 후 거래에 사용된 비트코인의 사용을 지연하게 만드는 역할을 합니다.

이러한 시간 잠금을 설정함으로써 결제 채널에서 거래가 발생했을 때, 채널 파트너가 갱신된 잔고를 일정 시간동안 사용할 수 없게 만듦으로써 자신의 잔고가 정상적으로 갱신되기를 기다려야 합니다. 채널 파트너가 합의한 시간 잠금 설정 시간이 모두 흘러가기 전에, 결제 채널에서 새로운 거래를 게제하는 것은 부정 행위로 간주하고 패널티 메커니즘에 따라 거래 게시자의 잔고를 상대 채널 파트너에게 모두 지불하도록 합니다. 즉, 이전 거래로부터 상호 합의한 시간까지 도달 후 그 시점의 거래로부터 제안된 거래만 정당한 거래로 인정하는 것입니다. 이는 이커머스에서 상품을 구매한 고객이 거래 확정 버튼을 눌러야만 판매자가 돈을 지급받을 수 있고, 고객도 페이백 포인트를 받을 수 있는 것과 동일합니다.

이러한 시간 잠금의 설정 시간은 채널 파트너 간의 협상에 따라 조절이 가능하며, 보통 채널의 용량(Channel Capacity)에 따라 다르게 설정됩니다. 채널 용량에 따라서, 채널 용량이 큰 채널은 시간 잠금 기간이 더 길고, 채널 용량이 작을 수록 시간 잠금 기간이 짧게 설정됩니다. 최대 시간 잠금 기간은 2주(비트코인 네트워크 On-Chain에서 2,016개의 블록이 생성될 때까지 대기)입니다.

철회 비밀(Revocation Secret)

철회 비밀(Revocation Secret)은 라이트닝 결제 채널에서 언제나 최신의 거래 상태를 기반으로 다음 거래를 만들기 위한 방법으로, 이전 거래를 사용하여 새로운 거래를 제안하는 것을 무효화하기 위한 라이트닝 네트워크의 중요한 보안 메커니즘 중 하나입니다.

라이트닝 네트워크에서는 채널 파트너 간에 거래가 발생하면, 약정 거래를 통해 거래의 상태가 변경되며 이 거래를 통해 채널 파트너는 잔고를 업데이트를 하고 네트트워크 내에서 상호 작용합니다. 그러나, 악의적인 목적을 가진 채널 파트너가 이전 거래를 기반으로 새로운 약정 거래를 제안할 경우, 이러한 약정 거래를 무효화하고 최신 거래 상태를 기반으로 새로운 거래를 제안하도록 강제해야 합니다. 그렇지 않으면 악의적인 채널 파트너로 인하여 결제 채널의 잔고가 이전 상태로 돌아갈 수 있습니다.

철회 비밀의 동작 방식

철회 비밀은 악의적인 채널 파트너의 이전 상태 번복 행위를 방지하기 위하여 아래와 같은 방식으로 동작합니다.

  1. 철회 비밀 공유: 각 채널 파트너는 이전 약정 거래를 무효화할 수 있는 철회 비밀을 각각 반쪽씩 가지고 있습니다. 중요한 점은 채널 파트너 중 어느 하나도 전체 철회 비밀을 알지 못합니다. 거래를 철회하기 위해서는 양쪽의 철회 비밀을 합한 전체 철회 비밀을 알 수 있어야 철회가 가능합니다. 각 파트너는 전체 철회 비밀을 통해 어떠한 거래가 취소되었음을 입증할 수 있으며, 이를 통해 단방향 철회를 방지할 수 있습니다.
  2. 이전 거래 철회: 결제 채널에서 새로운 약정 거래를 제안하는 파트너는 자신이 가지고 있는 이전 거래의 철회 비밀을 새로운 약정 거래에 포함하여 자신이 가지고 있는 철회 비밀을 상대 파트너에게 제공합니다. 이것은 악의적인 목적을 가지고 거래를 제안한 파트너의 거래를 무효화하고, 부정행위에 대한 패널티 메커니즘이 동작하도록 강제합니다.
  3. 협력 검증: 채널 파트너는 상대방이 이전 약정 거래의 철회 비밀 절반을 제공할 때에만 새로운 약정 거래에 서명하여, 새로운 거래가 유효하다고 인증합니다.

결론

비트코인 라이트닝 네트워크는 부정행위를 방지하고 신뢰성 있는 거래를 보장하기 위해 다양한 보안 메커니즘을 사용합니다. 이러한 메커니즘은 두 가지 구성 요소인 시간 잠금과 철회 비밀을 기반으로 합니다.

  • 시간 잠금: 시간 잠금은 채널 파트너가 최신 거래 상태를 기반으로 새로운 거래를 제안하는데 필요한 시간 지연을 도입합니다. 이렇게 함으로써 이전 상태로부터 재거래가 발생하는 것을 막습니다.
  • 철회 비밀: 철회 비밀은 악의적인 거래 파트너가 이전 거래를 기반으로 새로운 거래를 제안하려고 할 때 해당 거래를 무효화하기 위하여 사용됩니다. 각 파트너는 이전 거래의 철회 비밀을 반씩 가지고 있으며, 이전 거래를 무효화하기 위해서는 양쪽의 철회 비밀을 함께 사용해야 합니다. 거래 제안자는 새로운 약정 거래를 생성하기 위해서는 이전 거래에 대한 철회 비밀을 상대방에게 제공함으로써 부정 행위를 방지할 수 있습니다.

비트코인 라이트닝 네트워크의 이러한 보안 메커니즘은 사용자들 간의 거래를 안전하게 유지하며 부정행위로부터 보호합니다.

참고

  • Mastering the Lightning Network, 바로가기
  • 비트코인 라이트닝 네트워크 스터디(4): 결제 채널(Payment Channel)과 거래(Transactions), 바로가기
  • 비트코인 라이트닝 네트워크 스터디(3): 결제 채널(Payment Channel), 바로가기
  • 비트코인 라이트닝 네트워크 스터디(2): 구성 요소 및 동작 방식, 바로가기

Leave a Comment