Blockstack is a new internet for decentralized apps where users own their data. Blockstack's platform helps entrepreneurs and engineers build these apps and deliver better end-user experiences.
In this paper, we present the Blockstack decentralized computing network. Blockstack provides a full-stack alternative to traditional cloud computing for building secure, private applications. Compared to traditional internet applications, a key differentiator of decentralized applications as enabled by Blockstack is that most business logic and data processing runs on the client, instead of on centralized servers hosted by application providers. In many ways, a transition to decentralized computing is similar to a transition from mainframes to desktop computing in the 1980s. Blockstack follows the end-to-end design principle to keep the core of the network as simple as possible while pushing complexity to the edges, i.e., user devices and user-controlled storage. At the foundation of our network is the Stacks blockchain, which is designed to (a) scale decentralized applications, and (b) incentivize developers to build high-quality applications on the network. The Stacks blockchain uses a novel Tunable Proofs election system to securely bootstrap a new blockchain. Our new smart contracting language, Clarity, enables powerful on-chain expressibility while optimizing for security and predictability of smart contracts and admitting static analysis for all transactions. A key component of our architecture is a highly scalable and performant decentralized storage system, called Gaia, that enables user-controlled private data lockers. Users connect their private data lockers to their Blockstack client software, and applications write user data to the data locker directly. A universal ID and authentication system, called Blockstack Auth, removes both the need to sign up separately for each application as well as the need for password-based logins, which are known to be less secure than cryptographic authentication. Our SDKs and developer tools make developing a Blockstack application no more complicated than developing traditional internet applications, and developers using Blockstack don’t need to worry about running servers or databases. Blockstack has been operating in production with over 100 independent applications built on it as of early 2019. The architecture of Blockstack has evolved after years of production experience and feedback from application developers. This paper, which describes the result of that architectural evolution, is a major revision of our earlier 2017 whitepaper.