add release notes for 0.14

This commit is contained in:
Jude Nelson
2016-09-20 17:13:01 -04:00
parent f266966072
commit b91e25bf81
2 changed files with 108 additions and 0 deletions

27
release_notes/README.md Normal file
View File

@@ -0,0 +1,27 @@
Release Notes
=============
This directory contains the release notes for each version of Blockstack Core. In particular, there are two types of changes in each release:
* **Consensus-breaking Releases**: These are releases of Blockstack Core that change its consensus rules.
Examples include adding new name opcodes, removing old ones, changing the types of transactions that are supported, which blockchain(s) are used, etc.
Each consensus-breaking release is incompatible with all prior releases; old releases will not agree with new releases on the global name set.
For this reason, **it is strongly recommended to run the latest Blockstack Core release.**
* **Non-consenus-breaking Releases**: These are all other releases. They include bugfixes, reliability improvements, performance improvements, and so on.
Notes on Consensus
==================
The Blockstack Developers do their best to avoid consensus-breaking releases whenever possible.
However, certain improvements and bugfixes cannot be done without them.
As such, the project tries to limit consensus-breaking releases to one per year (around mid-September), and only with extensive testing.
Consensus-breaking changes are documented in the release notes, and will be publicly documented in the version's wish list file whenever possible.
If a critical consensus-breaking bug or security vulnerability is found, a new consensus-breaking release may be made on the spot.
If this happens, it will be documented here and announced publicly.
A yearly consensus-breaking release is required in order to keep name and namespace prices reasonable.
When Blockstack was first deployed, namespace prices were determined on a 1 BTC == $230 USD exchange.
At a minimum, the consensus-breaking release must adjust the BTC prices to ensure that names and namespaces
are neither too cheap (making squatting trivial) nor too expensive (making the system unusable).

View File

@@ -0,0 +1,81 @@
What's New in 0.14
==================
Release 0.14 brings several major improvements. It is a **consensus-breaking release.** Users are encouraged to upgrade to 0.14 as soon as possible in order to stay on the same name set as everyone else.
Release Highlights
------------------
* **Sqlite3 Database**. The consensus logic has been re-written from the ground up to use a sqlite3 database instead of a flat JSON file for storing the name set. This reduces RAM usage by 20x (~3 GB to ~150MB).
* **P2P Blockchain Synchronization.** The blockchain synchronization logic (in [virtualchain](https://github.com/blockstack/virtualchain)) has been re-written to use the Bitcoin p2p interface whenever possible, instead of the RPC interface. This not only improves download performance by 6x, but also removes the need for a multiprocess work pool (improving reliability).
* **Atlas Protocol.** Blockstack Core now implements its own unstructured p2p network (the Atlas network) for replicating the set of zonefiles amongst themselves. Each node builds a 100% replica of all zonefiles using the set of zonefile hashes in the name database. Nodes walk the peer graph to select K random neighbors; we reduce bias with a Metropolis-Hastings random walk with delayed acceptance.
* **Resolver API Server.** As part of our ongoing consolidation efforts, Blockstack Core now ships with a resolver HTTP server and documentation.
* **Multisig Support.** Blockstack Core now accepts name operations from multisig addresses.
* **Testnet Support.** Blockstack Core can now operate on Bitcoin's testnet. This can be achieved by setting `BLOCKSTACK_TESTNET=1` in the environment.
Consensus-breaking Changes
--------------------------
* Support for pay-to-script-hash Bitcoin addresses has been added, in order to support multisig ownership and payment addresses. Versions 0.13 and earlier will reject transactions with p2sh addresses.
* Name and namespace prices have been re-adjusted by a factor of 0.417 to preserve the $230 USD to 1 BTC exchange rate in 0.13. They take effect at block XXX.
* Name lifetimes in all namespaces have been temporarily increased by a factor of 2. For example, a name in the `.id` namespace will be valid for two years, instead of one. This will be reverted in 0.15, due for release mid-September 2017. This was done to give more time to upgrade the CLI and brower to automatically renew names.
Selected Changelog
------------------
* Do not accept zonefiles unless we can determine the name and transaction ID that paid for the `NAME_UPDATE`.
* Atlas: retry storage drivers for missing zonefiles every 12 hours.
* Add a notion of "epochs" to encode what the current name price and namespace lifetime are, based on the block height.
* Make expired `NAMESPACE_REVEAL` name operations restorable, so that `verifydb` database verification logic can handle them.
* Do not use `sys.exit(1)` on an assertion failure; use `os.abort()`.
* The `get_nameops_*` method family has been renamed to `get_records_*`.
* Run multiple instances of the core server in the test framework in order to enable Atlas testing.
* Check that the config files are compatible with the running version of the server.
* Do not require a transaction to have a single public key in its `scriptSig` field.
* Check for absurdly high-value transaction fees when broadcasting.
* Identify client storage drivers to use specifically for zonefiles or specifically for profiles.
* Cap profiles to 1MB when using Blockstack Core as a storage proxy.
* Improve SNV efficiency by serving batches of consensus hashes.
* Move most configuration-parsing logic to the client library.
* Remove old `testset` mode, since it never really worked anyway.
* Move all transaction-creation logic to the client. Blockstack Core no longer creates transactions.
* Remove transaction subsidization logic from Blockstack Core. This is the registrar's responsibility.
* Remove all remaining Twisted API server and Twisted DHT logic.
* Automatic database backups; access with `blockstack-server restore`.
* Remove UTXO service query logic from Blockstack Core. This is the client's responsibility.
* Spin off `blockstack_zones`, `blockstack_utxo`, `blockstack_profiles`, and `blockstack_integration_tests` into separate packages.
* Fix `NAME_TRANSFER` name operation restoration and SNV logic to use the correct consensus hash.
* Remove unfinished `blockmirrord` code; merge zonefile and profile API code into the main API server.
* Log unavailability of blockchain announcement payloads.