Steem Distribution/Decentralization Report - How Decentralized is Steem?
Why This Report Matters
At it's core, the real value of the blockchain technology, and thus every currency built on it, lies in the underlying ledger. It serves as an immutable truth for all to see. In order to protect that truth, it is then decentralized and hosted by as many people as possible so that it is always available to be referenced and written to.
I'm not going to go to deep into the various ways this has been done by all the different coins, but I wanted to stress the importance of decentralization to the technology. If a blockchain is not adequately decentralized then the risk of being able to take down or impair the network grows.
Earlier this week I was wondering how distributed, and thus decentralized, the Steem network was. I did some searching and wasn't able to uncover much so I dug a little deeper and this report will outline my findings.
How does this all work again?
Before I present my results, I want to quickly cover how the Steem blockchain functions at a very simplistic level.
Basically, we have a ledger, like every other blockchain coin. You can think of that ledger like a notebook or excel spreadsheet. Every time something happens on the Steem network, it is recorded in the ledger. Every post, comment, upvote, flag, transfer, etc....
The computers that store a copy of that leger are called our Seed Nodes. They all keep an exact copy of the ledger and update it whenever new transactions are added. The Seed Nodes themselves don't actually have the ability to update the ledger though, that responsibility falls to our Witnesses.
Seed nodes can exist without witnesses, but Witnesses can't exist without seed nodes. A Witness has to be able to read and make changes to the ledger and in order to do that they have to be able to communicate with a seed node.
I make this distinction to point out that although a Witness can, and usually does, run a seed node, they don't have to. In the same way that a seed node can be run without having to be a Witness.
It's important to the health of the Steem network that we have a large number of seed nodes distributed around the globe to provide resiliency to the network and protect it from harm.
Where did the data come from?
I worked from two primary sources to form this report.
@wackou created a website that shows the status of the current nodes listed on github. You'll find the site here. This isn't a comprehensive list however and only shows nodes that have been manually added to the list. Currently there are 52 nodes listed and you'll see their status as either online or offline, who runs them and what country they're in.
I was surprised to see a large number of them offline. I assumed this couldn't possibly be the total number of seed nodes supporting our network and after digging a little deeper I eventually came across this website built by @cyrano.witness. It scans the network every 30 minutes and shows an updated list of all the current seed nodes and gives them a score based off of their uptime. The site is great but doesn't show the country for each IP so I hunted them down using an IP locator site. I only counted seeds that had a score of 100 or higher.
Here's a screenshot of what the node status site looks like
After putting it all together and crunching the numbers here's what I found.
We currently have 99 Seed Nodes spread across 11 Countries
...and here's a visual breakdown of the countries represented
We can see from the numbers that the majority of our nodes reside in Germany, France and the US. For where we're at currently, I feel Ok about the results I uncovered, but as we grow, I'd love to see the number of nodes spread out to more countries and in larger numbers.
Hopefully you found this information insightful. If you think I'm wrong in my data or have an easier way to show the node distribution, please let me know!