At Blockstack, we’ve been (quietly) building a new decentralized internet that has been battle tested in production for over three years now. The Blockstack architecture removes the insecure, trusted third parties that stand between users, apps and their data. This new internet allows for true decentralization, fulfilling the original vision of Sir Tim Berners-Lee and Vint Cerf.
We've been refining the design of our blockchain, peer network, and storage over the last years, incorporating the lessons we've learned from three years of production experience. Today, we’re excited to announce the details of these systems in the first release of the Blockstack whitepaper.
Blockstack gives comparable performance to traditional internet services while being fully decentralized. Blockstack's core infrastructure has three components:
1. The Blockstack Blockchain
Blockstack solves the bootstrapping of trust problem by leveraging the most secure public blockchain (currently Bitcoin). More specifically, Blockstack binds (human-readable) domains to public keys to establish ownership of domains. These domains have associated data records as well. These small bindings are stored on the blockchain and are tamper resistant. The actual payload from the data records is stored outside of the blockchain because blockchains have limited storage space and are not meant to be used as general-purpose databases.
Blockchains don’t have central points of trust or control, and Blockstack nodes can use the Blockstack blockchain to boot up and connect to the new decentralized internet without relying on any remote servers. Blockstack’s blockchain is built using a technology that we introduced earlier, called virtualchains. Virtualchains are to blockchains what virtual-machines are to physical computers. By using virtualchains for implementing a blockchain, Blockstack can survive the failures of underlying blockchains. Blockchains will come and go, but the apps built on top need to outlast the underlying blockchains.
2. The Atlas Network
In Blockstack, the blockchain layer stores bindings for names and zone file hashes and actual zone files are stored in a peer network; the zone files are effectively an index to the data available on the network. Any decentralized network requires an index to the data stored by it. Going back to the early days of peer networks, Napster introduced a centralized index with decentralized file transfer in 1999. BitTorrent started with centralized trackers (indexes) as well and later introduced DHT-based decentralized indexes. DHT-based peer networks are susceptible to Sybil-attacks and have historically been unreliable and hard to scale, especially under a lot of churn.
We introduced a new unstructured peer network, called the Atlas network that solves a particular case of decentralized storage using peer networks--the case where (a) the peer network only maintain a relatively small set of pointers to actual data, and (b) peer nodes have access to the global state. In Atlas, all nodes maintain a 100% replica meaning users can fetch data from any node. The unstructured approach here is easier to implement, has no overhead for maintaining routing structure and is resilient against targeted node attacks (every node has a full copy of data).
3. Gaia Storage
Blockstack releases users from data silos, owned by companies, by giving users access to a decentralized storage system, called Gaia, that provides comparable performance to centralized cloud providers. Gaia’s design philosophy is to reuse existing cloud providers and infrastructure in a way that end-users don’t need to trust the underlying cloud providers. We treat cloud storage providers (like Dropbox, Amazon S3, & Google Drive) as “dumb drives” and store encrypted and/or signed data on them.
The cloud providers, like Dropbox, have no visibility into user’s data; they only see encrypted data blobs. Further, since the associated public keys or data hashes are discoverable through the blockchain channel, cloud providers cannot tamper with user data. Users directly control what data they share with apps and how apps can access the data. In our benchmarks, Gaia can provide 98% read-write performance when compared to centralized unencrypted data stores like Amazon S3. Our software makes it easy for end-users to replicate their data across multiple providers, so if one goes down, they’re unaffected.
For more information on Blockstack’s blockchain, the Atlas network, and Gaia, check out the Blockstack whitepaper. This whitepaper is meant to be a living document, and we’ll keep releasing new versions. The next part will add our decentralized identity and authentication protocol.