What's New in 0.17
Release 0.17 brings several major improvements. It is a consensus-breaking release. Users are encouraged to upgrade to 0.17 as soon as possible in order to stay on the same name set as everyone else.
The hard fork block number is 488500.
Release Highlights
All of these changes are consensus-breaking.
-
Updated USD/BTC Exchange rate. Names and namespaces are made 10x cheaper in this release
-
Support for Segwit Transactions. This release adds support for Segwit transactions nested inside BIP16 pay-to-script-hash outputs. Blockstack supports p2sh-p2wpkh and p2sh-p2wsh outputs, and can use the latter to support multisig-owned names.
-
Namespace creator receives register and renewal fees. This release adds support for a "version 2" namespace, where the
NAME_PREORDER
andNAME_RENEWAL
operations must send their name fees to the address used by the namespace'sNAMESPACE_PREORDER
payment address. This way, the person or group who creates a namespace can earn back the BTC burnt in doing so by encouraging other users to create names. This is meant to encourage application developers to create their own namespaces, since this gives them a direct path to monetization. The namespace creator will collect all fees starting from the block height of theNAMESPACE_REVEAL
, and ending to 52595 blocks later (about 1 year). After this period of time passes, name registration and renewl fees are sent to the default burn address1111111111111111111114oLvT2
. This behavior was implemented to remove the incentive to squat namespaces. -
Combined
NAME_REGISTRATION
andNAME_UPDATE
. ANAME_REGISTRATION
operation may also include a zone file hash. This reduces the number of transactions required to register a name and use it in Blockstack applications from three to two. NormalNAME_REGISTRATION
andNAME_UPDATE
are still supported. -
Combined
NAME_RENEWAL
,NAME_TRANSFER
, andNAME_UPDATE
. ANAME_RENEWAL
operation may also include a zone file hash and the address of a new owner. This reduces the number of transactions required by a name owner or registrar to transfer a name to a new owner. The recipient does not need to immediately renew the name once received, and the recipient can have the sender write in the recipient's desired zone file hash so that when the recipient receives the name, it has the recipient's desired zone file in the Atlas network. NormalNAME_RENEWAL
,NAME_TRANSFER
, andNAME_UPDATE
operations are still supported. -
Renewal Grace period. Once a name expires, the user has a 5000-block grace period in which to renew the name. No other operation on the name will be accepted, and the name will stop resolving. If the user does not renew within 5000 blocks, someone else will be able to preorder and register it.
Install
The best instructions for installing a blockstack-core node from scratch are located at our repository root (https://github.com/blockstack/blockstack-core/)
As always, the recommended setup for users and developers looking to build apps is to go and download the Blockstack Browser. A build of the browser that takes advantage of the new features of blockstack-core will be released soon. For updates on releases of the browser, see here, Browser version 0.17 will be the first version to support the new features.
Upgrading Core Nodes
Quick start (recommended): You can get up and running in 15 minutes or less using these instructions:
-
Run
blockstack-core stop
to stop your currently-running node. -
If you have a
~/.blockstack-server
folder, you should move it out of the way. -
Run
blockstack-core fast_sync
to get a recent 0.17 snapshot. -
Run
blockstack-core start
to re-start your node.- Run
blockstack-core --debug start
for extra verbosity. - Logs will be written to
~/.blockstack-server/blockstack-server.log
.
- Run
-
If you have a 0.14 node, you can verify that the 0.17 node is consistent with it by comparing the 0.14 node's consensus hash with the 0.17 node's consensus hash at the same block (both can be obtained with
blockstack getinfo
andblockstack consensus $BLOCK_HEIGHT
).
Full Re-index (experts only): If you are running a Blockstack Core 0.14 node, and want to avoid fast-sync, you will need to re-index the Bitcoin blockchain from scratch. To do so, follow these instructions:
-
Run
blockstack-core stop
to stop your currently-running node. -
Back up the
snapshots
file like so. Remember the back up path; it will be used later.
$ mv ~/.blockstack-server/blockstack-server.snapshots ~/.blockstack-server/blockstack-server.snapshots.bak.0.14
- Back up or remove the following files from your
~/.blockstack-server
directory:blockstack-server.db
,blockstack-server.lastblock
, andatlas.db
. Example:
$ mv ~/.blockstack-server/atlas.db ~/.blockstack-server/atlas.db.bak.0.14`
$ mv ~/.blockstack-server/blockstack-server.db ~/.blockstack-server/blockstack-server.db.bak.0.14
$ mv ~/.blockstack-server/blockstack-server.lastblock ~/.blockstack-server/blockstack-server.lastblock.bak.0.14
-
Remove the
blockstack-server.db.XXX
backups in~/.blockstack-server/backups/
, since they will be unusable. -
Change the
server_version
field under[blockstack]
in~/.blockstack-server/blockstack-server.ini
to0.17.0.0
once you have done all of the above. Your node will not start until you have done this. -
Run the following to start your node. Note the
--expected-snapshots
argument!- The
--expected-snapshots
argument should point to wherever you backed up your oldblockstack-server.snapshots
file. - Run with
--debug
for extra verbosity. - Logs will be written to
~/.blockstack-server/blockstack-server.log
.
- The
$ blockstack-core start --expected-snapshots ~/.blockstack-server/blockstack-server.snapshots.bak.0.14