Technical FAQ

This document lists frequently-asked questions by developers interested in working with Blockstack application and core components. If you are new to Blockstack, you should read the general questions first.

If you have a technical question that gets frequently asked on the forum or Slack, feel free to send a pull-request with the question and answer.

DApp developers

Core developers

What is Stacks Blockchain?

Stacks Blockchain is the reference implementation of the Blockstack protocol described in our white paper. Today, it consists of these components:

  • Stacks Node: A Python backend service which reads transactions from the Stacks blockchain. This blockchain enables the Stacks Token (STX) and Blockstack Naming service.
  • Atlas: A peer network for communicating data about the Blockstack Naming System (BNS).
  • Blockstack API: A service for indexing the data stored by Stacks Blockchain and making it available in a performant way.

The next version of the Stacks Blockchain is under active development in the Rust programming language and employs our Tunable Proof-of-Work consensus algorithm and a unique scaling solution that enable individual apps to create their own app chains.

How will the next version of Stacks Blockchain change?

The next version of Stacks Blockchain will incorporate smart contacts and do away with the virtual chain. This next version is expected toward the end of the year and will contain these components:

  • Leader election and Tunable Proof-of-Work implementation: This component governs how clients select the longest chain and which miners receive transaction fees for broadcasting transactions.
  • Peering network: This component distributes blocks and microblocks among peer nodes participating in the Stacks blockchain.
  • Smart contracting VM: This component is responsible for executing and validating transactions in the Stacks blockchain, including smart contract publishing and execution.
  • Blockstack API: This API indexes the data stored by Stacks Blockchain, exposing a JSON REST API for querying information about Stacks ownership, the Blockstack Naming System, and other data stored in smart contracts.

What is Leader Election and Proof-of-Burn?

Proof-of-Burn is a mechanism through which potential block miners (what we call leaders) burn an existing cryptocurrency to announce their candidacy for mining a particular block. The more cryptocurrency burnt by a particular leader, the more likely they are to be selected to lead a block (a process which uses cryptographic sortition). Once elected, a leader constructs a valid block, choosing the chain tip to base their fork off of, and announces the block to the network. In the event of chain forks, clients select the longest such fork as the correct fork.

How are user identities managed in the Blockstack architecture?

Identity is user-controlled and utilizes a smart contract implemented on the Stacks blockchain for secure management of keys, devices, and usernames. When users log in with apps, they are anonymous by default and use an app-specific key, but their full identity can be revealed and proven at any time. Keys are used for signing and encryption.

Can anyone register names on Blockstack?

Anyone can register a name or identity on Blockstack — you just need to use a Blockstack client to submit a registration request to a Stacks Node. All of that software is Open-Source and can be run without any centralized parties.

What is a Blockstack Subdomain?

A Blockstack subdomain can be used for all the things a Blockstack ID can be used for. The only difference is that they have the format ~~foo.bar.baz~~ instead of ~~bar.baz~~. For example, jude.personal.id is a Blockstack ID, and is a subdomain of ~~personal.id~~. Hundreds of subdomains can be registered with a single transaction. The BNS documentation describes them in detail.

Can I get a Blockstack subdomain without spending Bitcoin?

Blockstack subdomains can be obtained without spending Bitcoin by asking a subdomain registrar to create one for you.

Is there a Blockstack name explorer?

Yes! It’s at https://explorer.blockstack.org

Why should I trust the information, like name ownership or public key mappings, read from Blockstack?

Blockstack records are tough to tamper with. The difficulty comes from the fact that the bindings for name ownership (names on Blockstack are owned by public keys) are announced on the Stacks blockchain. To change these bindings, an attacker must initiate a winning fork of the Stacks blockchain that is longer than the true chain but with a different history. The longer your name binding exists on the correct chain, the harder this task becomes.

Do you have a testnet or sandbox to experiment with Blockstack?

We have an integration test framework that provides a private Blockstack testnet. It uses bitcoin -regtest to create a private blockchain that you can interact with, without having to spend any Bitcoin or having to wait for blocks to confirm. There is a deployed testnet of the current version of blockstack-core at testnet.blockstack.org. To deploy your own testnet, please see the README for details.

Can the Blockstack blockchain fork?

Yes, the Blockstack network can fork. We hard fork the network once a year to make protocol-breaking changes and upgrade the network. The latest fork was in 2018 where we introduced the genesis block of the Stacks blockchain. For technical details, see the 2018 forum post for the annual hard fork.

Which coin fuels the Blockstack blockchain?

Currently, transactions fees are paid in Bitcoin. In 2018 our annual hard fork enabled the fuel payments for digital asset registration to be paid in Stacks token. For technical details, see the 2018 forum post for the annual hard fork. In the next version of the Stacks chain, which will implement Proof-of-Burn mining and leader election, all transaction fees will be paid in Stacks.

How is the Blockstack network upgraded over time? What parties need to agree on an upgrade?

We’re working on an on-chain voting strategy similar to how mining works, where anyone can cast a vote proportional to the amount of Bitcoin burned. Similar to how Bitcoin upgrades, a new feature is activated if a certain threshold (e.g., 80%) of votes consistently request its adoption over a given time interval (e.g., a couple of weeks).

Until then, Blockstack publicly announces the availability of new software, with the promise that each release will bring highly-desired features to make upgrading worth the users’ whiles.

Who gets the registration fees for name registrations?

With the current design, names are secured through proof of burn mining which uses Bitcoin. Namespace creators determine how much names costs in a space, when and if the names expire. These creators can also elect to receive fees for creating names in the first year that a namespace exists.

Do I need to run a full Blockstack node to use Blockstack?

No. We maintain a fleet of Stacks Nodes that your Blockstack applications can connect to by default.

Can I run my own Blockstack node?

If you want to run your own, we provide detailed instructions on our install page. It only takes about 5-10 minutes to spin up your full node! Running a Blockstack node keeps you secure by ensuring that your app gets the right names and public keys. It’s not expensive; it takes as many resources as a Chrome tab.

What is the capacity per block for registrations using Blockstack?

Initial registrations can be done at an order of hundreds per block, and once an identity is registered, you can do unlimited updates to the data because that is off-chain.

Can I programmatically register Blockstack IDs?

Blockstack applications do not currently have access to the user’s wallet. Users are expected to register Blockstack IDs themselves.

However, if you feel particularly ambitious, you can do one of the following:

  • Set up a blockstack api endpoint (see the project README) and write a program to automatically register names. Also, see the API documentation for registering names on this endpoint.

  • Write a node.js program that uses blockstack.js to register names. This is currently in development.

Can I programmatically register Blockstack Subdomains?

Yes! Once you deploy your own subdomain registrar, you can have your web app send it requests to register subdomains on your Blockstack ID. You can also create a program that drives subdomain registration on your Blockstack ID.

What language is the Blockstack software written in?

The current Stacks chain is implemented in Python 2. The next version of the Stacks chain will be written in Rust.

Our libraries and many of our developer tools are written in Javascript (and we’re working on porting much of our Javascript to TypeScript).

What if the current companies and developers working on Blockstack disappear, would the network keep running?

Yes, the Blockstack network will keep running. All of Blockstack’s code is open-source, and anyone can deploy Blockstack nodes or maintain the code. Further, Blockstack nodes don’t need to coordinate with each other to function. Any node that a user deploys can function correctly independently.

Open source developers

How old is the Blockstack project?

Work on the project started in late 2013. First public commits on the code are from Jan 2014. The first registrar for Blockstack was launched in March 2014, and the project has been growing since then.

What is the current development roadmap look like?

See this page for the current development roadmap.

Where are the current core developers based? What are the requirements for being a core developer?

Our core developers work in various cities, New York City, Seattle, Toronto, Chicago, Minneapolis, NYC, San Francisco Bay Area, Barcelona, and the Netherlands. Developers who’ve contributed to the core open-source software over a long enough period, by default, get included in the list of core developers. There is no formal process for being part of this informal list. Core developers, generally, can write high-quality code, understand distributed systems and applied crypto, and share a vision of building a genuinely decentralized internet and are dedicated to that cause.

I heard some companies working on Blockstack have raised venture capital, how does that impact the project?

Blockstack, like Linux, is an open-source project with a Linux GPLv2 license for the core technology. Just like different companies build apps and services on top of Linux and have different individual business models, some companies are building apps & services for Blockstack on top of the core open-source technology, and these companies have various business models and funding sources respectively. Having more venture-backed companies join the ecosystem for a decentralized internet is a good thing for everyone participating in the ecosystem including users and developers.

Miscellaneous questions

What’s the difference between Onename and Blockstack?

Onename was a free Blockstack ID registrar run by Blockstack. It makes it easy to register your name and set up your profile. Once the name has been registered in Onename, you can transfer it to a wallet you control, or leave it there and use it as you like.

Does Blockstack use a DHT (Distributed Hash Table)?

It does not, as of November 2016. It uses a much more reliable system called the Atlas Network. Details here: https://blockstack.org/blog/blockstack-core-v0-14-release/

How can I transfer my Stacks Token out of my Stacks Wallet?

Your Stacks Wallet seed phrase is required to send Stacks Tokens from your Stacks Wallet. Access your Stacks Wallet using your unique wallet address and seed phrase to transfer unlocked STX tokens. Please see here for more information on time and transfer locks on various Stacks Tokens based on when you purchased your tokens.