Blockstack is an ecosystem of decentralized applications (dapps) intending to bring the nature of blockchain to the entire internet by means of security and digital rights. It uses a new DNS (domain name system) built on top of blockchain as the basis of the dapps, allowing users to attach information to identities stored in the blockchain, enabling them to communicate and connect with one another in a direct, encrypted manner.
In addition to storing data locally, Blockstack users can also back up their encrypted application data on any cloud storage provider, from traditional solutions like Dropbox, Amazon, S3, etc. A P2P social network can exist, and the key to that is allowing each user to control their experience on their own local device and then helping users connect to one another so they can discover each other’s content.
Since apps and services store user data in central locations, they are targeted by hackers and criminals; domain names and security are entrusted to third parties to issue certificates which can be compromised; the keys to authenticate on platforms are owned by the companies that own the service or app, not the user. All user data for Blockstack’s Internet is stored locally on the device. It is then encrypted before being backed up to a cloud storage system.
Blockstack addresses these problems:
— A Blockchain solution will bind digital properties. This way a new node-user can independently verify all data bindings, without reliance on third parties.
— Digital identity keys are also generated on your devices, not by the app or service owners. There is a saying in cryptocurrency “if you do not own the keys, you do not own the coins,” and this is true of your data and authentication keys. Blockstack allows users to retake control of their identity.
Blockstack is structured in layers:
Control layer: Acting as the control with two main functions: storage for operations and consensus on order of written operations.
Discovery layer: This is the data plane where the second layer exists. This is called the peer network and acts largely as the space for data discovery and data routes. Since data integrity is backed up by hash IDs on all levels of the network, users do not need to trust the discovery layer.
Storage layer: Also part of the data plane and is a storage layer for the actual data values. Again, there is no need for trust as the values can be checked against hash IDs in the control layer of their new Internet.
Blockstack vs. Ethereum:
Ethereum can be thought as a “heavy” blockchain that does everything for you. All of the complexity is handled there, computations run there, and scalability and security issues are handled at the blockchain layer.
Blockstack puts minimal logic into a blockchain and handles scalability outside of the blockchain by re-using existing internet infrastructure in new ways.
Computation and Storage
— Blockstack does all computation and storage outside of the blockchain, and uses the blockchain only as a “shared source of truth” between clients.
— Ethereum does all computation and most application storage in the blockchain itself.
— Like Ethereum, if two Blockstack nodes see the same underlying blockchain, they will independently run the same computations and produce the same state. Unlike Ethereum, there is no Blockstack-specific blockchain.
Programming Language and Tooling
— Blockstack’s programming model is based on running off-chain programs. These programs can be written and debugged in any language you want.
— Ethereum’s programming model is based on running on-chain “smart contracts.” These are written and debugged with a whole new set of tools, like Solidity and Serpent.
Scalability of On-chain Computation
— Blockstack is designed around a “virtual chain” concept, where nodes only need to reach consensus on the shared “virtual chain” they’re interested in. Virtual chains do not interact with one another, and a single blockchain can host many virtual chains. These virtual chains can live in any blockchain for which there exists a driver, and virtual chain clients only need to execute their virtual chain transactions (i.e. Blockstack only processes Blockstack virtual chain transactions).
— By contrast, because smart contracts run on-chain and can call one another, all Ethereum nodes need to process all smart contracts’ computations in order to reach consensus. This can get expensive as the number of running smart contracts increases and that takes the form of gas fee’s which also increases.
Scalability of Off-chain Computation
— Blockstack applications are very similar to web applications today and almost never need to interact with the blockchain. For most Blockstack applications, the blockchain is only used to authenticate the application’s code and data before the user runs it.
— Ethereum applications usually require an application-specific smart contract, and must interact with the blockchain to carry out its operations.
Complexity in the Blockchain vs. Outside of the Blockchain
— Ethereum puts all of the complexity (computations and storage) into the blockchain itself.
— Blockstack wants to use blockchains (any underlying blockchain really) as a layer of trust used for bootstrapping other components on top. Meaning that Blockstack wants to put as little logic and data in a blockchain as possible.
Scalability of Data Storage
— Blockstack has the philosophy that the existing internet infrastructure should be re-used for performance and scalability. Blockstack enables users to use arbitrary storage backends like Dropbox, Amazon, Google as “dumb drives”. Only pointers to the storage backends are stored with Blockstack and encrypted/signed data is kept at storage providers.
— Let’s say you were using Dropbox and S3. For your data to disappear, both Dropbox and S3 will need to go down (or delete your account). The general model is that as long as any provider is online and responding, your data is available on the network. From a practical perspective, putting your data on a cloud provider like Dropbox and a decentralized system like Bittorent can give you best of both worlds i.e., performance and censorship-resistance.
— Ethereum is focused on (1) storing data in a global Patricia tree within the blockchain, and (2) trying to build decentralized off-chain storage systems like Swarm. These decentralized storage systems can be used with Blockstack by writing “drivers” for them.
Introducing New Features to the System
— Blockstack is a “layer 2” system (i.e. Blockstack is agnostic to the underlying blockchain, and is designed to run on top of existing ones).
— If you want to make changes to Ethereum, you’ll need to get buy-in from miners and other parties in order to deploy them.
— If you want to make changes to Blockstack, you can do so independently of the blockchain.
Both solutions pose an intersting comparison, both with varying advantages and disadvantages. Based on each business model, a customized option is best for applicability and use in large scale operations.