ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 라이트닝 네트워크(Lightning Network)란?
    Cryptography 2022. 6. 12. 22:02
    반응형

    치솟는(또는 곤두박질치는) 가격을 보면, "비트코인은 전송은 너무 비싸고, 실생활에 쓰일 수 있으려나?"라는 궁금증을 가질 때가 있습니다. 

     

    라이트닝 네트워크(lightning network)는 비트코인 트랜잭션을 더 저렴하고 더 빠르게 만들도록 고안되었는데요. 이런 라이트닝 네트워크는 비트코인, 이더리움과 같은 layer1으로 통칭되는 크립토 기술에 기반하여 운용되는 layer2에 속합니다. 

     

    이번 글에서는 이러한 라이트닝 네트워크가 무엇인지 자세히 알아보도록 하겠습니다:

     

    • 라이트닝 네트워크는 무엇을 위해 탄생되었나?
    • 라이트닝 네트워크의 주요 기능
    • 라이트닝 네트워크의 구조

     

    라이트닝 네트워크는 무엇을 위해 탄생되었나? [2]

    비트코인은 글로벌 replicated 퍼블릭 렛져에 트랜잭션을 기록하는 시스템입니다. 각 트랜잭션은 각 퍼블릭 렛져에서 확인되고, 검증되고, 저장되는데요. 그렇기에 엄청나게 많은 데이터를 발생시키고, 그로 인해 확장되기에 어렵습니다.

     

    비트코인 트랜잭션에 대한 수요가 많아지면서, 한 블록에 담기는 트랜잭션 수가 한계점에 도달할 때까지 증가하였습니다. 블록이 꽉 차게 되면서, 초과 트랜잭션은 큐에서 wait하는 상태가 되었습니다. 많은 사용자가 다음 블록에서의 트랜잭션 승인을 보장받기 위해 점점 높은 수수료를 지불하게 되었습니다.

     

    그로 인해 높은 수수료를 지불할 수 있는 사용자들만이 네트워크를 사용할 수 있게 되었고, 소량의 금액인 트랜잭션은 수지타산이 맞지않아(수수료가 송금액의 대부분을 차지해서) 네트워크를 이용하지 못한채 남아 있었습니다.

     

    이러한 문제를 해결하기 위해서, 블록 사이즈를 늘려서 더욱 많은 트랜잭션을 담을 수 있도록 하였으나 그것도 한계가 있었습니다. 또한, 블록 사이즈를 키우는 것도 노드 운영자에게 비용을 부담하고 블록 체인을 저장하고 검증하기 위해 더욱 많은 리소스를 소비하도록 하였습니다. 비트코인은 gossip 프로토콜이라서, 각 노드는 네트워크 상의 매 트랜잭션을 인지하고 검증해야 했는데요. 더욱이, 검증 이후 각 트랜잭션은 다른 주변 노드로 전파되어야 합니다. 그렇기에 블록 사이즈가 커질 수록, 각 노드에 대한 더 높은 대역폭과, 처리 및 저장 요구사항이 증가하게 됩니다. 이러한 방식으로 트랜잭션 용량을 늘리게 되면 노드와 노드 운영자 수를 줄여서 시스템을 중앙화하게 되는 악영향을 미치게 됩니다. 노드를 운영하는 비용이 늘어나게 되면, 노드 운영자는 더이상 노드를 운영할 이유가 없어지게 됩니다.

     

    블록체인을 확장하기

    기존 비트코인 구조에서 블록 크기를 늘이거나, 블록 시간을 줄이는 방법은 네트워크 관점에서 여러 문제를 발생시킬 수 있습니다.

     

    예로, VISA 네트워크의 트래픽은 초당 40,000 건을 가정해봅시다. 트랜잭션 당 250 바이트라고 가정할 때, 모든 트랜잭션을 받기 위해서 10 MBps가 필요합니다. 이것은 트랜잭션은 다른 peer에 포워딩하는 비용을 포함하지 않는데요. 이 가정만 보더라도, 최소 조건을 만족하지 못하는 수많은 노드들을 운영할 수 없게 됩니다. 

     

    또한, 위의 가정 하에서 로컬에 저장해야될 데이터는 하루에 864 GB에 달합니다. 초당 40,000 건의 ECDSA 서명을 처리하는 것 역시 거의 불가능합니다. 

     

    즉, decentralized 구조를 통해서는 글로벌 트랜잭션을 모두 감당할 수 없습니다. 

     

    하지만 만약 노드가 모든 개별 트랜잭션을 인지하고 검증할 필요가 없다면 어떨까요? 만약에 비트코인 네트워크의 보안성을 유지하며, 확장가능한 off-chain 트랜잭션이 있다면 어떨까요?

     

    2015년 Joseph Poon과 Thaddeus Dryja는 "The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments"를 발표했습니다 [3].

     

    라이트닝 네트워크는 2nd 레이어에 해당되는 새로운 네트워크를 제안했습니다. 해당 네트워크 상에서 사용자는 각자 peer-to-peer 형태로, 개별 트랜잭션을 비트코인 상에 알릴 필요 없이 결제를 진행할 수 있습니다. 사용자는 원하는 만큼 LN 상에서 서로에게 결제를 진행할 수 있고, 비트코인 on-chain 수수료를 지불하지 않아도 됩니다. 사용자는 비트코인 블록체인을 비트코인을 LN에 처음 올릴 때(load)와 비트코인을 LN에서 제거할 때(settle)만 사용하게 됩니다. 그 결과 off-chain 상에서 더욱 많은 비트코인 결제가 진행될 수 있으며, 오직 loading과 최종 settlement 시에만 on-chain 트랜잭션이 필요하게 됩니다. 노드의 부하를 줄여줌과 더불어서, LN 상의 결제 수수료는 더욱 저렴하며 모든 참여자에게 브로드캐스팅 되지 않기에 더욱 private 합니다.

     

     

    라이트닝 네트워크의 주요 기능

    라이트닝 네트워크는 비트코인 또는 다른 블록체인 위에서 동작하는 2nd 레이어 프로토콜입니다. 주요 기능들은 아래와 같습니다:

     

    • LN 사용자는 서로에게 실시간으로 결제를 저렴한 수수료로 이용할 수 있음
    • LN 사용자는 결제를 위해서 블록 컨펌을 기다릴 필요가 없음
    • LN 상의 결제가 완료되면, 보통 수 초 안에 final 처리되고 reverse가 불가능함. 비트코인 결제와 같이, LN 상의 결제는 오직 수신자에 의해서 환불될 수 있음
    • 온체인 비트코인 트랜잭션은 네크워크 상의 모든 노드에 의해 브로드캐스트되고 검증되지만, LN을 통해 진행되는 결제는 몇몇 노드 사이에서만 전송되기에 모든 노드가 확인할 수 없어서 개선된 privacy를 제공하게 됨
    • 비트코인 상의 트랜잭션과 달리, LN 상의 결제는 영속적으로 저장될 필요가 없음. 그러므로 LN은 더 적은 리소스를 사용하기에 저렴함. 또한, 그렇기에 privacy에도 더욱 좋음.
    • LN은 onion routing을 사용하기에, 결제 라우팅에 관여하는 노드는 오직 이전 및 이후 노드의 위치만 알고 있게됨.
    • 비트코인 상에서 사용되면, LN은 소유와 통제가 사용자에게 있는 실제 비트코인을 사용함. 라이트닝은 분리된 토큰이나 코인이 아니라, 비트코인 자체임.

     

    라이트닝 네트워크의 구조

    라이트닝은 '채널'의 네트워크를 사용해 Off-chain transaction으로 비트코인을 빠르게 결제할 수 있도록 하는 프로토콜입니다. 라이트닝에 핵심이 되는 결제 '채널'은 multi-sig를 통해 채널에 참여하는 두 당사자가 채널의 자금을 '공동 소유'하는 형태입니다. 그리고 그로 인해 발생할 수 있는 문제를 crypto적으로 보완하여 중간자 없이 신뢰할 수 있는 결제 프로토콜을 제공합니다.

     

    Lightning network payment channel - Image from autor inspired by [2]

    주요개념

    채널

    라이트닝은 채널을 생성하여 동작합니다. 두 참여자는 라이트닝 결제 채널을 생성합니다. 이 결제 채널은 비트코인 네트워크 상에서 locked up된 특정 양의 비트코인을 포함하게 됩니다. 이 locked up된 비트코인은 두 참여자의 사인을 통해서만 지불가능하게 됩니다. 

     

    제일 처음에 두 참여자 각각은 모든 비트코인(예로, 0.1)을 한 쪽으로 보내는 비트코인 트랜잭션을 가지게 됩니다. 그들은 이후에 해당 자금을 다르게 쪼개는 새로운 비트코인 트랜잭션에 사인하게 됩니다 (예로, 0.09는 한 참여자에게 0.01은 다른 참여자에게 보내고 이전 비트코인 트랜잭션을  invalid하게 처리).

     

    조건적 결제

    하나의 라이트닝 채널은 오직 두 참여자 간의 결제를 허용하나, 여러 채널을 생성하여 다자 간의 네트워크 결제를 허용하는 네트워크를 형성할 수 있습니다. 이를 위해서는 조건적 결제 기술이 필요한데요. 이 기술을 채널에 더해서 "6시간 내에 secret을 밝히면, 0.01 비트코인을 수령할 수 있습니다"와 같은 기능을 넣을 수 있습니다. 수신자가 secret을 전달하면, 해당 비트코인 트랜잭션은 조건적 결제 부분이 사라지고 수신자의 주소에 자금을 송금하는 형태로 변경되게 됩니다. 

     

    포워딩

    위와 같은 조건적 결제는 짧은 시간 안에 다른 참여자에게 안전하게 포워딩될 수 있습니다. 이를 통해서, 채널은 체인으로 연결되어 별다른 중간자 없이 네트워크를 형성할 수 있습니다.

     

    네트워크 토폴로지

    결제를 생성하기 위해서, 하나의 참여자는 어느 채널에 송신해야되는지 알 필요가 있습니다. 그렇기에 참여자들은 서로에게 채널과 노드 생성, 업데이트에 관해 정보를 전달해줍니다.

     

    결제 인보이스

    하나의 참여자는 어떤 결제를 생성할지에 관해 전달하는 인보이스를 받을 수 있습니다.

     

     

     

    References

    [1] https://www.coinbase.com/learn/crypto-basics/what-is-lightning

    [2] https://www.amazon.com/Mastering-Lightning-Network-Blockchain-Protocol/dp/1492054860

    [3] https://lightning.network/lightning-network-paper.pdf

    반응형
Kaden Sungbin Cho