I don't understand in what way blockstack is decentralized


#1

I’ve done a good bit of reading on the subject, but for a common person such as myself, a lot of this is proving difficult for me to fully grasp.

A fully decentralized system like dat with the beaker browser is pretty easy to understand. It works exactly like a bit torrent client where seeders all contribute pieces of the website for you to assemble. you in turn then share yours with others.

However this system uses traditional cloud storage, in this instance, microsoft’s server farm. That is where the bulk of the data all lives. It’s therefore all coming from one place, right? Sure it’s encrypted. But if a hacker wanted to take down the network, wouldn’t there be just a handful of nodes to aim for? In this system, all of the data on the entire Blockstack network lives on just a few data farms.

From my understanding, the advent of blockchain technology decentralizes the process of naming servers and domain creation. But, that’s about it, right? perhaps I’m missing something?

I apologize in advance if it seems like I’m coming off critical. I’m just trying to get a full understanding of this technology, as I’m deeply interested.


#2

However this system uses traditional cloud storage, in this instance, microsoft’s server farm. That is where the bulk of the data all lives. It’s therefore all coming from one place, right?

Gaia lets you choose what underlying data store is used to host your data. Blockstack PBC’s default Gaia hub uses Azure, but nothing stops you from running your own Gaia hub and having it store data in DAT if you wanted :slight_smile: You’d just need to have a DAT driver.

But if a hacker wanted to take down the network, wouldn’t there be just a handful of nodes to aim for?

Considering that DAT, IPFS, and BitTorrent all use DHTs for routing storage requests, I’m way less confident in their ability to survive attacks than a cloud storage provider like Azure. It would take a nation-state to take down Azure, but it only takes a few script kiddies in a coffee shop to censor key/value pairs in a DHT and kick nodes out of the network. I’ve written a little about it here in the release notes for the Atlas network (which we designed specifically to avoid DHTs in Blockstack).

From my understanding, the advent of blockchain technology decentralizes the process of naming servers and domain creation. But, that’s about it, right? perhaps I’m missing something?

There’s also Gaia. With Gaia, each user can run their own Gaia hub, so a would-be hacker would need to attack each users’ storage systems if they wanted to knock their data offline. The blockchain helps users discover each others’ Gaia hubs.


#3

One of the biggest issues with fully-decentralized networks and applications, is that users have to become a host of all the parts of a particular website or application and its data. That’s a lot of investment when limits like bandwidth and storage are concerned, and severely limits the potential of the network to truly take off – if I have an application that’s in the gigabytes, or has millions of users with petabytes of (user) data, it’s unsustainable to the average “peer” user.

From what I understand in the Whitepaper, Blockstack was made to decentralize userdata storage first and foremost (through Blockstack IDs/Auth and Gaia hubs), and then also decentralize naming systems like the “domain name system” we have today (via the Atlas network and core nodes). Both of these are run through a virtual chain that is confirmed by the underlying blockchain so that any changes are kept track of and the data being distributed can be verified via hashes that are impossible to change. This basically secures a couple of things:

  • Name ownership, and
  • Name zone files
    • Which contains data like Profile information locations

Userdata is not decentralized in such a way to be “equalized” among every node in the network, but rather to be under the control of the actual user – to go where they want it. It is also encrypted to be secured from the storage provider via the Gaia Hub.

This basically provides security and privacy to the end-user without requiring too much from them in return, and marries the beauty of decentralization (privacy-wise) with the ease-of-use of centralized hosting.

That’s my take on it, if you have any more questions, ask away!


#4

Userdata is not decentralized in such a way to be “equalized” among every node in the network, but rather to be under the control of the actual user – to go where they want it. It is also encrypted to be secured from the storage provider via the Gaia Hub.

Can you elaborate a bit on this? What do you mean by “userdata”? Are you talking about personal information such as my name, location, email address aka, the typical info a social media company would collect from its users? or do you mean something else entirely?

Also, you mean to say I can control where my own personal data is hosted? So if I wanted to, I could buy some server space on amazon, and decide to host my blockstack account info there?

Thanks so much everyone for the clarification. I’m starting to understand. I have more questions, but they are a bit unrelated to this particular topic, so I might make another thread for them.


#5

By user data I mean anything an application needs on a user. For instance, the profile.json for every user account is public, like so:

https://gaia.blockstack.org/hub/1onTykegw5oYjsThkLfCZP6oqGNkkyebz/profile.json

Inside the profile.json, you can see different app “data buckets” within the apps[] array in the decodedToken field. Not all app “bucket” urls are stored in that array, but rather only the ones that require multiplayer (read: shared) data storage and thus have to be public.

Each of these data buckets store data that the app decides to put there. For instance, Graphite will store documents that the user creates and saves within its app “data bucket.”

More private information like your email would either be stored encrypted in the profile.json (at least, that’s what I would suggest) or simply stored in the browser state and have to be re-inputted every time you login (like what currently happens).


You can control where the data is hosted by creating your own Gaia Hub for your own storage back end, at least, in theory. There has been quite a bit of discussion on increasing the number, but currently most, if not all users simply use the one provided by Blockstack PBC because that’s the only one the official browser supports. People are moving to solve this though, thankfully.

Everytime you switch Hubs/Storage providers though, you have to update your zone file (which can be viewed through explorer.blockstack.org), which also costs money, and by money I mean whatever the BTC transfer fee is at the time (currently $0.62 USD). That and you have to (somehow) export all of your data out, and re-put it back into the new storage provider… it’s not easy, but maybe one day it will be.

(disclaimer: if you have no “name” and you transfer to a different gaiahub, the normal browser won’t know how to resolve your storage provider because it will default to the default gaia hub, and won’t get redirected. Maybe one day redirects could be implemented too, though…).