go-ethereum Source Code Walkthrough (Part 1)
Clone the source code from the project repository. Directory Structure accounts Implements a high-level Ethereum account management system bmt Binary Merkle tree implementation build Mainly scripts and configurations for compilation and building cmd Command-line tools, further divided into many sub-tools, introduced one by one below abigen Source code generator to convert Ethereum contract definitions into easy to use, compile-time type-safe Go packages bootnode Starts a node that only implements network discovery evm Ethereum Virtual Machine developer tool, provides a configurable, isolated code debugging environment faucet geth The Ethereum command-line client; the most important tool p2psim Provides a tool to simulate the HTTP API puppeth A wizard for creating a new Ethereum network rlpdump Provides formatted output of RLP data swarm Entry point for the swarm network util Provides some common utilities wnode A simple Whisper node. Can be used as a standalone bootstrap node. Additionally, can be used for various testing and diagnostic purposes common Provides some common utility classes compression Package rle implements the run-length encoding used for Ethereum data consensus Provides some Ethereum consensus algorithms, such as ethhash, clique (proof-of-authority) console The console class contracts core Ethereum core data structures and algorithms (virtual machine, state, blockchain, Bloom filter) crypto Cryptographic and hash algorithms eth Implements the Ethereum protocol ethclient Provides an Ethereum RPC client ethdb The eth database (includes the actually-used leveldb and an in-memory database for testing) ethstats Provides network status reporting event Handles real-time events les Implements a lightweight subset of the Ethereum protocol light Implements on-demand retrieval functionality for Ethereum light clients log Provides human- and machine-friendly log information metrics Provides disk counters miner Provides Ethereum block creation and mining mobile Some wrappers for use on mobile node Various types of Ethereum nodes p2p Ethereum p2p network protocol rlp Ethereum serialization handling rpc Remote method calls swarm swarm network handling tests Tests trie An important Ethereum data structure; Package trie implements Merkle Patricia Tries whisper Provides the whisper node protocol accounts The package implements wallet and account management for the Ethereum client. Ethereum wallets provide two modes: keyStore and USB. The ABI code for Ethereum contracts is also located in the directory. The ABI project doesn't seem to have much to do with account management. For now, only the account management interface is analyzed here. The specific implementations of keystore and USB are not covered at this time.