Aleth – Ethereum C++ client, tools and libraries
C++ CMake Shell Assembly Python C Other
Clone or download
Failed to load latest commit information.
aleth-key Upgrade EVMC to ABIv3 Jul 26, 2018
aleth-vm Rename StandardTrace::json() to multilineTrace(). Aug 9, 2018
aleth Rename MinerCLI variable to miner Aug 9, 2018
cmake CMake: Fix building MPIR on alpine linux Jul 31, 2018
doc Rename ethvm to aleth-vm Jun 11, 2018
evmc @ cd435f8 Upgrade EVMC to v5.0.0 Aug 10, 2018
evmjit @ bb7f6c1 Update EVMJIT May 15, 2018
hera @ 26102af Upgrade EVMC and Hera Apr 24, 2018
homebrew Additional paths for dylib path fixup for macOS ZIP builds. Jul 18, 2016
libaleth-interpreter Use storage status from EVMC Aug 9, 2018
libdevcore Upgrade EVMC to ABIv3 Jul 26, 2018
libdevcrypto Update address in SecretStore Mar 6, 2018
libethashseal Pass reference to p2p::Host instead of raw pointer Jul 16, 2018
libethcore Implement EXTCODEHASH in LegacyVM Jul 31, 2018
libethereum Change formula for CREATE2 address Aug 13, 2018
libevm evm: Use evmc::loader library to load EVMC DLLs Aug 10, 2018
libp2p Fix incorrect logging of NodeIPEndpoint Aug 10, 2018
libweb3jsonrpc Rename StandardTrace::json() to multilineTrace(). Aug 9, 2018
libwebthree Merge pull request #5127 from bmoo0/develop Jul 30, 2018
rlp Reformat program_options setup code with clang-format Jan 31, 2018
scripts docker: Do not symlink version.json Aug 10, 2018
test Change formula for CREATE2 address Aug 13, 2018
utils/json_spirit Use libscrypt from Hunter Mar 6, 2018
.bumpversion.cfg Change commit message of bumpversion Aug 10, 2018
.clang-format Add clang-format config file Dec 18, 2017
.dockerignore docker: Tweak the ignore file Aug 8, 2018
.editorconfig Add .editorconfig file Dec 19, 2017
.gitignore Scripts for external projects Mar 3, 2017
.gitmodules Use EVMC Apr 5, 2018
.travis.yml Remove some old scripts Jun 11, 2018 Add YCM config Dec 10, 2017
CMakeLists.txt Release aleth 1.5.0.dev1 Aug 10, 2018 Minor typos fix Dec 29, 2017 docs: Rename cpp-ethereum to Aleth in Jul 3, 2018
LICENSE Added missing GPLv3 LICENSE file. Aug 7, 2016 Update Aug 2, 2018
appveyor.yml AppVeyor CI: Build aleth-interpreter.dll Jul 2, 2018
circle.yml Circle CI: Run docker-aleth only for tagged versions Aug 10, 2018
codecov.yml Codecov: Change branch to master Aug 14, 2018
refilltests refill tests Jan 4, 2017
sanitizer-blacklist.txt Added stray and sanitizizer-blacklist.txt files. Aug 12, 2016
snapcraft.yaml Update snapcraft config Dec 4, 2017

Aleth – Ethereum C++ client, tools and libraries

The collection of C++ libraries and tools for Ethereum, formerly known as cpp-ethereum project. This includes the full Ethereum client aleth.


Gitter GitHub Issues

Getting Started

The Ethereum Documentation site hosts the cpp-ethereum homepage, which has a Quick Start section.

Operating system Status
Ubuntu and macOS TravisCI
Windows AppVeyor

Building from source

Get the source code

Git and GitHub are used to maintain the source code. Clone the repository by:

git clone --recursive
cd cpp-ethereum

The --recursive option is important. It orders git to clone additional submodules to build the project. If you missed --recursive option, you are able to correct your mistake with command git submodule update --init.

Install CMake

CMake is used to control the build configuration of the project. Latest version of CMake is required (at the time of writing 3.4.3 is the minimum). We strongly recommend you to install CMake by downloading and unpacking the binary distribution of the latest version available on the CMake download page.

The CMake package available in your operating system can also be installed and used if it meets the minimum version requirement.

Alternative method

The repository contains the scripts/ script that downloads a fixed version of CMake and unpacks it to the given directory prefix. Example usage: scripts/ --prefix /usr/local.

Install dependencies (Linux, macOS)

The following libraries are required to be installed in the system in their development variant:

  • leveldb

They usually can be installed using system-specific package manager. The examples for some systems are shown below:

Operating system Installation command
Debian-based sudo apt-get install libleveldb-dev
RedHat-based dnf install leveldb-devel
macOS brew install leveldb

We also support a "one-button" shell script scripts/ which attempts to aggregate dependencies installation instructions for Unix-like operating systems. It identifies your distro and installs the external packages. Supporting the script is non-trivial task so please inform us if it does not work for your use-case.

Install dependencies (Windows)

We provide prebuilt dependencies to build the project. Download them with the scripts/install_deps.bat script.



Configure the project build with the following command to create the build directory with the configuration.

mkdir build; cd build  # Create a build directory.
cmake ..               # Configure the project.
cmake --build .        # Build all default targets.

On Windows Visual Studio 2015 is required. You should generate Visual Studio solution file (.sln) for 64-bit architecture by adding -G "Visual Studio 14 2015 Win64" argument to the CMake configure command. After configuration is completed, the aleth.sln can be found in the build directory.

cmake .. -G "Visual Studio 14 2015 Win64"


Contributors Gitter up-for-grabs

The current codebase is the work of many, many hands, with over 100 individual contributors over the course of its development.

Our day-to-day development chat happens on the cpp-ethereum Gitter channel.

All contributions are welcome! We try to keep a list of tasks that are suitable for newcomers under the tag help wanted. If you have any questions, please do not hestitate to ask us about more information.

Please read CONTRIBUTING and CODING_STYLE thoroughly before making alterations to the code base.

All development goes in develop branch.


This project is not suitable for Ethereum mining because the support for GPU mining has been dropped some time ago including the ethminer tool. Use the ethminer tool from


To run the tests, make sure you clone and point the environment variable ETHEREUM_TEST_PATH to that path.




All contributions are made under the GNU General Public License v3. See LICENSE.