5장에서는 라이트닝 네트워크 노드를 운영하는데 필요한 내용들에 대해서 다룬다.
- 하드웨어 플랫폼 선택
- PC
- 전용 H/W (ex: 라즈베리파이)
- 미리 구성된 H/W
- 클라우드
- 권장 하드웨어 사양
- CPU
- RAM
- Storage
- 512GB ~ 1TB
- 현재 약 400GB, 매년 약 60GB 증가
- Bitcore Core의 경우 I/O가 많이 발생
- 가격 고려해서 HDD or SSD 선택
- Installer or Helper
- RaspBlitz
- 가장 인기 있다고 함. 라즈베리파이 4 사용.
- 다양한 서비스 설치 가능.(Tor, ElecRS, BTCPay 서버, BTC RPC 탐색기 등)
- Mynode
- Umbrel (필자가 사용중)
- UX/UI로 유명. 매우쉽게 접근 가능.
- 라즈베리파이 4, Linux OS(윈도우 가상머신)에 설치 가능.
- 초기 실행 시 Neutrino/SPV로 동작, 블록 다운로드 완료 후 모드 자동으로 전환.
- BTCPay 서버
- 전자 상거래 및 지불 플랫폼.
- 도커 컨테이너와 docker-compose를 사용해 비트코인 노드, 라이트닝 노드, 지불 게이트웨이 설치 가능.
- 라즈베리파이 4, PC 등 다양한 플랫폼에 설치 가능.
- 여러 서비스 설치 가능.
- 라이트닝 노드 구현
- c-lightning - Make, Autotools 및 GNU 유틸리티 사용
- LND - Go
- Eclair - Java/Maven
- 노드 및 채널 백업
- 백업은 라이트닝 노드 실행 시 매우 중요한 고려사항.
- static channel backup(SCB)이라고 하는 추가 백업 레이어가 필요.
- SCB의 단점
- 새로운 CT가 있을때마다각 채널의 상태를 백업해야함.
- 백업에서 복원하는 것의 위험성.
- 개인 정보와 채널 보안을 위해 채널 백업을 암호화해야 함
- 위의 단점에도 불구하고 SCB는 수행해야하며, 백업 매커니즘은 구현중이며 아직까지는 라이트닝에서의 약점으로 존재.
- LND가 SCB 를 내장 매커니즘으로 제공하고 있음.
- Eclair는 비슷하게 서버사이드 배포 매커니즘을 제공. Mobile은 구글 드라이브 백업을 선택적으로 제공.
- c-lightning은 플러그인으로 제공.
- 일관된 백업 매커니즘은 없는 상태.
- Hot Wallet Risk
- 라이트닝의 자금은 항상 온라인상태.
- 자금의 양이 많은 경우 콜드월렛에 저장하는것이 안전.
- 핫월렛에 노출된 자금을 줄이는 솔루션이 있음.
- On-chain sweep
- 라이트닝 지갑 -> 비트코인 지갑으로 자금을 이동.
- 채널 닫으면 됨.
- Off-chain sweep
- 네트워크에 알려지지 않은 라이트닝 노드를 실행해 정기적으로 숨겨진 노드로 자금을 이동.
- 숨겨진 노드는 Tor 서비스를 이용해 IP주소를 알수 없도록해 해킹에 대비 할수 있음.
- 정기적으로 실행되는 스크립트를 설정해야 함.
- Submarine swap sweep
- 채널 잔액을 상대방에게 보내고, 상대방은 비트코인을 보내는 방식.
- Submarine swap with Loop
- Loop 서비스를 사용(LND 노드에서만 가능하며, 추가 소프트웨어 설치 필요)
- Loop In - 비트코인 결제를 수락하고 라이트링 결제로 전환
- Loop Out - 라이트닝 결제를 수락하고 비트코인 결제로 전환
- 라이트닝 노드 가동 시간 및 가용성
- 항상 온라인 상태 유지 필요. (지불 받기, 채널 열기/닫기 포로토콜 위반 모니터링 등)
- 메모리, SWAP, 오픈 파일, 디스크 공간 등의 제한으로 노드 or 서버가 중단 될 수있음.
- 자동화 필요
- 자동 재 시작
- 자동 노드 재 시작 (노드 프로세스 재 시작)
- 네트워크 재 연결
- 로그 파일 관리
- 노드 모니터링
- 여러 가지 방법이 있으며, 라이트닝 노드 API 쿼리를 위해 사용자 설정이 필요.
- 모니터링 API 표준화가 필요.
- Watchtowers
- 라이트닝 프로토콜 위반 모니터링 및 패널티 해결을 아웃소싱하기 위한 매커니즘.
- 서버(watchtower), 클라이언트 두가지 설정이 있음.
- 개발 초기 단계.
- LND에 서버/클라이언트 모두 포함되어 있음. (설정으로 활성화 가능)
- 채널 관리
- 노드 운영자의 반복적인 관리가 필요.
- 노드에서 다른 노드로 아웃바운드 채널을 열고, 다른 노드가 노드에 인바운드 채널을 열도록 해야함.
- 채널 오픈 시 자금은 발신자 한쪽에만 있기때문에,
- 인바운드/아웃바운드 밸런싱을 위해서는 채널을 오픈한 상대에게 나의 노드로 채널을 오픈하도록 유인하는 것이 필요.
- 아웃바운드 채널 열기
- 라우팅 실패를 고려해 두개 이상의 채널이 필요.
- 다중 결제를 지원, 초기 자금을 여러채널로 분할하고 용량을 결합해 더 큰 결제를 라우팅 할수 있음.
- well-connected 노드에 연결하기
- 두개 이상의 채널 열기
- 너무 많은 채널 열지 않기
- 채널 용량은 너무 적게 만들지 않기
- Autopilot(오토파일럿) 소프트웨어를 이용해 자동화 가능.
- Rebalancing
- 라우팅 수수료
- 노드에서 결제를 라우팅하는데에 대한 수수료.
- 기본 수수료로 설정하는 것을 추천.
- 노드 관리
- Command line 또는 사용자 정의 스크립트 기능을 제공.
- 웹 기반 인터페이스
- Ride The Lightning
- LND, c-lightning, Eclair 지원.
- Umbrel 에서 설치 & 실행 가능
- lndmon
- LND 제조사(Lightning Labs)에서 구현.
- LND 노드의 다양한 메트릭을 모니터링 가능.
- Read-only 인터페이스. (채널 open/close, 결제 등 불가)
- ThunderHub
- Ride The Lightning과 유사, LND 전용이며 UI가 우수함.