Hello all! It’s been a while, since the last 101, but I figured I might as well start it up again with this cool and simple topic. As always, the goal of this is to explain certain Catapult terms/features in a simple, easy-to-digest way.
As you all know, the
bison update has been released to Catapult. With it brought Account Properties, Merkle State Trees, and the Cache State. However, one aspect of Catapult got my curiosity sparked:
Are there/will be any light nodes in Catapult?
Luckily, we have great core devs that answer our questions - thanks @gimer for the info on this
What is a light node?
First of all, let’s define a
light node. In our case, a
light node is a node that can verify block headers and interact with the network, as well as harvest (equivalent of mining or staking in NEM) without having to download the whole chain. Merkle state trees aid in this entire process, enabling for the fast and secure read of data coming from Catapult nodes.
However, this exact functionality will only be possible with snapshotting, which isn’t implemented in NEM2 just yet, and isn’t foreseen to be implemented for the next couple of milestones.
Wait, there will be no light nodes?
Well - not quite yet. As long as we do not have snapshotting functionality for light nodes, we will not be able operate them in the way that we know (acting as a full node without hosting the entire chain). However, there is another concept that will be possible in the
cow update. Introducing, light clients!
Concept of Light Clients
Light clients are client-side applications that allow the user to verify block headers and transaction statements. With the upcoming
cow update for Catapult, wallets, for example, will be able to utilize this functionality to further verify information coming from nodes in a secure (and speedy) way. It’s possible that some of the
sig efforts will implement this when the time comes. Think of
light clients like light nodes, the difference being they only deal with the verification of information (like block headers or transaction statements) coming from a node on the blockchain. They do not harvest, or possess other capabilities that a full node (or even a light node, in the future) has. It is important to differentiate these
light clients from
light nodes. As shown above, they are functionally different from each other.
I hope to update this article as progress is made, since the majority of this is WIP. That is part of the reason why there aren’t too many details. If anyone has anything to add, or if I got something incorrect, please let me know!