Understanding Ethereum Light Node

Understanding Ethereum Light Node

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.

Screenshot-at-2018-02-22-21-37-44

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 similarScreen-Shot-2019-01-30-at-10.57.18-AM0-at-10.57.18-AM.png)](/2019/01/30/dksvp2p-wire-protocol-kademlia-distriScreen-Shot-2019-02-06-at-5.49.05-PM06-at-5.49.05-PM.png)](/2019/02/06/reading-ethereum-geth-daScreen-Shot-2018-03-13-at-12.44.46-PM3-at-12.44.46-PM.png)](/2017/02/14/concept-of-merkle-treeScreen-Shot-2018-03-13-at-1.59.35-PM13-at-1.59.35-PM.png)](/2017/01/17/running-ethereum-testneScreen-Shot-2018-03-13-at-1.52.55-PM13-at-1.52.55-PM.png)](/2017/01/15/installing-geth-on-ubuntu-16-10/)

Read more - EtherWorld's Good Read on Blockchain & Cryptocurrency

______________________________________________________________________

Disclaimer: The information contained on this web page is for education purpose only. Readers are suggested to conduct their own research, review, analyze and verify the content before relying on them.

To publish press releases, project updates and guest posts with us, please email at contact@etherworld.co.

Subscribe to EtherWorld YouTube channel for easy digestable content.

Support us at Gitcoin

You've something to share with the blockchain community, join us on Discord!

Follow us at Twitter, Facebook, LinkedIn, and Instagram.


Share Tweet Send
0 Comments
Loading...
You've successfully subscribed to EtherWorld.co
Great! Next, complete checkout for full access to EtherWorld.co
Welcome back! You've successfully signed in
Success! Your account is fully activated, you now have access to all content.