What the Heck is Blockchain, and Lets Blow Up the Internet (Part 3)
Yay! Let’s blow up the internet (no, in a good way). Yes, in an actual good way.
Ok. We’ve spoken about what Blockchain is and how it works. Now let’s talk about that technology is behind something I believe is going to completely revolutionize the way we do internet. And it should, the way I see it.
The company is called Blockstack, and their wonderful whitepaper can be found here: https://blockstack.org/whitepaper.pdf
What do they do? Well, their slogan is: “a new internet for decentralized applications,” and they do just that. They want to throw out the aging internet system we have in place now, and decentralize the key points at which all your precious data passes through to show you your favorite sites (like my blog posts, obviously). In doing so, they hope to re-decentralize the internet, making the blockchain technology the underlying principle upon a new age of internet is built. BOOM. Isn’t that amazing? If you aren’t simply blown away by all that jargon, here’s a bit of an in-depth look, based on their whitepaper that might help convince you:
The Current Internet Sucks:
According to the creators of Blockstack, the way the internet works today is outdated and dangerous. Take DDoS attacks, as an example. A DDoS attack, or a Distributed Denial of Service attack, overloads a particular site with traffic using an army of infected computers called a botnet. These attacks are particularly dangerous for small sites that lack the capacity/resources to defend themselves properly. These attacks aren’t even expensive, either: for about 150 bucks on the black market, you can purchase such a “service,” according to the Digital Attack Map. They’re a particular threat, however, because they can find the central DNS server and attack the site there, leaving no alternate method to reach your precious blog posts.
Since this DNS is also responsible for making your website name a readable one instead of some weird decimal looking thing, an attack on the DNS server really doesn’t sound good.
Furthermore, the Certificate Authority that grants you access to that wonderful “secured” badge and stand between fraudulent and true sites? Yep, it can be hacked too, as the creators remind us (Turkish CA, Google. Not good).
But Blockstack has an alternative. And, if they are right, it’s quite a good one. According to them, their intended goal was threefold: provide decentralized naming and discovery, to remove third party trust from resource discovery and the naming process, decentralized storage without third party involvement, and comparable performance to the good ol’ dubya dubya dubya dot.
To do it, they’ve built upon three key components, which we will discuss in a bit: the blockchain (WOOT) for a blockchain naming system, a peer network called Atlas, and a secure backend that is decentralized, known as Gaia.
Let’s step into part 1:
Traditionally, we’ve relied on the DNS and ICANN, the non-profit organization that manages the DNS, to reply to our requests with normalized names, instead of 934u8rwe98fw9rjg8g. Kinda helpful, but, like we said, vulnerable to attack or spoofing. Not good.
Blockstack wants to take this naming process and recreate it in a number of ways. In their eyes, naming should be decentralized, human-readable, and unique.
The problem was that, before blockchains came around, only two out of these three concepts were possible at a time. This limitation was known as Zooko’s triangle, and was a significant roadblock.
For example, a public key is unique/secure (low chance anyone is generating a number that long and getting yours exactly) and decentralized (you can make it on your local computer without relying on anyone), but they are not human-readable, unless fasdfu9k3ht74938ugj90iasd9f tickles your insides. Ew. Conversely, a twitter handle is unique and human-meaningful, but it is not decentralized, as twitter has total control over it. Nicknames are decentralized and human-readable but definitely not unique, since multiple people can have the same ones.
Blockstack figured out a genius way to solve this problem, and square the triangle. They found a way to have names that are unique, decentralized and meaningful all together. They dubbed this system the Blockchain Naming System. Here’s how it works.
Blockchain Naming System
Fully intended to replace the centralized DNS, the BNS is a naming system that keeps the naming process decentralized by assigning a name to a cryptographic address of the underlying blockchain and the key of that address, and everyone downloads a copy of an index with all of these addresses (more on that in a bit). In order to prevent people from racing people to register these names in case they come across them, the process is done in two steps: pre-ordering and registering. The first guy to complete both gets the name. Names in the BNS are organized into namespaces, which are essentially the BNS equivalent of top-level domains. These must also be preordered and registered, and they are placed into what is known as a “root blockchain.” Entries in these Top Level Domains within the BNS can also point to other blockchains that store data for domains registered in that TLD.
The big deal about this part of the process? Well, let’s take their example. If you query Werner.id, you wouldn’t be querying some big centralized DNS out there in the ether. You’d be querying a local, decentralized server. Whatever files pulled from outside the trust zone, such as those from the “peer network” which we will talk about in a bit, will all be within the blockchain, so there is no chance anyone can manipulate any data within the response.
Now, you might be thinking: if everything is decentralized and there is no central control, why not get ALL the “names” I could possibly grab, and hold them hostage? Well, they thought of that too. And they called them “Pricing Functions.” These functions calculate various data, such as length and presence of non-alphabetic characters, to gage price.
Here’s the next, incredible benefit of Blockstack’s BNS: remember how we mentioned the security flaw with Certificate Authorities? Because the BNS stores these certificates on the Blockchain, no falsified data can be distributed, and, as we know, presenting falsified data to only a portion of the people on the chain won’t work too well. In the BNS system, all domains get a certificate, so the security level skyrockets and maintains a safe way to ensure it all stays legitimate!
In short, this means we now have a secure way to provide certificates and domain names, as well as essentially eliminate the need for passwords — if you are connected locally, there is no need to continually log in if you have your key!
These wonderful people did not stop there, though: they found issues with the concept of running all of this incredible tech on the blockchain and fixed it.
See, the problem with the blockchain as the source for all of your global state is twofold:
- If the blockchain goes down, one copy may become the de-facto centralized copy of the chain, which ruins the whole point of the blockchain.
- If a blockchain fork occurs and nodes of the chain begin to read and write differing events on differing forks. When the forks resolve, the state on resolving nodes may be different than originally intended. This may cause the application to lose that immutable state that blockchain intends.
To solve this, they’ve implemented Virtualchain. While a full discussion of the numerous pages they devoted to it in the white paper is beyond me at 5am, (i’m still up and I am going to finish this no matter what. Sleep? What sleep?) I recommend you visit https://github.com/blockstack/virtualchain for a visual with a great explanation that shortens what I would probably have come up with, and does a fantastic job conveying the concept.
Atlas Network: MMM, DATA!
Wouldn’t it be great if there was a… oh, I don’t know… MAP for ensuring a node always had the right addresses to send to and didn’t make mistakes because someone updated their information? Kinda would help if we could keep consistently updated information with the addresses of other users. Atlas does that and more.
On this layer of functionality, Atlas ensures that every user knows which name goes to which address. This prevents any potentially catastrophic mixups with the addresses. We ensure everyone knows that everyone’s copies are all up to date. Much better.
But Atlas does stuff for storage too. See, blockchains suck for data storage. I know, i’m knocking blockchain, and I feel kinda bad, but it’s true. So, what’s a classic solution when working with memory constraints? Pointers!
Atlas has been there, done that. It takes pointers stored on the blockchain itself, and finds the stuff at that pointer in the storage (which we have yet to get to, don’t worry).
Now, remember how we said that Atlas was a “peer network?” That’s because it ensures that every user on the network has the same information as everyone else. Usually, when dealing with peer networks, you run into any or all of these three issues:
- Reliability — too much data coming in means it’s hard to handle all of it properly, so some might get deleted or moved around or falsified… not good.
- Scalability — as the network grows, how well does the model really hold up to the inevitable changes necessary, especially if each user does not have the full body of information.
- Performance — the peer network slows as the network grows.
Atlas solves all of these issues. Because the blockchain only holds stored pointers and not actual data, the data we are dealing with remains small even in a large network, and because within this system all of the nodes hold all of the indices, there is no reliability issue, either. Furthermore, nodes on this network share information with their “neighbors,” meaning they send data to each other in each direction, so there is a fast transmission of information as well.
Now here’s another mind-blowing, jaw-dropping nugget about Blockstack. Think about it. If every node has all of the information, that means that even if I would delete a bunch of data from a bunch of nodes… they could self-heal. WHAT. NO. YES. Oh yeah. Blockstack says that their nodes are self-healing. Deleted stuff? No bigs, our pointers will recover everything because each node has ALL of them. BOOM. That’s crazy.
Gaia: Storage that Sticks It To THE MAN
So we’ve been talking about how these pointers from Atlas point to storage data, and we said Gaia takes care of that storage. But how? Even with cloud storage like Dropbox, Google Drive or others, they have access to all of your files! And we aren’t into that. So these geniuses and wonderful people of Blockstack came up with a brilliant solution. Gaia will take a file from your local computer and encrypt it BEFORE it sends it to your Drive. What does your Google Drive see, in this case? Encrypted data. That’s right. No access to my files for you! When you want ’em back, just run it through decryption by Gaia. Boom. It’s really unreal.
So, all in all, I think it’s clear why Blockstack is incredible. In an age where data mining and privacy are such huge concerns, Blockstack integrates the booming and powerful concept of blockchain technology into an internet (AN INTERNET!) that we can all use safely and securely, with the power in OUR hands and no one else’s. This is revolutionary, and I think it deserves all of the accolades and more. Imagine a password-free, safe, decentralized, systematic and scalable internet that caters to the end users first. Isn’t that awesome? So there.