프로젝트 소개
Go Ethereum (geth)는 이더리움 프로토콜의 Go 실행 계층 구현입니다. 이더리움 메인넷, 테스트 네트워크 또는 프라이빗 체인에서 노드를 실행하고 애플리케이션을 구축하기 위한 명령줄 클라이언트, 라이브러리 패키지, 개발자 도구를 제공합니다.
## 빌드
이 프로젝트는 Go 1.23 이상과 C 컴파일러가 필요합니다. `make geth`는 메인 클라이언트를 빌드하며, `make all`은 유틸리티 전체 스위트를 빌드합니다. 사전 빌드된 바이너리 아카이브는 geth.ethereum.org/downloads에서 게시됩니다.
## 실행 파일
저장소에는 `cmd` 디렉터리에 여러 명령이 포함되어 있습니다:
- `geth` – 주요 이더리움 CLI 클라이언트. 전체 노드 또는 아카이브 노드로 실행할 수 있으며, 메인넷, 테스트넷 또는 프라이빗 네트워크에 연결하고 HTTP, WebSocket, IPC를 통해 JSON-RPC 엔드포인트를 노출합니다.
- `devp2p` – 전체 블록체인을 실행하지 않고 네트워킹 레이어와 상호작용하는 유틸리티입니다.
- `abigen` – 이더리움 계약 ABI(및 선택적으로 Solidity 소스)를 컴파일 타임 타입 안전한 Go 패키지로 변환하는 소스 코드 생성기입니다.
- `evm` – 구성 가능한 환경에서 바이트코드 스니펫을 실행하는 이더리움 가상 머신의 개발자 버전으로, opcode 수준 디버깅에 유용합니다.
- `rlpdump` – 바이너리 RLP 덤프를 읽기 쉬운 계층 표현으로 변환하는 도구입니다.
## geth 실행
일반적인 사용법은 `geth console`이며, 이는 스냅 싱크된 전체 노드를 시작하고 대화형 JavaScript 콘솔을 제공합니다. `--sepolia` 플래그는 별도의 부트노드, 네트워크 ID, 제네시스 상태 및 데이터 디렉터리를 사용하여 세폴리아 테스트 네트워크에 연결합니다. 구성은 또한 `geth --config`를 통해 TOML 파일을 제공하여 공급할 수 있으며, 기존 설정은 `dumpconfig`로 내보낼 수 있습니다.
최소 하드웨어 권장 사항은 4+ CPU 코어, 8GB RAM, 최소 2TB свобод한 공간을 갖춘 고성능 SSD, 그리고 8 Mbit/s 다운로드 대역폭입니다. 장기 성장을 위해 권장 사양은 더 높습니다.
Docker 빠른 시작은 다음과 같이 제공됩니다: `docker run -d --name ethereum-node -v /Users/alice/ethereum:/root -p 8545:8545 -p 30303:30303 ethereum/client-go`. 다른 호스트에서 RPC 접근을 허용하려면 `--http.addr 0.0.0.0`을 명시적으로 설정해야 한다는 점에 유의하세요.
## 프로그래밍 방식 접근
geth는 HTTP, WebSocket 및 IPC를 통한 JSON-RPC API를 지원합니다. IPC 인터페이스는 기본적으로 활성화되어 모든 API를 노출하며, HTTP와 WS는 명시적으로 활성화해야 하고 보안에 민감한 부분만 노출합니다. 일반적인 플래그에는 `--http`, `--http.addr`, `--http.port`, `--http.api`, `--http.corsdomain`, `--ws`, `--ws.origins`, `--ipcdisable`, 그리고 `--ipcpath`가 포함됩니다. README에서는 HTTP/WS API를 공개적으로 노출하는 것이 보안 위험이 있다고 경고하는데, 악의적인 행위자들이 노출된 이더리움 노드를 적극적으로 스캔하기 때문입니다.
## 프라이빗 네트워크
머지 이후, geth 노드로 프라이빗 네트워크를 실행하려면 해당 비컨 체인도 함께 설정해야 합니다. 세 가지 대안이 문서화되어 있습니다:
- 시뮬레이티드 백엔드 – Go CI에서 스마트 계약 테스트용.
- Dev Mode – 테스트를 위한 편리한 단일 노드 환경.
- Kurtosis – 멀티노드 테스트 네트워크 설정용.
## 기여
기여는 `master` 브랜치에 대한 풀 리퀘스트를 통해 받아들여집니다. 코드는 공식 Go 포맷팅 및 주석 지침을 따라야 하며, 커밋 메시지는 수정된 패키지(들)로 prefixed되어야 합니다. 더 복잡한 변경 사항은 디스코드에서 핵심 개발자와 논의해야 합니다. 웹사이트 기여는 `website` 브랜치를 대상으로 합니다.
## 라이선스
go-ethereum 라이브러리(`cmd` 외부의 코드)는 LGPL v3.0 라이선스로 제공되며, 바이너리(`cmd` 내부의 코드)는 GPL v3.0 라이선스로 제공됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.