두 번째 장에서는 라이트닝 네트워크를 하기 위해 필요한 요소와 채널간 거래에 대해 간단하게 살펴본다.
- 라이트닝 네트워크에서 결제를 하기위해서는 기본적으로 사용자가 쉽게 쓸수 있도록 결제 UI를 제공하는 지갑이 필요하고,
- 지갑과 연동해 실제 라이트닝 네트워크를 통해 돈(사토시)를 보내는 일을 수행하는 라이트닝 노드,
- 그리고 라이트닝 네트워크는 실제 비트코인을 할당(펀딩)해서 사용하기 때문에 비트코인 네트워크와 연동되는 비트코인 노드가 필요한다.
- 라이트닝 노드
- 다른 라이트닝 노드와 Peer-to-Peer로 연결되어, 비트코인 블록체인(온체인)과 별개(오프체인)로 채널간 거래가 가능하도록 구현된 소프트웨어(+하드웨어) 시스템을 말한다.
- 지갑의 역할도 수행하며, 채널간 거래를 주고 받을 수 있다.
- 다른 라이트닝 노드와 P2P 방식으로 통신.
- 채널을 열고, 닫을 때에는 비트코인 블록체인에 브로드캐스트 해야하므로, 비트코인 블록체인에 엑세스 할 수 있어야 한다. 엑세스하는 방식은 여러가지.
- Full block 노드 또는 SPV(단순 지불 검증) 클라이언트를 사용해 비트코인 블록체인과 상호 작용한다.
- Lightning Explorers (라이트닝 탐색기)
- 라이트닝 노드와 채널 및 네트워크 capacity 확인이 가능한 서비스
-
- 라이트닝 지갑 (Lightning Wallets)
- 라이트닝 지갑은 라이트닝 네트워크를 사용해 비트코인(사토시)를 지불 가능하게 하는 소프트웨어(어플리케이션)을 말한다.
- 구성요소
- 키 저장소(개인 키 등)
- 라이트닝 노드
- 비트코인 노드
- 라이트닝 노드 및 채널의 DB "map"
- 라이트닝 채널 open/close 가능한 채널 관리자
- 결제 소스부터 목적지까지 연결된 경로를 찾을수 있는 close-up 시스템
- 지갑에서 사용되는 라이트닝 노드에 대한 분류
- Lightweight
- None
- 라이트닝 노드 및 지갑이 3rd-party에 의해 운영되고, 사용자 UI를 제공.
- Neutrino (뉴트리노)
- 비트코인 노드 없이, 라이트닝 노드를 운영하고, 비트코인 노드와의 통신에 Neutrino 프로토콜을 사용.
- Neutrino 프로토콜: 다른 사람이 운영하는 비트코인 노드에서 블록체인 정보를 검색하기 위한 프로토콜.
- Electrum
- 트코인 노드 없이, 라이트닝 노드를 운영하고, 비트코인 노드와의 통신에 Electrum 프로토콜을 사용.
- Bitcoin Core
- btcd
- 아래 테이블에 서비스되고 있는 라이트닝 노드 지갑을 정리했다.
Application |
Device |
Lightning node |
Bitcoin node |
Keystore |
Blue Wallet |
Mobile |
None |
None |
Custodial |
Breez Wallet |
Mobile |
Full node |
Neutrino |
Self-custody |
Eclair Mobile |
Mobile |
Lightweight |
Electrum |
Self-custody |
lntxbot |
Mobile |
None |
None |
Custodial |
Muun |
Mobile |
Lightweight |
Neutrino |
Self-custody |
Phoenix Wallet |
Mobile |
Lightweight |
Electrum |
Self-custody |
Zeus |
Mobile |
Full node |
Bitcoin Core/btcd |
Self-custody |
Electrum |
Desktop |
Full node |
Bitcoin Core/Electrum |
Self-custody |
Zap Desktop |
Desktop |
Full node |
Neutrino |
Self-custody |
c-lightning |
Server |
Full node |
Bitcoin Core |
Self-custody |
Eclair Server |
Server |
Full node |
Bitcoin Core/Electrum |
Self-custody |
lnd |
Server |
Full node |
Bitcoin Core/btcd |
Self-custody |
- 라이트닝 결제 채널 열기
- 지갑 어플리케이션 등에서 라이트닝 노드를 연결하고, 채널을 open 하려면, 해당 채널에 비트코인을 할당(펀딩)해야하며,
- 블록체인 장부에 기록되기 때문에 펀딩 트랜젠셕에 대한 채널 오픈 수수료를 지불해야함.
- 지갑은 채널 오픈에 대한 거래를 구성하고, 비트코인 네트워크로 전송 후 블록체인에 트랜젝션이 검증될 때 까지 기다려야 한다.(+-10분)
- 채널 오픈(펀딩) 트랜젝션이 블록체인 네트워크에서 확인(검증)되면 채널이 오픈되고, 자금(사토시)가 할당된다.
- 라이트닝 네트워크를 통한 거래
- 카페에서 커피를 산다고 가정했을때,
- 카페에 있는 POS기를 통해 커피를 선택,
- POS기에 라이트닝 결제 인보이스에 결제 금액(사토시) 및 QR코드가 생성되고,
- 라이트닝 지갑 어플리케이션의 결제하기를 선택, QR코드를 인식하고, 결재 내역을 확인한다.
- 최종적으로 앱에서 결제하기를 선택하면 채널에 할당한 자금(사토시) 중 인보이스에 있는 금액이 카페 POS기 라이트닝 지갑으로 전송되고, 거래가 완료된다.
- 결제 채널 종료
- 라이트닝 결제 채널이 오픈되어 있는 동안 채널에 할당되어 지불된 잔액(balance)는 비트코인 지갑 등에서 사용 할 수 없다.
- 라이트닝 결제 채널에서의 거래가 종료되거나, 할당된 잔액을 비트코인 지갑으로 받기 위해서는 채널을 닫아야하며,
- 채널을 닫은 후 (비트코인 온체인에 최종 잔액에 대한 배분을 마친 후), 사용가능하게 된다.
- 채널 종료에 사용되는 트랜젝션 또한 비트코인 거래 수수료가 부과되며,
- 일반적으로 채널을 열고 닫는데에드는 수수료는 채널 개시자가 부담한다.
- 사실 라이트닝 네트워크의 핵심 기능은 결제 채널 당사자간의 거래뿐만 아니라, 연결을 확장해 라우팅을 통해 다른 노드와의 거래를 가능하게 하는것에 있다.
- 경로를 찾고(Pathfinding),
- 부정행위를 방지,
- 2-of-2 다중 서명주소(Multisignature address) 사용,
- 타임락(Timelock)에 의한 지연,
- 취소(Revocation) 키 매커니즘을 사용한 패널티 매커니즘으로 비트코인 시스템의 법원 역할 수행
- 하는 등의 내용은 이후 다룬다.