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).
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).
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
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?
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?
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:
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.