의견.png

노드

위키원
leejia1222 (토론 | 기여)님의 2019년 7월 4일 (목) 16:43 판 (종류)
이동: 둘러보기, 검색

노드(node)는 공학에서 통신망(telecommunications network)의 역할은 한다. 통신망 가운데도 시간을 잇는 기간 회선과 단말에 연결되는 지회 선과의 접속 부분. 기간 통신회선에서 갈라져 나온 점이기도 하다. 노드 지점에 설치한 통신제어장치에 의해 통신망 전체를 제어한다. 이 통신 제어에 사용되는 컴퓨터를 노드라고 부르는 경우도 있다.

개요

노드란 네트워크 또는 데이터 구조를 구성하는 각각의 개체를 말한다. 하나의 노드는 다른 노드와 연결되는데, 연결 방식에 따라 연결 리스트(Linked List)와 트리(Tree) 등이 있다. 블록체인(blockchain)은 이전 블록이 다음 블록으로 체인처럼 연결되는 구조로 되어 있다. 비트코인, 라이트코인 등에 적용된 블록체인은 기본적으로 연결 리스트 방식으로 연결되어 있다. 네트워크 또는 데이터 구조를 구성하는 모든 노드를 '풀노드'(full node)라고 하고, 그중 일부를 '라이트 노드'(light node)라고 한다.

기능

  • 지갑(Wallet) : 소유한 비트코인 송수신 및 잔고를 확인한다. 또, 사용자의 개인 키와 공개키를 관리하고 거래에 사용되는 주소를 생성한다.
  • 채굴(Miner) : 작업증명(Proof-of-Work :PoW) 알고리즘을 사용하여 새로운 블록을 위해 경쟁하고 블록 생성 시 비트코인을 보상으로 받는다.
  • 블록체인 데이터베이스(Full Blockchain) : 온전한 최신 블록체인 복사본을 유지하여 외부 참조 없이 독자적으로 거래 검증이 가능하다. 모든 블록을 다 가지고 있기 때문에 상당한 용량을 차지한다.
  • 네트워크 라우팅(Network Routing) : 거래와 블록을 검증하고 전파하며, 이웃 노드들과의 연결을 유지한다. 모든 노드 유형에 필요하다.[1][2]

형태

  • 레퍼런스 클라이언트(Reference Client) : 비트코인 창시자 사토시 나카모토가 만든 공식 클라이언트로 초창기에는 이 노드 형태밖에 없었으며 시간이 지나면서 다양한 유형의 노드가 생겼다.
  • 풀 블록체인노드(Full Block Chain Node) :풀노드라고도 불리며, 온전한 최신 블록체인 복사본을 유지한다.
  • 라이트웨이트 지갑(Lightweight Wallet) : 풀노드가 모든 거래기록을 포함 하는 것과 달리 1,000배가량 작은 헤더만 포함하여 지갑 기능만 수행한다.
  • 풀 프로토콜 서버(Pool Protocol Servers) : 피투피 네트워크에 접속하는 게이트웨이 역할로, 마이닝 풀의 노드들이 연결된 중앙서버라고 볼 수 있다.
  • 마이닝노드(Mining Nodes) : 풀 프로토콜 서버에 연결 및 의존하여 마이닝에 참여하는 노드다. 마이닝(채굴)은 블록체인 상에서 새로운 거래가 발생하면, 그 거래내역을 기록한 블록을 생성하는 과정을 말한다. 가령 네트워크 상에서 새로운 거래가 계속해서 발생한다고 하자. 마이닝노드는 이러한 거래내역을 모아 하나의 블록에 차곡차곡 채워가는 작업을 한다. 마이닝노드는 채굴에 대한 보상으로 비트코인 등의 암호화폐를 보상받아 넓은 의미로 채굴자라고 불리기도 한다.
  • 라이트웨이트 스트라텀 지갑(Lightweight Stratum Wallet) : 스트라텀 프로토콜을 사용하는 지갑이다. 헤더만 포함하여 지갑 기능만 수행할 수 있다.[2]

종류

풀노드

풀노드(full node)는 블록체인에서 이뤄진 모든 거래 정보를 전부 저장하는 검증인을 뜻한다. 제네시스 블록부터 시작해서 현재 블록까지 모든 블록체인 정보를 수집, 저장한다. 이런 방대한 양의 데이터를 다운받고 검증하는 시스템을 갖춘 만큼, 방대한 양의 데이터를 소화할 수 있는 대규모 채굴업 관련 종사자들에게 필요한 기술이라고 할 수 있다.

보통의 경우, 중앙서버 한 곳에 저장하여 내용을 확인한다. 하지만 블록체인에서는 주요 데이터를 여러 풀노드가 함께 보관하고 있다. 때문에 해킹을 하기 위해서는 여러 곳을 한꺼번에 공격해야 하므로, 사실상 해킹이 불가능하다고 본다.

풀노드는 블록체인 데이터를 동기화하기 위헤 메모리를 사용한다. 새로운 블록을 추가하기 위해 블록체인의 모든 거래를 검증하고 실시간으로 데이터를 업데이트 한다. 또한 블록체인 분산원장 중 블록체인 거래를 다른 노드로 전송 및 수신하고 확인하는 중요한 역할을 담당하고 있다.[3] 즉, 전체적으로 거래내역에 오류가 없음을 확인하고 새로운 블록이 생성될 때 최종 승인하는 역할을 한다.[4] 더 자세한 풀노드의 역할은 다음과 같다.

  1. 거래가 진행될 때 각 거래자들의 계좌정보, 잔액 등의 정보확인을 통해 유효한 거래인지 확인한다.
  2. 전체 기록을 다 가지고 있기에, 새로운 블록이 추가될 때 조작이 없는지 이전 거래와 내역이 일치하는지 등을 누구의 도움 없이 모든 거래에 대한 검증이 가능하다.
  3. 새로운 블록이 생성된 후 채굴을 성공한 채굴자에게 올바르게 보상이 제공되었는지 확인한다.
  4. 블록에서 이중 지불이 발생하지 않았는지를 확인한다.
  5. 본인이 가진 기록정보를 다른 노드들에게 전달하는 일을한다.[5]

풀노드는 자신의 PC에 모든 블록체인의 내용을 가지고 있기 때문에 다른 노드의 도움없이 스스로 거래 검증이 가능하다. 하지만 용량이 너무 커서 다운로드를 받는데 시간이 오래 걸리고 하드디스크의 용량을 많이 차지한다는 단점이 있다. 이런 풀노드의 단점을 해결하기 위해 나온 것이 라이트노드(light node)이다.[6] 라이트노드는 가볍고 풀노드와 다르게 자료의 일부분만을 다운받는다. 대신 거래를 위해 내용 검증이 필요한데, 그때마다 풀노드에게 자료를 요청해야만 한다.

라이트노드

라이트노드(light node)는 블록체인에 참여하여 거래를 수행하는 노드로, 풀노드에 거래 데이터를 요청하여 개별 거래를 검증하는 기능을 수행한다. 풀노드처럼 모든 블록 정보의 원본을 가지고 있지는 않고 일종의 요약본, 즉 블록헤더에 있는 중요한 데이터만 보유하고 있다. 스마트폰의 경우, 100GB 저장 공간을 가진 폰이 아직 많지 않기 때문에 안드로이드 모바일 비트코인 지갑은 라이트 노드로 사용된다. 참고로 데스크톱 컴퓨터의 비트코인 지갑은 풀노드로 사용된다.

라이트노드는 모든 블록정보를 가지고 있지 않기 때문에 어떤 새로운 거래 정보를 수신받았을 경우 이 거래가 정상적인지 검증할 수 없다.[7] 반대로 풀노드의 경우 모든 데이터를 가지고 있기 때문에 로컬에 있는 블록 정보를 조회하여 검증을 할 수 있다.[8] 따라서 라이트노드는 개별 거래에 대한 트랜잭션을 확인하기 위한 SPV(Simple Payment Verify, 단순 지불 검증)를 사용한다. SPV는 라이트노드에서 거래를 검증하기 위해 풀노드에게 블록정보를 요청하여 머클트리를 통해 이 거래가 검증된 거래인지를 확인하는 방법이다.[9]

마스터노드

마스터노드(master node)는 익명성과 즉시 전송 서비스를 제공하는 대시 마스터노드를 설명하기 위해 생겨난 시스템이다. 마스터노드는 채굴하지 않는 풀노드를 늘리기 위해 고안되었으며 마스터노드 운영 시 소정의 인센티브가 지급된다. 대표적인 마스터노드 코인은 대시코인, 해피코인이 있다. 마스터노드라고 하면 주인, 혹은 상위 노드로 표현된다. 좀 더 구체적인 의미는 풀 노드 중에서 권한과 보상을 받는 노드로 정의할 수 있다. 풀노드는 블록체인 데이터를 전부 저장해 네트워크에 기여하는 의무를 갖고 있다. 마스터노드는 풀노드의 의무를 수행하면서 블록생성에 대한 보상(투표 실시)을 받고, 트랜잭션의 추가기능(익명, 즉시 전송)을 수행한다.

풀노드를 운영하기 위해서는 많은 비용이 들어가기 때문에 채굴을 하지 않을 경우, 풀노드를 운영하는 유지비를 감당할 보상도 지급되지 않는다. 이 때문에 비트코인의 풀 노드들은 대부분 채굴을 위한 풀 노드들이지 개인이 사용하는 노드가 아니다. 네트워크를 이루는 소규모 구성원들의 대부분은 라이트노드를 선호할 가능성이 높다. 따라서 채굴하지 않는 풀 노드를 늘리기 위해 마스터노드가 고안된 것이다. 마스터노드 운영 시 소정의 인센티브가 지급된다.

즉, 마스터노드 체제가 나온 이유는 풀노드 유지에 대한 보상을 주기 위함이다. 비트코인 블록체인의 예를 보면 비트코인 이용자는 증가하지만 풀노드의 숫자는 감소하고 있다. 풀노드를 유지하기 위해서는 데이터저장 용량을 늘려야 하고 이에 따라 비용이 증가하게 된다. 그런데 풀노드 유지에 대한 보상이 없다보니 자연스럽게 풀노드가 감소하는 딜레마가 발생하게 되는 것이다. 풀노드가 감소하면 네트워크는 약해지고 결국 사용자도 줄어들게 된다.

채굴노드

채굴노드(mining mode)는 ASIC과 같은 강력하고 특수한 하드웨어 위에서 작동하며 채굴노드의 유일한 목적은 새로운 블록을 가능한한 빠르게 채굴하는 것이다.[10] 채굴노드는 작업증명(PoW) 방식을 채택한 블록체인에만 존재하는데, 채굴은 실질적으로 작업증명 방식에서 퍼즐을 푸는 일이기 때문이다. 채굴노드 개인이 홀로 채굴하는 것은 장기적으로 상당한 부담이 되기 때문에 네트워크 통로가 필요하다. 따라서 여럿이 자원을 공유해 채굴하는 마이닝 풀(mining pool)에 가담하거나, 지갑을 끌고 들어와 채굴하는 방식으로 채굴노드를 블록체인에 연결한다.[11]

채굴노드를 블록체인에 연결하는 방법은 두 가지가 있다. 풀 프로토콜(pool protocol)과 연결되어 채굴하는 경우와 스트라텀 프로토콜(stratum protocol)과 연결되어 경량지갑(light weight wallet)을 가지고 채굴하는 경우이다. 전자는 말 그대로 풀 프로토콜을 사용하여 블록체인 기능이 있는 노드와의 연결을 통해 채굴을 하는 방식으로서, 이 경우는 채굴을 전담으로 하는 채굴 전문 업체들이 주로 사용하는 방식이다. 후자의 경우는 스트라텀 프로토콜을 통해 네트워크 기능이 있는 노드와 연결된 후 풀에 접근하는 것이다. 스트라텀 네트워크는 채굴 기능만을 가지고 있는 노드와 블록체인 기능을 가지고 있는 노드, 그리고 SPV지갑(Simplified Payment Verification Wallet)을 연결하는 프로토콜이다. 채굴 기능만 있다면 이를 저장하는 역할을 하는 노드가 필요하기 때문에 이 두 가지를 연결해주는 역할을 수행한다.

랜덤노드

랜덤노드(random node)는 전체 블록체인무결성을 유지하기 위해 임의로 선택된 노드로서, 선출된 마스터노드와 함께 블록을 생성한다. 랜덤노드의 합의과정을 거쳐 블록을 생성하는 대표적인 암호화폐시그마체인(Sigma Chain)이 있다. 시그마체인은 위임지분증명(DPoS) 방식에 한 단계의 검증 절차를 추가한 이중위임지분증명(DDPoS) 합의 알고리즘을 자체적으로 개발했다. 이중위임지분증명 방식에서는 암호화폐 소유자들이 지분율에 비례하여 투표권을 행사하여 자신의 대표자를 선정하고, 이 대표자들이 합의하여 의사결정을 내리는 위임지분증명 방식의 장점을 그대로 사용하면서, 알고리즘에 따라 랜덤하게 실시간으로 교체되는 임의의 노드인 랜덤노드를 추가하여 검증하도록 한다. 이를 통해 대표자들 간의 담합에 의한 블록체인 데이터 조작 가능성을 예방할 수 있다.

이중위임지분증명 방식에서는 21개의 대표노드 가운데, 17개는 암호화폐 소유자들의 지분에 비례하여 투표로 선출된 마스터노드로 구성되고, 나머지 4개는 전체 노드들 중에서 랜덤하게 선출된 랜덤노드로 구성된다. 선출된 마스터노드와 전체 블록체인의 무결성을 유지하기 위해 임의로 선택된 랜덤노드가 함께 무작위로 결정된 순서에 따라 블록을 생성하는 방식이다. 이러한 블록생성 방식은 작업증명 방식처럼 비용 소모가 없고, 마스터노드가 오염되더라도 임의로 선택되는 랜덤노드에 의해 오염이 방지되어 무결성을 유지할 수 있다.

베이킹노드

베이킹노드(baking node)는 테조스(Tezos) 블록체인에서 사용하는 용어로, 코인 소유자로부터 위임받은 코인으로 베이킹(baking)을 하는 노드이다. 베이킹은 테조스 블록체인에서 블록을 생성하고 블록을 입증하는 방법으로, 채굴과 동일한 의미를 가진다. 테조스 블록체인에서 채굴을 하기 위해서는 최소 8,000XTZ가 필요한 테조스 지분증명 시스템에 참여해야만 한다. 소유한 XTZ가 많을수록 블록을 생성하고 블록 생성 보상을 얻을 확률이 높아진다. 하지만 누군가 혼자서 베이킹 하기에 충분한 XTZ가 없거나 블록을 생성할 컴퓨팅 인프라를 만들고 싶지 않다면, 코인을 베이킹노드에게 위임할 수 있다. 위임은 코인 소유자가 코인을 베이킹노드에게 빌려주는 것으로, 베이킹노드가 블록을 만들고 블록 생성 보상을 얻을 가능성을 높인다.

실제로 베이킹노드는 대개 위임받은 코인에서 발생한 추가 수익을 코인 소유자와 나눈다. 이 과정은 코인 소유자가 위임된 XTZ를 마음대로 사용하거나 통제할 수 없고, 베이킹노드의 자금을 도용하지 못하게 보장한다. 코인 소유자는 셀프베이킹(self baking)을 통해 높은 수익을 얻을 수 있지만, 이를 위한 시스템을 세팅하고 안정적으로 베이킹 소프트웨어를 실행할 전문적인 기술지식과 시간이 필요하다. 테조스 코인을 위임함으로써 코인 소유자는 이 프로세스를 완전히 생략할 수 있지만 일반적으로 낮은 수익을 얻는다.

슈퍼노드

슈퍼노드(super node) 혹은 대표노드(representative node)는 블록체인 네트워크노드들을 대표해 블록을 생성하고 그에 대한 보상을 받는 노드이다. 슈퍼노드는 위임지분증명(DPoS) 합의 알고리즘을 채택하고 있는 블록체인에서 특징적으로 볼 수 있는 시스템이다. 블록체인 네트워크의 노드들은 암호화폐 보유량에 따라 투표권을 행사해 중요한 의사결정 권한을 수행할 일종의 대리인을 뽑는다. 이렇게 선정된 대표노드는 블록 생성 및 거래 확정 권한을 위임받아 해당 역할을 수행한다. 이 경우 전체 네트워크의 노드로부터 합의를 도축하는 방식이 아니라, 선출된 소수의 대표노드만 합의 과정에 참여하는 방식이므로 트랜잭션 처리 속도가 훨씬 빨라진다.

하지만 이러한 방식에서 대표노드 가운데 일부가 블록 생성자 자격을 유지하기 위해 서로에게 투표할 수 있는 가능성이 있다는 치명적인 결함이 있다. 대표노드 시스템은 일반 노드들의 투표율이 저조할 경우 소수의 대표노드들에 의해 블록체인 생태계가 좌지우지 될 수 있다.

동영상

각주

  1. 니르바나, 〈블록체인 네트워크를 구성하는 노드의 종류〉, 《티스토리》, 2018-03-07
  2. 2.0 2.1 박세계, 〈비트코인 노드 및 네트워크 유형〉, 《스티밋》, 2018-03-07
  3. 죽순, 〈암호화페 이야기〉, 《네이버 블로그》, 2018-08-11
  4. 레스코, 〈채굴자, 노드 란? 쉽고 간단한 정리 – 풀노드 편〉, 《네이버 블로그》, 2018-03-12
  5. 강휘, 〈채굴자, 노드 란? 쉽고 간단한 정리 - 풀노드〉, 《브런치》, 2018-03-26
  6. 코인뉴스, 〈노드에도 종류가 있다. 풀노드와 라이트노드〉, 《티스토리》, 2018-03-14
  7. Yuna, 〈블록체인 용어 정리〉, 《브런치》, 2018-07-20
  8. Crocus, 〈[https://www.crocus.co.kr/1365 SPV(Simple Payment Verification)란?〉, 《티스토리》, 2018-10-02
  9. yahweh87, 〈# 12 – 블록체인 노드에 대한 개념정리(Feat. 지갑)〉, 《스팀잇》
  10. Ivan Kuznetsov, 〈(Go로 구현하는 블록체인) Part 7 : 네트워크〉, 《MINGRAMMER》, 2018-06-18
  11. 인용 오류: <ref> 태그가 잘못되었습니다; .EB.B0.94.EC.9D.B4.EB.82.B8.EC.8A.A4라는 이름을 가진 주석에 제공한 텍스트가 없습니다

참고자료

같이 보기


  의견.png 이 노드 문서는 블록체인 기술에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.