It’s that time of year again. Ever since 2015, it has been our policy to release annual upgrades to Blockstack Core’s consensus rules. In the past, this included things like packing more data into Blockstack transactions, switching to a new unstructured peer network, adjusting the prices for names to account for cryptocurrency price fluctuations etc (all the changes can be found in the release notes). This year’s hard fork will introduce the Stacks blockchain.
As discussed earlier, the Stacks blockchain enables several protocol improvements — some of which are addressed in this hard fork, and some of which will be addressed in future hard forks. This hard fork launches the Stacks blockchain v1, and enables the following two features for the Blockstack network:
Registration of all digital assets and smart contracts for registering digital assets with the Stacks token. Stacks blockchain v1 allows the “fuel payments” for registering digital assets to be paid in the Stacks token (instead of the placeholder token Bitcoin) but the transaction fees will still need to be paid in Bitcoin for the present time, however. See the “Consensus Changes” section below for how this will work.
A genesis block that distributes Stacks tokens to existing purchasers. Stacks blockchain v1 is introducing a genesis block that distributes Stacks token to existing purchasers. The Stacks blockchain state, including the token state, can now follow the Blockstack network if it needs to be migrated to a new underlying proof-of-work system. Stacks blockchain v1 therefore better isolates Blockstack users from the consequences of catastrophic events like a blockchain migration.
In future upgrades and hard forks, we intend to expand the blockchain with the following upgrades:
The Stacks blockchain will introduce a new scalable consensus algorithm to increase the number of transactions it can process. This consensus algorithm is planned to be introduced in additional hard forks in 2019. The algorithm uses a new type of mining, a variant of proof-of-burn mining, whereby instead of burning electricity to produce blocks miners destroy another cryptocurrency (e.g. Bitcoin) to participate in the leader election algorithm. Stacks miners are incentivized to participating in the mining process to keep the network alive and healthy. This new consensus algorithm will move Stacks transactions completely off of Bitcoin while keeping the security properties proof-of-work blockchains like Bitcoin offers. It also enables app developers to build app-specific chains on top of the Stacks blockchain to scale their applications.
The Stacks blockchain will support truly decentralized mobile applications by removing the need to trust a remote Blockstack Core node. Instead, it will be possible for light clients to calculate the economic weight of different Stacks blockchain forks, and identify the fork with the most economic activity. Today, light clients need to rely on other trusted sources for fork selection and cannot make that decision independently. For mobile apps this enables functionality like looking up names without having to rely on a remote Blockstack Core node.
Blockstack currently supports relatively simple smart contracts that are used to register digital assets on the network. The Stacks blockchain v2 will support general-purpose smart contracts written in a non-Turing-complete language that we’re developing. We plan to release more details for our new programming language in a few months.
Once again, this particular hard fork introduces the Stacks blockchain v1 (see “Consensus Changes” below). Some protocol upgrades, like the smart contract system and the new consensus algorithm, are planned to be released as a series of hard-forks in 2019 or later. As always, you can track the implementation progress in our GitHub organization and on this forum.
Genesis Block Distribution
As part of this hard fork, we will introduce the the genesis block of the Stacks blockchain. The genesis block will deliver 395M Stacks tokens to purchasers of SAFTs and interests in two private funds that were sold in our 2017 Accredited Sale. Tokens in the 2017 Accredited Sale will be distributed to the respective wallet addresses of these purchasers, although recipients of these tokens will not be able to transfer the tokens out of their wallets until a year and a day after the closing of their original investment. The genesis block will introduce a total of 1.32 billion Stacks tokens to the Blockstack network — some of which have been sold to other Blockstack stakeholders. These sold tokens will be distributed as part of this hard-fork. We anticipate that holders of non-binding vouchers may have an opportunity in the future to purchase currently unsold tokens.
This hard fork makes the following alterations to Blockstack transactions:
NAMESPACE_REVEALtransaction can now be used to create a namespace where names must be paid for by burning Stacks tokens. This is in addition to creating namespaces that require Bitcoin to be burned, or require Bitcoin to be sent to the namespace creator.
NAME_RENEWALtransactions are altered to allow burning the Stacks token, instead of burning Bitcoin.
TOKEN_TRANSFERtransaction type is introduced to allow sending Stacks tokens from one address to another.
In addition, this hard fork makes the following behavioral changes:
All digital assets can be purchased in Stacks tokens, even in smart contracts that already exist and were originally meant to use Bitcoin. For these smart contracts, digital assets can be registered with either Stacks or BTC – there is no loss of backwards compatibility. The conversion rate for these smart contract price curves is 1 BTC = 43,333 Stacks, based on the 2017 Accredited Sale price of Stacks tokens. For example, one of my names
judecn.idcosts 10,000 satoshi (0.0001 BTC), and would be priced at 4.3333 Stacks.
The hard fork is slated to activate on October 30 at around UTC+6. The Bitcoin block height is 547921.
We expect there to be a series of hard forks next year (dates TBD) that will enable the above features as we implement the Stacks blockchain v2. We’ll announce them here, so stay tuned!
Future Rust Implementation
Implementing the new consensus algorithm and the general-purpose smart contract system is expected to be a large engineering undertaking – so much so that Blockstack Core will be re-written from the ground up in Rust. We expect that the Rust implementation will significantly speed the system up, and will get us off of Python 2 (which is due to sunset in 2020).
How do I run my own node?
The Stacks blockchain has not been merged to the
master branch yet, but if you want to get started, you can get a copy of Blockstack Core, check out the
develop branch, and spin it up. See the instructions for installing from source or through Python Pip.
Blockstack PBC plans to switch our publicly run Blockstack Core nodes to this genesis block hard fork in the coming weeks. We plan to run both forks while we monitor the network and perform various tests. As our tests conclude, we will start sunsetting the nodes running the previous versions and only run nodes with the upgraded version following this hard fork.
Feel free to talk to us in the #Engineering channel on our public Slack for any questions or post comments in this forum thread.
This post contains forward-looking statements, including statements regarding Blockstack PBC’s plans for the Stacks token and blockchain. Forward-looking statements are subject to risks and uncertainties that could cause actual results to differ materially, and reported results should not be considered as an indication of future performance. Potential risks and uncertainties that could change our actual results include, but are not limited to, risks associated with: the failure of Blockstack to successfully launch the genesis block; technical obstacles in further developing the Stacks blockchain and potential failure of its underlying technology; the failure of the new functionality of the Stacks blockchain to function as intended when it is introduced; and potential attacks on the Stacks blockchain. These forward-looking statements speak only as of the date hereof. Blockstack PBC disclaims any obligation to update these forward-looking statements.