Getting Started with Geth

Geth is a Go implementation of the Ethereum protocol and is currently one of the more widely used programs in Ethereum DApp development. Let’s take a quick tour on some of its core features.


Make sure you have Ethereum installed on your machine. On MacOS, you can do this by running:

brew tap ethereum/ethereum

brew install ethereum

brew install geth

geth is installed correctly if you’re able to run geth help.


When you run geth for the first time, you’ll notice that it prints a bunch of INFO level logs like this:

INFO log output. This shows that we’re importing and syncing new chain segments on the Ethereum network

geth is basically syncing Ethereum nodes here. This might take a while, but you can go ahead and close it by typing Ctrl-C:

You can see that the database is closed.

One thing that you’ll soon notice is that all these INFO logs can be pretty chatty and distracting. The is because the verbosity level is set to 3 (INFO) by default. This verbosity flag/value goes from 0 to 6. Here are some examples:

geth --verbosity 0 will look something like this:

geth --verbosity 4 will have output that look more like this:

Test Networks

The stuff we’ve been covering so far involves the main network. If you’re starting to develop decentralized applications, aka DApps, you’ll probably want to test out your smart contracts first on a test network.

There are a few popular test networks out there, including Ropsten and Rinkeby test networks. geth gives you the option to use either of these networks by appending the testnet and rinkeby command line arguments.

For example:

geth --testnet and geth --rinkeby

Every interface that you do on the main network via geth can be done on these test networks by just appending the right test network CLI flag.


One of the core features of geth is the wallet.

Create Wallet

You can create multiple accounts on your local node like this:

This will prompt you for a password. Go ahead and type it in then you’re done!

List Wallets

You can also list all wallet(s) stored on your machine like this:

account list example on main net
account list example on Ropsten test network
account list example on Rinkeby test network

Updating an Existing Account

You can also choose to change your passwords on your account via geth. Go ahead and run this, and you’ll be prompted for current and new passwords.

Javascript Console

You can also launch a Javascript console by typing:

geth console

Since this can get pretty chatty, I suggest running it with the verbosity flag set to 0 like this:

geth --verbosity 0 console

main net console
testnet console

You can go ahead and query account balances etc. via the console. It’s pretty sweet!

Additional Information

This is very short post on how and what are the core geth features. There’s also a lot of room for improvement within the Ethereum community such as proper documentation and better/more robust tooling, so feel free to contribute in whatever way you can.

geth is capable of doing much more features that aren’t covered here, but I’ll have some useful links below if you want to challenge yourself and learn more about it.


Go-Ethereum GitHub page:

TLDR page: