C++ CMake Shell Assembly Python C Other
Switch branches/tags
v1.4.0.dev1 v1.4.0.dev0 v1.3.0 untagged-fffab26687a786d884be untagged-fee98118b77d8621f6cf untagged-fbd47dbec2a246018c54 untagged-fa63532be6a8cc9a6207 untagged-eec7e820f519c8ae8e82 untagged-eb170d74e067bfb728b3 untagged-ea5047683a8bfa99ae0b untagged-e40d8e4e204f7b7b2202 untagged-e3ed426731164f04c9ce untagged-de14c81b717d38b310a0 untagged-dd02b5eb3586e9632986 untagged-d272645b74041796e640 untagged-d81a0d0022a37f0ebab4 untagged-d60dcc2d9c2eb3d50b28 untagged-d11e70dc6806a66dccb6 untagged-d7cecdde1ec83d027462 untagged-d6b1fed91a4bc3d8f708 untagged-d1cdbfbcf5814bd471ad untagged-cfbc85efad0c9afff24b untagged-cc06ba1a3ee0624b2eef untagged-ca0beff85de94450b19c untagged-c5118094284b0ee919bc untagged-c2718302a2f8d2e3984a untagged-c258d933e725c578fd0e untagged-c53d0f09db8fedb5276c untagged-c48fd329db9d2bec543d untagged-c33ec540f020922ba385 untagged-c31f15fc3e71a69baaf3 untagged-bf0baf2c194533e196e0 untagged-bd3b852724df80127520 untagged-bb818408cb73119aa73c untagged-b55db6691acd71c47cdf untagged-b7e90419bff08dac3e24 untagged-b4bc71cc8f5eb420bd42 untagged-b0f6be8de6321ccd71bc untagged-ae774bdab74a900828f4 untagged-adf3995a5a78d998044f untagged-a3305a65e8874846e2a0 untagged-a64bf5afd7d0562859a4 untagged-a7d6554a774be62280eb untagged-29167190ddd317dc93f7 untagged-7091628c2f8b02afd67d untagged-4375797a1612f29490c5 untagged-256855f9d7a2e3b8050a untagged-199392b25748543ec31f untagged-98837ecb09be020cb0d4 untagged-73248e4842d637ecdd84 untagged-62711d8113dc00988141 untagged-32489d84bae68efc969c untagged-21026d987aa1466ad91c untagged-7187cb6cc2cb1644c9b1 untagged-6242cd3788d46933400f untagged-5219a3c2cdb30faae224 untagged-5171a7ef20c0c5d367a1 untagged-5072efadcaafbbe20679 untagged-4265c618f8527965e9d2 untagged-2369c65da171acd51908 untagged-2029ad719d1970fbc657 untagged-972fa080eadbd823583d untagged-560f5c7e0d5d196293e2 untagged-494c3b4c53c79b79e6fc untagged-243fcc57aa77825e5547 untagged-99bd6433098e2d3c28e4 untagged-91e4090dd7b0af646bb1 untagged-085d13dbe7941077873a untagged-83ccdfb48e8b2213f1aa untagged-82ba6b5ea4ed235c672f untagged-70f0e55e369557772498 untagged-66a3a044a27604b18941 untagged-63ddfaa7cb6d8d8419ca untagged-60cc281de35e6f1bb417 untagged-59f3dab51282d63da9d9 untagged-54f2ea723c5e962015ab untagged-49b74d6d0e8b5ad10256 untagged-43ecd999e58a5069e484 untagged-40ab69e0e73839c26d57 untagged-30b793518303ead18392 untagged-22bb05f515c12b2e9bfd untagged-9abb8126bbb780b3c978 untagged-7ba9a0aab72d7631abb8 untagged-7b4d81cddf6f6673950d untagged-6ecba39956ddac520615 untagged-6eac5ca66920890f1619 untagged-6c6d937a7d2a78532b8c untagged-5f257a6c07d32978b358 untagged-5c2ba186807b10edd918 untagged-5ba2152d466886b25463 untagged-5a09d8ec37ac32aa871f untagged-4fc485f762b14e285143 untagged-4e894229337b82d07596 untagged-4e28bf008ab3f074bc91 untagged-3f25045706eee758eae8 untagged-3f712df09615905a22c1 untagged-3c54a24ccf645cf635b5 untagged-2e6eac886ce327ca9016 untagged-2c4fb45684ce9712670d untagged-2be746b53bbd29e41ea9
Nothing to show
Clone or download
Failed to load latest commit information.
aleth-key Rename ethkey to aleth-key Jun 11, 2018
aleth-vm Move interpreter to its own aleth-interpreter library Jun 20, 2018
aleth Merge pull request #5085 from ethereum/smallrpc3 Jun 21, 2018
cmake CMake: Bump required GCC version to 5 Jul 3, 2018
doc Rename ethvm to aleth-vm Jun 11, 2018
evmc @ 8dc2793 Upgrade evmc and Cable (0.2.3) Jun 26, 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 CMake: Build aleth-interpreter.so as a separated optional target Jun 29, 2018
libdevcore export transaction signature with blocinfo by RPC Jul 12, 2018
libdevcrypto Update address in SecretStore Mar 6, 2018
libethashseal Pass reference to p2p::Host instead of raw pointer Jul 16, 2018
libethcore convert tabs to spaces Jul 3, 2018
libethereum Pass reference to p2p::Host instead of raw pointer Jul 16, 2018
libevm Copy VM config for legacy VM Jun 20, 2018
libp2p Pass reference to p2p::Host instead of raw pointer Jul 16, 2018
libweb3jsonrpc export transaction signature with blocinfo by RPC Jul 12, 2018
libwebthree Pass reference to p2p::Host instead of raw pointer Jul 16, 2018
rlp Reformat program_options setup code with clang-format Jan 31, 2018
scripts Remove some old scripts Jun 11, 2018
test Pass reference to p2p::Host instead of raw pointer Jul 16, 2018
utils/json_spirit Use libscrypt from Hunter Mar 6, 2018
.bumpversion.cfg Release cpp-ethereum 1.4.0.dev1 Jun 16, 2018
.clang-format Add clang-format config file Dec 18, 2017
.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
.ycm_extra_conf.py Add YCM config Dec 10, 2017
CMakeLists.txt CMake: Always build with -fPIC (Linux and macOS) Jun 29, 2018
CODING_STYLE.md Minor typos fix Dec 29, 2017
CONTRIBUTING.md docs: Rename cpp-ethereum to Aleth in CONTRIBUTING.md Jul 3, 2018
LICENSE Added missing GPLv3 LICENSE file. Aug 7, 2016
README.md Use aleth name in README Jun 18, 2018
appveyor.yml AppVeyor CI: Build aleth-interpreter.dll Jul 2, 2018
circle.yml CMake: Build aleth-interpreter.so as a separated optional target Jun 29, 2018
codecov.yml codecov: Clean up PR comment Dec 13, 2017
refilltests refill tests Jan 4, 2017
sanitizer-blacklist.txt Added stray README.md 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 https://github.com/ethereum/cpp-ethereum.git
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 can correct your mistake with command git submodule update --init.

Install CMake

CMake is used to control the build configuration of the project. Quite recent version of CMake is required (at the time of writing 3.4.3 is the minimum). We recommend installing 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/install_cmake.sh script that downloads a fixed version of CMake and unpacks it to the given directory prefix. Example usage: scripts/install_cmake.sh --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. Examples for some systems:

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/install_deps.sh 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 just ask.

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 https://github.com/ethereum-mining/ethminer.


To run the tests, make sure you clone https://github.com/ethereum/tests and point the environment variable ETHEREUM_TEST_PATH to that path.




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