Timing of the upcoming Blockstack hardfork

Hey Blockstackers,

As you may know, we have the annual hard fork of 2017 coming up soon. The hard fork will be version 0.17. Here’s what node operators need to know.

Activation Block: 488500

The hard fork will activate at block height 488500. At this point, 0.17 nodes will disagree with 0.16 and previous, and will produce different consensus hashes. This will cause them to ignore one another’s transactions, leading to a permanent network fork. To remain on the same network, you will need to upgrade to 0.17. Block 488500 should be mined on or about October 5 2017.

The 0.17 hard fork release candidate is available here on Github, where you can follow the code development. You can help test it by starting up your own 0.17 node from the genesis block by installing the code from the above code branch, and running your own node locally with blockstack-core --debug start.

We will provide links to the release shortly, once we have confirmed that a 0.17 node will reach the same consensus as 0.14-0.16 nodes. It should only take a couple days for a 0.17 node to do a full sync (assuming the computer is left on the whole time).

Features

The hard fork activates the following features:

  • Support for Segwit transactions embedded in pay-to-script-hash transactions. This reduces transaction fees by up to 50%.

  • Option to combine NAME_REGISTRATION and NAME_UPDATE operations into one transaction. Registering a name will only take two transactions instead of three, saving about 20 minutes and about $5 in transaction fees (at current rates).

  • Option to combine NAME_RENEW, NAME_TRANSFER, and NAME_UPDATE operations into one transaction. This makes it so users (particularly name sellers and registrars) can transfer names and profiles to new owners more easily, since the sender can include the receiver’s desired zone file instead of forcing the receiver to have to issue a subsequent NAME_UPDATE of their own.

  • Addition of a 5000-block renewal grace period for names after they expire. This is similar to how ICANN DNS names work. If your name expires, it’ll stop resolving. However, you’ll have 5000 blocks to send a NAME_RENEW transaction to keep it. No other operations will be allowed during the grace period. At the end of the grace period, anyone can re-register the name.

  • A 10x BTC cost reduction. This is a planned yearly adjustment that, in this case, drops BTC cost by a factor of 10. This is to compensate for the rise the BTC/USD exchange rate over this past year.

  • Option to create namespaces where name fees go to the namespace creator, instead of being sent to the burn address. This helps pave the way for self-funding decentralized applications. For example, someone could build a decentralized coin-operated file viewer by creating a .files namespace, and sharing encrypted files with everyone who had a name ending in .files. Users could only decrypt the data if they had a name in the .files namespace, and would have to renew their names periodically by paying a fee to the namespace creator to continue receiving files (thereby funding the application).

1 Like

This is really exciting @jude!

Question: are the combined operations new operations: NAME_REGISTRATION_UPDATE or have you overloaded existing operations, for example, NAME_REGISTRATION now also takes a value hash?

1 Like

I overloaded NAME_REGISTRATION to take an optional zone file hash. Similarly, I overloaded NAME_RENEWAL to take an optional zone file hash and an optional new recipient. The RESTful interfaces have not changed :slight_smile:

2 Likes

@jude , would this 10x BTC cost reduction then also apply to a namespace registration? That would mean a very big deal for us (planning to buy one but currently costs about 14k Euro).

2 Likes

Sorry, I found the answer in you previous post about the next hardfork. Very excited about that, it would mean real business could be done with Blockstack apps.

1 Like

would this 10x BTC cost reduction then also apply to a namespace registration?

Yup! Just going to answer here to save other readers a click :slight_smile:

1 Like

Hi Jude - great news! I’m currently running 0.14.5.1 (blockstack -v) and would like to switch to the new release. I use docker in general and have docker apps running on the same linode (debian 9) cloud server I’m running blockstack core on. I installed the current node following the pip instructions. Are there any instructions for either a) upgrading 0.14 to 0.17 using pip or b) clearing down the 0.14 build and rebuilding 0.17 using the docker deployment?

Many thanks,

Mike.

2 posts were split to a new topic: How to display a username instead of bitcoin address on forum?

Hey Mike,

Getting started with 0.17 is pretty straight forward. Once you have upgraded to 0.17, the fastest way to get started is:

$ blockstack-core stop
$ mv ~/.blockstack-server ~/.blockstack-server.old  # or remove it
$ blockstack-core fast_sync
$ blockstack-core start

If you want to re-index from scratch, you only have to skip the blockstack fast_sync step (but the entire process can take a while—up to a week). We’re going to make that faster in the next major release.

@jackzampolin Do you know if we have a Docker image for blockstack-core?

Hope this helps!

We do! Its quay.io/blockstack/blockstack-core:master for the 0.17 code.

Heres a docker-compose that might help.

You are going to want to mount the /root/.blockstack_server directory somewhere on your host. Also its going to help to run the container with fast_sync mounted to that same directory before you start it up:

docker run -it --rm -v /host/blockstack/data/:/root/.blockstack_server quay.io/blockstack/blockstack-core:master blockstack-core fast_sync
docker run -d -v /host/blockstack/data:/root/.blockstack_server -p 6264:6264 quay.io/blockstack/blockstack-core:master blockstack-core start --debug --foreground

Thanks @jackzampolin and @jude. I just managed to get 0.17.0.0 installed - was a little painful so will stick with the main pip2 installation while I learn more. The pain was mainly around 0.14 being installed under a non root user and 0.17 switching to root. Think its all okay now as blockstack api reports the below. The details of some of the commands I ran are below in case it’s helpful to someone else. Thanks for your help. :smiley:

Blockquote
$ sudo blockstack info
{
“cli_version”: “0.17.0.0”,
“consensus_hash”: “331…0c14”,
“last_block_processed”: 488688,
“last_block_seen”: 488695,
“queues”: {},
“server_alive”: true,
“server_host”: “node.blockstack.org”,
“server_port”: 6263,
“server_version”: “0.17.0.0”
}

A summarised version of the commands I ran as my (devops sudo user) are:

Blockquote
$ blockstack -v
0.14.5.1
$ blockstack-core version
0.14.5.1
$ cd git/
$ cd git/blockstack-core/
$ sudo blockstack-core stop
$ sudo blockstack stop_server
$ git clone https://github.com/blockstack/blockstack-core.git
$ sudo pip2 install blockstack --upgrade
$ sudo cp git/blockstack-core/bin/blockstack-core /usr/local/bin
$ sudo cp git/blockstack-core/bin/blockstack-server /usr/local/bin
$ sudo cp git/blockstack-core/bin/blockstack /usr/local/bin
$ sudo mv /root/.blockstack-server /tmp/
$ sudo ./bin/blockstack-core --debug fast_sync http://fast-sync.blockstack.org/snapshot.bsk
$ sudo blockstack-core start
$ sudo blockstack start_server
$ sudo blockstack api start
$ blockstack -v
0.17.0.0
$ blockstack-core version
0.17.0.0

1 Like

@1HZp4man3vbMzaQAZmY6 Glad you were able to get it up and running!