Getting Started with Ethereum Using cpp-ethereum

22 Aug

Our previous guides regarding mining and using Ethereum’s Ether (ETH) coins were based on the Go Ethereum implementation (source) as we find it easier to be used than the C++ implementation of the Ethereum client (source) even though we are actually using ethminer for the actual mining which is a part of cpp-ethereum and not go-ethereum package. The Go Ethereum implementation (geth) only comes with built in support for CPU mining, while the C++ implementation (eth) contains support for OpenCL GPU mining both as a part of the client as well as a separate miner (ethminer) and there is also a fork of ethminer with CUDA support available (source).

So now it is time to get started with using the cpp-ethereum (eth) client for creatng a local wallet and for mining both solo on a local system or on an Ethereum mining pool using eth and ethminer. Our guide is for using eth and ethminer on Windows with binaries provided only for that OS (version 0.9.40 64-bit), though the usage should be the same or very similar on other operating systems, but you will need to compile or get binaries for the respective OS. We have tried to make the guide easy and simple to follow, so that you can begin using Ethereum and mining Ether in just a couple of minutes.


First we need to create a local wallet and this is the first thing you will do when you run the eth client software. But before that a word of warning, if you have a working geth installation you should know that both Ethereum clients will use the same folder for the blockchain data by default, though the contents of the folder will not be compatible. The key files that are needed for you Ethereum wallet however will be stored in different places and each client will use ts own wallet, but we’ll get back to that in a minute. If you want to have two independently working installations of geth and eth, then you might want to use the --datadir parameter for geth or the --db-path for eth to specify different folder for the blockchain data for one or for both applications.

To generate a wallet with eth:
– Run the provided eth-start.bat file and follow the on screen instructions
– You will be asked to enter a master password, this you need to remember as it will be used to encrypt your wallet and you will be asked the password each time you run the client
– The wallet address you will get will be shown under Transaction signer and Mining Benefactor (marked in red in the screenshot above)
– You can write down that address, just add 0x in front to indicate that it is a hex address foe Ethereum
– Don’t worry, you will be able to get your address listed later on should you not write it down now
– Once the wallet address is generated the client will start to sync the blockchain, this could take some time, especially the first run when there is no data downloaded
– During the first synchronization of the blockchain you might see errors such as DISABLE: Disabling capability ' eth '. Reason: Invalid genesis hash, do not be worried by these, they should stop appearing in a bit

To backup your wallet keys with eth:
– The default datadir for eth is %USERPROFILE%\AppData\Roaming\Ethereum
– However unlike with geth with the eth client the key files are not stored inside the datadir
– You can find the wallet key files inside %USERPROFILE%\AppData\Roaming\Web3\keys
– Just backup the key files and on new installation you can just copy them back to make things work
– Make sure that you remember the password used to encrypt the wallet keys, otherwise you will not be able to access them


With the eth client you would need to run a separate executable in order to get access to the console and be able to type in commands such as to see your wallet address or balance or to send coins to someone. In the geth client for example the console is built in and you can access it if you invoke it through a command line parameter when running the geth client. With the eth client you need to have the client running with eth-start.bat and then you need to run the eth-console.bat to access the console. You should run the console via the provided BAT file instead of directly through ethconsole.exe even though there are no parameters being sent via the batch file, the reason for that is that if you run the EXE file directly you will not be able to copy and paste into the console.

Another difference in the eth client console as opposed to the geth client is that here there are no shortcuts that can save you time when typing commands, you need to type the full commands here in order for the eth console to do what you need. In the screenshot above you can see that we have typed eth.accounts in the console to see the wallet address, but got an error, even though this command works just fine in the geth client’s console. This is because geth has the eth as a shortcut for web3.eth, but using the eth console you need to type the whole thing as there are no shortcuts, so typing web3.eth.accounts will work, the same applies for other commands that use shortcuts that work just fine in the geth client as they will not work directly in the eth console.

Useful console commands for eth:
– To check your account address type in the console: web3.eth.accounts
– To check your account balance type in the console: web3.fromWei(web3.eth.getBalance(web3.eth.coinbase), "ether")
– To send Ether coins to someone type in the console: web3.eth.sendTransaction({from: 'your_address', to: 'recipient_address', value: web3.toWei(1, "ether")})
– In the above line of code make sure to set properly your address and the recipient’s address as well as the value you need to send, in the example above it is set to 1 Ether

Next up is mining with eth and ethminer, if you’ve followed our guides for using geth then you will probably already be familiar with the use of ethminer for solo mining as well as for pool mining. The pool mining part is the same here, but we are going to cover it anyway for the people that are new to using ethminer. The Windows binary package available for download below that you can use to get started contains eth as well as and ethminer for OpenCL and CUDA, do note that you can also use OpenCL on Nvidia GPUs and not only run them in CUDA mode. And while the geth client contains build in mining option that can only use the CPU, the eth client comes with a build in functionality for mining both with the CPU and OpenCL (the same mining functionality that is made available thorugh ethminer).

Getting started solo mining with eth and ethminer:
– First you need to make sure you are running the eth clint with eth-start.bat
– Then you need to run a second instance of eth in mining mode with eth-mine-local.bat
– The above example will work if both instances of eth are running on the same system, if you want to connect multiple miners on different machines to a single eth instance for solo mining you need to enter the ip address of the system running the eth client in the eth miner instances
– You can run ethminer instead of eth for solo mining by just replacing eth with ethminer, the mining command line remains the same for both and when the eth client is running in mining mode it behaves just like ethminer

Getting started pool mining with eth and ethminer:
– You can use the eth client in mining mode for pools as well, just run eth-mine-pool.bat
– To run ethminer mining in OpenCL mode in a pool you can use the provided examples for the currently working pools ethminer-ethpool.bat, ethminer-nanopool.bat, ethminer-ethereumpool.bat

The example BAT files contain the pool information, you will need to enter your wallet address as well as to modify the pool difficulty if the pool supports it (only nanopool does not). Have in mind that currently ethpool is not accepting new miners, so you will need to use some of the other two pools available if you are just starting with mining. You can also check our guides for pool mining with geth and ethminer as well as the other one for solo mining with geth and ethminer if you are interested and decide which one works for you better.

Download eth and ethminer compiled for Windows and ready to be used…

Other Similar Publications:

32 Responses to Getting Started with Ethereum Using cpp-ethereum


August 22nd, 2015 at 18:24

Dear, one question. There’s something for Windows 32 bit?


August 22nd, 2015 at 18:29


August 22nd, 2015 at 18:56

No 32-bit version is available, only 64-bit for Windows.

Google is reporting it as it thinks that all miners could be potentially dangerous software, it is actually not reporting that particular file, but the folder where we store the crypto software we make available for download.


August 22nd, 2015 at 19:15

Thanks Admin

Keep up the great work, this site is awesome!


August 23rd, 2015 at 04:07

Really, great work!! I like so much this site.


August 23rd, 2015 at 21:21

Thank you for everything. This site is really cool.


September 1st, 2015 at 14:34

Hi, in the “how to”, to generate a new wallet it is written to run the “provided” eth-start.bat, but I don’t find it. Where can I get it?



September 1st, 2015 at 14:49

This guide is for using cpp-ethereum, and not geth, so you need to download the downloadable package provided here.

Alternatively just run: eth --frontier -i -b -v 1, but you still need to have the eth client.


September 1st, 2015 at 18:39

You’re right. I downloaded the wrong package. Sorry. Thanks for you quick answer.

Burnt Eloi

September 9th, 2015 at 18:48

I get: ‘setTimeout not available in this environment’ when I run console.
Also the same error when building wallet, but the wallet seems fine and is updating. Console commands work.

However when I get to mining it instantly fails with a msg saying my GPU doesn’t have enough memory. Will this only work on 2GB GPU’s ?


September 9th, 2015 at 19:07

The setTimeout error seems to be normal on Windows.

Mining Ethereum does require a GPU with 2GB of VRAM as a minimum.

Burnt Eloi

September 10th, 2015 at 10:30

Thanks, time to upgrade my GPU lol
One more question , if I have a json file from the crowdsale, how can I import that into my eth wallet in windows? Link?


September 10th, 2015 at 10:49

You need to use: eth --import-presale wallet.file


June 7th, 2016 at 15:56

I have windows 7/64, i3, 4 GB RAM, Radeon ATI HD6450 last versión with 2GB of video memory, but dont Work because appear the Error:

Creating one big buffer for the DAG
Allocating/mapping single buffer failed with: clCreateBuffer(-61). GPU can’t allocate the DAG in a single chunk. Bailing.


June 7th, 2016 at 20:41


July 6th, 2016 at 20:36

when running the eth-start.bat i get Invalid argument: -i


July 6th, 2016 at 22:08

The -i option has been removed in the newer versions of the client, so you can just remove it.


October 2nd, 2016 at 14:59

Am a novice to mining, but would like if you can guide me to starting the mining

Peter Davis

February 28th, 2017 at 08:12

Using Windows 10 64 bit, Eth will not start.
The message is “The application was unable to start correctly (0xc000007b). Click OK to close the application”

In addition, Ethminer will not start “vcruntime140.dll is missing”


March 4th, 2017 at 08:49

Peter, you have to download vcruntime
Here you go, everything should work out for you


March 4th, 2017 at 08:55

I am having trouble with eth-start. It doesn’t ask me top set a password, it just goes onto a long list of a repeating problem. I’d appreciate if anyone could give me some insight I’m lost

” X 14:50:05.266|txcheck2 Bad transaction: C:\projects\cpp-ethereum\libethcore
\Transaction.cpp(76): Throw in function __cdecl dev::eth::TransactionBase::Trans
actionBase(class dev::vector_ref,enum dev::eth::CheckTrans
Dynamic exception type: class boost::exception_detail::clone_impl
std::exception::what: InvalidSignature
[struct dev::eth::tag_data * __ptr64] = a01d8324f04b50a4d81cdd87c86739de6e9585aa
[struct dev::eth::tag_field * __ptr64] = 8
[struct dev::eth::tag_field * __ptr64] = invalid transaction format”


April 16th, 2017 at 22:16

I have the same problem:/


April 28th, 2017 at 10:53

Same problem as @Dylan.

No issues with geth.

Error output:

X 21:03:14.817|txcheck3 Bad transaction: C:\projects\cpp-ethereum\libethcore\Transaction.cpp(76): Throw in function __cdecl dev::eth::TransactionBase::TransactionBase(class dev::vector_ref,enum dev::eth::CheckTransaction)
Dynamic exception type: class boost::exception_detail::clone_impl
std::exception::what: InvalidSignature
[struct dev::eth::tag_data * __ptr64] = a06b4abb853dcd70da81f03cbcb4a557b74ccade6fc63862ea3931beead756e4cf
[struct dev::eth::tag_field * __ptr64] = 8
[struct dev::eth::tag_field * __ptr64] = invalid transaction format


April 28th, 2017 at 12:01

Make sure you are downloading the latest ETH client, this post has been outdated… use the links to the latest code.


May 30th, 2017 at 09:49

upon running eth-start.bat, I’m not getting a prompt to enter a password. The output is:

cpp-ethereum, a C++ Ethereum client
cpp-ethereum 1.3.0
By cpp-ethereum contributors, (c) 2013-2016.
See the README for contributors and credits.
Transaction Signer:
Mining Beneficiary:
i 09:41:07.382|p2p UPnP device: [st: urn:schemas-upnp-org:device:InternetGatew
ayDevice:1 ]
Node ID: enode://
JSONRPC Admin Session Key: =

followed by a flashing cursor (I removed any text that looks like it should be private)

what am I doing wrong?


May 30th, 2017 at 09:52


after a few minutes, it spits out the following, over and over:

X 09:51:40.403|txcheck2 Bad transaction: C:\projects\cpp-ethereum\libethcore\Transaction.cpp(76): Throw in function
__cdecl dev::eth::TransactionBase::TransactionBase(class dev::vector_ref,enum dev::eth::CheckTrans
Dynamic exception type: class boost::exception_detail::clone_impl
std::exception::what: InvalidSignature
[struct dev::eth::tag_data * __ptr64] = a017729e210436f4479926d08fa095be4d4295f742582160b24dc3387939269bf3
[struct dev::eth::tag_field * __ptr64] = 8
[struct dev::eth::tag_field * __ptr64] = invalid transaction format

Geraint Blackmore

June 25th, 2017 at 19:25

Hi I have been trying to mine using ethminer and dwarfpool.

Everything is synced and GPU is working but I am getting error 32603 -failed to submit hashrate – any ideas on a fix?

Many thanks in advance :)


August 4th, 2017 at 16:32

Hi, I downloaded as it was recommended latest version of client and have same problem which described above:

[struct dev::eth::tag_data * __ptr64] = a017729e210436f4479926d08fa095be4d4295f742582160b24dc3387939269bf3
[struct dev::eth::tag_field * __ptr64] = 8
[struct dev::eth::tag_field * __ptr64] = invalid transaction format

Any idea why I did wrong ?
Thank you.


October 21st, 2017 at 22:49

I use Radeon rx 560 gpu. When I launch eth for mining i receive a message like this: no gpu device with sufficient memory was found. Can’t gpu mine. Remove the -G argument.
I have some questions:
Do I have a good graphic card to mine?
Why I’m unsuccessfull to mining?
Is the graphic card too powerless?

Bruno Vitale

November 23rd, 2017 at 15:37

If you have problem with “vcruntime140.dll is missing” error you can download it manually from and put it in system directory


November 24th, 2017 at 06:46

disculpe ya descargue el cliente Ethereum pero no aparece ningún archivo eth-start.bat por ende no se como iniciarlo ya descargue una versión más actualizada y tampoco y la verdad ya me estoy estresando.

Si podrían ayudarme les agradecería muchísimo.


November 25th, 2017 at 07:05

Mine crashes at DAG Generation Failure. Reason: Invalid argument.

Leave a Reply

Your email address will not be published. Required fields are marked *