You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

5.3 KiB

The Blockstack Browser

Blockstack is a new internet for decentralized apps. It reuses the transport layer, and below, of the traditional internet and focuses on decentralizing the application layer (Domain Name System, Public-key Infrastructure, auth protocols, data storage).

The Blockstack network has been operational for years and the best way to experience it is by using the Blockstack Browser. More specifically, there is a hosted version that quickly gives a preview:

We recommend that everyone should download and install the Blockstack Browser for any serious use outside of a quick preview.

You can think of the Blockstack Browser as a "gateway" to a new internet for decentralized apps. The Blockstack Browser is an application which allows a user to create and manage a decentralized Blockstack identity. This identity is used to authenticate and provide user-controlled storage to decentralized web applications.

The user instantiates a private keychain, backed up with a 12-word phrase, and stored in the user's web browser's localStorage encrypted with a user-provided password. This keychain is a master keychain for generating identity addresses which can own Blockstack names (a decentralized naming protocol implemented on top of a virtual blockchain -- see github.com/blockstack/virtualchain). Names in this system are indexed by the Blockstack core (see github.com/blockstack/blockstack-core)

The Browser supports registering Blockstack names via communication with a local Blockstack Core node. Our macOS app sets up this system automatically for users. For Windows users and our hosted version of the Browser, however, we do not currently have support for communicating directly with a local node. However, on these platforms, you can still construct a private keychain, which can be used to create profiles associated with identity addresses. These addresses can even have names sent to them, e.g., from Onename (https://www.onename.com) or another user via the Blockstack core cli (try $ blockstack transfer foo.id)

Authentication with Applications

One of the core features of the Blockstack Browser is authenticating with applications using a decentralized identifier. Users control their own addresses, and validate their login through a cryptographic signature. In fact, the Blockstack token voucher registration process uses this system (for a detailed walkthrough of this, see https://www.larrysalibra.com/blog/blockstack-token-sale-voucher-registration-walkthrough/). In order to associate the cryptographic identities of the Blockstack Browser with (potentially!) real people, the app supports adding "social proofs" -- a tweet from some account that asserts that the account is controlled by the same person as the address. For example:

https://twitter.com/AaronBlankstein/status/918927256738811904

Applications can also use this to associate a given login with an account somewhere else.

Application Keychains

One of the really cool things about Blockstack as a user (and developer of applications) is that users are on-boarded with a hierarchical keychain. The master backup phrase backs-up all of their identity addresses. But in addition, each application that a user signs into also receives a unique key, derived from the user's master key. For people familiar with Bitcoin's hierarchical derivation wallets, this is not so surprising. However, it enables rapid development of many different kinds of applications in the cryptocurrency space (for example, a simple application wallet for a currency of your choice -- Larry Salibra demoed a three line receive wallet for Ethereum at the ETC summit: https://twitter.com/larrysalibra/status/929660024988753921)

Authenticating with Storage Providers

Our user experience currently requires that a user connect to our default storage provider. We host that storage service, however the system (called Gaia) can be deployed by anyone (see the hub directory in github.com/blockstack/gaia). This system allows authorized writes to a connected storage backend, and then returns a public URL for servicing reads. By separating the logic for these two paths, we can employ standard improvements to the read path (e.g., CDNs), while supporting our own protocol for the write path. The storage system allows users to write to paths they own -- for example, my Blockstack profile is stored at:

https://gaia.blockstack.org/hub/15GAGiT2j2F1EzZrvjk3B8vBCfwVEzQaZx/0/profile.json

And my browser can write to this path by signing its request with the public key associated with that address (for more details on how an ECDSA public key can become an address, check out: https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses)

We think the hosted version of the Blockstack Browser makes it significantly easier for a person to take the first step into the new internet for decentralized apps by allowing them to get started without having to download or install any software.

Try it out and let us know what you think!