Go Ethereum (Geth) is an implementation of the Ethereum protocol written in Go. You can use Geth to sync an Ethereum node, or even build a private Ethereum blockchain. If you want to be a miner, this is a software that you would use. Your Ethereum node is a gateway and a part of Ethereum blockchain. Your program with the web3 library requires the Ethereum node to be able to interact with a smart contract that lives inside the blockchain.
Using Ganache is all fine and dandy. But Ganache is a fake blockchain. There are no miners, so it's hard to simulate some situations that we would encounter on real Ethereum blockchain. As a result, let's step up our game. We don't need to use Ethereum production blockchain now, but we can use something in between development and production blockchain—the Rinkeby network. If the Ethereum production blockchain is akin...