블록체인

[블록체인] 라이트닝 네트워크란?

윤밥밥 2023. 12. 17. 15:40

라이트닝 네트워크란 무엇일까?

기존 비트코인은 즉각적인 페이먼트가 안된다는 단점이 있었고 이를 해소하고자 라이트닝 네트워크가 탄생

  • 라이트닝 네트워크는 비트코인 위에 올라가는 second layer이다.
  • 라이트닝 네트워크는 블록체인 위에서 스마트 컨트랙트로 인해 실행되는 p2p네트워크이다. 블록체인도 p2p 네트워크고, 블록체인만 하고 라이트닝 네트워크는 안 할 수 있다.
  • channel partners: 라이트닝 네트워크에서는 두 노드 사이의 financial한 관계를 채널 파트너라고 한다.
  • payment channel: 라이트닝 네트워크로 연결한 peer끼리의 통로를 payment channel이라고 한다.
  • 두 채널 파트너 사이에는 파트너들이 지불을 하면, balance가 암호학적 프로토콜에 의하여, 재분배 된다. 이때 balance의 단위는 밀리 사토시를 사용한다.
  • 한쪽의 channel partner가 cheating을 하려고 한다면 복수를 할 수 있게해서, 서로를 신뢰할 필요가 없다.
  • 이를 위해서 라이트닝 당사자들은 2of2 mutisignature를 이용하여 트랜잭션을 통해 라이트닝 네트워크를 개설하며, 한쪽의 단독적인인 사용을 이를 통해서 막는다.

payment channel basics

  • 라이트닝 네트워크를 만들려면, 당사자들이 20f2 multisignature를 주소로 트랜잭션을 한다. 키는 각각 하나씩 갖는다.
  • 그럼 이 트랜잭션의 금액을 기반으로 하여, 두 당사자가 balance에 대한 payment를 한다. 이 때 payment는 블록체인에 기록되지 않는다. 따라서 payment에 대한 기록은 두 당사자가 모두 갖고 있는다.
  • 이렇게 두 당사자간에 트랜잭션을 하는 것은 블록체인에는 기록되지 않으면서 balance가 한쪽에서 한쪽으로 이동하는 것이다.
  • 두 당사자가 payment를 하면, 기존의 트랜잭션은 취소하고, balance가 변경된 새로운 transaction을 체결한다.
  • 두 당사자간의 채널 협상은 스마트 컨트랙트에 의하여 이루어진다. 스마트 컨트랙트는 채널의 구성원이 이전의 트랜잭션 상태를 제출하려 할 때 처벌할 수 있게 해분다. 참고로 이는 두 당사자가 publish되지 않은 서명된 트랜잭션을 서로 오프라인으로 보유하고 있으므로 두 당사자는 언제든지 잔액을 게시하여 소유할 수 있다.
    # 참고로 smart contract는 코드로 이루어진 계약을 의미한다.

Routing Payments Across Channels

만약 두 당사자간에 스마트 컨트랙트를 안하였더라도, 몇몇을 거쳐 가는 길만 형성된다면 payments를 할 수 있다.
즉 A와 B 사이에 채널이 있고, B와 C 사이에 채널이 있다면 A는 C에게 payment를 할 수 있다는 뜻이다.

참고로 B가 기만을 할 수 있지 않을까 생각하는데, 모든 노드들을 신뢰할 필요없이 신뢰성이 보장된다.

communication 프로토콜은 피어간의 lightning messages를 전송할 수 있으며, 어떻게 메세지가 암호화되고 전달될 지를 규정하고 있다.

라이트닝 네트워크는 gossip protocol(내가 알고 있는 주위에게 계속 전파하는 방식)을 사용한다.

payment channels(페이먼트 채널)

페이먼트 채널의 특징

  • 라이트닝 네트워크에서 payment는 오직 인터넷 속도에만 영향을 받는다. 즉 채널만 연결되어 있다면 비트코인의 confirmation없이 즉각적으로 payment를 할 수 있다.
  • payment transaction: 비트코인 블록체인에 실리지 않고 두 당사자가 거래를 하여 잔액이 바뀌는 것
  • 만약 상대방이 기만을 하려고 하면 스마트 컨트랙트를 통해 문제를 해결할 수 있다.
  • 비트코인은 모든 거래를 블록체인에 기록하므로 privacy가 없는 반면에, 라이트닝 네트워크는 처음에 계약을 맺고, 마지막에 모든 거래가 끝나고 이 결과만 비트코인 블록체인에 실리기 때문에 privacy가 더 좋다. 참고로 payment transaction 메세지 자체는 암호화 되어 보내지기에 다른 노드들은 내용을 알 수 없다.

    그럼 어떻게 스마트 컨트랙트는 cheating을 방지할까?

    이는 2of2 멀티시그를 이용한다.

funding transaction: 2of2 멀티시그 주소로 한 당사자가 비트코인을 보냄으로써 두 당사자간의 payment channel을 개설한다. 이 트랜잭션은 비트코인 블록체인에 기록된다. 이런 트랜잭션을 funding transaction이라고 한다.

이렇게 형성된 채널은 당사자가 원할 경우에 라우팅 노드들에 의하여 다른 노드들에게 알려진다.(원한다면 형성된 채널을 비공개로 할 수도 있다. 이렇게 채널을 알리는 이유는 누군가가 내 채널을 이용했을 때 통행료를 받기 위해서이다.)

channel capacity: 이렇게 예금된 multisig 주소의 비트코인은 channel capacity라고 불리며, 이는 이 채널을 통해 전달될 수 있는 최대 양이 된다.

commitment transaction: 커밋하다는 약속하다. 보장하다라는 뜻. 즉 각 채널 파트너가 기만하지 못하도록 매 payment transaction마다 commitment transaction을 각각 갖고 있게 된다.
이 commitment transaction을 보유함으로써, 그들의 돈을 상대방이 사라지거나, 협력을 거절하거나, 치팅을 시도했을 때 보장할 수 있다.

commitment transaction은 채널의 자금을 각 당사자에 맞게 분배하여 지불된다. 또한 새로운 commitment transaction마다 각 당사자는 이에 대한 서명을 서로 교환한다. 즉 이렇게 갖게 된 상대방의 서명을 통해 돈을 가져올 수 있다.

다만 비트코인은 transaction을 하고, 온라인상에 없어도 전혀 문제가 되지 않는다. 나중에 접속해서 자신의 private key로 돈을 가져오면 그만이기에, 하지만 라이트닝 네트워크의 경우 상대방이 기만을 시도할 경우 이에 대한 응징을 특정 기간 내에 해야 하므로 반드시 온라인 상에 있어야 한다.

위의 과정들을 예시로 들어보자

  1. 엘리스가 public/private key쌍을 만든 상태에서 Bob에게 채널을 open하고 싶다고 LN protocol message를 통해 알린다.
  2. 이를 받은 Bob은 자신 또한 public/priavate key쌍을 만들어서 Alice에게 public key를 건넨다.
  3. 그럼 엘리스는 2of2 multi sig( 2 <Publickey Alice> <PublicKey Bob> 2 CHECKMULTISIG)를 만들다. 하지만 아직 publish하지 않는다. 이 거래를 블록체인에 넣은 상태에서 갑자기 bob이 사라지면 돈을 못 가져오기에
  4. 엘리스는 bob에게 그녀의 signuture와 함께 transaction ID(다른 transaction과 구분하기 위해)을 보낸다.
  5. 엘리스와 밥은 서로 각자 버전의 commitment 트랜잭션을 만든다.(이때는 commitment transacition을 상대방한테 보낼 필요가 없다. 왜냐하면 그들은 이를 어떻게 구성할 지 알고있기에)
  6. bob은 엘리스에게 funding_singed message를 통해 signature를 제공한다.
  7. 이제 이제 서로 서명을 알고 있으므로 funding transaction을 bitcoin network에 broadcast한다.

만약 엘리스와 밥이 funding transaction을 체결한 상태에서 밥이 사라진다면, 엘리스는 자신이 갖고 있는 commitment transaction을 broadcast 함으로써 돌려받을 수 있다.(다만 transaction fee는 돌려받지 못한다.)

만약 초기 교환후, 새로운 commitment transaction이 발생할 때에도 서로는 이에 대한 signature를 교환한다.