What are the modules?

What are the primary executables?

  • eth A command-line Ethereum full-node that can be controlled via RPC.
  • mix An IDE for contract and user interface development, testing and deployment to the blockchain.
  • solc The solidity command line compiler
  • lllc The LLL command-line compiler.

Deprecated executables, to be retired soon

  • AlethZero A Qt-based all-encompassing GUI for interacting with Ethereum (receives minimal support).
  • EthKey Key management CLI.

What are the various modules?

  • AlethZero - A Qt-based GUI for interacting with Ethereum. Receives minimal support.

  • libethereum - Modules related to the Ethereum part of web3, i.e. consensus engine, blockchain download, virtual machine.
    • ethkey: stand-alone key management
    • ethminer: stand-alone ethash miner
    • ethvm: stand-alone EVM execution utility
    • evmjit: library for the EVM just-in-time compiler
    • libethash: ethash mining POW algorithm implementation
    • libethash-cl: ethash mining code for GPU mining (OpenCL)
    • libethashseal: generic wrapper around the POW block seal engine. Also contains the genesis states for all ethash-based chains.
    • libethcore: collection of core data structures and concepts
    • libethereum: main consensus engine (minus EVM). Includes the State and BlockChain classes.
    • libevm: Ethereum Virtual Machine implementation (interpreter).
    • libevmasm: EVM assembly tools, also contains the optimizer.
    • libevmcore: elementary data structures of the EVM, opcodes, gas costs, ...
    • liblll: Low-level LISP-like Language compiler & assembler.
    • libnatspec: natspec script evaluator (confirmation messages)
    • libtestutils: utilities for testing code
    • lllc: LLL compiler commandline interface
  • libweb3core - Web3 core libraries, networking, encoding, decoding, basic data structures.
    • bench: trie benchmarking
    • libdevcore: data structures, utilities, rlp, trie, memory db
    • libdevcrypto: crypto primitives. Depends on libsecp256k1 and libcrypto++.
    • libp2p: core peer to peer networking implementation (excluding specific sub-protocols)
    • rlp: stand-alone rlp en-/decoder
  • mix - Dapp IDE

  • solidity - Solidity compiler
    • docs: documentation, appears at http://solidity.readthedocs.org/
    • libsolidity: actual implementation
    • analysis: reference resolution, type checking, ... (builds up the annotations for the AST)
    • ast: abstract syntax tree and type system
    • codegen: assembly code generation from annotated AST
    • formal: formal verification
    • interface: external interface for users of libsolidity
    • parsing: parser (creates the non-annotated AST)
    • solc: commandline compiler
  • web3.js - JavaScript Dapp framework library (connects to backend via RPC / IPC)

  • webthree - actual client / node implementation (“eth”)
    • eth: commandline client / node
    • libjsconsole: JavaScript console for access to eth - deprecated, to be replaced by nodejs application
    • libjsengine: underlying engine for libjsconsole, to be removed
    • libweb3jsonrpc: json-rpc server-side endpoint, provides http and IPC (unix socket, windows pipe) connectors
    • libwebthree: service connectors for ethereum, swarm/ipfs and whisper.
    • libwhisper: whisper implementation
  • webthree-helpers - build system and some external dependencies
    • cmake: cmake files for build system, contains specification of inter-dependencies

    • utils: external dependencies
      • json_spirit: JSON parser written for Boost’s Spirit library.
      • libscrypt: scrypt implementation
      • secp256k1: implementation of the SECP 256k1 ECDSA signing algorithm.