노드(Node)의 의미
노드(Node)란?
보통 노드란 하나의 단위로 여겨진다.
자료구조에서의 노드
보통 알고 있는 자료구조에서 사용되는 노드는 연결리스트(Linked List)라고 하며 순서를 갖고 있는 자료들의 저장과 탐색을 위해 사용된다.
각 노드는 다음 노드의 주소를 저장함으로써 다음 노드를 탐색할 수 있다.
다음 주소를 가리켜야 하므로 포인터를 이용해 구현할 수 있다.
노드가 가리키는 다음 주소가 NULL이면 이 노드는 마지막 노드라고 할 수 있다.
연결리스트를 구현하기 위해 다음과 같은 세 함수를 이용할 수 있다.
- 초기화 ( Init )
- 삽입 ( Insert )
- 삭제 ( Remove )
블록체인에서의 노드
트리 구조에서는 하나의 노드가 A,B,C,D,E,F,G 각각을 의미한다.
블록체인에서는 수십만 개 이상이 존재하는 서버들을 노드(Node)라고 한다.
노드는 트랜잭션 제안을 검증할 수 있고, 합의를 이루고, 블록체인을 보호하기 위해 채굴을 수행한다.
노드의 종류
지갑 ( Wallet )
지갑은 사용자의 개인 키와 공개 키를 관리하고 거래에 사용하는 주소를 생성하는 기능을 담당한다.
풀 노드 ( Full Node )
풀 노드는 블록체인에서 이뤄진 모든 거래 정보를 전부 저장하는 노드이다.
제네시스 블록부터 시작해서 현재 블록까지 모든 블록체인 정보를 수집, 저장한다.
*제네시스 블록 : 블록체인에서 생성된 첫 번째 블록, 즉 최초의 블록
라이트 노드 ( Light Node )
풀 노드의 단점을 해결하기 위해 나온 것
블록헤더에 있는 중요한 데이터만 보유하고 있게 된다.
내용 검증이 필요할 때마다 풀노드에게 자료를 요청해야 함
SPV ( Simple Payment Verification )
SPV 노드는 라이트웨이트(Lightweight) 노드와 동일한 개념으로 단순 지불 검증 노드이다.
SPV 노드는 거래를 확인할 수 있지만 직접 검증할 수 없다.
거래가 담긴 블록의 깊이와 높이를 참고하여 단순 검증은 할 수 있지만 거래에 대한 기록이 없기에 거래 자체가 적합한지 "직접 검증"은 불가능하다. UTXO의 소비 여부 또한 검증할 수 없다.
마스터 노드 ( Master Node )
마스터 노드는 풀 노드중에서 권한과 보상을 받는 노드로 주인 혹은 상위 노드로 표현된다.
마스터 노드는 풀 노드의 의무를 수행하면서 블록 생성에 대한 보상(투표 실시)을 받고
트랜잭션의 추가 기능 (익명, 즉시 전송)을 수행한다.
채굴 노드 ( Mining Node )
채굴 노드의 역할은 새로운 블록을 가능한 한 빠르게 채굴하는 것이다.
작업 증명 ( PoW )의 방식을 채택한 블록체이만 존재하고 실질적으로 퍼즐을 푸는 역할을 한다.
랜덤 노드 ( Random Node )
랜덤 노드는 전체 블록체인의 무결성을 유지하기 위해 임의로 선택된 노드이다
선출된 마스터 노드와 함께 블록을 생성한다
엔드포인트 노드 ( Endpoint Node ) === 레인저 노드 ( 구 버전 )
엔드포인트 노드는 카카오의 자회사인 그라운드X가 개발한 클레이튼에 적용된 노드이다.
엔드포인트 노드는 정기적으로 다른 엔드포인트들과 통신하며 합의 노드에서 새롭게 생성된 블록을 다운로드하고 블록체인의 사본을 저장하는 식으로 이중으로 확인하는 노드이다.
누구나 엔드포인트 노드로 네트워크에 기여할 수 있고 클레이 보상을 받는다.
합의 노드 ( CN : Consensus Node )
합의 노드는 트랜잭션을 새로운 블록으로 배치하고, 비잔틴 장애 허용 ( BFT : Byzantine Fault Tolerance) 합의 알고리즘을 사용하여 블록들을 확인하는 작업을 담당하는 합의 네트워크를 형성하는 노드다.
블록체인을 유지하기 위해서는 합의 노드가 존재해야되고 스마트 컨트랙트 계약 실행이나 거래 확인은 합의 노드에서 수행한다.