From b91e25bf81079fa85f244997c9a35c81b61d2897 Mon Sep 17 00:00:00 2001 From: Jude Nelson Date: Tue, 20 Sep 2016 17:13:01 -0400 Subject: [PATCH] add release notes for 0.14 --- release_notes/README.md | 27 +++++++++++ release_notes/changelog-0.14.md | 81 +++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 release_notes/README.md create mode 100644 release_notes/changelog-0.14.md diff --git a/release_notes/README.md b/release_notes/README.md new file mode 100644 index 000000000..03f77fed1 --- /dev/null +++ b/release_notes/README.md @@ -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). diff --git a/release_notes/changelog-0.14.md b/release_notes/changelog-0.14.md new file mode 100644 index 000000000..2afe45d74 --- /dev/null +++ b/release_notes/changelog-0.14.md @@ -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.