리눅스에서 비트코인 라이트닝 노드 생성하는 방법

비트코인을 사용할 때 가장 큰 문제 중 하나는 긴 거래 시간입니다. 이는 이 디지털 통화에 처음 접하는 사용자에게는 실망스러울 수 있습니다. 이를 개선하는 가장 쉬운 방법 중 하나는 비트코인 라이트닝과 같은 보조 결제 레이어를 사용하는 것입니다.
비트코인 라이트닝은 정규 블록체인 프로세스를 벗어나 자산을 빠르게 이동하기 위해 사용자 정의 비트코인 거래를 사용하는 시스템입니다. 이러한 점에서 라이트닝은 익명 연결을 라우팅할 때 TCP/IP를 백본으로 사용하는 Tor 네트워크와 유사합니다.
목차
- 비트코인이 느린 이유는 무엇인가요?
- 라이트닝 네트워크는 어떻게 작동하나요?
- 나만의 비트코인 라이트닝 노드 설정하기
- 자주 묻는 질문들
또한 읽어보세요: Emacs에서 레저 모드로 재정 관리하는 방법
비트코인은 중앙 권한 없이 인터넷을 통해 쉽게 돈을 교환할 수 있게 해줍니다. 당신이 하는 모든 거래는 수취인에게 직접 이루어지며, 전체 네트워크에 분산됩니다.
비트코인이 느린 이유는 무엇인가요?

그 결과, 비트코인 내에서 이루어지는 모든 결제는 완료되고 확인되는 데 시간이 걸립니다. 예를 들어, 일반 비트코인 거래는 보통 10분에서 30분이 걸립니다.
라이트닝 네트워크는 어떻게 작동하나요?
라이트닝의 핵심은 비트코인을 노드에 주차시키는 “온체인” 결제를 생성하는 것입니다. 그런 다음 라이트닝은 주차된 비트코인을 사용하여 다른 라이트닝 노드 간의 채널을 생성합니다.

이렇게 하면 블록체인에서 정산할 필요가 없는 추가 “오프체인” 결제를 라이트닝을 통해 생성할 수 있어 두 사용자 간의 결제 시간을 크게 줄일 수 있습니다. 예를 들어, 일반 라이트닝 거래는 정산하는 데 약 1초밖에 걸리지 않습니다.
또한 읽어보세요: 리눅스에서 높은 CPU 사용량 수정하는 방법
나만의 비트코인 라이트닝 노드 설정하기
라이트닝을 시작하려면 개인 노드를 갖는 것이 좋습니다. 비트코인 노드를 설정하는 것과 유사하게, 라이트닝 노드는 네트워크 내에서 거래를 완전히 제어할 수 있게 해줍니다.
설치를 시작하려면 여러 리소스가 준비되어 있어야 합니다:
- 적절한 저장공간과 메모리를 가진 기계. 제 경우에는 1TB의 저장공간과 2GB의 RAM을 가진 오래된 Dell Optiplex 데스크탑을 사용하고 있습니다.
- 지속적인 인터넷 연결, 라이트닝 노드는 상태를 유지하기 위해 다른 노드와 정기적으로 통신해야 합니다.
- 라이트닝 노드를 “자금 지원”하는 데 사용할 수 있는 소량의 비트코인.
이러한 요소를 알고, 이 튜토리얼은 Ubuntu 22.04.1 LTS 머신에 c-lightning을 설치하는 데 중점을 둡니다.
의존성 확보하기
c-lightning 설치의 첫 번째 단계는 노드의 파일과 설정이 기본 사용자와 분리되도록 새 사용자 계정을 만드는 것입니다:
sudo useradd -s/bin/bash-d/home/lightning -m-Gsudo lightning
sudopasswd lightning
다음 명령어를 실행하여 이 새 사용자로 전환합니다: su lightning, 그런 다음 c-lightning이 작동하는 데 필요한 모든 프로그램을 포함하는 서드파티 리포지토리를 추가합니다:
sudo add-apt-repository -u ppa:lightningnetwork/ppa노드의 의존성을 설치합니다:
sudo apt install software-properties-common lightningd snapd
또한 읽어보세요: 리눅스 노트북의 배터리 수명을 늘리는 4가지 방법
간단한 비트코인 노드 설정하기
여기서부터는 간단한 비트코인 노드를 설치하고 구성해야 합니다. 위에서 논의한 바와 같이, 라이트닝은 사용자 정의 비트코인 거래를 사용하여 “자금 채널”을 생성하는 오버레이 네트워크입니다.
이 채널을 생성하기 위해, 라이트닝 노드는 다음 명령어를 실행하여 설치할 수 있는 간단한 비트코인 노드와 함께 실행되어야 합니다:
sudo snap install bitcoin-core
루트 “스냅” 디렉토리와 “bin” 폴더 간의 심볼릭 링크를 생성합니다:
sudoln-s/snap/bitcoin-core/current/bin/bitcoin{d,-cli}/usr/local/bin/비트코인 노드의 초기 블록 다운로드를 시작합니다:
bitcoind -daemon이 명령어는 노드를 백그라운드로 보내 전체 비트코인 블록체인을 다운로드하고 검증합니다. 다음 명령어를 실행하여 진행 상황을 확인할 수 있습니다:
tail-f/home/$USER/.bitcoin/debug.log
이 과정은 몇 시간에서 며칠이 걸릴 수 있다는 점에 유의해야 합니다. 예를 들어, 제 Dell Optiplex 데스크탑은 비트코인 네트워크와 완전히 동기화되는 데 5일이 걸렸습니다.
간단한 비트코인 노드 구성하기
노드가 네트워크와 동기화되면, 먼저 비트코인 노드를 중지하여 라이트닝과 호환되는지 확인합니다:
bitcoind stop“/etc/bitcoin.conf” 아래의 구성 파일을 편집합니다:
nano/home/$USER/.bitcoin/bitcoin.conf
두 가지 옵션인 walletbroadcast와 prune를 비활성화합니다. 첫 번째 옵션은 비트코인 노드가 라이트닝과 함께 데이터만 사용하도록 지시하며, 두 번째 옵션은 전체 블록체인을 하드 드라이브에 저장하도록 보장합니다.
walletbroadcast=0
prune=0다음 명령어를 실행하여 비트코인 노드를 다시 시작합니다:
bitcoind -daemon비트코인 라이트닝 노드 시작하기
다음 명령어를 실행하여 라이트닝 노드를 시작합니다:
lightningd --network=bitcoin --log-level=debug --daemon
이 명령어는 노드를 백그라운드로 보내고 “home/$USER/.lightning” 아래에 구성 파일을 생성합니다. 다음 명령어로 라이트닝 노드가 제대로 작동하는지 테스트합니다:
lightning-cli --lightning-dir=$HOME/.lightning getinfo
또한 읽어보세요: 리눅스 서버를 안전하게 보호하기 위한 최고의 오픈 소스 도구
비트코인 라이트닝 노드 마무리하기
c-lightning이 실행되고 있으면, 다양한 라이트닝 피어 간에 “자금 채널”을 생성하여 노드를 마무리할 수 있습니다. 위에서 논의한 바와 같이, “자금 채널”은 블록체인에 커밋하지 않고 비트코인을 이동할 수 있게 해주는 사용자 정의 비트코인 거래입니다.
이를 생성하기 위해, 먼저 다음 명령어로 노드에 대한 수신 주소를 생성하여 비트코인을 “입금”합니다:
lightning-cli newaddr
외부 지갑으로 가서 해당 수신 주소로 비트코인을 보냅니다. 제 경우에는 비트코인 코어 지갑을 사용하여 0.00050000 BTC를 보낼 것입니다.

거래가 블록체인에 기록되면, 라이트닝 노드는 자동으로 자금 잔액을 업데이트합니다. 다음 명령어로 이를 확인합니다:
lightning-cli listfunds원격 비트코인 라이트닝 노드와 피어링하기
네트워크 내의 피어와 연결하여 라이트닝을 통해 비트코인을 송수신할 수 있도록 노드를 연결하기 시작합니다.
시작하려면, 공개 키와 IP 주소를 모두 찾아야 합니다. PGP 암호화를 사용하는 것과 유사하게, 이는 공개 키 암호화를 통해 노드의 진위를 연결하고 검증할 수 있게 해줍니다.
이를 위한 가장 일반적인 도구 중 하나는 1ML입니다: 네트워크 내의 모든 활성 라이트닝 노드를 나열하는 웹사이트입니다.

활성 노드를 확보한 후, lightning-connect 명령어를 사용하여 피어 요청을 설정합니다. 예를 들어, 이 명령어는 제 노드를 ACINQ에 피어링합니다:
lightning-cli connect 1 03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f 3.33.236.230- 첫 번째 값은 현재 피어에 할당할 슬롯 번호를 나타냅니다. 이 노드의 경우, 슬롯 1을 사용하고 있습니다.
- 두 번째 값은 원격 노드의 공개 키입니다. 이 경우, ACINQ의 공개 키를 사용하고 있습니다.
- 세 번째 값은 원격 노드의 공개 IP 주소입니다.
요청을 마무리하려면, “자금 채널”을 생성하기 위해 원격 노드에 노드의 비트코인 잔액 일부를 전송합니다.
예를 들어, 이 명령어는 제 목록의 첫 번째 피어에 대해 0.00030000 BTC의 “자금 채널”을 생성합니다:
lightning-cli fundchannel 130000
라이트닝 결제 송수신하기
활성 “자금 채널”이 실행 중인 상태에서, 노드를 사용하여 결제를 송수신합니다. 기본적으로, 라이트닝은 비트코인과 구별하기 위해 “lnbc”로 시작하는 BOLT11 형식을 사용합니다.
라이트닝을 통해 비트코인을 보내려면, 수신자의 BOLT11 주소를 알아야 합니다. 예를 들어, 다음 명령어는 원격 주소로 0.00005000 BTC를 보냅니다:
lightning-cli pay lnbc20m1[...]qdhhwkj 50000
또한, invoice 명령어를 사용하여 라이트닝을 통해 비트코인을 수신할 수 있으며, 수신하고자 하는 비트코인의 정확한 금액을 지정할 수 있습니다. 예를 들어, 이 명령어는 0.00010000 BTC에 대한 송장을 생성합니다:
lightning-cli invoice 100000
또한 읽어보세요: 리눅스에서 큰 파일 찾는 방법
자주 묻는 질문들
Dojo를 비트코인 노드로 사용하고 있습니다. c-lightning과 함께 사용할 수 있나요?
아니요. 기본적으로 Dojo는 Docker 컨테이너를 사용하여 비트코인 코어의 샌드박스 인스턴스를 실행하는 프로그램입니다. Dojo 비트코인 노드는 샌드박스 컨테이너 외부의 어떤 프로그램과도 통신할 수 없습니다.
제 지갑이 “bc1” 주소를 지원하지 않습니다. 여전히 라이트닝 노드에 입금할 수 있나요?
네! c-lightning은 기본적으로 “bc1” 주소 형식으로 생성되지만, 구형 P2SH 형식을 사용하여 라이트닝 노드로 비트코인을 전송할 수 있습니다. 이를 위해 다음 명령어를 실행합니다: lightning-cli newaddr p2sh-segwit.
제 라이트닝 결제가 가끔 실패합니다. 제 노드가 고장났나요?
아니요! 이 문제는 대부분 수신자와의 노드 연결 부족 때문입니다. 라이트닝 네트워크는 설계상 각 노드가 서로 일관되게 직접 통신하는 데 의존합니다.
이 문제를 해결하는 한 가지 방법은 로컬 노드가 연결하는 피어와 “자금 채널”의 수를 늘리는 것입니다. 예를 들어, 최소 두세 개의 활성 피어를 보유하면 거의 모든 라이트닝 사용자와 연결할 수 있습니다.
이미지 출처: Unsplash 및 Wikimedia Commons. 모든 수정 및 스크린샷은 Ramces Red에 의해 작성되었습니다.