What’s up guys? Last week we released SubstratumNode 0.4.2 which was a major improvement over the previous version since it introduced self healing decentralization through graph data structures and Gossip algorithms. We thought it would be good to delve into this topic in a bit more detail so people can understand with a greater degree of certainty what has changed, why it is better, and what it really means.
Originally for proof-of-concept we connect Nodes in a linear arrangement with a centralized bootstrap-only Node for Nodes to use to learn about the Network.
The diagram below illustrates the way connections happened in the previous version of SubstratumNode. Bootstrap Only Nodes do not route content and are only responsible for Gossiping about the structure of the Neighborhood as Nodes come online. The bootstrap Node in previous versions of SubstratumNode would add new Nodes to the end of the linear Neighborhood arrangement. While this allowed us to validate our concept it was not self healing, had limited Gossip and was unable to manage the removal of unresponsive nodes used in routes. In the example below N1 would create a request and it would go through the Neighborhood linear route and back. However, if you removed N2, the route arrangement would be broken without the ability to self heal. This was just enough to help us prove that our CORES and Gossip protocols work end-to-end prior to the latest release.
Enhancing Gossip and using the new graph approach as seen in the graphic below the network becomes self healing and more decentralized. As there are still some use cases for centralized bootstrap-only Nodes, Nodes now can operate in a fully decentralized manner allowing them to connect with any Neighbor and therefore Gossip with one another about their respective Neighbors. A centralized bootstrap Node would come in handy when a user doesn’t know of another SubstratumNode user to become his immediate Neighbor in order to join the Network.
There are a few things to understand from the graph style of Network. SubstratumNode intentionally limits how many immediate Neighbors it will create as not to increase the potential attack surface from knowing too many IP addresses. Further, the originator Node will not use an immediate Neighbor as an exit node. This helps protect anonymity between Nodes.
As for routing, Node includes a hop count of 2 in order to get to an exit node. However, 3 hops are required for anonymity. We chose 2 hops for ease of testing since the product is not yet fully secured and plan to default it to 3 soon. We also plan to make this a user setting so that users can choose security over speed for example.
In 0.4.2, the bootstrapping/self-healing process will sometimes cause your Node to share its IP address with another Node, run by someone you don’t know, without your knowledge or approval, in order to more completely connect the Network. This is initial insecure behavior; in the future, we plan to allow users, if they want, to examine and approve potential introductions of this sort before they’re allowed to proceed. (Note that you will always need a minimum of two immediate neighbors to be able to route content.)
There is plenty more work around self healing, security, and routing intelligence that the team plans to focus on after the release of TNT, usability and monetization epic features.
If you haven’t downloaded and tried out the latest version of SubstratumNode make sure you do. It’s available from our website http://substratum.net from the open beta tab and you can view the source code at our Github (show address on bottom of screen – https://github.com/SubstratumNetwork/… had some great feedback within the community and we are so excited for you to try it out. Please keep in mind that the development team is working to enhance the graphical user interface in order to take advantage of the new decentralization components. Until that work is completed, it is only possible to build or join Substratum Networks by utilizing the binary version with the command line. From there you can read through the SubstratumNode open source Github documentation in order to get started.
Catch you guys soon with another update video as we bring you the free and fair internet of tomorrow through the power of the decentralized web.