Blockstack — Whitepaper Review
The internet is structurally flawed
How often do you think about how the internet actually works under the hood? How when you type “facebook.com”, your screen shows a website made by Facebook instead of Twitter?Approximately…never? Yea, me too, until I started reading about Blockstack.Blockstack is focused on building the new hidden layer of the decentralized internet(1), by creating an easy-to-use infrastructure for future app builders to create on. They are making the building blocks of the new internet.The team argues that there are centralized points of failure in the hidden layer underneath the current internet, such as the Domain Name System (DNS — the central registry for all website names) or Certificate Authorities (CAs — they approve the “https” tag on websites). By decentralizing these vulnerable points of trust and recording things like domain names on the blockchain, Blockstack hopes to make the internet’s structure safer.🤯 = you and me right now. Let’s try to clear this up a little more…A wise man once said:
“A picture is worth a thousand words.”
— Wise man
Blockstack would replace the DNS and CA — combining them into one system (because why not certify that a site is secure from the beginning?)
By removing points of centralization for layers like domain names, security certificates, cloud storage, etc., we decrease the risk associated with each layer.So, let’s talk about what Blockstack actually does to improve these layers.
DNS -> BNS: Blockchain Name System
Let’s go back to the question I asked at the beginning of the post: when you type in “facebook.com” on your computer — what makes sure you actually see facebook.com? This is handled by the Domain Name System (DNS), managed by ICANN, a non-profit organization. When you type in facebook.com, the DNS servers route that request to the correct IP address, a string of numbers that is the actual “web address” for a site. It essentially makes IP addresses human-readable, because nobody wants to remember “66.220.144.0” instead of facebook.com.Web addresses are held on a centralized DNS server, so they are susceptible to attacks like DDoS or spoofing.
The BNS records addresses on a blockchain, from which the network of users download a copy of the full index. Since each user holds a full copy of the address system, they are not forced to trust a single authority. Risk of attack is reduced.
The cool stuff about BNS and Blockstack Authenticator
Unlike the DNS, BNS names aren’t limited to official “websites”. Users can set up their own names as well, using the “.id” namespace created by Blockstack. The .id names act as personal identities in the Blockstack ecosystem. This not only benefits from all the technical stuff mentioned above, it allows for two major UX improvements over the current website & crypto landscape.1. No more passwords. Since Blockstack ID’s are cryptographically secured and personally linked using Blockstack Auth, you will be able to sign into Blockstack apps without creating a separate password for every single one. You’ll have a single (long-ass) password to authorize a device to use Blockstack under your identity, and then you won’t have to think about it again.
2. Human readable blockchain addresses. Right now, if you want to send bitcoin to a friend, you have to send it to an address that looks like “1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2”. I don’t know about you, but there is no way in hell I am going to do that on a regular basis — it’s a hassle, and I’m always scared shitless that I messed up a digit. The BNS allows us to register “1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2” as “nickneuman.id”, so we don’t have to mess with that crap anymore.When you add 1 & 2 together, it means you’ll securely sign into the Blockstack internet as “[yournamehere].id” and not have to worry about passwords. Take. My. Money.
Atlas Network: It’s like a map, get it?
At it’s most simple, the BNS represents paired names. Each human-readable name is paired to a blockchain address. Then stick each pair into a giant list called an index. How does each user in the network know they have the correct addresses? What if one is added to the index, or an existing pair is changed so nickneuman.id now points to a different string of numbers?This is where Atlas comes in. Atlas acts as a mapping layer for the name and storage layers, allowing each “node” (fancy word for user) on the network to discover new records and update existing ones.At the naming layer, Atlas makes sure every node knows which name or namespace points to which blockchain addresses. At the storage layer, it directs storage needs from the small pointer records actually held on the blockchain to the larger storage backends. More on storage in the next section.Atlas is a peer network, meaning that user nodes talk to each other to make sure their index is fully up to date. Historically there have been significant challenges with peer networks:
- Scalability — the more nodes that are added, the more complicated looking up information becomes, because it’s unclear which nodes contain what information
- Performance — the network can be slow when searching for information for the same reason scalability is an issue — it’s hard to tell what nodes contain what information, so the search has to blast out through the whole network to find specific data
- Reliability — since anyone can add information to public peer networks, they can become unreliable. Too much data accumulating over time forces deletion of old data (that somebody might have still needed!), networks can accidentally partition themselves & cut one group off from information stored in another, or attackers can flood the network with false data. It’s a rough deal all around.
Since the Blockstack index is a small dataset (remember, it only contains pointers to where the data is; it doesn’t hold the actual data), each node contains a full copy of the index. The nodes randomly select “neighbors”, which they push updates to and receive updates from. New additions are prioritized — when a node receives a new pair that it hasn’t seen before, it immediately sends the information to it’s neighboring nodes. This ensures all nodes receive the most up to date information as fast as possible to avoid errors. It also keeps Atlas fast and efficient: data is stored locally and only updated when needed, nodes minimize the need to deal with the inherent scaling issues in blockchain.Since the dataset is small — it doesn’t take much computer storage to keep text pairs that point to larger data chunks elsewhere — scalability isn’t an issue as more pairs are added to the network.Because each node holds an up to date copy of the index, speed is not an issue: you don’t have to look for information you already have.The rules nodes follow when sending & receiving information to & from neighboring nodes keep the network healthy and reliable. An interesting note on this point: the Blockstack team ran a test of the network’s reliability by deleting a bunch of data from the index of various Atlas nodes. In typical distributed networks this could result in data being lost for a significant period of time, or permanently, because it’s random which nodes hold what data. The Atlas nodes were able to self-heal and completely recover from the data loss within a few hours. That’s some level 100 Paladin shit right there.
Gaia — decentralized storage layer
With the proliferation of cloud storage over the last ten years, it’s now easier than ever to store massive amounts of data in the cloud. As a trade off for your convenience, you’re trusting your cloud service provider of choice with your data. You agree to trust that they will handle it correctly, keep it safe from hackers, etc. Currently even when data is encrypted on an app like Dropbox, Dropbox still holds the decryption keys.Gaia proposes a solution for utilizing existing cloud storage providers without having to trust them with your information. Using the pointer data from the Atlas network, Gaia can upload and download encrypted data from a storage app like Dropbox. In this method, you hold your own encryption keys, and all Dropbox sees is encrypted data. When you download a file, Gaia software running on your computer decrypts it after it leaves cloud storage and reaches your computer. All of this is accomplished at comparable speed to current use, which is important for user adoption.
Takeaways
1. I think Blockstack’s “killer feature” that will draw in users is the Blockchain Name System. It solves two major problems that users experience today: remembering passwords for every app they own and providing human readable blockchain addresses for sending and receiving money.
2. The password benefit is a no brainer — everyone hates passwords. They are the bane of my existence. An entire industry has evolved around creating and managing secure passwords for all of our apps, and 84% of people(2) STILL just use “Password123!” every time. I would love to see Blockstack succeed at creating a secure online identity for its users that removes our need for these evil creations.
3. Human readable blockchain addresses are crucial for major adoption of cryptocurrency. The average user doesn’t want to scan QR codes every time he sends a friend money, and he definitely doesn’t want to remember the full address string. I can’t say it enough — fixing this problem is a major step toward wider cryptocurrency use.
4. While the Atlas network and Gaia are interesting and important advances in the internet’s underlying technology, the average user probably isn’t going to care much. In fact, most people probably read a couple lines of my explanation of it and then skipped the rest, despite my riveting prose. But they are important parts of making Blockstack a successful decentralized internet, and they will make user’s lives better in more unseen ways. If BNS is the quarterback of the team that gets all the glory, Atlas & Gaia are the linemen keeping the quarterback safe and letting him do his thing.(1) There are other layers of the internet that are already decentralized. This diagram from the Blockstack website explains it well:
(2) 76% of all statistics are made up, including this one. But really, a lot of people use dumb passwords.