Blockstack Core Architecture Diagram

Hi, my name is @jude and sometimes I like to stay up late and make ugly architecture diagrams.

This is the high-level description of what pieces go where when you run Blockstack. The dark purple areas belong to blockstack-cli, which is what you install with pip install blockstack. As of right now, this gets you a CLI tool, the resolver code (some assembly required to use it), a background process that manages your wallet and broadcasts your registration transactions, and a suite of drivers for interacting with various storage systems and UTXO services.

By the end of Q1 2017, the boxes marked “indexer” and “virtualchain” will be included in the Blockstack tool you download. Right now, they are not installed by default, but are packaged as blockstack-core.

For the time being, we run a set of these indexer nodes behind node.blockstack.org. They crawl the Bitcoin blockchain and serve your client name ownership and consensus information. You can optionally run your own server locally today, but you’ll have to point your Blockstack tool to it by editing your config file at ~/.blockstack/client.ini.

Blockstack craws Bitcoin nodes configured with txindex=1. This is not a Bitcoin feature that’s turned on by default, so we run a set of public nodes at bitcoin.blockstack.com that the Blockstack tool uses by default (the orange region). As with the indexer node, you can optionally point your Blockstack tool to your own Bitcoin node by editing the config file. You will have to have full transaction indexing turned on to use it.

The RESTful API box is in the works for Q1 2017. It will provide a unified API for accessing all features of Blockstack. More documentation on this API is being developed here: https://github.com/blockstack/blockstack-desktop-specs/blob/master/README.md. This will be the successor to api.onename.com.

8 Likes

Wow! Great diagram! Thanks so much for taking the time to do this!

What’s the resolver refer to? Isn’t the RESTful API the resolver?

It would be great to expand the architecture diagram a bit to show the relationship between legacy browsers and Blockstack browser and also to show how a future dns server forward would plug into the OS’s DNS subsystem on one hand and the RESTful API on another.

Also, I propose we call the unified RESTful API the Blockstack API :grin:

Awesome diagram @jude.:slight_smile: This is what the doctor ordered.

When you’re back we should sit down and go over it so that we can work on a strong visual that highlights the most fundamental areas/focal points.

Love this. :slight_smile:

1 Like

PS. nice preface to the diagram. I can’t… :joy:

1 Like

Great work @jude!

And I agree, the resolver could be a submodule of the Blockstack API or can move it behind (to the right of) the API. I know that you meant that the resolver can be very light-weight and is just reading off the API.

1 Like

2 posts were split to a new topic: Merging CLI/client and Core repositories