[이더리움] POW에서의 노드 종류

드림보이즈·2023년 9월 11일
0

학습 계기

면접에서 질문을 받았다. 생각하다가....생각하다가... 답을 못했다. 아예.
비트코인의 노드 종류라고 물어봤으면 답했을 것이다.
그런데 이더리움 노드의 종류라고 하니 이 부분은 전혀 학습도 안되어 있었다.
질문하신 면접관의 기대와 안타까움이 그대로 보였다.

'긴장 풀라고 쉬운 거 던져줬잖아....?...?? 이걸 몰라?'

지금 떠올려도 창피하고 생생하다. 어떻게 지갑, 풀노드, SPV노드를 몰라?
(사실 진짜 몰랐다. 비트코인이랑 비슷한 줄은)

네트워크에서의 : 노드 Node ?

네트워크에서 노드란 "각각의 서버(컴퓨터)"를 말한다.
블록체인 또한 분산 네트워크의 일종이니, 노드란 "각각의 서버(컴퓨터)"라고 해도 true다.

참고 : 자료구조에서의 노드

Linked list에서

Graph에서

POW 이더리움 노드 종류

비트코인 노드와 크게 다르지 않다.
풀노드, 라이트노드 등의 이름이 중요한 것이 아니라, "어떤 기능"을 포함하는지를 기준으로 봐야 한다.
또한 각각 완전히 분리되는 개념이 아니다. 풀노드, 채굴노드가 있지만, 풀노드이면서 채굴노드도 가능하다.

모든 노드는 "네트워크 라우팅"(다른 네트워크로 최적 경로를 통해 데이터 전송하는 기법) 기능을 포함한다.

풀노드

  • 모든 블록 데이터를 가지고 있다면 풀 노드이다.
  • 채굴을 할 수도 있고, 안 할 수도 있는 것이다.

채굴노드

  • 블록 생성을 위해 해시 퍼즐을 푸는 노드를 말한다.
  • 풀 노드일 필요없다.
  • 다른 노드가 생성한 블록을 검증하는 역할도 한다.

지갑노드

  • 블록 데이터를 일체 저장하지 않는 노드
  • 따라서 TX 검증, 블록 검증 못함
  • 블록을 전파하는 것은 가능
  • 이더를 전송 가능

비트코인의 SPV 노드(라이트 노드)와 다르다!!!
SPV 노드는 블록 헤더들을 모두 가지고, 때에 따라 TX이 있는지 확인도 가능하다(풀노드에 브룸필터로 요청해서)
이더리움의 지갑 노드는 어떠한 블록 데이터가 없다.

클라이언트 == 노드 ?

클라이언트는 '프로그램'이다.
당신의 컴퓨터에서 이더리움의 노드로 참여하고 싶다면, 블록을 다운받고, 전파하는 등의 기능을 가진 프로그램이 필요할 것 아닌가? 그것이 바로 클라이언트이다.
(마스터링 이더리움에서는 클라이언트와 노드를 같다고 표현하기도 한다.)

Go로 만든 Geth, Parity 등의 클라이언트 프로그램이 있다.

JSON-RPC ?

이더리움 클라이언트 프로그램은 Remote Procedure Call (RPC) 인터페이스를 JSON 형태로 지원한다.
RPC란 원격으로 다른 컴퓨터에 있는 함수를 실행할 수 있는 방법이다.
(ex. 다른 노드에 저장된 컨트랙트의 특정 함수를 실행하는 것)
JSON 형식으로 블록체인의 정보, 거래 생성 등이 가능한 것이다.

profile
시리즈 클릭하셔서 카테고리 별로 편하게 보세용

0개의 댓글

관련 채용 정보