노드란 무엇인가: 블록체인 노드의 역할과 종류

노드란 무엇인가: 블록체인 노드의 역할과 종류

노드는 비트코인 노드 또는 블록체인 노드라고도 불리며, 비트코인 네트워크에 연결되어 다른 노드(피어)와 거래와 블록을 주고받는 컴퓨터를 말합니다. 이 네트워크는 피어 투 피어(P2P) 방식으로, 컴퓨터들이 서로 직접 연결되어 데이터를 주고받는다는 뜻입니다. 모든 블록을 합의 규칙에 따라 검증하는 것은 풀 노드뿐입니다.

비트코인 노드는 P2P 네트워크에서 어떤 역할을 할까?

비트코인 노드는 컴퓨터에서 비트코인 소프트웨어를 실행하며, 해당 컴퓨터가 피어들과 계속 연결된 상태를 유지하게 합니다. 비트코인은 암호화폐이며, 거래와 블록은 노드 간의 이러한 연결을 통해 전파됩니다.

비트코인 노드는 자신이 받은 것을 다른 노드에 전달합니다. 거래는 BTC의 소유권이 한 사람에서 다른 사람에게 이전되는 기록이며, 블록은 여러 거래를 한데 묶어 블록체인에 함께 추가하는 단위입니다. 노드는 새로운 거래나 새로운 블록을 받으면 이를 자신의 피어에게 전달할 수 있습니다.

비트코인 노드는 네트워크상의 모든 노드가 아니라 일부 피어들과만 연결됩니다. 거래와 블록은 피어에서 피어로 퍼져 나가며, 두 노드가 같은 순간에 서로 다른 정보를 갖고 있을 수도 있습니다.

블록체인은 모든 블록을 순서대로 담은 공유 기록입니다. 모든 블록에는 헤더가 있는데, 이는 블록 맨 앞에 위치한 요약 데이터입니다. 헤더에는 이전 블록 헤더의 해시값이 들어 있습니다. 해시란 데이터로부터 계산된 고정 길이의 지문과 같은 값입니다. 체인은 거래 하나를 바꾸면 그 블록의 해시값이 바뀌고, 바뀐 해시값은 다음 블록에 저장된 값과 더 이상 일치하지 않도록 설계되어 있습니다.

노드에는 어떤 종류가 있고, 각각 무엇을 검증할까?

노드는 얼마나 많이 검증하는지, 얼마나 많은 데이터를 보관하는지에 따라 차이가 있습니다.

풀 노드란?

풀 노드는 모든 블록을 내려받아 블록과 그 안의 모든 거래를 합의 규칙에 따라 검증하고, 유효한 것들을 다른 노드에 전달하는 노드입니다. 합의 규칙이란 모든 풀 노드가 무엇이 유효한지 판단하기 위해 적용하는 규칙으로, 이를 통해 풀 노드들끼리 서로 일치된 상태를 유지합니다.

풀 노드는 자신이 직접 검증한 블록으로만 이루어진 고유한 체인을 유지하며, 어떤 블록이 유효하다는 다른 노드의 말을 그대로 받아들이지 않습니다. 전체 블록체인을 저장하는 풀 노드를 아카이벌 노드(archival node)라고도 부릅니다.

프루닝 노드란?

프루닝 노드는 풀 노드이면서, 검증을 마친 오래된 블록 데이터를 삭제하는 노드입니다. 풀 노드와 마찬가지로 모든 블록과 거래를 검증합니다. 다만 최신 블록과 미사용 거래 출력(UTXO) 집합만 보관하는데, 이는 새 거래를 검증하는 데 그 집합이 필요하기 때문입니다. 미사용 거래 출력이란 블록체인에 기록은 되어 있지만 아직 사용되지 않은 BTC 금액을 뜻합니다.

프루닝 노드는 디스크 공간을 덜 필요로 하며, 더 이상 과거 블록을 보유하지 않기 때문에 다른 노드에는 최신 블록만 제공합니다.

라이트 클라이언트(라이트 노드, SPV 클라이언트)란?

라이트 클라이언트는 모든 블록과 거래를 내려받아 검증하지 않고도 비트코인 네트워크를 이용할 수 있게 해주는 소프트웨어입니다. 간소화된 결제 검증(simplified payment verification)을 의미하는 SPV 클라이언트, 혹은 씬 클라이언트, 경량 클라이언트, 경량 노드, 라이트 노드라고도 불립니다. 비트코인 개발자 문서에서는 이를 노드와 구분하는데, 라이트 클라이언트는 블록과 거래를 중계하지 않고 이를 전부 검증하지도 않기 때문입니다.

라이트 클라이언트는 각각 80바이트 크기인 블록 헤더와 결제를 확인하는 데 필요한 데이터를 내려받습니다. 결제를 확인하기 위해 라이트 클라이언트는 풀 노드에 머클 가지(Merkle branch)를 요청하는데, 이는 특정 거래가 해당 거래를 담고 있는 블록과 연결되어 있음을 보여주는 짧은 해시 연결 고리입니다. 이 머클 가지와 헤더가 있으면 라이트 클라이언트는 어떤 거래가 블록에 포함되어 있는지를 확인할 수 있습니다.

라이트 클라이언트는 거래가 모든 규칙을 준수하는지까지는 확인할 수 없기 때문에, 증명을 위해서는 풀 노드에 의존하고, 가장 많은 작업량이 들어간 체인, 즉 다시 만들어 내는 데 가장 큰 노력이 필요한 체인에 의존합니다. 이 방식은 정직한 참여자들이 네트워크 연산력의 대부분을 차지하는 동안에는 유효하며, 네트워크를 압도하는 공격자가 있다면 이를 속일 수도 있습니다.

노드 유형

검증 대상

저장 데이터

의존 대상

풀 노드

합의 규칙에 따라 모든 블록과 모든 거래

자신이 검증한 블록으로만 이루어진 고유한 체인

블록 유효성에 대해 다른 노드의 말을 신뢰하지 않음

프루닝 노드

풀 노드와 동일하게 모든 블록과 모든 거래

최신 블록과 UTXO 집합; 오래된 블록 데이터는 삭제됨

블록 유효성에 대해 다른 노드의 말을 신뢰하지 않음

라이트 클라이언트(SPV 클라이언트)

거래가 블록에 포함되었는지 여부, 단 모든 규칙은 아님

블록 헤더와 결제 확인에 필요한 데이터

증명을 위한 풀 노드, 그리고 작업량이 가장 많은 체인

풀 노드는 거래와 블록을 받으면 어떻게 처리할까?

풀 노드는 피어로부터 거래와 블록을 받으며, 각각에 대해 일반적으로 다음과 같은 처리를 합니다.

거래가 도착하면 풀 노드는 다음과 같은 단계를 거칩니다:

  1. 입력값을 확인합니다. 각 입력은 아직 사용되지 않은 출력을 가리켜야 하며, 일반적으로 디지털 서명인 해당 데이터는 사용하려는 출력의 지출 조건을 충족해야 합니다.
  2. 금액을 확인합니다. 출력의 합계가 입력의 합계를 초과해서는 안 되기 때문입니다.
  3. 노드는 유효한 거래를 멤풀(mempool), 즉 아직 블록에 포함되지 않은 거래를 대기시켜 두는 공간에 보관하고 피어에게 전달할 수 있습니다. 이를 실제로 수행할지 여부는 노드의 중계 정책, 즉 추가적인 로컬 규칙 모음에 따라 달라집니다. 검증에 실패한 거래는 폐기됩니다.

임의로 만든 숫자를 사용한 예시로 금액 확인 과정을 보여드리겠습니다. 이 예시에서 거래 X와 Y는 각각 0.5 BTC짜리 입력 하나를 사용합니다. 거래 X는 수신자에게 0.3 BTC를 보내고, 잔돈(발신자가 결제에 쓰지 않고 남긴 입력의 일부)으로 0.1999 BTC를 발신자에게 되돌립니다. 거래 Y는 수신자에게 0.3 BTC를 보내고, 잔돈으로 0.2001 BTC를 되돌립니다.

거래 (가상의 예시, 실제 아님)

입력 총액 (BTC)

출력 총액 (BTC)

이 검증 결과

X

0.5

0.4999

출력이 입력을 초과하지 않음. 0.0001 BTC 차이는 거래 수수료입니다. 노드는 다른 검증 단계로 넘어갑니다.

Y

0.5

0.5001

출력이 입력을 0.0001 BTC 초과함. 노드가 해당 거래를 거부합니다.

이 예시 속 금액은 임의로 만든 것이며 수수료 권장치가 아닙니다. 실제 풀 노드는 각 입력이 아직 사용되지 않았는지와 각 서명이 유효한지도 함께 확인하지만, 이 예시에서는 그 부분을 다루지 않습니다.

피어로부터 도착한 블록은 다음을 포함한 여러 검증 과정을 거칩니다:

  1. 작업 증명을 확인합니다. 블록 헤더의 해시값은 네트워크가 정한 목표값(target) 이하여야 하며, 작업 증명이란 채굴자가 그러한 해시를 찾기 위해 들이는 연산 노력을 말합니다.
  2. 블록의 구조를 확인합니다. 헤더에 담긴 해시값으로 블록 안의 거래들로부터 계산되는 머클 루트(Merkle root)는 해당 거래들과 일치해야 하며, 블록의 크기를 나타내는 척도인 블록 가중치(weight)는 합의 규칙이 정한 한도 내에 있어야 합니다.
  3. 거래를 확인합니다. 첫 번째 거래를 제외한 모든 거래는 위에서 설명한 거래 검증을 통과해야 합니다. 코인베이스 거래라 불리는 첫 번째 거래에는 확인할 입력이 없으며, 블록 보조금(블록 보상으로 새로 생성되는 BTC)과 해당 블록의 거래 수수료를 합한 금액을 초과하여 청구할 수 없습니다.
  4. 유효한 블록은 노드의 체인에 추가됩니다. 노드는 일반적으로 해당 블록에 포함된 거래들을 멤풀에서 제거하고, 그 블록을 피어들에게 알립니다.

풀 노드는 코인베이스 거래가 보조금과 수수료를 합한 금액보다 많은 금액을 청구하는 경우처럼, 이러한 규칙 중 하나라도 위반하는 블록을 거부합니다.

블록 보조금은 2026년 10월 기준 블록당 3.125 BTC이며, 이는 2024년 4월부터 적용되고 있고, 반감기마다 절반으로 줄어듭니다.

각 풀 노드가 스스로 규칙을 검증하는 것이 왜 중요할까?

풀 노드는 모든 블록에 대해 합의 규칙을 스스로 적용합니다. 어떤 블록이 유효하다고 말하는 피어, 채굴자, 또는 기업의 말에 의존하지 않습니다.

풀 노드는 운영자가 해당 변경 사항을 담은 소프트웨어를 실행하는 경우에만 합의 규칙의 변경 사항을 적용합니다. 규칙 변경의 한 종류인 소프트 포크가 일어난 후에는, 해시레이트(채굴자들이 네트워크에 더하는 총 연산력)의 대부분이 새 규칙을 적용하는 한, 업그레이드하지 않은 노드도 업그레이드된 노드와 동일한 블록을 계속 받아들이지만, 새 규칙 자체를 검증하지는 않습니다. 또 다른 종류인 하드 포크가 일어난 후에는, 업그레이드하지 않은 노드가 새로운 규칙에 따라 만들어진 블록을 검증하지 못할 수 있습니다.

풀 노드는 작업량이 가장 많은 체인을 따르도록 설계되어 있습니다. 해시레이트의 대부분을 보유한 당사자는 최근 블록들을 수정할 수도 있습니다. 하지만 그 경우에도 풀 노드가 적용하는 규칙은 여전히 그대로 적용되므로, 규칙이 허용하는 것보다 더 많은 BTC를 생성하거나 유효한 서명 없이 BTC를 지출하는 블록은 검증을 수행하는 노드에 의해 거부되도록 설계되어 있습니다.

노드와 채굴자는 어떻게 다를까?

채굴자와 노드는 서로 다른 역할을 합니다. 채굴자의 블록은 대기 중인 거래들로부터, 채굴자 본인 또는 그가 속한 채굴 풀에 의해 구성되며, 채굴자는 작업 증명을 위해 연산 노력을 들입니다. 노드는 완성된 블록과 그 안의 거래들을 검증하며, 운영자가 채굴 소프트웨어도 함께 실행하지 않는 한 노드 소프트웨어 자체는 채굴을 하지 않습니다.

한 운영자가 채굴과 노드 운영을 동시에 할 수도 있습니다. 채굴 풀을 거치지 않고 혼자 채굴하는 솔로 채굴자는 일반적으로 풀 노드 소프트웨어를 이용해 대기 중인 거래를 가져오고, 자신이 찾은 블록을 전파합니다.

노드를 운영한다는 것은 무엇을 의미할까?

풀 노드를 운영한다는 것은 Bitcoin Core와 같은 노드 소프트웨어를 실행해 피어에 연결하고, 블록체인을 내려받아 검증하며, 새로 도착하는 각 블록과 거래를 계속 검증하는 것을 의미합니다.

새로 시작하는 풀 노드는 먼저 제네시스 블록이라 불리는 첫 번째 블록부터 가장 최근 블록까지 모든 블록을 내려받아 검증해야 합니다. 이 따라잡기 과정을 초기 블록 다운로드(initial block download)라고 하며, 소요 시간은 컴퓨터 사양과 연결 환경에 따라 달라집니다.

풀 노드는 블록 데이터를 저장할 디스크 공간과 이를 내려받고 중계할 대역폭이 필요합니다. 소프트웨어 자체의 문서에는 하드웨어 요구 사항, 설정 단계, 포트 번호 등이 안내되어 있으며, 이러한 내용은 블록체인이 성장하고 소프트웨어가 변경됨에 따라 달라집니다.

BTC를 보내고 받는 데에는 반드시 노드를 운영할 필요가 없는데, 지갑이 라이트 클라이언트로 작동하면서 다른 사람들의 노드에 의존할 수 있기 때문입니다.

노드가 하지 않는 일은 무엇일까?

비트코인 노드는 다른 사람의 BTC를 보관하지 않습니다. 블록체인에는 어떤 출력이 존재하는지가 기록되며, 그 출력을 사용할 수 있게 해주는 개인 키는 지갑에 보관됩니다. 개인 키란 소유자가 지출을 승인할 수 있게 해주는 비밀 숫자입니다.

거래를 수락하거나 중계하는 노드가 그 거래를 확정하는 것은 아닙니다. 거래는 어떤 블록에 포함되는 순간 확정되며, 비트코인 거래는 그 이후 블록이 추가될 때마다 되돌리기가 점점 더 어려워지도록 설계되어 있습니다. 그 전까지는 미확정 거래가 여전히 대체되거나 폐기될 수 있습니다.

비트코인에서는 블록 보조금과 거래 수수료가 체인에 블록을 추가한 채굴자에게 돌아가며, 해당 블록의 첫 번째 거래가 이를 수취합니다.

2025년 11월 27일

GoMining 뉴스

관심이 있으신가요?