풀노드
풀노드는 비트코인의 블록과 거래를 규칙에 따라 직접 검증하는 프로그램입니다. 장부를 첫 블록부터 현재까지 모두 보관하는 방식이 일반적이지만, 검증이 끝난 오래된 블록 데이터를 삭제하는 프루닝 모드도 있습니다. 남의 서버가 알려 주는 잔액을 그대로 믿는 대신, 자신의 규칙에 따라 검증할 수 있습니다.
잔액을 직접 확인한다는 뜻
서명 장치는 개인키로 거래에 서명하는 도구이며, 함께 쓰는 앱은 잔액 조회도 제공합니다. 외부 서버에 조회를 맡기는 앱이라면 표시된 잔액은 그 서버가 알려 준 정보에 의존합니다. 서버가 틀렸는지, 어떤 기준으로 계산했는지 사용자가 직접 확인하기는 어렵습니다.
풀노드를 사용하면 자신의 노드가 검증한 장부와 규칙을 바탕으로 잔액을 계산합니다. 비트코인이 지향하는 ‘남을 믿지 않고 직접 확인하는’ 성격을 실제로 활용하는 방식입니다.
규칙집을 든 검사원
풀노드는 장부를 검증하고 필요한 데이터를 보관하는 검사원과 같습니다. 들어오는 블록과 거래를 다음과 같이 대조합니다.
- 서명이 올바른지 확인합니다.
- 이미 사용한 돈을 다시 쓰지 않았는지 확인합니다.
- 새로 발행되는 양이 규칙에 맞는지 확인합니다.
- 작업증명의 조건을 충족했는지 확인합니다.
규칙 하나라도 어긋나면 해당 블록이나 거래를 받아들이지 않습니다. 계산이 많이 쌓인 기록이라도 예외가 되지 않으며, 이웃에게 전달하지도 않습니다.
전 세계의 여러 노드가 각자 같은 규칙을 독립적으로 적용하기 때문에 잘못된 기록이 널리 퍼지기 어렵습니다. 단순히 노드 수가 많은 쪽이 투표로 규칙을 정하는 구조는 아닙니다. 각 노드는 자신이 수용할 규칙에 맞는 블록만 받아들이며, 규칙을 바꾸려면 새로운 규칙을 따를 참가자와 사용자가 실제로 그 규칙을 채택해야 합니다.
전체장부를 내려받는 과정
일반적인 풀노드는 첫 블록부터 현재까지의 전체장부를 내려받고 기록을 검증합니다. 요약본만 받는 것이 아니라 거래와 블록 데이터를 확인합니다. 데이터의 양은 블록이 쌓일수록 늘어나며, 처음 동기화하는 데 걸리는 시간은 컴퓨터와 인터넷 환경에 따라 달라집니다.
검증과 데이터 보관은 구분할 수 있습니다. 프루닝 모드에서는 블록을 검증한 뒤 오래된 블록의 원본 데이터를 삭제하고 최근 데이터와 검증에 필요한 정보만 보관하면서 풀노드로 작동할 수 있습니다. 따라서 필요한 저장 공간은 모든 블록을 계속 보관하는지, 프루닝을 사용하는지에 따라 달라집니다.
이 과정이 끝나면 풀노드는 새로 들어오는 기록도 계속 검사하고 장부를 최신 상태로 유지합니다. 데이터를 보관할 저장 장치와 새 기록을 주고받을 네트워크 연결이 필요합니다. 필요한 성능을 갖춘 소형 컴퓨터로도 실행할 수 있고 설치를 돕는 완제품 기기도 있습니다.
풀노드와 채굴은 다릅니다
풀노드 운영에는 채굴처럼 비트코인 보상이 주어지지 않습니다. 채굴자는 새 블록을 만들기 위해 정답을 찾는 계산 경쟁을 하고, 풀노드는 만들어진 블록을 규칙에 따라 검사합니다. 채굴자도 대개 풀노드를 함께 운영하지만 두 역할은 서로 다릅니다.
풀노드를 운영하는 사람이 얻는 것은 보상이 아니라 직접 확인하는 힘입니다. 자신의 서명 장치를 풀노드에 연결하면 잔액을 외부 조회 서버에 묻는 일을 줄일 수 있고, 주소 정보를 외부 서비스에 제공하지 않고 확인할 여지도 커집니다.
규칙을 바꾸는 제안과 풀노드
누군가 비트코인의 발행 규칙을 바꾸어 총량을 늘리자고 제안한다고 해 보겠습니다. 풀노드를 운영하는 사람은 자신이 따르는 규칙과 맞지 않는 블록을 거부할 수 있습니다.
풀노드 한 대를 운영하는 일은 자신이 검증할 규칙을 직접 선택하고 적용하는 행위입니다. 노드 수 자체가 표가 되어 다수결로 다른 노드의 규칙을 바꾸는 것은 아니지만, 어떤 규칙을 실제로 따르는 노드와 경제적 참가자가 있는지는 규칙 변경이 받아들여지는 과정에 영향을 줍니다.
풀노드를 한 문장으로 정리하면
풀노드는 거래와 블록을 자신의 규칙에 따라 직접 검증하는 프로그램입니다. 검증한 모든 과거 블록을 계속 보관할 수도 있고 프루닝으로 오래된 원본 데이터를 삭제할 수도 있습니다. 보상을 받지는 않지만, 남의 말에만 기대지 않고 비트코인의 규칙을 직접 확인할 수 있습니다.
관련 개념은 전체장부, 거래, 간편 지불 검증(SPV)에서 이어서 볼 수 있습니다.