This blog post will walk you through how to mine Ethereum and to make the post as focused as possible, couple of assumptions first:

You have a working knowledge about what’s Ethereum and mining

Working rig with GPUs capable of mining

You have an Ethereum address where you want to send your mined ETH

I’m running on Arch so my commands might be slightly different than yours

Its worth noting that you can actually mine using just your CPU but its going to be very slow, so much so that its pointless if you’re really serious about mining. Anyway, there are three ways that I know how to mine Ethereum:

Running your own rig connected to your own node

Running your own rig connected to mining pool

Hire a mining service

Of those three, I’ve only have personal experience with the first two and that’s what we’re going to look at.

Drivers

Before we can run the miner, we need drivers for our GPU. I have an NVIDIA GTX 1060 so I’m going to install the nvidia driver, cuda (NVIDIA’s programming toolkit) and opencl-nvidia (NVIDIA’s implementation of OpenCL):

$ yaourt -S nvidia cuda opencl-nvidia

This will let us run the miner either via OpenCL or Cuda.

Miner

We’re going to use ethminer, so lets install it:

$ yaourt -S ethminer

Then we can run the simulation to test the miner is working, first lets simulate using CUDA:

$ ethminer -U -M

and then OpenCL:

$ ethminer -G -M

If you don’t see any error, then we’re ready to mine.

via own node

First we’re going to see how to mine using our own Ethereum node. This requires running an Ethereum client, we’re going to use the official go implementation called geth so lets install it:

$ yaourt -S geth

To be able to run your own node requires that you fully sync your node with the Ethereum network, that means downloading all the transactions since genesis (the first ever block). At the time of writing, my fully synced local node’s size is around 27.5 GB. When you first start geth, it’ll sync with the network and that could take a while but you only need to do this once. If you always keep your node connected, it’ll always be synced, if you stop it for couple of days for example, you’ll have to sync whatever data happened in between again since the last you synced. Note that you can’t run the miner until your node is fully synced.

$ geth --rpc --rpccorsdomain localhost --etherbase <your address>

Don’t forget to pass your actual address where you want Ethers to be sent to. Then finally, lets run the miner:

$ ethminer -G

Notice we didn’t pass anything except for the flag that we want to run the miner using OpenCL. The miner uses the default RPC url to find the RPC server and since we use the default when we ran geth, ethminer will be able to find it. And that’s it, we should be mining using our own node.

Depending on your rig’s setup, it might take a while before you receive some ethers. You can use this calculator to see an estimate how long you might have to wait. Its important to realize this because often times, utility cost is more expensive that what you might be earning.

via mining pool

The advantage of mining together with a pool is that you’ll get paid more frequently albeit in smaller amount but at least in steady stream.

There are several mining pool out there, but for this we’re going to use ethermine. The steps are straight forward, we still need the ethminer which we already install above. If you visit their site hey have different ways to connect, we’re going to use the first one which is the “Stratum mode using Genoils Miner”.

You can pick your desired stratum server depending on your localtion, I’m going to use asia1.ethermine.org:14444 and then run the miner like so: