NAS로 비트코인 풀노드 구축하기 1편: Bitcoin Core + Fulcrum 개요와 구조 이해

as-bitcoin-full-node-bitcoin-core-fulcrum-overview

비트코인에 관심을 가지다 보면 한 번쯤은 “풀노드”라는 말을 듣게 됩니다.

처음에는 단순히 비트코인을 보관하거나 전송하려면 지갑만 있으면 되는 줄 알았습니다. 하지만 조금 더 알아보니, 비트코인을 제대로 이해하려면 단순히 지갑을 사용하는 것에서 한 단계 더 나아가 내가 직접 비트코인 데이터를 검증하는 환경이 중요하다는 것을 알게 되었습니다.

저는 Synology NAS를 사용하고 있었기 때문에, 이 장비를 이용해 Bitcoin Core와 Fulcrum Electrum Server를 운영해보기로 했습니다.

이번 글에서는 실제 설치 방법을 다루기 전에, NAS에서 Bitcoin Core와 Fulcrum을 운영하면 어떤 구조가 되는지, 각각의 역할은 무엇인지, 그리고 어느 정도의 NAS 사양이 필요한지 먼저 정리해보겠습니다.

왜 비트코인 풀노드가 필요할까

대부분의 사람들은 비트코인을 사용할 때 거래소나 모바일 지갑 앱을 이용합니다.

이 방식은 편리하지만, 한 가지 중요한 점이 있습니다.
내 지갑의 잔액이나 거래 내역을 확인할 때 외부 서버에 의존하게 된다는 점입니다.

예를 들어 지갑 앱에서 잔액을 확인할 때, 실제로는 앱이 어떤 서버에 접속해서 내 주소의 거래 내역을 조회합니다. 이때 외부 서버는 내가 어떤 주소를 조회하는지 알 수 있습니다.

비트코인의 핵심은 직접 검증입니다.

다른 사람이 “이 거래가 맞다”고 알려주는 것을 그대로 믿는 것이 아니라, 내가 직접 블록체인 데이터를 받아서 확인하는 것입니다. 이 역할을 하는 프로그램이 바로 Bitcoin Core입니다.

Bitcoin Core란 무엇일까

Bitcoin Core는 비트코인 풀노드를 운영하기 위한 대표적인 프로그램입니다.

Bitcoin Core를 실행하면 내 장비는 비트코인 네트워크에 연결되고, 블록과 트랜잭션을 직접 내려받아 검증합니다.

쉽게 말하면 Bitcoin Core는 비트코인 네트워크의 데이터를 직접 확인하는 검증 장치입니다.

Bitcoin Core가 하는 일은 다음과 같습니다.

  • 비트코인 블록 다운로드
  • 블록과 트랜잭션 검증
  • 블록체인 데이터 저장
  • 다른 비트코인 노드와 통신
  • 내 지갑이나 다른 프로그램에 데이터 제공

즉, Bitcoin Core를 운영하면 외부 서버가 알려주는 정보를 그대로 믿는 것이 아니라, 내 장비에서 직접 검증한 데이터를 기준으로 비트코인을 확인할 수 있습니다.

Fulcrum은 왜 필요할까

Bitcoin Core만 있으면 비트코인 풀노드는 운영할 수 있습니다.

하지만 Electrum이나 Nunchuk 같은 지갑을 빠르게 연결하려면 Bitcoin Core만으로는 부족할 수 있습니다.

지갑에서는 이런 정보를 자주 조회합니다.

  • 이 주소의 잔액은 얼마인가?
  • 이 주소의 거래 내역은 무엇인가?
  • 이 트랜잭션은 확인되었는가?
  • 현재 블록 높이는 어디까지인가?

Bitcoin Core는 원본 데이터를 검증하고 저장하는 역할에 가깝고, 지갑이 빠르게 조회하기 좋은 형태로 데이터를 제공하려면 별도의 서버가 필요합니다.

그 역할을 하는 것이 Fulcrum Electrum Server입니다.

Fulcrum은 Bitcoin Core의 데이터를 읽어서 Electrum 지갑이 빠르게 조회할 수 있도록 별도의 인덱스를 만듭니다.

쉽게 비유하면 다음과 같습니다.

  • Bitcoin Core: 원본 도서관
  • Fulcrum: 책을 빠르게 찾기 위한 검색 색인
  • Electrum/Nunchuk: 검색창을 사용하는 지갑

그래서 Bitcoin Core와 Fulcrum을 함께 운영하면, 내 비트코인 노드 데이터를 기반으로 지갑을 빠르고 독립적으로 사용할 수 있습니다.

전체 작동 구조

제가 구성한 전체 흐름은 다음과 같습니다.

bitcoin-core-fulcrum-bluewallet-flow-diagram

조금 더 쉽게 풀어보면 다음과 같습니다.

먼저 Bitcoin Core가 비트코인 네트워크에서 블록 데이터를 받아옵니다.
그 다음 Bitcoin Core가 이 데이터가 비트코인 규칙에 맞는지 직접 검증합니다.
Fulcrum은 이 데이터를 바탕으로 지갑 조회용 인덱스를 만듭니다.
마지막으로 Electrum이나 Nunchuk 같은 지갑은 Fulcrum에 접속해 내 주소의 잔액과 거래 내역을 빠르게 조회합니다.

즉, Bitcoin Core는 정확성을 담당하고, Fulcrum은 조회 속도를 담당한다고 볼 수 있습니다.

NAS를 이용한 이유

저는 이 구성을 일반 PC가 아니라 Synology NAS에서 운영했습니다.

NAS는 원래 24시간 켜두는 용도로 많이 사용합니다. 파일 저장, 백업, 미디어 서버, 개인 웹서버처럼 계속 켜져 있어야 하는 작업에 잘 맞습니다.

비트코인 노드도 마찬가지입니다. 가능하면 장시간 안정적으로 켜져 있어야 하고, 저장공간도 충분해야 합니다.

NAS를 이용하면 다음과 같은 장점이 있습니다.

첫째, 24시간 운영에 적합합니다.
일반 PC처럼 자주 끄고 켜는 장비가 아니라 계속 켜두는 장비이기 때문에 노드 운영에 잘 맞습니다.

둘째, 저장공간을 확보하기 쉽습니다.
비트코인 블록체인 데이터는 계속 증가합니다. NAS는 여러 개의 HDD나 SSD를 장착할 수 있기 때문에 장기 운영에 유리합니다.

셋째, Docker를 이용한 분리 운영이 가능합니다.
Bitcoin Core와 Fulcrum을 각각 컨테이너로 실행하면 관리와 재설치가 비교적 편리합니다.

넷째, 기존 NAS 환경을 활용할 수 있습니다.
이미 NAS를 사용 중이라면 별도의 서버를 새로 구입하지 않고 기존 장비를 활용할 수 있습니다.

내 NAS 환경

제가 사용한 환경은 다음과 같습니다.

  • NAS: Synology DS423+
  • CPU: Intel Celeron J4125
  • RAM: 18GB
  • 저장공간: 약 10TB
  • 네트워크: 1Gbps 유선 LAN
  • 운영 방식: Docker host 모드

이 정도 사양이면 Bitcoin Core와 Fulcrum을 함께 운영할 수 있었습니다.

다만 초기 동기화와 Fulcrum 인덱싱 과정에서는 CPU와 디스크 사용량이 높아질 수 있습니다. 그래서 다른 무거운 작업과 동시에 진행하는 것은 피하는 것이 좋습니다.

NAS 요구사항

Bitcoin Core와 Fulcrum을 운영하려면 어느 정도의 사양이 필요합니다.

저장공간

최소 1TB 이상은 필요하고, 여유 있게 운영하려면 2TB 이상을 권장합니다.

Bitcoin Core는 블록체인 전체 데이터를 저장합니다. 여기에 txindex=1 설정을 사용하면 트랜잭션 인덱스 데이터도 추가됩니다. Fulcrum도 별도의 인덱스 DB를 만들기 때문에 저장공간은 넉넉하게 준비하는 것이 좋습니다.

메모리

최소 8GB 이상, 가능하면 16GB 이상을 권장합니다.

Bitcoin Core는 dbcache 설정을 통해 메모리를 캐시로 사용할 수 있습니다. Fulcrum도 자체 DB를 운영하기 때문에 메모리가 넉넉할수록 안정적입니다.

CPU

4코어 이상이면 좋습니다.

블록 검증과 Fulcrum 인덱싱 과정에서 CPU를 사용합니다. NAS용 저전력 CPU도 운영은 가능하지만, 초기 작업에는 시간이 오래 걸릴 수 있습니다.

디스크

SSD가 가장 좋습니다.

HDD에서도 운영은 가능하지만, Fulcrum 인덱싱이나 DB 조회 과정에서는 SSD가 훨씬 유리합니다. HDD를 사용한다면 초기 인덱싱 시간이 길어질 수 있다는 점을 감안해야 합니다.

네트워크

유선 LAN을 권장합니다.

비트코인 노드는 계속 네트워크와 데이터를 주고받습니다. Wi-Fi보다는 유선 연결이 안정적입니다.

네트워크 구성에서 가장 중요한 점

이 구성을 하면서 가장 중요하게 생각한 것은 보안입니다.

특히 Bitcoin Core의 RPC 포트는 외부에 공개하면 안 됩니다.

Bitcoin Core는 Fulcrum과 통신하기 위해 RPC를 사용합니다. 보통 8332 포트를 사용합니다. 이 포트는 노드 제어와 관련된 기능을 제공하기 때문에 외부에서 접근할 수 있게 만들면 보안상 위험합니다.

그래서 저는 RPC를 내부에서만 사용하도록 구성했습니다.

  • Bitcoin Core RPC: 127.0.0.1:8332
  • Fulcrum: 127.0.0.1:8332로 Bitcoin Core에 연결

즉, 외부 인터넷에서 Bitcoin Core RPC에 직접 접근하지 못하도록 한 것입니다.

Fulcrum은 지갑 연결을 위해 다음 포트를 사용했습니다.

  • 51001: Electrum TCP
  • 51002: Electrum SSL

외부에서 지갑을 연결해야 한다면 포트포워딩보다는 VPN을 사용하는 편이 더 안전합니다.

각 포트의 의미

처음에는 포트 번호가 헷갈렸습니다. 그래서 역할별로 정리해보면 다음과 같습니다.

포트프로그램용도외부 공개 여부
8332Bitcoin CoreRPC 통신공개 금지
8333Bitcoin Core비트코인 P2P 통신선택 사항
51001FulcrumElectrum TCP 연결내부망 권장
51002FulcrumElectrum SSL 연결내부망 또는 VPN 권장

여기서 가장 조심해야 할 것은 8332입니다.

8332는 Bitcoin Core RPC 포트이므로 외부에 열지 않는 것이 원칙입니다.
반면 8333은 비트코인 P2P 통신용 포트입니다. 이 포트는 다른 비트코인 노드와 통신하기 위한 용도입니다. 반드시 열어야 하는 것은 아니지만, 열면 다른 노드가 내 노드에 접속할 수 있습니다.

Docker host 모드를 사용한 이유

이번 구성에서는 Docker의 host 네트워크 모드를 사용했습니다.

network-host

일반적으로 Docker는 bridge 네트워크를 많이 사용하지만, Bitcoin Core와 Fulcrum처럼 같은 NAS 안에서 서로 통신해야 하는 경우 host 모드가 단순할 수 있습니다.

host 모드를 사용하면 컨테이너가 NAS의 네트워크를 직접 사용합니다. 그래서 포트 매핑이 단순해지고, 127.0.0.1을 이용한 내부 통신도 이해하기 쉬워집니다.

다만 주의할 점도 있습니다.

host 모드에서는 컨테이너가 NAS의 포트를 직접 사용하기 때문에, 다른 서비스와 포트가 겹치면 문제가 생길 수 있습니다. 따라서 Bitcoin Core와 Fulcrum이 사용하는 포트를 미리 확인해두는 것이 좋습니다.

실제 운영 시 정상 상태는 어떻게 보일까

Bitcoin Core가 정상적으로 운영되면 로그에서 다음과 같은 문구를 볼 수 있습니다.

UpdateTip: new best=...
progress=1.000000

이 의미는 새 블록을 받아서 현재 가장 좋은 체인으로 업데이트했다는 뜻입니다.
progress=1.000000에 가까우면 최신 블록까지 거의 동기화되었다고 볼 수 있습니다.

Fulcrum이 정상적으로 운영되면 다음과 같은 로그가 보입니다.

Processed 1 new block ... verified ok.
Block height ..., up-to-date

이 의미는 Fulcrum이 새 블록을 정상적으로 처리했고, 현재 최신 상태라는 뜻입니다.

제가 운영하면서 중요하게 보는 상태는 다음과 같습니다.

확인 항목정상 상태
Bitcoin Core 동기화최신 블록 유지
Fulcrum 상태up-to-date
블록 처리verified ok
RPC 연결started ok
지갑 연결Electrum/Nunchuk에서 정상 조회

이 구성을 사용하면 좋은 점

이 구성을 사용하는 가장 큰 이유는 프라이버시와 독립성입니다.

외부 지갑 서버를 사용하면 내가 어떤 주소를 조회하는지 외부 서버가 알 수 있습니다. 하지만 내 Fulcrum 서버를 사용하면 지갑 조회가 내 서버 안에서 처리됩니다.

또한 내 Bitcoin Core가 직접 검증한 데이터를 기반으로 잔액과 거래 내역을 확인할 수 있습니다. 외부 서버가 알려주는 결과를 그대로 믿는 것이 아니라, 내 노드가 검증한 결과를 사용하는 것입니다.

그리고 Fulcrum을 함께 사용하면 Electrum이나 Nunchuk 같은 지갑을 빠르게 사용할 수 있습니다.

단점도 있다

물론 장점만 있는 것은 아닙니다.

가장 큰 단점은 초기 구축 시간이 오래 걸린다는 점입니다. Bitcoin Core 초기 동기화와 Fulcrum 인덱싱은 NAS 성능에 따라 며칠 이상 걸릴 수 있습니다.

또 저장공간도 많이 필요합니다. Bitcoin Core 데이터뿐 아니라 Fulcrum 인덱스도 별도로 저장되기 때문입니다.

마지막으로 관리가 필요합니다. 로그를 확인하고, 디스크 용량을 점검하고, 컨테이너가 정상적으로 실행 중인지 가끔 확인해야 합니다.

그래서 단순히 “설치만 하면 끝”이라기보다는, 장기적으로 운영할 서비스라고 생각하는 것이 좋습니다.

마무리

이번 글에서는 Synology NAS를 이용해 Bitcoin Core와 Fulcrum을 운영하는 전체 개념을 정리했습니다.

핵심을 다시 정리하면 다음과 같습니다.

  • Bitcoin Core는 비트코인 블록체인을 직접 다운로드하고 검증하는 풀노드입니다.
  • Fulcrum은 Electrum 지갑이 내 Bitcoin Core 데이터를 빠르게 조회할 수 있도록 도와주는 서버입니다.
  • NAS는 24시간 운영과 저장공간 측면에서 비트코인 노드 운영에 잘 맞습니다.
  • Bitcoin Core RPC 포트는 외부에 공개하지 않는 것이 중요합니다.
  • Bitcoin Core와 Fulcrum을 함께 사용하면 프라이버시와 독립성을 높이는 데 도움이 될 수 있습니다.

이번 글이 전체 구조를 이해하는 단계였다면, 다음 글에서는 실제로 Synology NAS에서 Docker를 이용해 Bitcoin Core를 설치하는 과정을 단계별로 정리했습니다.

NAS로 비트코인 풀노드 구축하기 2편: Synology NAS에 Bitcoin Core 설치하기

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다