노드 아키텍쳐
- 이더리움은 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의 디스크 용량이 필요하다.

Share article