이더리움 - Node & client

choko's avatar
Jun 29, 2024
이더리움 - Node & client
 

노드 아키텍쳐

  • 이더리움은 POS로 전환되면서, 실행 클라이언트와 합의 클라이언트로 구성된다.
    • 실행 클라이언트 → Geth
      • Geth는 실행 클라이언트로서, 실행 페이로드(트랜잭션 목록, 업데이트된 상태 트리 등)을 생성하는 일을 담당한다.
        • 새로운 블록에 도착하는 트랜잭션을 다시 실행하여, 유효성을 확인하는 일도 담당한다.
        • 트랜잭션 실행은 EVM으로 알려진 Geth의 내장 컴퓨터에서 수행된다.
        • 사용자가 이더리움 블록체인에 쿼리하고, 트랜잭션 제출 및 스마트 계약을 배포할수 있는 일련의 RPC 사용자 인터페이스를 제공한다.
          • Web3.js, Web3.py와 같은 라이브러리 사용
    • 합의 클라이언트
      • 합의 클라이언트는 노드가 이더리움 네트워크와 동기화를 유지할 수 있도록 하는 모든 논리를 처리한다.
      • Peer로부터 블록 수신하여, 노드가 가장 많이 증명된 체인을 따르도록 보장한다.
        • 비콘 노드 및 검증자 구현 기능이 포함되어 있다.
      • 합의 클라이언트들은 실행 클라이언트와의 네트워크와 별개로, 자신들만의 P2P 네트워크를 가진다.
      •  
         
         
         

노드 Sync mode

  • Sync mode는 Geth가 최신 이더리움 블록과 현재 전역 상태를 동기화시키는 프로세스이다.
  • 동기화에는 여러 가지가 있고, 기본값은 스냅 동기화이다.
    • Snap (default)
      • 스냅 동기화는 상대적으로 최근의 블록(128개)의 상태를 메모리에 동기화 시킨다.
      • 동기화 할 블록 헤더는 합의 클라이언트에서 제공된다.
      • 블록 헤더 다운로드 및 확인 → 블록 body 다운 및 수령, state data 다운, state trie 빌드 → 새로운 데이터를 위한 heal state trie
        • state trie : 이더리움 블록체인에서 전체 account 상태를 저장하는 데이터 구조
      • 128개 이전의 블록에는 임시 스냅샷을 저장하여, 중간의 상태를 즉시 재구축 할 수 있다.
    • Full (풀 노드)
      • 전체 블록체인 데이터를 저장함
      • Snap 방식은 최근 블록의 임시 스냅샷만 생성하고, Full 방식은 전체 블록의 임시 스냅샷을 저장한다.
    • Light (라이트 노드)
      • 전체 블록체인을 동기화시키고 모든 트랜잭션을 실행시키는 것 대신 전체 체인의 블록 헤더만을 다운 → 머클 트리 사용
    • Archive (아카이브 노드)
      • 전체 블록체인의 히스토리를 저장함
      • 모든 블록 데이터 동기화를 진행한다. 약 12TB의 디스크 용량이 필요하다.
 
notion image
 
 
 
 
Share article

Tom의 TIL 정리방