비트코인기술

풀노드를 직접 운영해야 하는 이유

비트코인을 진정으로 소유한다는 것은 무엇인가. 풀노드가 없다면, 당신은 다른 누군가의 비트코인을 사용하는 것이다.

· 6분

신뢰라는 오래된 문제

인류가 화폐를 사용한 이래, 가장 근본적인 문제는 항상 같았다. 내가 받는 이 돈이 진짜인가. 내 재산이 정말 내 것인가. 누군가가 내 몰래 그것을 바꾸거나 빼앗을 수 있는가.

금본위제 시대에도 이 문제는 완전히 해결되지 않았다. 금화는 깎일 수 있었고, 금괴는 정부에 몰수될 수 있었다. 1933년 루스벨트 대통령은 행정명령 6102호로 미국 시민의 금 보유를 불법화했다. 시민들은 금을 헐값에 정부에 넘겨야 했다. 법이 바뀌자 재산이 사라졌다.

법정화폐 시대는 이 문제를 더 악화시켰다. 적어도 금은 물리적으로 존재했다. 오늘날의 돈은 데이터베이스의 숫자일 뿐이다. 그 데이터베이스를 관리하는 은행이 당신의 계좌를 동결하기로 결정하면, 당신은 하루아침에 접근권을 잃는다. 자본 통제, 제재, 계좌 압류 — 이 모든 것이 가능한 이유는 화폐의 기록이 제3자의 손에 있기 때문이다.

사토시 나카모토가 2008년 백서에서 제안한 것은 단순한 디지털 화폐가 아니었다. 그것은 신뢰 없이 작동하는 화폐 시스템이었다. 중앙 서버도, 관리자도, 신뢰해야 할 제3자도 없이, 수학적 증명과 분산된 합의만으로 거래를 검증하는 시스템이었다.

하지만 역설이 있다. 오늘날 대부분의 비트코인 사용자는 여전히 신뢰에 의존한다.

당신이 모르는 사이에 일어나는 일

비트코인 지갑 앱을 열면 잔액이 표시된다. 거래를 보내면 “전송 완료”라는 메시지가 뜬다. 탐색기에서 주소를 조회하면 거래 내역이 나온다. 이 모든 과정이 매끄럽게 작동하기 때문에, 대부분의 사람들은 백그라운드에서 무슨 일이 일어나는지 생각하지 않는다.

실제로 일어나는 일은 이렇다. 당신의 지갑 앱은 어딘가의 서버에 연결된다. 그 서버가 당신의 주소를 조회하고, 잔액과 거래 내역을 돌려준다. 당신의 앱은 그 서버가 돌려준 정보를 그대로 표시한다. 당신은 그 정보가 정확한지 검증하지 않는다. 검증할 수단이 없기 때문이다.

이것이 얼마나 위험한지 생각해보자.

그 서버를 운영하는 회사가 당신의 잔액을 잘못 표시한다면? 의도적이든 실수든, 당신은 알 방법이 없다. 해커가 그 서버를 장악해서 거래 정보를 조작한다면? 당신의 거래가 실제로는 네트워크에서 거부됐는데 앱은 “완료”라고 표시한다면? 그 서버를 운영하는 회사가 정부의 압력으로 특정 주소의 거래를 검열한다면?

이 시나리오들이 허황된 것처럼 보인다면, 역사를 다시 살펴보라. 중앙화된 시스템은 언제나 이런 방식으로 실패하거나 악용되어 왔다. 비트코인이 존재하는 이유 자체가, 중앙화된 금융 시스템이 반복적으로 실패해왔기 때문이다.

풀노드가 하는 일

풀노드(Full Node)는 비트코인 네트워크에 직접 참여하는 소프트웨어다. Bitcoin Core가 가장 대표적이다. 풀노드를 실행하면, 당신의 컴퓨터는 비트코인의 창세기 블록(2009년 1월 3일)부터 오늘까지의 모든 거래를 다운로드하고 검증한다. 약 650GB 이상(계속 증가 중)의 데이터다.

이 검증 과정에서 풀노드는 비트코인 프로토콜의 모든 규칙을 직접 확인한다. 이 거래의 서명이 올바른가. 이미 소비된 UTXO를 다시 쓰려는 이중지불 시도는 없는가. 블록의 작업증명(Proof of Work)이 유효한가. 공급량 상한인 2,100만 개를 초과하는 코인 생성은 없는가.

어떤 채굴자가 규칙을 위반한 블록을 생성하면, 풀노드는 그것을 거부한다. 어떤 거래소가 “이 주소의 잔액은 이렇습니다”라고 주장해도, 당신의 노드는 직접 확인한 결과만 신뢰한다. 중간에 어떤 서버가 있어도, 당신의 노드는 그 서버를 신뢰하지 않는다.

이것이 “신뢰 없는 검증(trustless verification)“의 의미다. 아무도 믿지 않는 것이 아니라, 믿어야 할 필요가 없는 것이다. 수학적 증명이 신뢰를 대체한다.

Sparrow 지갑과 풀노드의 연결

비트코인 자기수탁의 황금 조합은 하드웨어 지갑과 Sparrow, 그리고 자체 풀노드다.

하드웨어 지갑은 개인키를 오프라인으로 보관한다. Sparrow는 하드웨어 지갑과 통신하며 트랜잭션을 구성하는 데스크탑 소프트웨어다. 그리고 풀노드는 그 트랜잭션이 실제 비트코인 네트워크에서 유효한지 검증하고, 전파한다.

Sparrow는 기본적으로 공개 서버(Electrum Server)에 연결된다. 편리하지만, 앞서 설명한 신뢰 문제가 그대로 남는다. 공개 서버에 당신의 주소를 조회하면, 그 서버 운영자는 당신의 지갑 구조와 잔액을 볼 수 있다.

자체 Electrum 서버(예: Electrs)를 풀노드와 함께 운영하면 이 문제가 해결된다. Sparrow는 당신의 서버에만 연결되고, 당신의 서버는 당신의 노드와만 통신한다. 외부 서버는 당신의 주소를 볼 수 없다.

물론 여기까지 가려면 몇 가지 기술적 설정이 필요하다. 하지만 2020년대의 관점에서 이것은 결코 불가능한 일이 아니다. 남는 노트북 하나와 외장 하드 하나면 충분하다. 인터넷 검색으로 며칠 안에 설정할 수 있다.

프라이버시, 주권, 그리고 네트워크

풀노드를 운영하는 이유를 세 가지로 정리할 수 있다.

첫째, 검증. 당신이 받은 비트코인이 실제로 유효한지 스스로 확인할 수 있다. 어떤 서비스도, 어떤 회사도 중간에서 정보를 왜곡할 수 없다. 당신의 노드가 말하는 것이 진실이다.

둘째, 프라이버시. 당신의 주소와 거래 내역을 외부 서버에 노출하지 않는다. 비트코인은 기본적으로 pseudonymous — 가명의 시스템이다. 하지만 외부 서버에 주소를 반복적으로 조회하면, 그 서버는 어떤 주소들이 동일한 사람의 것인지 파악할 수 있다. 자체 노드는 이런 프라이버시 누출을 차단한다.

셋째, 네트워크 기여. 비트코인 네트워크의 탈중앙성은 노드의 수에 달려있다. 노드가 소수의 서버에 집중될수록 네트워크는 중앙화되고, 공격에 취약해진다. 당신의 노드는 그 자체로 비트코인의 검열 저항성을 강화하는 기여다. 이것은 추상적인 이야기가 아니다. 2017년 블록 크기 전쟁에서 사용자들의 노드가 핵심적인 역할을 했다. 채굴자와 일부 기업들이 비트코인 프로토콜을 변경하려 했을 때, 사용자들이 운영하는 노드들이 그 변경된 규칙을 거부함으로써 비트코인의 원래 규칙을 지켜냈다. 민주주의에서 투표권이 중요한 것처럼, 비트코인에서 노드는 유효하지 않은 블록을 거부할 수 있는 실질적인 거부권(veto)이다.

Not your node, not your rules

비트코인 커뮤니티에는 오래된 격언이 있다.

Not your keys, not your coins.

개인키를 직접 보유하지 않으면 그 코인은 당신의 것이 아니라는 뜻이다. 거래소에 맡겨둔 비트코인은 거래소의 것이다. 역사상 수많은 거래소가 파산했고, 그때마다 사용자들은 코인을 잃었다.

그런데 개인키만으로는 충분하지 않다. 여기에 하나를 더 추가해야 한다.

Not your node, not your rules.

개인키가 있어도, 그 키로 서명한 거래의 유효성을 다른 서버에 의존해 확인한다면, 당신은 여전히 그 서버의 세계관 안에서 살고 있는 것이다. 그 서버가 당신의 거래를 검열하거나, 잘못된 정보를 제공하거나, 단순히 꺼져버린다면 — 당신의 개인키는 무용지물이 된다.

진정한 비트코인 주권은 두 단계로 이루어진다. 개인키의 자기수탁이 첫 번째 단계라면, 풀노드의 직접 운영이 두 번째 단계다. 둘 다 갖춰야 비로소 누구의 허가도, 누구의 선의도 필요하지 않은 진짜 금융 주권이 완성된다.

시작하는 것은 생각보다 쉽다

많은 사람들이 풀노드를 어렵게 생각한다. 과거에는 그랬을 수도 있다. 하지만 지금은 다르다.

Bitcoin Core를 다운로드하고 설치하는 데 10분이 걸리지 않는다. 초기 블록 다운로드(Initial Block Download, IBD)는 컴퓨터 성능과 인터넷 속도에 따라 며칠이 걸릴 수 있다. 그 기간 동안 컴퓨터를 계속 켜두기만 하면 된다. 이후에는 자동으로 최신 블록을 유지한다.

필요한 것: 저장 공간 약 650GB 이상(계속 증가 중), 4GB 이상의 RAM, 안정적인 인터넷 연결. 중고 노트북이나 미니 PC면 충분하다. 전기 소비도 크지 않다. 전체 블록체인을 저장할 공간이 부족하다면 가지치기 모드(pruned mode)를 사용할 수 있다. 이 경우 10GB 미만의 공간으로도 풀노드를 운영할 수 있으며, 자체 검증 기능은 동일하게 유지된다.

처음 동기화가 완료된 후, Electrs를 설치해 Sparrow 지갑과 연결하면 완전한 자기수탁 환경이 만들어진다. 프라이버시를 강화하려면 Tor 네트워크를 통해 노드를 운영할 수 있다. 이렇게 하면 ISP(인터넷 서비스 제공자)에게 비트코인 노드 운영 사실이 노출되지 않는다. 이 과정이 익숙해지면, 라이트닝 네트워크 노드(LND, CLN)를 추가해 즉각적인 소액 결제까지 확장할 수 있다.

결론: 비트코인을 이해한다는 것

비트코인을 “다음에 오를 자산”으로 보는 사람들에게 풀노드는 불필요하다. 거래소에서 사고팔기만 하는 사람에게는 사실 개인키도 필요 없다.

하지만 비트코인을 화폐 주권의 도구로, 국가와 금융 기관의 독점으로부터 벗어나는 탈출구로 이해하는 사람이라면 이야기가 다르다. 그 탈출구는 직접 검증할 수 있는 시스템 위에서만 진짜 탈출구가 된다.

남의 말을 믿는 것은 쉽다. 직접 검증하는 것은 수고스럽다. 하지만 비트코인이 기존 금융 시스템보다 나은 이유는 “더 믿을 만한 사람이 운영하기 때문”이 아니다. “믿을 필요가 없기 때문”이다.

그 철학을 끝까지 살아내는 것이 풀노드다.

관련 글