Blockstack Core’s Successful Hard Fork to v0.17

We’re pleased to announce the successful execution of the third annual hard fork of Blockstack Core. The upgrades are released in Blockstack Core version 0.17.

This hard fork, whose consensus rules took effect in Bitcoin block 488500 at 5:34 AM UTC on October 6, 2017, is marked by three major improvements:

  • Monetization for namespace creators
  • Name expiration grace period
  • Cheaper and faster name operations

If you want to read more on the hard fork, head over to the hard fork proposal and the timeline announcement on the forum.

Monetization for Namespace Creators

The first important change introduces a new way for Blockstack developers to monetize their applications via the creation of an application-specific namespace. With such a namespace, the name registration and renewal fees are sent to the creator for the first year of the namespace’s existence.

The namespace monetization feature is meant to help kickstart the application ecosystem on Blockstack and provide developers with an incentive for them to get as many users on the namespace as early as they can. Developers would encourage users to buy names in their namespace by providing app-specific functionality that could only be obtained by owning names there.

For example, the developers of a decentralized blogging application could register the .blog namespace and could offer extra features to users who buy names ending in .blog.

Note that the namespace creator can only receive name registration and renewal fees for one year. After that, all fees will be sent to the null burn address. This is designed to discourage namespace squatting and encourage the registration of namespaces by quality apps that brings users to the platform.

Name Expiration Grace Period

This release also introduces a month-long name expiration grace period, much like the one that ICANN provides for the traditional domain name system.

With the grace period, instead of names expiring exactly when their lifetime ends, a name enters a “grace period” during which the current owner has 5000 blocks (about a month) to send a transaction for a name renewal. Throughout this period, the name will not be displayed by any resolvers and all non-renewal transactions affecting the name will be rejected by the network.

If a particular name is in a grace period and the owner doesn’t renew, then the name enters a state of expiration and anyone can register it. If the name owner renews during this period, however, the name is reactivated.

This feature affects all present and future namespaces, was first described over a year ago in October 2017, and was planned to be included in the subsequent hard fork.

Cheaper and Faster Name Operations

Last, this new network upgrade introduces several methods that reduce the cost of name operations and allow multiple name operations to be executed in a single transaction and pushed through more quickly than before.

  • Support for segregated witness transactions
  • Support for combining multiple name operations in a single transaction
  • Adjustment to the BTC/USD exchange rate

The first efficiency improvement is the introduction of support for a lower fee version of Bitcoin transactions that are known as “segregated witness” transactions. This keeps Blockstack addresses backwards-compatible with existing bitcoin services while also introducing a cost reduction that represents a 50% slash in fees.

The second efficiency improvement is the introduction of the ability to combine multiple name operations in a single transaction. This not only makes transactions cheaper but also allows registrations, transfers and renewals to go through more quickly. With this new update, names can be registered in just two transactions - one that preorders the name and one that simultaneously registers the name and updates the name resolution information. In addition, transfers, renewals and updates can be combined and can be pushed through in a single transaction.

The third efficiency improvement is the adjustment of the BTC/USD exchange rate. The BTC/USD exchange rate is not fixed, which can make the prices of names and namespace fluctuate wildly. If names get too cheap, they will get squatted. If they get too expensive, then no one will buy them. For this reason, the price for names in Blockstack has always been denominated in USD and the exchange rate variable was introduced as a way to continually readjust pricing with every annual hard fork. This preserves affordability while at the same time being a simple and predictable change.

How to Upgrade Your Core Node

If you’re using the Blockstack Browser, a new client will soon be released to allow you to issue the improved transactions. However, if you’d like to start running a Blockstack Core node, or if you’re currently running a node and haven’t yet upgraded, you can download the latest release from GitHub, PyPi or Docker.

Installation instructions can be found in the documentation for Blockstack Core and upgrade notes can be found here for existing deployments.

Once you’ve installed the new Blockstack Core software, launching your node is as simple as the following:

$ blockstack-core fast_sync
$ blockstack-core start

That’s it! You’re now on the new Blockstack Core network.

Future Updates

The Blockstack Core consensus rules were just upgraded via an annual hard fork but the Blockstack Core software evolves at a much more rapid pace. Most changes are not consensus-breaking and upgrades are released on a monthly basis.

If you’re a developer and would like to contribute to Blockstack Core, we’d love to have you get involved. And if you have ideas for how the Blockstack Core software could be improved, we want to hear from you on GitHub, the forum and our Slack group.

Happy Fork Day Everyone!