1-1. Data Layer
- 이더리움에서 다루는 각종 데이터 구조를 정의하고 관련 데이터를 관리
- packages
- accounts: 이더리움 어카운트와 월렛 등
- core: EVM 및 제네시스 블록, 스테이트, 블록체인과 검증 방법 등
- les, light: 이더리움 경량 프로토콜을 사용하여 블록 헤더만 다운로드하는 라이트 체인 (light chain)
- trie: 머클 패트리시아 트리
1-2. Consensus Layer
- 블록의 유효성을 검증하는 합의 엔진과 이 과정을 수행하는 마이닝과 마이닝의 난이도, 그리고 마이너들에 지급할 인센티브인 가스, 이더 등의 처리를 담당
- packages
- miner: 블록 생성과 마이닝 처리
- consensus: 이더리움 합의 엔진(ethash)
1-3. Execution Layer
- 스마트 컨트랙트와 EVM의 처리를 담당
- packages
- eth: 이더리움 프로토콜의 중앙 실행체
- contracts: 스마트 컨트랙트
- console: docker와 vagrant 등의 컨테이너 관리
- ethclient: RPC API 이더리움 클라이언트
- node: 이더리움 P2P 노드
1-4. Common Layer
- 노드 간의 연결과 동기화를 위한 P2P 네트워크 프로토콜을 비롯하여 암호 해시, 전자 서명, 각종 인코딩, 공통 저장소 등 모든 계층에서 공통적으로 이용할 기능들을 담당
- packages
- p2p: P2P 네트워크 프로토콜
- ethdb: 이더리움 스토리지, 레벨DB를 내부에서 사용함
- rpc: 외부로의 접속 관리(http, pub/sub, websocket, ...)
- crypto: 다양한 암호화 함수(keccak256, bn256, sha3, ...)
- rlp: RLP 인코딩을 통한 직렬화(encode, decode)
- params: 각종 매개변수 정의들
- common: 각종 공통 유틸리티 함수들(16진수 처리, 정수형 타입 등)
- event: 실시간 이벤트 처리
- metrics: 시스템 및 프로세스 성능 매트릭스 및 모니터링
1-5. Application Layer
- DApp, 스마트 컨트랙트, 분산 파일 시스템 스웜(Swarm), 분산 메시징 시스템 휘스퍼(Whisper)를 제공
- packages
- mobile: 모바일용 API
- ethstats: 네트워크 상태 리포팅 서비스
- internal: 내부 함수들(api, web3, javascript, ...)
- swarm: P2P 분산 파일 서비스
- whisper: P2P 메시징 서비스
- cmd/bootnode: 이더리움 디스커버리 프로토콜을 위한 부트스트랩 노드 실행
- cmd/geth: 이더리움 공식 커맨드라인 클라이언트
- cmd/puppeth: 프라이빗네트워크 관리 및 배포 도구
- cmd/rlpdump: RLP 데이터 출력 도구
접속 URL
- geth --identity “PrivateNetwork” --datadir “c:\ethereum\data” --port “30303” --rpc --rpcaddr 0.0.0.0 --rpcport “8123” --rpccorsdomain “*” --rpcapi “db,eth,net,web3,miner” --nodiscover --networkid 1900 console