Concepts: DHT
TLDR: in Holochain, every person runs their own node participating fully in a DHT network.
Holochain's DHT
A Holochain network is a DHT (Distributed Hash Table) of peers, playing together by the same rules. The DHT is the main way in which agents share data in Holochain. Every agent runs its own node: if you want to participate in the DHT, you have to run your own instance and join the network.
Usually, DHTs are just key-value stores: you can create some piece of data which gets hashed, and after that anyone can query its contents with that hash.
Holochain's DHT is eventually consistent: data takes some time to propagate throughout the network. This means that there is no guarantee about the order in which different pieces of data will arrive, or that you are seeing all the data that has been published.
However, since the internal data structures are CRDTs, no matter the order of arrival of each piece of data, the end state will always be the same.
Holochain security model based on validation rules enables attachment of metadata in the DHT: not only can we create entries, but also we can add links to them, or update them. This way we can build complex graph structures in our DHTs that allow for efficient navigation of the data.
Try it!
Here you have it! In this representation of the DHT, every node is a cell (an instance of the DNA running), and the connections between them indicate that they are neighbors which gossip regularly with each other.
Every node belongs to a person running it. You can see the name of the person to which the node belongs.
To try to visualize how DHT behaves:
- Input some arbitrary content for the entry in the "Call Zome Fns" panel.
- Click "Execute".
- See how the data gets published to the DHT and validated there.
If you need more time, you can activate the step-by-step mode and click "Play" whenever you are ready to continue. Have fun!