소개
Geth(go-ethereum)는 이더리움 프로토콜의 공식 Go 구현체로, 이더리움 네트워크의 실행 계층 클라이언트 역할을 하는 명령줄 도구입니다. Ethereum Foundation 산하 Geth 팀이 개발·유지보수하며, 거래 처리, 스마트 계약 배포 및 실행, 이머(EVM) 동작을 담당합니다. 합의 클라이언트와 함께 실행하면 컴퓨터 한 대를 이더리움 노드として動作하도록 만들 수 있습니다.
상세정보
다양한 노드 모드 지원
기본 풀 노드 외에도 이력 상태를 모두 보관하는 아카이브 노드, 필요한 데이터만 실시간으로 조회하는 라이트 노드로 동작할 수 있습니다.
동기화 모드와 빠른 진입
기본값인 스냅 동기화(snap sync) 모드에서는 네트워크 전체 이력을 처리하는 대신 더 많은 데이터를 받아 빠르게 현재 상태에 도달할 수 있습니다. –syncmode 플래그로 동작을 변경할 수 있습니다.
개발자용 보조 도구
- geth: 메인 이더리움 CLI 클라이언트. 풀 노드, 아카이브 노드, 라이트 노드 중 하나로 동작하며 JSON-RPC 엔드포인트를 HTTP, WebSocket, IPC로 노출합니다.
- devp2p: 풀 블록체인을 운영하지 않고도 네트워크 계층에서 노드와 상호작용할 수 있는 유틸리티입니다.
- abigen: 이더리움 컨트랙트 ABI 혹은 솔리디티 소스로부터 타입 안전 Go 패키지를 생성하는 코드 생성기입니다.
- evm: 구성 가능한 환경과 실행 모드에서 바이트코드를 실행해 EVM 연산을 세밀하게 디버깅할 수 있는 개발자용 도구입니다.
- rlpdump: 이더리움 프로토콜에서 사용하는 RLP 인코딩 바이너리 덤프를 사람이 읽기 쉬운 계층적 표현으로 변환합니다.
대화형 자바스크립트 콘솔
내장된 JavaScript 콘솔을 통해 web3 메서드와 Geth 관리용 API로 노드와 상호작용할 수 있습니다. 이미 실행 중인 노드에는 geth attach로 콘솔을 붙일 수 있습니다.
JSON-RPC 인터페이스
JSON-RPC 기반 API를 표준 API와 Geth 전용 API로 모두 지원합니다. IPC는 기본적으로 활성화되어 있으며, HTTP와 WebSocket은 필요 시 플래그로 켜고 노출 API 범위를 제한할 수 있습니다. 주요 옵션에는 –http, –http.addr, –http.port, –http.api, –http.corsdomain, –ws, –ws.addr, –ws.port, –ws.api, –ws.origins, –ipcdisable, –ipcpath가 있습니다.
Geth 라이선스는 무엇인가요?
라이브러리 부분은 LGPL v3.0, 바이너리 부분은 GPL v3.0으로 배포됩니다. 저장소의 COPYING.LESSER, COPYING 파일에도 동일한 조건이 포함되어 있습니다.
어디서 Geth를 다운로드할 수 있나요?
공식 홈페이지의 다운로드 페이지(geth.ethereum.org/downloads)에서 정식 바이너리를 받을 수 있고, winget으로는 winget install --id Ethereum.geth --exact로 설치할 수 있습니다. 소스 코드는 GitHub 저장소에서 확인할 수 있습니다.
테스트용 네트워크는 어떻게 사용하나요?
geth --sepolia console 명령으로 Sepolia 테스트넷에 연결할 수 있습니다. 데이터 디렉터리는 기본 위치의 sepolia 하위 폴더에 생성되며, 메인넷과 계정이 자동으로 분리됩니다.
Geth 노드는 어떤 모드로 동작할 수 있나요?
풀 노드, 아카이브 노드, 라이트 노드 세 가지 모드를 지원하며, –syncmode 플래그로 동기화 방식을 조정할 수 있습니다.
시스템 요구사항
- 운영 체제: Windows(x64 아키텍처)
- 런타임: NSIS 기반 설치 프로그램 제공
- 빌드 시 필요 도구(소스에서 직접 빌드할 경우): Go 1.23 이상 및 C 컴파일러
- 메인넷 풀 노드 최소 하드웨어: 4코어 이상 CPU, 8GB RAM, 2TB 이상 여유 공간의 고성능 SSD, 8MBit/sec 이상의 다운로드 회선
- 권장 하드웨어: 8코어 이상 CPU, 16GB 이상 RAM, 2TB~4TB NVMe SSD, 25MBit/sec 이상 다운로드 회선
- 설치 방법: winget을 이용한 설치 명령 제공


