[Ethereum] How does ethminer interact with the various Etherum clients (e.g. geth, eth, parity) when mining? Does it affect mining efficiency

clientsminingproof-of-work

Apologies for the rookie question, I'm very new to Ethereum. I wanted to make sure I understand correctly the distinction between an Ethereum mining client (i.e. ethminer) versus a just a client, such as geth, eth or parity, particularly with regard to performance and so forth. The rough model I have in my head is, the Ethereum client exposes a JSON-RPC-based service that ethminer then talks to in order to fetch, complete, and return solutions to PoW problems. Ethminer, then, is a "dumb client" talking to the client (e.g. geth) and just banging out hashes on different hardware configs presumably?

My simple question, then, is: a.) why is there only one major mining client, if theoretically the PoW is trivially implemented on a CPU or in CUDA/OpenCL; b.) how is the slowdown of JSON-RPC acceptable in the "race" to get rewarded for a solution, and would a fully binary-level-integrated PoW implementation change things substantially; and c.) what are the relative merits of the different clients? (Is it better to be faster for any practical reason related to obtaining rewards?)

Best Answer

Parity uses Ethminer but has significantly better performance for processing blocks. Check out Gavin Wood's blogpost on performance: https://blog.ethcore.io/performance-analysis/

A) Other than Ethminer, there are two other mining clients: QtMiner, Cudaminer.

B) Not sure what you mean- could you elaborate?

C) As for the relative merits of the different clients, it depends on what operating system and GPU you are using. I searched the other clients but it seems that Ethminer is the most well established for most purposes, and is also the best documented and supported of all the mining clients. Check out the documentation: http://ethdocs.org/en/latest/mining.html.

Related Topic