C++ C CMake Shell Assembly Python Other
Switch branches/tags
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 untagged-01f98b9490c0ceb70816 untagged-1d50efdb2f43825a1810
Nothing to show
Latest commit 13735e4 Jan 5, 2018 @winsvega winsvega Merge pull request #4738 from ethereum/clang
clang FillJsonFunctions boostTest
Permalink
Failed to load latest commit information.
cmake Merge pull request #4679 from ethereum/cmake-coverage Dec 11, 2017
doc Add instructions on syncing from the snapshot Dec 20, 2017
eth Disable upnp option if build is not configured with MINIUPNPC Jan 4, 2018
ethkey Remove some deprecated options. Remove multiletter option aliases as … Dec 11, 2017
ethvm Generate description for gas-limit option together closer to other op… Nov 27, 2017
evmjit @ 6f1e95e EVM-C: create address in evm_result Dec 8, 2017
homebrew Additional paths for dylib path fixup for macOS ZIP builds. Jul 18, 2016
libdevcore Merge pull request #4710 from ethereum/snapshot-server Dec 21, 2017
libdevcrypto CMake: Do not use relative include paths Dec 2, 2017
libethash CMake: Cleanup some libs configs Aug 23, 2017
libethashseal Fixes the following compilation error on Ubuntu 16.04 with clang 6.0 Nov 8, 2017
libethcore Reformat using clang-format Dec 19, 2017
libethereum Don't create Warp capability if snapshot was not imported Dec 27, 2017
libevm fix testeth debug output issues Dec 12, 2017
libp2p Remove some ETH_DEBUG conditionals Dec 5, 2017
libweb3jsonrpc Catch exceptions from parsing parameters in JSON RPC stubs Dec 28, 2017
libwebthree Remove Whisper Dec 2, 2017
rlp Remove obsolete --nice option handling. Dec 6, 2017
scripts cpp-build-env: Install ncurses (required by llvm-dev) Dec 20, 2017
test clang FillJsonFunctions boostTest Jan 4, 2018
utils Use SHA256 from scrypt in ECIES KDF Mar 10, 2017
.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 remove submodule changes Aug 20, 2017
.travis.yml CI: Use Python script CodeCov upload Dec 3, 2017
.ycm_extra_conf.py Add YCM config Dec 10, 2017
CMakeLists.txt CMake: Clean up EthDependencies.cmake Dec 6, 2017
CODING_STYLE.md Minor typos fix Dec 29, 2017
CONTRIBUTING.md Fix git clang-format options description Dec 21, 2017
LICENSE Added missing GPLv3 LICENSE file. Aug 7, 2016
README.md Update CODING_STYLE Dec 29, 2017
appveyor.yml AppVeyor: Cache deps build dir Sep 12, 2017
circle.yml Circle CI: Fix eth storing and add testeth Dec 11, 2017
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

README.md

cpp-ethereum - Ethereum C++ client

This repository contains cpp-ethereum, the Ethereum C++ client.

It is the third most popular of the Ethereum clients, behind geth (the go client) and Parity (the rust client). The code is exceptionally portable and has been used successfully on a very broad range of operating systems and hardware.

Contact

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 is 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 which are required to build the project. If you missed it 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 required to build the project. Download them with the scripts/install_deps.bat script.

scripts/install_deps.bat

Build

Configure the project build with the following command. It will 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 cpp-ethereum.sln can be found in the build directory.

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

Contributing

Contributors Gitter up-for-grabs

The current codebase is the work of many, many hands, with nearly 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 up-for-grabs. 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.

Mining

This project is not suitable for Ethereum mining. 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.

Testing

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

Documentation

License

License

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