aboutsummaryrefslogtreecommitdiff
path: root/doc/release-notes.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/release-notes.md')
-rw-r--r--doc/release-notes.md807
1 files changed, 614 insertions, 193 deletions
diff --git a/doc/release-notes.md b/doc/release-notes.md
index 0757cb5c60..3d4816ae9a 100644
--- a/doc/release-notes.md
+++ b/doc/release-notes.md
@@ -1,64 +1,128 @@
-(note: this is a temporary file, to be added-to by anybody, and moved to
-release-notes at release time)
+Bitcoin Core version 0.12.0 is now available from:
+
+ <https://bitcoin.org/bin/bitcoin-core-0.12.0/>
+
+This is a new major version release, bringing new features and other improvements.
+
+Please report bugs using the issue tracker at github:
+
+ <https://github.com/bitcoin/bitcoin/issues>
+
+Upgrading and downgrading
+=========================
+
+How to Upgrade
+--------------
+
+If you are running an older version, shut it down. Wait until it has completely
+shut down (which might take a few minutes for older versions), then run the
+installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or
+bitcoind/bitcoin-qt (on Linux).
+
+Downgrade warning
+------------------
+
+Because release 0.10.0 and later makes use of headers-first synchronization and
+parallel block download (see further), the block files and databases are not
+backwards-compatible with pre-0.10 versions of Bitcoin Core or other software:
+
+* Blocks will be stored on disk out of order (in the order they are
+received, really), which makes it incompatible with some tools or
+other programs. Reindexing using earlier versions will also not work
+anymore as a result of this.
+
+* The block index database will now hold headers for which no block is
+stored on disk, which earlier versions won't support.
+
+If you want to be able to downgrade smoothly, make a backup of your entire data
+directory. Without this your node will need start syncing (or importing from
+bootstrap.dat) anew afterwards. It is possible that the data from a completely
+synchronised 0.10 node may be usable in older versions as-is, but this is not
+supported and may break as soon as the older version attempts to reindex.
+
+This does not affect wallet forward or backward compatibility. There are no
+known problems when downgrading from 0.11.x to 0.10.x.
Notable changes
===============
-SSL support for RPC dropped
-----------------------------
+Signature validation using libsecp256k1
+---------------------------------------
-SSL support for RPC, previously enabled by the option `rpcssl` has been dropped
-from both the client and the server. This was done in preparation for removing
-the dependency on OpenSSL for the daemon completely.
+ECDSA signatures inside Bitcoin transactions now use validation using
+[https://github.com/bitcoin/secp256k1](libsecp256k1) instead of OpenSSL.
-Trying to use `rpcssl` will result in an error:
+Depending on the platform, this means a significant speedup for raw signature
+validation speed. The advantage is largest on x86_64, where validation is over
+five times faster. In practice, this translates to a raw reindexing and new
+block validation times that are less than half of what it was before.
- Error: SSL mode for RPC (-rpcssl) is no longer supported.
+Libsecp256k1 has undergone very extensive testing and validation.
-If you are one of the few people that relies on this feature, a flexible
-migration path is to use `stunnel`. This is an utility that can tunnel
-arbitrary TCP connections inside SSL. On e.g. Ubuntu it can be installed with:
+A side effect of this change is that libconsensus no longer depends on OpenSSL.
- sudo apt-get install stunnel4
+Reduce upload traffic
+---------------------
-Then, to tunnel a SSL connection on 28332 to a RPC server bound on localhost on port 18332 do:
+A major part of the outbound traffic is caused by serving historic blocks to
+other nodes in initial block download state.
- stunnel -d 28332 -r 127.0.0.1:18332 -p stunnel.pem -P ''
+It is now possible to reduce the total upload traffic via the `-maxuploadtarget`
+parameter. This is *not* a hard limit but a threshold to minimize the outbound
+traffic. When the limit is about to be reached, the uploaded data is cut by not
+serving historic blocks (blocks older than one week).
+Moreover, any SPV peer is disconnected when they request a filtered block.
-It can also be set up system-wide in inetd style.
+This option can be specified in MiB per day and is turned off by default
+(`-maxuploadtarget=0`).
+The recommended minimum is 144 * MAX_BLOCK_SIZE (currently 144MB) per day.
-Another way to re-attain SSL would be to setup a httpd reverse proxy. This solution
-would allow the use of different authentication, loadbalancing, on-the-fly compression and
-caching. A sample config for apache2 could look like:
+Whitelisted peers will never be disconnected, although their traffic counts for
+calculating the target.
- Listen 443
+A more detailed documentation about keeping traffic low can be found in
+[/doc/reducetraffic.md](/doc/reducetraffic.md).
- NameVirtualHost *:443
- <VirtualHost *:443>
+Direct headers announcement (BIP 130)
+-------------------------------------
- SSLEngine On
- SSLCertificateFile /etc/apache2/ssl/server.crt
- SSLCertificateKeyFile /etc/apache2/ssl/server.key
+Between compatible peers, BIP 130 direct headers announcement is used. This
+means that blocks are advertized by announcing their headers directly, instead
+of just announcing the hash. In a reorganization, all new headers are sent,
+instead of just the new tip. This can often prevent an extra roundtrip before
+the actual block is downloaded.
- <Location /bitcoinrpc>
- ProxyPass http://127.0.0.1:8332/
- ProxyPassReverse http://127.0.0.1:8332/
- # optional enable digest auth
- # AuthType Digest
- # ...
+Memory pool limiting
+--------------------
- # optional bypass bitcoind rpc basic auth
- # RequestHeader set Authorization "Basic <hash>"
- # get the <hash> from the shell with: base64 <<< bitcoinrpc:<password>
- </Location>
+Previous versions of Bitcoin Core had their mempool limited by checking
+a transaction's fees against the node's minimum relay fee. There was no
+upper bound on the size of the mempool and attackers could send a large
+number of transactions paying just slighly more than the default minimum
+relay fee to crash nodes with relatively low RAM. A temporary workaround
+for previous versions of Bitcoin Core was to raise the default minimum
+relay fee.
- # Or, balance the load:
- # ProxyPass / balancer://balancer_cluster_name
+Bitcoin Core 0.12 will have a strict maximum size on the mempool. The
+default value is 300 MB and can be configured with the `-maxmempool`
+parameter. Whenever a transaction would cause the mempool to exceed
+its maximum size, the transaction with the lowest feerate will be
+evicted and the node's minimum relay fee will be increased to match
+this feerate. The initial minimum relay fee is set to 1000 satoshis
+per kB.
- </VirtualHost>
+Replace-by-fee transactions
+---------------------------
-Random-cookie RPC authentication
----------------------------------
+It is now possible to replace transactions in the transaction memory pool of
+Bitcoin Core 0.12 nodes. Bitcoin Core will only replace transactions which
+have any of their inputs' `nSequence` number set to less than `0xffffffff - 1`.
+Moreover, a replacement transaction may only be accepted when it pays
+sufficient fee, as described in [BIP 125]
+(https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki).
+
+RPC: Random-cookie RPC authentication
+---------------------------------------
When no `-rpcpassword` is specified, the daemon now uses a special 'cookie'
file for authentication. This file is generated with random content when the
@@ -72,41 +136,8 @@ https://www.torproject.org/docs/tor-manual.html.en
This allows running bitcoind without having to do any manual configuration.
-Low-level RPC API changes
---------------------------
-
-- Monetary amounts can be provided as strings. This means that for example the
- argument to sendtoaddress can be "0.0001" instead of 0.0001. This can be an
- advantage if a JSON library insists on using a lossy floating point type for
- numbers, which would be dangerous for monetary amounts.
-
-Option parsing behavior
------------------------
-
-Command line options are now parsed strictly in the order in which they are
-specified. It used to be the case that `-X -noX` ends up, unintuitively, with X
-set, as `-X` had precedence over `-noX`. This is no longer the case. Like for
-other software, the last specified value for an option will hold.
-
-`NODE_BLOOM` service bit
-------------------------
-
-Support for the `NODE_BLOOM` service bit, as described in [BIP
-111](https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki), has been
-added to the P2P protocol code.
-
-BIP 111 defines a service bit to allow peers to advertise that they support
-bloom filters (such as used by SPV clients) explicitly. It also bumps the protocol
-version to allow peers to identify old nodes which allow bloom filtering of the
-connection despite lacking the new service bit.
-
-In this version, it is only enforced for peers that send protocol versions
-`>=70011`. For the next major version it is planned that this restriction will be
-removed. It is recommended to update SPV clients to check for the `NODE_BLOOM`
-service bit for nodes that report versions newer than 70011.
-
-Any sequence of pushdatas in OP_RETURN outputs now allowed
-----------------------------------------------------------
+Relay: Any sequence of pushdatas in OP_RETURN outputs now allowed
+-----------------------------------------------------------------
Previously OP_RETURN outputs with a payload were only relayed and mined if they
had a single pushdata. This restriction has been lifted to allow any
@@ -115,14 +146,19 @@ limit on OP_RETURN output size is now applied to the entire serialized
scriptPubKey, 83 bytes by default. (the previous 80 byte default plus three
bytes overhead)
-Merkle branches removed from wallet
------------------------------------
+Relay: Priority transactions
+----------------------------
-Previously, every wallet transaction stored a Merkle branch to prove its
-presence in blocks. This wasn't being used for more than an expensive
-sanity check. Since 0.12, these are no longer stored. When loading a
-0.12 wallet into an older version, it will automatically rescan to avoid
-failed checks.
+Transactions that do not pay the minimum relay fee, are called "free
+transactions" or priority transactions. Previous versions of Bitcoin
+Core would relay and mine priority transactions depending on their
+setting of `-limitfreerelay=<r>` (default: `r=15` kB per minute) and
+`-blockprioritysize=<s>` (default: `50000` bytes of a block's
+priority space).
+
+Priority code is planned to get moved out of from Bitcoin Core 0.13
+and the default block priority size has been set to `0` in Bitcoin Core
+0.12.
BIP65 - CHECKLOCKTIMEVERIFY
---------------------------
@@ -169,98 +205,17 @@ a connection to Tor can be made. It can be configured with the `-listenonion`,
`-torcontrol` and `-torpassword` settings. To show verbose debugging
information, pass `-debug=tor`.
-Replace-by-fee transactions
----------------------------
-
-It is now possible to replace transactions in the transaction memory pool of
-Bitcoin Core 0.12 nodes. Bitcoin Core will only replace transactions which
-have any of their inputs' `nSequence` number set to less than `0xffffffff - 1`.
-Moreover, a replacement transaction may only be accepted when it pays
-sufficient fee, as described in [BIP 125]
-(https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki).
-
-
-Reduce upload traffic
----------------------
-
-A major part of the outbound traffic is caused by serving historic blocks to
-other nodes in initial block download state.
-
-It is now possible to reduce the total upload traffic via the `-maxuploadtarget`
-parameter. This is *not* a hard limit but a threshold to minimize the outbound
-traffic. When the limit is about to be reached, the uploaded data is cut by not
-serving historic blocks (blocks older than one week).
-Moreover, any SPV peer is disconnected when they request a filtered block.
-
-This option can be specified in MiB per day and is turned off by default
-(`-maxuploadtarget=0`).
-The recommended minimum is 144 * MAX_BLOCK_SIZE (currently 144MB) per day.
-
-Whitelisted peers will never be disconnected, although their traffic counts for
-calculating the target.
-
-A more detailed documentation about keeping traffic low can be found in
-[/doc/reducetraffic.md](/doc/reducetraffic.md).
-
-Signature validation using libsecp256k1
----------------------------------------
-
-ECDSA signatures inside Bitcoin transactions now use validation using
-[https://github.com/bitcoin/secp256k1](libsecp256k1) instead of OpenSSL.
-
-Depending on the platform, this means a significant speedup for raw signature
-validation speed. The advantage is largest on x86_64, where validation is over
-five times faster. In practice, this translates to a raw reindexing and new
-block validation times that are less than half of what it was before.
-
-Libsecp256k1 has undergone very extensive testing and validation.
-
-A side effect of this change is that libconsensus no longer depends on OpenSSL.
-
-Direct headers announcement (BIP 130)
--------------------------------------
-
-Between compatible peers, BIP 130 direct headers announcement is used. This
-means that blocks are advertized by announcing their headers directly, instead
-of just announcing the hash. In a reorganization, all new headers are sent,
-instead of just the new tip. This can often prevent an extra roundtrip before
-the actual block is downloaded.
-
-Memory pool limiting
---------------------------------
-
-Previous versions of Bitcoin Core had their mempool limited by checking
-a transaction's fees against the node's minimum relay fee. There was no
-upper bound on the size of the mempool and attackers could send a large
-number of transactions paying just slighly more than the default minimum
-relay fee to crash nodes with relatively low RAM. A temporary workaround
-for previous versions of Bitcoin Core was to raise the default minimum
-relay fee.
-
-Bitcoin Core 0.12 will have a strict maximum size on the mempool. The
-default value is 300 MB and can be configured with the `-maxmempool`
-parameter. Whenever a transaction would cause the mempool to exceed
-its maximum size, the transaction with the lowest feerate will be
-evicted and the node's minimum relay fee will be increased to match
-this feerate. The initial minimum relay fee is set to 1000 satoshis
-per kB.
+Notifications through ZMQ
+-------------------------
-Priority transactions
----------------------
-
-Transactions that do not pay the minimum relay fee, are called "free
-transactions" or priority transactions. Previous versions of Bitcoin
-Core would relay and mine priority transactions depending on their
-setting of `-limitfreerelay=<r>` (default: `r=15` kB per minute) and
-`-blockprioritysize=<s>` (default: `50000` bytes of a block's
-priority space).
-
-Priority code is planned to get moved out of from Bitcoin Core 0.13
-and the default block priority size has been set to `0` in Bitcoin Core
-0.12.
+Bitcoind can now (optionally) asynchronously notify clients through a
+ZMQ-based PUB socket of the arrival of new transactions and blocks.
+This feature requires installation of the ZMQ C API library 4.x and
+configuring its use through the command line or configuration file.
+Please see docs/zmq.md for details of operation.
-Wallet transaction fees
------------------------
+Wallet: Transaction fees
+------------------------
Various improvements have been made to how the wallet calculates
transaction fees.
@@ -285,8 +240,8 @@ the current minimum relay fee.
Finally, a user can set the minimum fee rate for all transactions with
`-mintxfee=<i>`, which defaults to 1000 satoshis per kB.
-Negative confirmations and conflict detection
----------------------------------------------
+Wallet: Negative confirmations and conflict detection
+-----------------------------------------------------
The wallet will now report a negative number for confirmations that indicates
how deep in the block chain the conflict is found. For example, if a transaction
@@ -303,20 +258,50 @@ however. The new "trusted" field in the `listtransactions` RPC output
indicates whether outputs of an unconfirmed transaction are considered
spendable.
-0.12.0 Change log
-=================
+Wallet: Merkle branches removed
+-------------------------------
-Detailed release notes follow. This overview includes changes that affect
-behavior, not code moves, refactors and string updates. For convenience in locating
-the code changes and accompanying discussion, both the pull request and
-git merge commit are mentioned.
+Previously, every wallet transaction stored a Merkle branch to prove its
+presence in blocks. This wasn't being used for more than an expensive
+sanity check. Since 0.12, these are no longer stored. When loading a
+0.12 wallet into an older version, it will automatically rescan to avoid
+failed checks.
-### RPC and REST
+`NODE_BLOOM` service bit
+------------------------
+
+Support for the `NODE_BLOOM` service bit, as described in [BIP
+111](https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki), has been
+added to the P2P protocol code.
+
+BIP 111 defines a service bit to allow peers to advertise that they support
+bloom filters (such as used by SPV clients) explicitly. It also bumps the protocol
+version to allow peers to identify old nodes which allow bloom filtering of the
+connection despite lacking the new service bit.
+
+In this version, it is only enforced for peers that send protocol versions
+`>=70011`. For the next major version it is planned that this restriction will be
+removed. It is recommended to update SPV clients to check for the `NODE_BLOOM`
+service bit for nodes that report versions newer than 70011.
+
+Option parsing behavior
+-----------------------
-- **Asm representations of scriptSig signatures now contain SIGHASH type decodes**
+Command line options are now parsed strictly in the order in which they are
+specified. It used to be the case that `-X -noX` ends up, unintuitively, with X
+set, as `-X` had precedence over `-noX`. This is no longer the case. Like for
+other software, the last specified value for an option will hold.
-The `asm` property of each scriptSig now contains the decoded signature hash
-type for each signature that provides a valid defined hash type.
+RPC: Low-level API changes
+--------------------------
+
+- Monetary amounts can be provided as strings. This means that for example the
+ argument to sendtoaddress can be "0.0001" instead of 0.0001. This can be an
+ advantage if a JSON library insists on using a lossy floating point type for
+ numbers, which would be dangerous for monetary amounts.
+
+* The `asm` property of each scriptSig now contains the decoded signature hash
+ type for each signature that provides a valid defined hash type.
The following items contain assembly representations of scriptSig signatures
and are affected by this change:
@@ -339,30 +324,466 @@ now shows as:
Note that the output of the RPC `decodescript` did not change because it is
configured specifically to process scriptPubKey and not scriptSig scripts.
+RPC: SSL support dropped
+----------------------------
+
+SSL support for RPC, previously enabled by the option `rpcssl` has been dropped
+from both the client and the server. This was done in preparation for removing
+the dependency on OpenSSL for the daemon completely.
+
+Trying to use `rpcssl` will result in an error:
+
+ Error: SSL mode for RPC (-rpcssl) is no longer supported.
+
+If you are one of the few people that relies on this feature, a flexible
+migration path is to use `stunnel`. This is an utility that can tunnel
+arbitrary TCP connections inside SSL. On e.g. Ubuntu it can be installed with:
+
+ sudo apt-get install stunnel4
+
+Then, to tunnel a SSL connection on 28332 to a RPC server bound on localhost on port 18332 do:
+
+ stunnel -d 28332 -r 127.0.0.1:18332 -p stunnel.pem -P ''
+
+It can also be set up system-wide in inetd style.
+
+Another way to re-attain SSL would be to setup a httpd reverse proxy. This solution
+would allow the use of different authentication, loadbalancing, on-the-fly compression and
+caching. A sample config for apache2 could look like:
+
+ Listen 443
+
+ NameVirtualHost *:443
+ <VirtualHost *:443>
+
+ SSLEngine On
+ SSLCertificateFile /etc/apache2/ssl/server.crt
+ SSLCertificateKeyFile /etc/apache2/ssl/server.key
+
+ <Location /bitcoinrpc>
+ ProxyPass http://127.0.0.1:8332/
+ ProxyPassReverse http://127.0.0.1:8332/
+ # optional enable digest auth
+ # AuthType Digest
+ # ...
+
+ # optional bypass bitcoind rpc basic auth
+ # RequestHeader set Authorization "Basic <hash>"
+ # get the <hash> from the shell with: base64 <<< bitcoinrpc:<password>
+ </Location>
+
+ # Or, balance the load:
+ # ProxyPass / balancer://balancer_cluster_name
+
+ </VirtualHost>
+
+0.12.0 Change log
+=================
+
+Detailed release notes follow. This overview includes changes that affect
+behavior, not code moves, refactors and string updates. For convenience in locating
+the code changes and accompanying discussion, both the pull request and
+git merge commit are mentioned.
+
+### RPC and REST
+
+- #6121 `466f0ea` Convert entire source tree from json_spirit to UniValue
+- #6234 `d38cd47` fix rpcmining/getblocktemplate univalue transition logic error
+- #6239 `643114f` Don't go through double in AmountFromValue and ValueFromAmount
+- #6266 `ebab5d3` Fix univalue handling of \u0000 characters.
+- #6276 `f3d4dbb` Fix getbalance * 0
+- #6257 `5ebe7db` Add `paytxfee` and `errors` JSON fields where appropriate
+- #6271 `754aae5` New RPC command disconnectnode
+- #6158 `0abfa8a` Add setban/listbanned RPC commands
+- #6307 `7ecdcd9` rpcban fixes
+- #6290 `5753988` rpc: make `gettxoutsettinfo` run lock-free
+- #6262 `247b914` Return all available information via RPC call "validateaddress"
+- #6339 `c3f0490` UniValue: don't escape solidus, keep espacing of reverse solidus
+- #6353 `6bcb0a2` Show softfork status in getblockchaininfo
+- #6247 `726e286` Add getblockheader RPC call
+- #6362 `d6db115` Fix null id in RPC response during startup
+- #5486 `943b322` [REST] JSON support for /rest/headers
+- #6379 `c52e8b3` rpc: Accept scientific notation for monetary amounts in JSON
+- #6388 `fd5dfda` rpc: Implement random-cookie based authentication
+- #6457 `3c923e8` Include pruned state in chaininfo.json
+- #6456 `bfd807f` rpc: Avoid unnecessary parsing roundtrip in number formatting, fix locale issue
+- #6380 `240b30e` rpc: Accept strings in AmountFromValue
+- #6346 `6bb2805` Add OP_RETURN support in createrawtransaction RPC call, add tests.
+- #6013 `6feeec1` [REST] Add memory pool API
+- #6576 `da9beb2` Stop parsing JSON after first finished construct.
+- #5677 `9aa9099` libevent-based http server
+- #6633 `bbc2b39` Report minimum ping time in getpeerinfo
+- #6648 `cd381d7` Simplify logic of REST request suffix parsing.
+- #6695 `5e21388` libevent http fixes
+- #5264 `48efbdb` show scriptSig signature hash types in transaction decodes. fixes #3166
+- #6719 `1a9f19a` Make HTTP server shutdown more graceful
+- #6859 `0fbfc51` http: Restrict maximum size of http + headers
+- #5936 `bf7c195` [RPC] Add optional locktime to createrawtransaction
+- #6877 `26f5b34` rpc: Add maxmempool and effective min fee to getmempoolinfo
+- #6970 `92701b3` Fix crash in validateaddress with -disablewallet
+- #5574 `755b4ba` Expose GUI labels in RPC as comments
+- #6990 `dbd2c13` http: speed up shutdown
+- #7013 `36baa9f` Remove LOCK(cs_main) from decodescript
+- #6999 `972bf9c` add (max)uploadtarget infos to getnettotals RPC help
+- #7011 `31de241` Add mediantime to getblockchaininfo
+- #7065 `f91e29f` http: add Boost 1.49 compatibility
+- #7087 `be281d8` [Net]Add -enforcenodebloom option
+- #7044 `438ee59` RPC: Added additional config option for multiple RPC users.
+- #7072 `c143c49` [RPC] Add transaction size to JSON output
+- #7022 `9afbd96` Change default block priority size to 0
+- #7141 `c0c08c7` rpc: Don't translate warning messages
+- #7312 `fd4bd50` Add RPC call abandontransaction
+
### Configuration and command-line options
+- #6164 `8d05ec7` Allow user to use -debug=1 to enable all debugging
+- #5288 `4452205` Added -whiteconnections=<n> option
+- #6284 `10ac38e` Fix argument parsing oddity with -noX
+- #6489 `c9c017a` Give a better error message if system clock is bad
+- #6462 `c384800` implement uacomment config parameter which can add comments to user agent as per BIP-0014
+- #6647 `a3babc8` Sanitize uacomment
+- #6742 `3b2d37c` Changed logging to make -logtimestamps to work also for -printtoconsole #6742
+- #6846 `2cd020d` alias -h for -help
+- #6622 `7939164` Introduce -maxuploadtarget
+- #6881 `2b62551` Debug: Add option for microsecond precision in debug.log
+- #6776 `e06c14f` Support -checkmempool=N, which runs checks once every N transactions
+- #6896 `d482c0a` Make -checkmempool=1 not fail through int32 overflow
+- #6993 `b632145` Add -blocksonly option
+- #7323 `a344880` 0.12: Backport -bytespersigop option
+
### Block and transaction handling
+- #6203 `f00b623` Remove P2SH coinbase flag, no longer interesting
+- #6222 `9c93ee5` Explicitly set tx.nVersion for the genesis block and mining tests
+- #5985 `3a1d3e8` Fix removing of orphan transactions
+- #6221 `dd8fe82` Prune: Support noncontiguous block files
+- #6124 `41076aa` Mempool only CHECKLOCKTIMEVERIFY (BIP65) verification, unparameterized version
+- #6329 `d0a10c1` acceptnonstdtxn option to skip (most) "non-standard transaction" checks, for testnet/regtest only
+- #6410 `7cdefb9` Implement accurate memory accounting for mempool
+- #6444 `24ce77d` Exempt unspendable transaction outputs from dust checks
+- #5913 `a0625b8` Add absurdly high fee message to validation state
+- #6177 `2f746c6` Prevent block.nTime from decreasing
+- #6377 `e545371` Handle no chain tip available in InvalidChainFound()
+- #6551 `39ddaeb` Handle leveldb::DestroyDB() errors on wipe failure
+- #6654 `b0ce450` Mempool package tracking
+- #6715 `82d2aef` Fix mempool packages
+- #6680 `4f44530` use CBlockIndex instead of uint256 for UpdatedBlockTip signal
+- #6650 `4fac576` Obfuscate chainstate
+- #6777 `9caaf6e` Unobfuscate chainstate data in CCoinsViewDB::GetStats
+- #6722 `3b20e23` Limit mempool by throwing away the cheapest txn and setting min relay fee to it
+- #6889 `38369dd` fix locking issue with new mempool limiting
+- #6464 `8f3b3cd` Always clean up manual transaction prioritization
+- #6865 `d0badb9` Fix chainstate serialized_size computation
+- #6566 `ff057f4` BIP-113: Mempool-only median time-past as endpoint for lock-time calculations
+- #6934 `3038eb6` Restores mempool only BIP113 enforcement
+- #6965 `de7d459` Benchmark sanity checks and fork checks in ConnectBlock
+- #6918 `eb6172a` Make sigcache faster, more efficient, larger
+- #6771 `38ed190` Policy: Lower default limits for tx chains
+- #6932 `73fa5e6` ModifyNewCoins saves database lookups
+- #5967 `05d5918` Alter assumptions in CCoinsViewCache::BatchWrite
+- #6871 `0e93586` nSequence-based Full-RBF opt-in
+- #7008 `eb77416` Lower bound priority
+- #6915 `2ef5ffa` [Mempool] Improve removal of invalid transactions after reorgs
+- #6898 `4077ad2` Rewrite CreateNewBlock
+- #6872 `bdda4d5` Remove UTXO cache entries when the tx they were added for is removed/does not enter mempool
+- #7062 `12c469b` [Mempool] Fix mempool limiting and replace-by-fee for PrioritiseTransaction
+- #7276 `76de36f` Report non-mandatory script failures correctly
+- #7217 `e08b7cb` Mark blocks with too many sigops as failed
+
### P2P protocol and network code
+- #6172 `88a7ead` Ignore getheaders requests when not synced
+- #5875 `9d60602` Be stricter in processing unrequested blocks
+- #6256 `8ccc07c` Use best header chain timestamps to detect partitioning
+- #6283 `a903ad7` make CAddrMan::size() return the correct type of size_t
+- #6272 `40400d5` Improve proxy initialization (continues #4871)
+- #6310 `66e5465` banlist.dat: store banlist on disk
+- #6412 `1a2de32` Test whether created sockets are select()able
+- #6498 `219b916` Keep track of recently rejected transactions with a rolling bloom filter (cont'd)
+- #6556 `70ec975` Fix masking of irrelevant bits in address groups.
+- #6530 `ea19c2b` Improve addrman Select() performance when buckets are nearly empty
+- #6583 `af9305a` add support for miniupnpc api version 14
+- #6374 `69dc5b5` Connection slot exhaustion DoS mitigation
+- #6636 `536207f` net: correctly initialize nMinPingUsecTime
+- #6579 `0c27795` Add NODE_BLOOM service bit and bump protocol version
+- #6148 `999c8be` Relay blocks when pruning
+- #6588 `cf9bb11` In (strCommand == "tx"), return if AlreadyHave()
+- #6974 `2f71b07` Always allow getheaders from whitelisted peers
+- #6639 `bd629d7` net: Automatically create hidden service, listen on Tor
+- #6984 `9ffc687` don't enforce maxuploadtarget's disconnect for whitelisted peers
+- #7046 `c322652` Net: Improve blocks only mode.
+- #7090 `d6454f6` Connect to Tor hidden services by default (when listening on Tor)
+- #7106 `c894fbb` Fix and improve relay from whitelisted peers
+- #7129 `5d5ef3a` Direct headers announcement (rebase of #6494)
+- #7079 `1b5118b` Prevent peer flooding inv request queue (redux) (redux)
+- #7166 `6ba25d2` Disconnect on mempool requests from peers when over the upload limit.
+- #7133 `f31955d` Replace setInventoryKnown with a rolling bloom filter (rebase of #7100)
+- #7174 `82aff88` Don't do mempool lookups for "mempool" command without a filter
+- #7179 `44fef99` net: Fix sent reject messages for blocks and transactions
+- #7181 `8fc174a` net: Add and document network messages in protocol.h
+- #7125 `10b88be` Replace global trickle node with random delays
+
### Validation
+- #5927 `8d9f0a6` Reduce checkpoints' effect on consensus.
+- #6299 `24f2489` Bugfix: Don't check the genesis block header before accepting it
+- #6361 `d7ada03` Use real number of cores for default -par, ignore virtual cores
+- #6519 `87f37e2` Make logging for validation optional
+- #6351 `2a1090d` CHECKLOCKTIMEVERIFY (BIP65) IsSuperMajority() soft-fork
+- #6931 `54e8bfe` Skip BIP 30 verification where not necessary
+- #6954 `e54ebbf` Switch to libsecp256k1-based ECDSA validation
+- #6508 `61457c2` Switch to a constant-space Merkle root/branch algorithm.
+- #6914 `327291a` Add pre-allocated vector type and use it for CScript
+
### Build system
+- #6210 `0e4f2a0` build: disable optional use of gmp in internal secp256k1 build
+- #6214 `87406aa` [OSX] revert renaming of Bitcoin-Qt.app and use CFBundleDisplayName (partial revert of #6116)
+- #6218 `9d67b10` build/gitian misc updates
+- #6269 `d4565b6` gitian: Use the new bitcoin-detached-sigs git repo for OSX signatures
+- #6418 `d4a910c` Add autogen.sh to source tarball.
+- #6373 `1ae3196` depends: non-qt bumps for 0.12
+- #6434 `059b352` Preserve user-passed CXXFLAGS with --enable-debug
+- #6501 `fee6554` Misc build fixes
+- #6600 `ef4945f` Include bitcoin-tx binary on Debian/Ubuntu
+- #6619 `4862708` depends: bump miniupnpc and ccache
+- #6801 `ae69a75` [depends] Latest config.guess and config.sub
+- #6938 `193f7b5` build: If both Qt4 and Qt5 are installed, use Qt5
+- #7092 `348b281` build: Set osx permissions in the dmg to make Gatekeeper happy
+- #6980 `eccd671` [Depends] Bump Boost, miniupnpc, ccache & zeromq
+
### Wallet
+- #6183 `87550ee` Fix off-by-one error w/ nLockTime in the wallet
+- #6057 `ac5476e` re-enable wallet in autoprune
+- #6356 `9e6c33b` Delay initial pruning until after wallet init
+- #6088 `91389e5` fundrawtransaction
+- #6415 `ddd8d80` Implement watchonly support in fundrawtransaction
+- #6567 `0f0f323` Fix crash when mining with empty keypool.
+- #6688 `4939eab` Fix locking in GetTransaction.
+- #6645 `4dbd43e` Enable wallet key imports without rescan in pruned mode.
+- #6550 `5b77244` Do not store Merkle branches in the wallet.
+- #5924 `12a7712` Clean up change computation in CreateTransaction.
+- #6906 `48b5b84` Reject invalid pubkeys when reading ckey items from the wallet.
+- #7010 `e0a5ef8` Fix fundrawtransaction handling of includeWatching
+- #6851 `616d61b` Optimisation: Store transaction list order in memory rather than compute it every need
+- #6134 `e92377f` Improve usage of fee estimation code
+- #7103 `a775182` [wallet, rpc tests] Fix settxfee, paytxfee
+- #7105 `30c2d8c` Keep track of explicit wallet conflicts instead of using mempool
+- #7096 `9490bd7` [Wallet] Improve minimum absolute fee GUI options
+- #6216 `83f06ca` Take the training wheels off anti-fee-sniping
+- #4906 `96e8d12` Issue#1643: Coinselection prunes extraneous inputs from ApproximateBestSubset
+- #7200 `06c6a58` Checks for null data transaction before issuing error to debug.log
+- #7296 `a36d79b` Add sane fallback for fee estimation
+- #7293 `ff9b610` Add regression test for vValue sort order
+- #7306 `4707797` Make sure conflicted wallet tx's update balances
+
### GUI
-### Tests
+- #6217 `c57e12a` disconnect peers from peers tab via context menu
+- #6209 `ab0ec67` extend rpc console peers tab
+- #6484 `1369d69` use CHashWriter also in SignVerifyMessageDialog
+- #6487 `9848d42` Introduce PlatformStyle
+- #6505 `100c9d3` cleanup icons
+- #4587 `0c465f5` allow users to set -onion via GUI
+- #6529 `c0f66ce` show client user agent in debug window
+- #6594 `878ea69` Disallow duplicate windows.
+- #5665 `6f55cdd` add verifySize() function to PaymentServer
+- #6317 `ca5e2a1` minor optimisations in peertablemodel
+- #6315 `e59d2a8` allow banning and unbanning over UI->peers table
+- #6653 `e04b2fa` Pop debug window in foreground when opened twice
+- #6864 `c702521` Use monospace font
+- #6887 `3694b74` Update coin control and smartfee labels
+- #7000 `814697c` add shortcurts for debug-/console-window
+- #6951 `03403d8` Use maxTxFee instead of 10000000
+- #7051 `a190777` ui: Add "Copy raw transaction data" to transaction list context menu
+- #6979 `776848a` simple mempool info in debug window
+- #7006 `26af1ac` add startup option to reset Qt settings
+- #6780 `2a94cd6` Call init's parameter interaction before we create the UI options model
+- #7112 `96b8025` reduce cs_main locks during tip update, more fluently update UI
+- #7206 `f43c2f9` Add "NODE_BLOOM" to guiutil so that peers don't get UNKNOWN[4]
+- #7282 `5cadf3e` fix coincontrol update issue when deleting a send coins entry
+- #7319 `1320300` Intro: Display required space
+- #7318 `9265e89` quickfix for RPC timer interface problem
+
+### Tests and QA
+
+- #6305 `9005c91` build: comparison tool swap
+- #6318 `e307e13` build: comparison tool NPE fix
+- #6337 `0564c5b` Testing infrastructure: mocktime fixes
+- #6350 `60abba1` add unit tests for the decodescript rpc
+- #5881 `3203a08` Fix and improve txn_doublespend.py test
+- #6390 `6a73d66` tests: Fix bitcoin-tx signing test case
+- #6368 `7fc25c2` CLTV: Add more tests to improve coverage
+- #6414 `5121c68` Fix intermittent test failure, reduce test time
+- #6417 `44fa82d` [QA] fix possible reorg issue in (fund)rawtransaction(s).py RPC test
+- #6398 `3d9362d` rpc: Remove chain-specific RequireRPCPassword
+- #6428 `bb59e78` tests: Remove old sh-based test framework
+- #5515 `d946e9a` RFC: Assert on probable deadlocks if the second lock isnt try_lock
+- #6287 `d2464df` Clang lock debug
+- #6465 `410fd74` Don't share objects between TestInstances
+- #6534 `6c1c7fd` Fix test locking issues and un-revert the probable-deadlines assertions commit
+- #6509 `bb4faee` Fix race condition on test node shutdown
+- #6523 `561f8af` Add p2p-fullblocktest.py
+- #6590 `981fd92` Fix stale socket rebinding and re-enable python tests for Windows
+- #6730 `cb4d6d0` build: Remove dependency of bitcoin-cli on secp256k1
+- #6616 `5ab5dca` Regression Tests: Migrated rpc-tests.sh to all Python rpc-tests.py
+- #6720 `d479311` Creates unittests for addrman, makes addrman more testable.
+- #6853 `c834f56` Added fPowNoRetargeting field to Consensus::Params
+- #6827 `87e5539` [rpc-tests] Check return code
+- #6848 `f2c869a` Add DERSIG transaction test cases
+- #6813 `5242bb3` Support gathering code coverage data for RPC tests with lcov
+- #6888 `c8322ff` Clear strMiscWarning before running PartitionAlert
+- #6894 `2675276` [Tests] Fix BIP65 p2p test
+- #6863 `725539e` [Test Suite] Fix test for null tx input
+- #6926 `a6d0d62` tests: Initialize networking on windows
+- #6822 `9fa54a1` [tests] Be more strict checking dust
+- #6804 `5fcc14e` [tests] Add basic coverage reporting for RPC tests
+- #7045 `72dccfc` Bugfix: Use unique autostart filenames on Linux for testnet/regtest
+- #7095 `d8368a0` Replace scriptnum_test's normative ScriptNum implementation
+- #7063 `6abf6eb` [Tests] Add prioritisetransaction RPC test
+- #7137 `16f4a6e` Tests: Explicitly set chain limits in replace-by-fee test
+- #7216 `9572e49` Removed offline testnet DNSSeed 'alexykot.me'.
+- #7209 `f3ad812` test: don't override BITCOIND and BITCOINCLI if they're set
+- #7226 `301f16a` Tests: Add more tests to p2p-fullblocktest
+- #7153 `9ef7c54` [Tests] Add mempool_limit.py test
+- #7170 `453c567` tests: Disable Tor interaction
+- #7229 `1ed938b` [qa] wallet: Check if maintenance changes the balance
+- #7308 `d513405` [Tests] Eliminate intermittent failures in sendheaders.py
### Miscellaneous
-- **Removed bitrpc.py from contrib**
-
-- **Addition of ZMQ-based Notifications**
+- #6213 `e54ff2f` [init] add -blockversion help and extend -upnp help
+- #5975 `1fea667` Consensus: Decouple ContextualCheckBlockHeader from checkpoints
+- #6061 `eba2f06` Separate Consensus::CheckTxInputs and GetSpendHeight in CheckInputs
+- #5994 `786ed11` detach wallet from miner
+- #6387 `11576a5` [bitcoin-cli] improve error output
+- #6401 `6db53b4` Add BITCOIND_SIGTERM_TIMEOUT to OpenRC init scripts
+- #6430 `b01981e` doc: add documentation for shared library libbitcoinconsensus
+- #6372 `dcc495e` Update Linearize tool to support Windows paths; fix variable scope; update README and example configuration
+- #6453 `8fe5cce` Separate core memory usage computation in core_memusage.h
+- #6149 `633fe10` Buffer log messages and explicitly open logs
+- #6488 `7cbed7f` Avoid leaking file descriptors in RegisterLoad
+- #6497 `a2bf40d` Make sure LogPrintf strings are line-terminated
+- #6504 `b6fee6b` Rationalize currency unit to "BTC"
+- #6507 `9bb4dd8` Removed contrib/bitrpc
+- #6527 `41d650f` Use unique name for AlertNotify tempfile
+- #6561 `e08a7d9` limitedmap fixes and tests
+- #6565 `a6f2aff` Make sure we re-acquire lock if a task throws
+- #6599 `f4d88c4` Make sure LogPrint strings are line-terminated
+- #6630 `195942d` Replace boost::reverse_lock with our own
+- #6103 `13b8282` Add ZeroMQ notifications
+- #6692 `d5d1d2e` devtools: don't push if signing fails in github-merge
+- #6728 `2b0567b` timedata: Prevent warning overkill
+- #6713 `f6ce59c` SanitizeString: Allow hypen char
+- #5987 `4899a04` Bugfix: Fix testnet-in-a-box use case
+- #6733 `b7d78fd` Simple benchmarking framework
+- #6854 `a092970` devtools: Add security-check.py
+- #6790 `fa1d252` devtools: add clang-format.py
+- #7114 `f3d0fdd` util: Don't set strMiscWarning on every exception
+- #7078 `93e0514` uint256::GetCheapHash bigendian compatibility
+- #7094 `34e02e0` Assert now > 0 in GetTime GetTimeMillis GetTimeMicros
+
+Credits
+=======
+
+Thanks to everyone who directly contributed to this release:
+
+- accraze
+- Adam Weiss
+- Alex Morcos
+- Alex van der Peet
+- AlSzacrel
+- Altoidnerd
+- Andriy Voskoboinyk
+- antonio-fr
+- Arne Brutschy
+- Ashley Holman
+- Bob McElrath
+- Braydon Fuller
+- BtcDrak
+- Casey Rodarmor
+- centaur1
+- Chris Kleeschulte
+- Christian Decker
+- Cory Fields
+- daniel
+- Daniel Cousens
+- Daniel Kraft
+- David Hill
+- dexX7
+- Diego Viola
+- Elias Rohrer
+- Eric Lombrozo
+- Erik Mossberg
+- Esteban Ordano
+- EthanHeilman
+- fanquake
+- Florian Schmaus
+- Forrest Voight
+- Gavin Andresen
+- Gregory Maxwell
+- Gregory Sanders
+- Ian T
+- Irving Ruan
+- Jacob Welsh
+- James O'Beirne
+- Jeff Garzik
+- Johnathan Corgan
+- Jonas Schnelli
+- Jonathan Cross
+- João Barbosa
+- Jorge Timón
+- Josh Lehan
+- J Ross Nicoll
+- kazcw
+- Kevin Cooper
+- lpescher
+- Luke Dashjr
+- Marco
+- MarcoFalke
+- Mark Friedenbach
+- Matt Bogosian
+- Matt Corallo
+- Matt Quinn
+- Micha
+- Michael
+- Michael Ford
+- Midnight Magic
+- Mitchell Cash
+- mruddy
+- Nick
+- Patick Strateman
+- Patrick Strateman
+- Paul Georgiou
+- Paul Rabahy
+- paveljanik
+- Pavel Janík
+- Pavel Vasin
+- Pavol Rusnak
+- Peter Josling
+- Peter Todd
+- Philip Kaufmann
+- Pieter Wuille
+- ptschip
+- randy-waterhouse
+- rion
+- Ross Nicoll
+- Ryan Havar
+- Shaul Kfir
+- Simon Males
+- Stephen
+- Suhas Daftuar
+- tailsjoin
+- ฿tcDrak
+- Thomas Kerin
+- Tom Harding
+- tulip
+- unsystemizer
+- Veres Lajos
+- Wladimir J. van der Laan
+- Zak Wilcox
+- zathras-crypto
+
+As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
-Bitcoind can now (optionally) asynchronously notify clients through a
-ZMQ-based PUB socket of the arrival of new transactions and blocks.
-This feature requires installation of the ZMQ C API library 4.x and
-configuring its use through the command line or configuration file.
-Please see docs/zmq.md for details of operation.