Understanding Ethereum Light Node

EtherWorld
Avarch
Published in
3 min readMar 14, 2018

--

What is Ethereum light node?

Ethereum light node protocol is big step towards bringing the Ethereum client to small devices with limited hardware resources. Details of light client protocol can be found at GitHub.

Go-Ethereum or Geth 1.8.1 has an experimental implementation of light protocol. Lets have a look in detail.

Installing Geth

First you need to install geth. You can follow the instruction here about geth installation.

$geth version
Geth
Version: 1.8.0-unstable
Git Commit: 55599ee95d4151a2502465e0afc7c47bd1acba77
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.8.1
Operating System: linux
GOPATH=
GOROOT=/usr/lib/go-1.8

Starting node

Geth can be started in “full”, “fast”, or “light” syncmode.

  • Full Sync: It gets the block headers, the block bodies, and validates every element from genesis block.
  • Fast Sync: It gets the block headers, the block bodies, it processes no transactions until current block. Then it gets a snapshot state and goes like a full synchronization.
  • Light Sync: It gets only the current state. To verify elements, it needs to ask to full (archive) nodes for the corresponding tree leaves.(Source: Stackexchange)

For light node client, we start geth in light mode; pass — syncmode “light” to stratup commmand.

geth --syncmode "light" --rpc --rpccorsdomain "*" --datadir path-to-directory-to-save-blocks

It takes less than 10 minute and approx 300MB of space to sync the node.

Why is light node so fast and less space consuming?

Light node download just the header of the blocks and that too it does not download all the blocks. For all kind of processing, light node depends on full node peers.

At the time of writing this article, current block number is “5139816” and it started downloading “4948159” block onwards as you can see in log below.

INFO [02-22|21:32:59] UDP listener up                          net=enode://0162ef15d43d3d5f8edad80d938c1413e898edd6bdc8162976912d6bcb96f8aeba266e017dce7917785aafcfce584781ece81143988e452208a976a4a71730cb@[::]:30303
WARN [02-22|21:32:59] Light client mode is an experimental feature
INFO [02-22|21:32:59] RLPx listener up self="enode://0162ef15d43d3d5f8edad80d938c1413e898edd6bdc8162976912d6bcb96f8aeba266e017dce7917785aafcfce584781ece81143988e452208a976a4a71730cb@[::]:30303?discport=0"
INFO [02-22|21:32:59] IPC endpoint opened: /media/nodejs/Ethereum/fastnodeblocks/geth.ipc
INFO [02-22|21:32:59] HTTP endpoint opened: http://127.0.0.1:8545
INFO [02-22|21:32:59] Mapped network port proto=udp extport=30303 intport=30303 interface="UPNP IGDv1-IP1"
INFO [02-22|21:32:59] Mapped network port proto=tcp extport=30303 intport=30303 interface="UPNP IGDv1-IP1"
INFO [02-22|21:36:00] Block synchronisation started
INFO [02-22|21:36:04] Imported new block headers count=192 elapsed=2.653s number=**4948159** hash=2f28c7…916482 ignored=0
INFO [02-22|21:36:05] Imported new block headers count=192 elapsed=366.718ms number=4948351 hash=af7be1…954b05 ignored=0
INFO [02-22|21:36:07] Generating ethash verification cache epoch=165 percentage=72 elapsed=3.018s

It downloads block header and verifies it. As verification is a CPU intensive process, you can expect CPU utilization to go high.

Note: The light client protocol is under development. See the following links for current state of the protocol specification.

https://github.com/zsfelfoldi/go-ethereum/wiki/Light-Ethereum-Subprotocol-(LES)
https://github.com/zsfelfoldi/go-ethereum/wiki/Client-Side-Flow-Control-model-for-the-LES-protocol

If interested, you can participate in discussion on Ethereum Light node on Gitter.

Read similar articles below:

Follow us at Twitter, Facebook, Google+, Medium and Steemit.

Originally published at etherworld.co on March 14, 2018.

--

--

EtherWorld
Avarch

Latest News, Technical Blogs and General discussion on Ethereum, Blockchain and Cryptocurrency.