본문으로 건너뛰기

라이트닝 노드 구축 방법

2024년 3월에 공개된 영상의 화면과 앱 기준이어서 앱 이름, 메뉴, 수수료는 지금과 다를 수 있습니다. 발언자는 한국어로 된 구축 영상을 찾지 못해 직접 만들어 보며 시도한 과정을 영상으로 남겼다고 밝힙니다.

풀노드 위에 라이트닝 노드를 올리는 순서​

발언자는 라이트닝 노드를 바로 쓸 수는 없고 사전 준비가 필요하다고 설명합니다. 라이트닝 노드가 풀노드 위에 올라가기 때문에, 먼저 풀노드를 구축해 전체장부를 100% 동기화해야 합니다. 발언자는 오드로이드 기기에 2TB SSD를 넣어 풀노드를 운영했습니다. 풀노드 구축은 풀노드 구축 방법에서 다룹니다. 그다음 라이트닝 노드 앱을 설치하고 이 앱도 전체장부와 동기화한 뒤, 라이트닝 노드에 넣을 온체인 비트코인을 준비하면 사전 준비가 끝납니다. 발언자는 엄브렐(Umbrel)의 라이트닝 노드 앱을 설치했습니다. 이 앱은 LND 패키지입니다.

라이트닝 노드를 처음 만들면 24단어 시드가 나옵니다. 발언자는 이 시드를 잘 적어 두었다가 나중에 백업이나 복구에 쓰라고 안내합니다. 발언자 자신도 이 시드를 적어 두었습니다. 다른 풀노드 패키지에서 로그인이 되지 않는 문제가 생겼을 때, 그 패키지를 버리고 엄브렐 라이트닝 노드를 새로 설치한 뒤 적어 둔 시드로 복구했다고 말합니다. 이전 노드에 넣어 두었던 비트코인도 이 복구로 살아났습니다.

앱의 입금(Deposit) 메뉴를 누르면 이 시드에 딸린 온체인 주소가 나옵니다. 발언자는 이 주소가 bc1q로 시작하는 네이티브 세그윗 주소가 아니라 bc1p로 시작하는 탭루트 주소라는 점을 짚습니다. 여기에 비트코인을 보내 두고 이를 채널을 여는 데 씁니다.

처음 만든 노드의 별명(alias)은 길고 복잡한 문자열입니다. 발언자는 고급 설정에서 이 별명을 쉬운 키워드로 바꿀 수 있고, 바꾼 뒤 재부팅하면 된다고 설명합니다. 발언자는 남에게 공개해 유동성을 주고받는 용도가 아니라 혼자 쓰려고 노드를 만들었다고 밝혔습니다. 그래서 자신의 별명은 공개하지 않았습니다. 유동성이 무엇인지는 라이트닝 노드 개념에서 같은 예시로 설명합니다.

관리 도구와 노드 정보 사이트​

앱 안에서도 채널을 열 수 있지만, 발언자는 별도의 관리 도구로 채널을 열었습니다. 설치해 본 도구는 RTL(Ride The Lightning)과 썬더허브(ThunderHub)입니다. 라이트닝 터미널도 설치했다가 쓸 일이 없을 것 같아 지웠다고 합니다. 발언자는 관리 도구로는 RTL과 썬더허브를 많이 쓰는 것 같다고 보고, 번갈아 쓰며 어느 쪽이 나은지 확인하는 중이라고 말합니다.

RTL은 설치를 마치면 초기 비밀번호가 나오고, 이 비밀번호로 로그인해야 합니다. 발언자는 이 비밀번호가 유출되지 않도록 조심하라고 당부합니다. 두 도구 모두 대시보드에서 온체인 비트코인과 라이트닝 쪽 잔액, 채널 용량을 보여 줍니다. 채널을 열기 전에는 인바운드와 아웃바운드 유동성이 모두 비어 있습니다. 노드의 공개키도 화면에 나옵니다. 별명을 설정하기 전에는 공개키가 복잡한 문자열로 보이고, 설정한 뒤에는 별명이 표시됩니다. 발언자는 이 공개키를 내가 채널을 열 때나 다른 사람이 나에게 채널을 신청할 때 쓰게 된다고 설명합니다.

채널을 열 상대 노드의 정보는 노드 정보 사이트에서 찾습니다. 발언자는 해외 자료를 보니 1ML과 앰보스(Amboss)를 많이 쓴다고 설명하고, 두 사이트가 거의 같은 기능을 하며 화면 구성만 조금 다르다고 봅니다. Lightning Network+도 쓰는 것 같다고 하고, mempool에는 온체인 정보뿐 아니라 라이트닝 정보도 있다고 덧붙입니다. 상대를 고르는 기준은 라이트닝 노드 개념의 "채널을 열 상대를 고르는 기준"에서 다룹니다.

첫 채널 개설이 거듭 막힌 과정​

발언자가 처음 채널을 열 상대로 점찍은 곳은 전부터 자주 써 온 월렛 오브 사토시였습니다. 앰보스에서 이 노드의 주소를 복사해, 썬더허브의 채널 개설 화면에 새 피어로 붙여 넣었습니다. 금액은 가진 사토시를 나누지 않고 최댓값으로 넣었습니다. 한 곳과만 채널을 맺어 그곳을 통해서만 라이트닝으로 보낼 생각이었기 때문입니다. 수수료율 항목은 지금 넣지 않아도 나중에 채널마다 설정할 수 있다고 합니다. 온체인 수수료는 '자동'을 고르면 그때 상황에 맞는 값으로 채워집니다. 채널 유형은 비공개와 공개 중에서 공개로 골랐습니다.

처음 시도에서는 "피어가 온라인이 아니다"라는 오류가 나왔습니다. 발언자는 썬더허브의 피어 메뉴에서 상대 노드 주소를 먼저 추가해 연결해 두어야 한다는 것을 알게 되었습니다. 이 오류가 나면 피어에 들어가 열려는 노드를 추가하면 된다는 것이 발언자의 안내입니다.

피어를 추가하고 다시 시도하자 이번에는 실패 이유가 나왔습니다. 최소 채널 크기가 500만 사토시인데 발언자는 시험 삼아 그보다 훨씬 적은 금액을 넣었던 것입니다. 발언자는 월렛 오브 사토시가 그 이상 크기의 채널만 열도록 설정한 것 같다고 봅니다. 바이낸스, 크라켄 같은 거래소 노드도 찾아 시도했지만 대부분 실패했고, 스트라이크는 노드 주소를 찾지 못했습니다. 발언자는 자신의 채널 용량이 너무 작아서일 수 있다고 추정합니다.

마지막으로 열린 곳이 스피드(Speed)였습니다. 발언자는 앰보스에서 찾은 노드가 수탁형 라이트닝 서비스인 스피드의 것인지 처음에는 확실하지 않았지만, 그 노드가 다른 서비스·거래소들과 채널을 맺고 있는 것을 보고 이곳을 택했습니다. 규모가 있거나 이런 서비스를 운영하는 곳과 채널을 맺고 싶었고, 그 채널을 통해 다른 곳으로 송금할 수 있어야 했다는 설명입니다. 같은 방식으로 앰보스에서 스피드 노드를 찾아 피어로 추가한 뒤 채널을 열었습니다.

채널 개설 거래와 활성화까지 기다린 시간​

개설 요청이 성공하자 개설 거래가 전송되었다는 화면이 나왔습니다. 이 거래 번호를 mempool에서 조회하면 진행 상황을 추적할 수 있습니다. 채널을 열려면 상대 노드와 함께 서명해야 하는 다중서명 출력으로 비트코인을 보내는 온체인 거래가 필요합니다. 발언자는 채널을 닫을 때도 이 다중서명을 풀면서 온체인 거래로 정산한다고 설명합니다. 그 사이의 주고받기는 두 노드가 온체인 밖에서 처리합니다.

개설 직후 채널 메뉴의 목록은 비어 있습니다. 채널이 열린 것이 아니라 열릴 준비 중인 대기(pending) 상태이기 때문입니다. 대기 화면에는 채널 용량과 거래 수수료가 나옵니다.

발언자는 돈을 전부 채널에 넣었는데도 온체인에 약 1만 사토시가 남은 것을 보았습니다. 발언자는 이 금액이 채널을 닫을 때 필요한 거래 수수료일 것이라고 추측합니다. 확인된 사실은 아니라고 단서를 붙입니다.

개설 거래의 첫 확인은 금방 이루어졌지만 채널은 바로 열리지 않았습니다. 발언자는 밤에 시도한 터라 그대로 잠들었다가 다음 날 확인 횟수가 더 쌓인 것을 보았고, 그때서야 채널이 정상적으로 활성화되어 공개 채널로 올라온 것을 확인했습니다. 열린 채널의 용량은 전날 대기 화면의 숫자와 조금 달랐습니다. 발언자는 관리 도구마다 표시하는 숫자가 조금씩 다르다는 점도 관찰했고, 이유는 자신도 모른다고 말합니다. 채널 상태는 활성(active)으로 바뀌었습니다.

채널을 연 직후에는 발언자가 사토시를 전부 채웠으므로 보낼 수만 있고 받을 수는 없는 상태입니다. 이 개념은 라이트닝 노드 개념에서 다룹니다.

채널을 맺은 뒤에는 채널마다 수수료를 정할 수 있습니다. 채널 관리 화면에서 기본 수수료와 금액에 비례하는 수수료를 따로 설정합니다. 발언자는 혼자 쓸 노드여서 가장 낮은 값으로 설정했습니다. 관리 도구에는 채널을 백업하는 메뉴도 있습니다.

직접 보내고 받아 본 시험​

발언자는 채널이 열린 뒤 두 가지를 시험했습니다. 먼저 스피드 앱에서 70만 사토시짜리 인보이스를 발행하고 이를 복사해 썬더허브의 보내기 화면에 붙여 넣었습니다. 보내기 화면에서는 수수료를 정할 수 있고, 채널이 여러 개라면 어느 채널로 보낼지 고르는 메뉴도 있습니다. 발언자는 채널이 하나뿐이라 그 채널로 보냈습니다. 송금은 곧바로 완료되었습니다. 스피드와 직접 채널을 맺었으므로 수수료는 들지 않았습니다. 발언자는 같은 방식으로 스트라이크 같은 다른 곳에 보낸다면 스피드와 맺은 채널에서 여러 노드를 거쳐 가야 하고, 그 중간 노드마다 수수료가 붙는다고 설명합니다.

다음으로 라이트닝 노드 앱에서 10만 사토시짜리 인보이스를 발행해 스트라이크에서 보내 보았습니다. 스트라이크 쪽 화면에는 여러 노드를 거치는 라우팅 수수료가 함께 표시되었습니다. 보낸 뒤 노드 앱에는 곧바로 수신 알림이 떴습니다. 두 번의 송금으로 보낼 수 있는 양과 받을 수 있는 양이 달라진 것은 RTL과 썬더허브에서도 확인되었습니다.

운영 전에 알아 둘 주의사항​

발언자는 영상 끝에서 몇 가지를 반드시 기억하라고 당부합니다.

  • 24단어 시드는 반드시 오프라인으로 적어 보관해야 합니다. 이 노드는 내가 직접 은행 역할을 하는 것이라는 것이 발언자의 설명입니다. 이 시드는 LND의 aezeed 방식으로 만들어지므로 BIP39와 호환되지 않습니다. 시드 하나로 되는 것은 아니고, 채널을 열었다면 채널 데이터를 정기적으로 백업해야 합니다. 발언자는 오드로이드 기기에서 돌리던 노드를 미니 PC로 옮기는 경우를 예로 듭니다. 시드와 채널 백업이 모두 있어야 채널, 라이트닝 노드 안의 사토시, 온체인 비트코인이 복구된다고 설명합니다.
  • 큰 노드와 채널을 열려면 많은 사토시가 필요합니다. 월렛 오브 사토시가 500만 사토시 이상을 요구한 것이 그 예입니다.
  • 라이트닝 노드는 은행처럼 24시간 가동되어야 한다는 것이 발언자의 비유입니다. 풀노드가 갑자기 꺼지거나 정전이나 네트워크 문제가 생기면 라이트닝 노드가 멈춥니다. 따라서 풀노드가 강제로 꺼지지 않도록 관리하고, 정전이 나면 빨리 복구해야 합니다. 발언자는 큰 규모로 운영하는 사람들이 정전에 대비해 무정전 전원 장치(UPS)를 쓰기도 한다고 설명합니다.
  • 라이트닝 노드 앱이 아직 베타 단계라서 노드를 만들 때 큰 금액을 넣지 말라는 안내가 나옵니다. 발언자는 이 안내를 기억하라고 당부합니다.

영상​

원본 영상: 라이트닝 노드 구축 및 활용 방법 (공개일: 2024-03-11)

링크 복사하기X에 공유페이스북에 공유쓰레드에 공유