블록체인은 노드 종류도 짱많아

한나리·2023년 9월 22일
0

blockchain

목록 보기
6/6

Node

노드

일반적으로 노드라고 하면 컴퓨터 네트워크를 이루는 기초 단위를 말한다. 즉, 네트워크에 연결되어 동작하는 단일한 기기를 의미하는 것인데, 네트워크에 연결만 되어 있으면 모두 노드가 될 수 있는 것이다.
예시) 네트워크에 연결되어 있는 프린터, 스마트폰, 허브 등 다양한 모든것들이 노드가 될 수 있음

그렇다면 노드는 무슨 역할을 할까?

노드의 역할

노드는 네트워크 안에서 데이터를 구성하며 다른 노드 또는 사용자에게 그 데이터를 전달하는 역할을 수행한다. 메타마스크와 같은 블록체인 위의 모든 '분산형 애플리케이션'은 사용자의 요청을 기반으로 서비스를 제공하기 위해 해당 블록체인의 데이터를 사용해야 하는데, 블록체인 네트워크에 연결만 된다면, 해당 블록체인을 구성하고 있는 '노드'로부터 데이터를 전달받음으로써 쉽게 이루어질 수 있다.

블록체인의 데이터를 받아오는 경우

  • 토큰 잔액 조회
  • 트랜잭션 전송
  • 블록의 데이터 검색

보통 web2의 경우 데이터를 주고 받는 서버가 중앙에서 관리되는 구조인데, web3인 블록체인 기반의 서비스에서는 중앙에서 관리하는 주체가 따로 없기때문에 전 세계의 누구라도 블록체인 네트워크에 참여한다면 노드가 되어 블록체인을 구성하는 모든 블록의 정보에 접근할 수 있게 된다.

하나의 노드를 비유적 표현으로 독립적인 '(블록체인 클라이언트)컴퓨터 1대'라고 하는데, 이 노드는 네트워크 안에서 다른 노드들과 연결되어 있다. 일반적으로 이렇게 연결된 노드들이 함께 일하면서 블록(데이터)을 만들어내고, 트랜잭션(거래내역)을 증명하고, 유효한 데이터를 제공하고 또 저장하기도 한다.

클라이언트 : 네트워크로 연결된 서버로부터 정보를 제공받는 컴퓨터. 즉, 둘 이상의 컴퓨터가 서로 통신할 때 호스트에 종속되어 통신하는 컴퓨터를 뜻하는 말

실제로 블록체인을 공부하다보면 여러 종류의 노드를 접하게 되는데, 여기서부터는 노드를 크게

1. 데이터 가용성의 범위에 따른 분류
2. 특정한 목적에 따른 분류

이 두가지로 나눠서 더 구체적으로 알아보려고 한다.

데이터 가용성의 범위에 따른 분류

노드가 보유하고 있는 블록(데이터)의 양에 따라 크게 네가지로 분류될 수 있다.
즉, 데이터를 기반으로 블록체인 네트워크 내에서 수행할 수 있는 기능의 범위에 따라 노드는
풀노드, 아카이브 노드, 프룬드 노드, 라이트 노드로 나누어서 생각해 볼 수 있다.

- 풀 노드(Full Node) : 블록체인의 모든 정보를 가지고 있는 노드

  • 블록체인에서 실행된 모든 트랜잭션을 저장하며, 첫 번째 블록(Genesis block)부터 가장 최근의 블록까지의 모든 데이터를 수집하고 최근 상태값을 저장하는 역할

  • 블록체인 데이터를 계속 동기화하여 최신 상태를 유지

  • 다른 노드로부터 최근의 트랜잭션을 수신하거나 사용자로부터 수신한 트랜잭션을 다른 노드로 전달하는 역할

  • 풀노드 자체적으로 모든 정보를 가지고 있기 때문에, 다른 노드의 도움 없이 트랜잭션을 검증하는 것이 가능

  • '모든 데이터를 가지고 있다 = 필요로 하는 디스크 용량이 크다', 따라서 구축과 운영이 까다로움

  • 이더리움 기준 풀노드는, 최근 128개 블록의 상태값만 저장하고 그 이전의 것은 지움

- 아카이브 노드(Archive Node) : 과거의 데이터까지 전부 보존하는 노드

  • 풀노드와 동일한 데이터 뿐만 아니라 블록체인의 이전 상태까지 모두 보존하여 풀노드 보다 더 향상된 기능을 제공
  • 모든 블록의 모든 상태를 보존하여 History Method를 통해 과거의 잔고 정보를 조회하거나, 모든 블록을 확인하고 그 안에 포함된 트랜잭션 내역 전체를 다시 실행하는 것 등이 가능
  • 보통 아카이브 노드는 임의의 과거 데이터를 쿼리하는 것을 필요로 하는 이해관계자에 의해 운영
  • 풀노드를 구축, 운영 하는 것보다 훨씬 높은 기술적 전문성과 막대한 운영비용을 필요로 함

    History method : 블록 헤더, 블록 바디, 엉클 블록 및 트랜잭션 영수증을 포함하는 모든 블록의 과거 기록을 가져오는 방법

- 프룬드 노드(Pruned Node) : 데이터 저장의 범위를 설정할 수 있는 노드

  • Cosmos SDK를 기반으로 만들어진 블록체인에서 자주 등장하는 개념
  • 블록체인의 일부 데이터만을 선택적으로 저장
  • '몇 개의 블록, 혹은 몇 개의 상태만 저장'과 같이 특수 프루닝 조건을 갖는 노드
  • 특정 조건에서 풀노드, 아카이브 노드, 라이트 노드 개념 모두 구현 가능

- 라이트 노드(Light Node) : 네트워트 확장성을 위한 노드

  • 블록체인 네트워크에 참여하기 위해서 모든 노드가 모든 데이터를 유지하고 있어야 한다는 조건은 블록체인의 대중화나 네트워크 확장에 있어 큰 제약의 요소가 될 수 있기 때문에 만들어진 개념
  • 데이터를 네트워크로 전파하고 단순히 사용자의 요청을 처리하는 역할만 하는 노드
  • 블록의 헤더를 주로 포함하는 일부 블록의 데이터만 저장하기때문에 트랜잭션 전파는 가능하지만 밸리데이터 노드처럼 스스로 검증 하는것은 불가능
    -> 개별 검증을 위해서는 풀노드에 요청하는 것이 일반적
    -> 데이터 검증과 트랜잭션 처리를 위해서는 다른 노드에 의존적
  • 데이터의 경량화로 운영비용 대폭 절감

라이트 노드에 대한 개념은 비트코인에서 시작되었는데, 초창기 SPV(Simplified Payment Verification)노드 혹은 경량(lightweight)노드로 알려져 있다. 블록체인의 일부만 지니고 간소화된 지불 검증(SPV)방법을 사용하여 트랜잭션을 검증하는 것이 특징

특정한 목적에 따른 분류

네트워크에 필요한 이유와 목적, 역할에 따라 RPC노드, 밸리데이터 노드, 시드 노드로 크게 분류할 수 있다.

- RPC 노드 (Remote Procedure Call Node)

  • 노드 API를 제공하는 서비스에서 자주 등장하는 개념
  • 블록체인에 데이터를 요청하거나 업데이트를 할 때 사용하는 노드
    -> 'RPC 클라이언드 - 서버 모델'에 따라 'dapp(클라이언트) - RPC노드 (서버)'의 역할을 함

> 노드 API : dapp 개발자들이 직접 노드를 운영할 필요 없이 바로 데이터에 접근하여 블록체인 플랫폼을 활용할 수 있게 해주는 서비스

밸리데이터 노드(Validator Node) : 데이터를 검증하고 블록을 만드는 노드

  • 특정 체인의 멤풀(mempool)에 제출된 새로운 트랜잭션을 검증하는 기능을 갖춘 풀노드
  • 서명을 통해 트랜잭션의 유효성을 검증하기 위해, 트랜잭션에 서명이 가능한 개인키를 보유
  • 새로운 블록이 생성될 때마다 검증의 대가로 보상을 받음

밸리데이터 노드 라는 용어와 개념은 주로 지분증명(Proof of Stake, PoS) 기반의 합의 알고리즘에서 찾을 수 있는데, 비트코인과 같은 작업증명(Proof of Work, PoW)을 사용하는 블록체인에서는 이와 같은 역할을 하는 노드를 마이닝 노드라고 부름

시드 노드(Seed Node) : 이더리움의 부트 노드(Boot Node)

  • 노드가 네트워크에 속한 다른 노드를 쉽게 찾아 연결할 수 있도록 도와주는 기능
  • 새로운 노드에게 네트워크 내에 활성화된 노드들의 IP 주소 목록을 제공함으로써, 노드 간의 중계자 역할을 수행
  • 새로운 노드는 시드 노드에 연결하여 시드 노드로부터 노드 목록을 받은 후 네트워크와의 동기화 작업을 시작할 수 있음
  • 주요한 역할인 IP추적 기능을 수행하기만 하면 되기때문에 지속적인 연결성만 유지되면 됨.
  • 이더리움 호환 체인에서는 일반적으로 '부트 노드(Boot Node)'라고 부름

결론

데이터 가용성에 따른 분류

노드 이름설명
풀노드모든 블록의 데이터를 가지고 최근 상태값만 저장
아카이브 노드모든 블록 데이터와 모든 상태값 저장
프룬드 노드블록 데이터와 상태값의 범위를 커스텀 할 수 있음
라이트 노드모든 블록 데이터의 헤더값과 최근 블록 데이터를 저장

특정한 목적에 따른 분류

노드 이름설명
밸리데이터 노드(PoS) = 마이닝 노드(PoW)데이터 검증 및 블록 생성 역할
RPC 노드RPC 요청에 응답하는 역할
시드 노드(비트코인) = 부트 노드(이더리움)네트워크를 구성하는 노드들의 주소록을 제공하는 역할

노드의 속성은 곧 블록체인의 특성이다. 노드의 개념을 갑자기 다시 꺼내 보게 된 계기는 역시 요즘 공부중인 ERC-4337에서의 번들러를 더 잘 이해하기 위함이었다.
블록체인의 기본적인 개념들에 대해서는 그래도 잘 이해하고 있다고 생각했는데, 되돌아 보니 너무 오만이었고 나는 모르는것이 너무 많다! 4337 때려치우고 이더리움 기본기부터 다져야하나 생각이 많이 드는 요즘이다..🥲

profile
내가 떠나기 전까지는 망하지 마라, 블록체인 개발자

0개의 댓글