Please see the disclaimer.
On 03 July 2020, I published a post called “Decentralizing the Internet and Other Ideas,” and by far, the largest portion of that post was explaining my ideas for a decentralized identity system.
I’ve had to admit that the idea won’t work, so I would like to talk more about it, how it’s changed, and why it won’t work.
The purpose of the decentralized identity system, which I called IDSYS, was to break the network effects of centralized social media.
Of all the ideas in that post, I wanted this one to work most of all, and that’s because I am starting to believe more and more that the Big Tech giants are just a loophole for the elites to trample on the God-given natural rights of mankind.
In other words, the hope was that IDSYS would break Big Tech’s monopoly and stop them from violating our rights.
This is important to me because I took an oath to the Constitution of the United States, and I didn’t know any better way for me to discharge that oath. That, and without those rights, our society will crumble and collapse.
Collapse is far more likely in my opinion. The greater the rise, the harder the fall, and the United States is arguably the greatest superpower in history, so its fall is going to be hard. Probably catastrophic, even for those who stand to gain the most.
But even with all of the wishing in the world, if an idea won’t work, it won’t work.
How It Has Changed
Before I talk about why it won’t work, I want to talk about how it has changed since that post. I do this for slightly selfish reasons: I would love if someone smarter than me can figure out how it needs to be changed to make it work.
Removing Mining Blocks
The biggest change is that instead of having miners mine big blocks, blocks that contain the small blocks mined by everyone else, I realized that I could get rid of them completely. This would be done by having fully-defined algorithm for how to construct big blocks out of smaller blocks, and since the entire network would be able to agree on which small blocks go in a big block, the construction of the big blocks would be entirely decentralized: each client could do it for themselves.
I think this is an improvement because it makes the network more impervious to 51% attacks. It also means that there is no difference between big miners and small ones.
Creating New Permanence Blocks
I also changed how new Permanence Blocks are created.
First, any block that comes before the block with the oldest non-expired identity is eligible to be changed into a Permanence Block by anyone.
This allows anyone to try their hand at making their identity permanent.
Why It Won’t Work
Finding out that it wouldn’t work started with me doing the math on how often
the network could expect a Permanence Block to be created. I found out that it
would take about 3.35 years (assuming a
2^14 second period) for there to be a
50% chance of getting a new Permanence Block.
In the paragraph above, “period” refers to the about 4 hour time period in which
all smaller blocks are gathered into a big block. Four hours is just shorter
2^14 seconds, and I am a sucker for round numbers, so I went with that.
Of course, that 3.35 years number did not happen with a 512-bit, or even a 256-bit hash; it happened with a 160-bit hash. But I felt I could make that work.
However, I quickly realized that there was another problem: blockchain size.
In fact, the problem of blockchain size is the entire reason Permanence Blocks exist in the first place.
I decided to do some quick and dirty calculations about the expected size of the blockchain. Unfortunately, it ended up being anything but quick and dirty.
First, I estimated the amount of identities the blockchain could expect to hold. I estimated that an average of 2 per person in the world was not unreasonably high or low.
Second, I took the size of my RSA public key in bytes, and then multiplied it by 2 to account for extra data that users might want to store.
Third, I multiplied it by 2 again to account for the two identities per person.
Fourth, I multiplied it by 8 billion, the estimated population of Earth.
The number was gargantuan: about 24 terabytes.
I decided to create a new smaller key, to see how small of keys I could make.
The new blockchain size with that was much better: about 3 terabytes.
But that still would not work, so I decided to cut the amount of data to just an ipv6 and ipv4 address plus the key.
That gave 1.8 terabytes. Still too big.
I tried with just a SHA256 for the key.
Down to 832 gigabytes.
What if I removed the ipv6 addresses?
Down to 576 gigabytes.
If I squeezed it down to a 128-bit hash, that barely drops to 320 gigabytes. And a 128-bit hash is too small, in my non-expert opinion.
Theory vs. Practice
By now, some of you might be thinking, “576 gigabytes is not a problem! That’s not much bigger than Bitcoin is now, and Bitcoin will only get bigger.”
Yes, it is a problem. It’s a problem of theory vs practice.
In theory, this system will still work. In practice, it won’t.
At 576 gigabytes, the blockchain is too big for the average person to store, even for a short amount of time. This means that the average person will need to outsource the mining of their identities to bigger entities, such as the cloud storage companies I mentioned in the other post.
In other words, the blockchain will still be controlled by few big players rather than by everyone at large.
In theory, it will work. In practice, IDSYS will be just as vulnerable to exploitation as Bitcoin is, and the end result of that is that it will not break Big Tech monopolies.
There are a few things to say as I close.
First, I am thankful to be numerically literate. Using math to test an idea before spending much time on it is a time saver in so many ways. It can validate the idea, or show it’s impossible. In fact, even if it validates it, math can expose weaknesses in the idea.
Second, I still believe that breaking Big Tech monopolies is important, perhaps one of the most important things (behind Zion, of course).
And finally, I still hope that this idea can plant the seeds to a better way.