상세 컨텐츠

본문 제목

[Mastering the Lightning Network] 4 - 라이트닝 노드 소프트웨어

IT.About/라이트닝 네트워크

by zNine 2021. 12. 24. 15:55

본문

728x90
반응형

4장에서는 라이트닝 네트워크 노드를 실행하는 소프트웨어를 알아보고 도커를 이용해 직접 설치 & 실행해본다.

  • 라이트닝 표준은 lightning-rfc 저장소에 있는 BOLT(Basis of Lightning Technology) 표준 문서로 정의되어 있다.
  1. 라이트닝 개발 환경
    1. Linux Command line(bash shell) 사용
    2. Ubuntu 20.04 LTS 환경에서 예제 실행
    3. $ git clone https://github.com/lnbook/lnbook.git
  2. 도커 설치
    1. sudo apt-get install ca-certificates curl gnupg lsb-release
      
      # Add Docker's official GPG key
      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
      
      # Set up the stable repository
      sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
      
      #Install Docker Engine
      sudo apt-get update
      sudo apt-get install docker-ce docker-ce-cli containerd.io
      		
      # 사용자에게 docker 실행 권한 부여
      sudo usermod -a -G docker #USERID
      
      # 사용자 계정으로 다시 로그인 후 아래 명령어로 그룹 확인
      id
  3. Bitcoin Core and Regtest
    1. 라이트닝 노드가 작동하려면 full Bitcoin node 대한 엑세스가 필요함.
    2. 비트코인 노드는 로컬 시뮬레이션을 위해 regtest 모드로 작동시켜, 라이트닝 노드 테스트를 진행.
    3. Bitcoin Core 컨테이너는 bitcoind.
    4. regtest 모드에서 Bitcoin Core 실행하고, 10초마다 6개의 블록을 채굴하도록 구성됨.
    5. RPC port 18443, username 'regtest passwd 'regtest' 사용해 RPC call 가능. (bitcoin-cli 통해 command line 명령으로도 가능)
    6. 비트코인 코어 컨테이너 빌드 & 실행
      1. # Docker Hub에서 최신 컨테이너 가져오기
        docker pull lnbook/bitcoind
        
        # Docker Hub에서 pull한 경우 빌드 할 필요 없음
        
        cd lnbook/code/docker
        docker run -it --name bitcoind lnbook/bitcoind
    7. bitcoind 실행되고, 101 시뮬레이션 블록을 채굴하여 체인을 시작.
    8. 비트코인 합의 규칙에 따라 새로 채굴된 비트코인은 100블록이 경과 할때까지 사용할수 없기때문에 101 블을 먼저 채굴하여, 블록의 코인베이스를 사용가능하게 만듬.
    9. 이후 10초마다 6개의 새로운 블록을 채굴.
    10. 비트코인 코어 컨테이너 사용
      1. # bitcoind 컨테이너가 실행되는 동안 쉘로 들어가 명령 전달 가능
        docker exec -it bitcoind /bin/bash
        
        # 쉘을 실행하면 컨테이너 내부에 있게되며, root로 로그인 됨.
        # 아래와 같이 단일 쉘 명령을 전달할 수도 있음
        docker exec bitcoind cli getblockchaininfo
  4. c-lightning 라이트닝 노드 프로젝트
    1. Elements Project 일부로, Blockstream 개발.
    2. 가볍고, 커스텀 가능하며, LN 프로토콜의 표준을 따름.
    3. Docker 컨테이너로 c-lightning 빌드
      1. docker pull lnbook/c-lightning
        docker build -t lnbook/c-lightning c-lightning
    4. 도커 네트워크 설정
      1. # 도커 컨테이너들은 도커 시스템에서 관리하는 가상 LAN을 통해 "taik" 할수 있다.
        # 각 컨테이너는 이름을 가질수 있고, 다른 컨테이너에서 이 이름을 통해 IP를 확인하고 연결한다.
        # 네트워트 설정은 저장되며, 재부팅 후 도커가 시작될 때마다 설정한 네트워크를 활성화 시킴.
        # host, bridge, none 이라는 3개의 네트워크가 있음.
        
        docker network create lnbook
        docker network ls
        				NETWORK ID     NAME      DRIVER    SCOPE
        				f315b2ae7873   bridge    bridge    local
        				1e256c4897da   host      host      local
        				5602e4f8b1a0   lnbook    bridge    local
        				2df47d6e602d   none      null      local
    5. 실행
      1. # 이전 컨테이너 삭제 & 비트코인 코어 실행
        docker rm bitcoind
        docker run -it --network lnbook --name bitcoind lnbook/bitcoind
        
        # c-lightning 실행
        docker run -it --network lnbook --name c-lightning lnbook/c-lightning
  5. LND(The Lightning Network Daemon) Node Project
    1. Lightnint Labs에서 LN 완벽하게 구현하며 데몬 여러 어플리케이션을 제공한다.
    2. btcd(full node), bitcoind(비트코인 코어), Neutrino(실험용 라이트 클라이언트) 포함한 플러그인 가능한 여러 백엔드 체인 서비스를 가지고 있음.
    3. Go 언어로 구현.
    4. LND 도커 컨테이터 실행
      1. docker pull lnbook/lnd
        docker run -it --network lnbook --name bitcoind lnbook/bitcoind
        docker run -it --network lnbook --name lnd lnbook/lnd
        docker run -it --network lnbook --name lnd2 lnbook/lnd
  6. Eclair 라이트닝 노드 프로젝트
    1. ACINQ에서 만든 라이트닝 네트워크를 스칼라식으로 구현. (Eclair 서버 프로젝트)
    2. Eclair 도커 컨테이너 실행
      1. docker pull lnbook/eclair
        docker run -it --network lnbook --name bitcoind lnbook/bitcoind
        docker run -it --network lnbook --name eclair lnbook/eclair
        docker run -it --network lnbook --name eclair2 lnbook/eclair
728x90
반응형

관련글 더보기