/ doc / release-notes / release-notes-0.12.0.md
release-notes-0.12.0.md
  1  Bitcoin Core version 0.12.0 is now available from:
  2  
  3    <https://bitcoin.org/bin/bitcoin-core-0.12.0/>
  4  
  5  This is a new major version release, bringing new features and other improvements.
  6  
  7  Please report bugs using the issue tracker at github:
  8  
  9    <https://github.com/bitcoin/bitcoin/issues>
 10  
 11  Upgrading and downgrading
 12  =========================
 13  
 14  How to Upgrade
 15  --------------
 16  
 17  If you are running an older version, shut it down. Wait until it has completely
 18  shut down (which might take a few minutes for older versions), then run the
 19  installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or
 20  bitcoind/bitcoin-qt (on Linux).
 21  
 22  Downgrade warning
 23  -----------------
 24  
 25  ### Downgrade to a version < 0.10.0
 26  
 27  Because release 0.10.0 and later makes use of headers-first synchronization and
 28  parallel block download (see further), the block files and databases are not
 29  backwards-compatible with pre-0.10 versions of Bitcoin Core or other software:
 30  
 31  * Blocks will be stored on disk out of order (in the order they are
 32  received, really), which makes it incompatible with some tools or
 33  other programs. Reindexing using earlier versions will also not work
 34  anymore as a result of this.
 35  
 36  * The block index database will now hold headers for which no block is
 37  stored on disk, which earlier versions won't support.
 38  
 39  If you want to be able to downgrade smoothly, make a backup of your entire data
 40  directory. Without this your node will need start syncing (or importing from
 41  bootstrap.dat) anew afterwards. It is possible that the data from a completely
 42  synchronised 0.10 node may be usable in older versions as-is, but this is not
 43  supported and may break as soon as the older version attempts to reindex.
 44  
 45  This does not affect wallet forward or backward compatibility.
 46  
 47  ### Downgrade to a version < 0.12.0
 48  
 49  Because release 0.12.0 and later will obfuscate the chainstate on every
 50  fresh sync or reindex, the chainstate is not backwards-compatible with
 51  pre-0.12 versions of Bitcoin Core or other software.
 52  
 53  If you want to downgrade after you have done a reindex with 0.12.0 or later,
 54  you will need to reindex when you first start Bitcoin Core version 0.11 or
 55  earlier.
 56  
 57  Notable changes
 58  ===============
 59  
 60  Signature validation using libsecp256k1
 61  ---------------------------------------
 62  
 63  ECDSA signatures inside Bitcoin transactions now use validation using
 64  [libsecp256k1](https://github.com/bitcoin-core/secp256k1) instead of OpenSSL.
 65  
 66  Depending on the platform, this means a significant speedup for raw signature
 67  validation speed. The advantage is largest on x86_64, where validation is over
 68  five times faster. In practice, this translates to a raw reindexing and new
 69  block validation times that are less than half of what it was before.
 70  
 71  Libsecp256k1 has undergone very extensive testing and validation.
 72  
 73  A side effect of this change is that libconsensus no longer depends on OpenSSL.
 74  
 75  Reduce upload traffic
 76  ---------------------
 77  
 78  A major part of the outbound traffic is caused by serving historic blocks to
 79  other nodes in initial block download state.
 80  
 81  It is now possible to reduce the total upload traffic via the `-maxuploadtarget`
 82  parameter. This is *not* a hard limit but a threshold to minimize the outbound
 83  traffic. When the limit is about to be reached, the uploaded data is cut by not
 84  serving historic blocks (blocks older than one week).
 85  Moreover, any SPV peer is disconnected when they request a filtered block.
 86  
 87  This option can be specified in MiB per day and is turned off by default
 88  (`-maxuploadtarget=0`).
 89  The recommended minimum is 144 * MAX_BLOCK_SIZE (currently 144MB) per day.
 90  
 91  Whitelisted peers will never be disconnected, although their traffic counts for
 92  calculating the target.
 93  
 94  A more detailed documentation about keeping traffic low can be found in
 95  [/doc/reduce-traffic.md](/doc/reduce-traffic.md).
 96  
 97  Direct headers announcement (BIP 130)
 98  -------------------------------------
 99  
100  Between compatible peers, [BIP 130]
101  (https://github.com/bitcoin/bips/blob/master/bip-0130.mediawiki)
102  direct headers announcement is used. This means that blocks are advertised by
103  announcing their headers directly, instead of just announcing the hash. In a
104  reorganization, all new headers are sent, instead of just the new tip. This
105  can often prevent an extra roundtrip before the actual block is downloaded.
106  
107  Memory pool limiting
108  --------------------
109  
110  Previous versions of Bitcoin Core had their mempool limited by checking
111  a transaction's fees against the node's minimum relay fee. There was no
112  upper bound on the size of the mempool and attackers could send a large
113  number of transactions paying just slighly more than the default minimum
114  relay fee to crash nodes with relatively low RAM. A temporary workaround
115  for previous versions of Bitcoin Core was to raise the default minimum
116  relay fee.
117  
118  Bitcoin Core 0.12 will have a strict maximum size on the mempool. The
119  default value is 300 MB and can be configured with the `-maxmempool`
120  parameter. Whenever a transaction would cause the mempool to exceed
121  its maximum size, the transaction that (along with in-mempool descendants) has
122  the lowest total feerate (as a package) will be evicted and the node's effective
123  minimum relay feerate will be increased to match this feerate plus the initial
124  minimum relay feerate. The initial minimum relay feerate is set to
125  1000 satoshis per kB.
126  
127  Bitcoin Core 0.12 also introduces new default policy limits on the length and
128  size of unconfirmed transaction chains that are allowed in the mempool
129  (generally limiting the length of unconfirmed chains to 25 transactions, with a
130  total size of 101 KB).  These limits can be overridden using command line
131  arguments; see the extended help (`--help -help-debug`) for more information.
132  
133  Opt-in Replace-by-fee transactions
134  ----------------------------------
135  
136  It is now possible to replace transactions in the transaction memory pool of
137  Bitcoin Core 0.12 nodes. Bitcoin Core will only allow replacement of
138  transactions which have any of their inputs' `nSequence` number set to less
139  than `0xffffffff - 1`.  Moreover, a replacement transaction may only be
140  accepted when it pays sufficient fee, as described in [BIP 125]
141  (https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki).
142  
143  Transaction replacement can be disabled with a new command line option,
144  `-mempoolreplacement=0`.  Transactions signaling replacement under BIP125 will
145  still be allowed into the mempool in this configuration, but replacements will
146  be rejected.  This option is intended for miners who want to continue the
147  transaction selection behavior of previous releases.
148  
149  The `-mempoolreplacement` option is *not recommended* for wallet users seeking
150  to avoid receipt of unconfirmed opt-in transactions, because this option does
151  not prevent transactions which are replaceable under BIP 125 from being accepted
152  (only subsequent replacements, which other nodes on the network that implement
153  BIP 125 are likely to relay and mine).  Wallet users wishing to detect whether
154  a transaction is subject to replacement under BIP 125 should instead use the
155  updated RPC calls `gettransaction` and `listtransactions`, which now have an
156  additional field in the output indicating if a transaction is replaceable under
157  BIP125 ("bip125-replaceable").
158  
159  Note that the wallet in Bitcoin Core 0.12 does not yet have support for
160  creating transactions that would be replaceable under BIP 125.
161  
162  
163  RPC: Random-cookie RPC authentication
164  -------------------------------------
165  
166  When no `-rpcpassword` is specified, the daemon now uses a special 'cookie'
167  file for authentication. This file is generated with random content when the
168  daemon starts, and deleted when it exits. Its contents are used as
169  authentication token. Read access to this file controls who can access through
170  RPC. By default it is stored in the data directory but its location can be
171  overridden with the option `-rpccookiefile`.
172  
173  This is similar to Tor's CookieAuthentication: see
174  https://www.torproject.org/docs/tor-manual.html.en
175  
176  This allows running bitcoind without having to do any manual configuration.
177  
178  Relay: Any sequence of pushdatas in OP_RETURN outputs now allowed
179  -----------------------------------------------------------------
180  
181  Previously OP_RETURN outputs with a payload were only relayed and mined if they
182  had a single pushdata. This restriction has been lifted to allow any
183  combination of data pushes and numeric constant opcodes (OP_1 to OP_16) after
184  the OP_RETURN. The limit on OP_RETURN output size is now applied to the entire
185  serialized scriptPubKey, 83 bytes by default. (the previous 80 byte default plus
186  three bytes overhead)
187  
188  Relay: New and only new blocks relayed when pruning
189  ---------------------------------------------------
190  
191  When running in pruned mode, the client will now relay new blocks. When
192  responding to the `getblocks` message, only hashes of blocks that are on disk
193  and are likely to remain there for some reasonable time window (1 hour) will be
194  returned (previously all relevant hashes were returned).
195  
196  Relay and Mining: Priority transactions
197  ---------------------------------------
198  
199  Bitcoin Core has a heuristic 'priority' based on coin value and age. This
200  calculation is used for relaying of transactions which do not pay the
201  minimum relay fee, and can be used as an alternative way of sorting
202  transactions for mined blocks. Bitcoin Core will relay transactions with
203  insufficient fees depending on the setting of `-limitfreerelay=<r>` (default:
204  `r=15` kB per minute) and `-blockprioritysize=<s>`.
205  
206  In Bitcoin Core 0.12, when mempool limit has been reached a higher minimum
207  relay fee takes effect to limit memory usage. Transactions which do not meet
208  this higher effective minimum relay fee will not be relayed or mined even if
209  they rank highly according to the priority heuristic.
210  
211  The mining of transactions based on their priority is also now disabled by
212  default. To re-enable it, simply set `-blockprioritysize=<n>` where is the size
213  in bytes of your blocks to reserve for these transactions. The old default was
214  50k, so to retain approximately the same policy, you would set
215  `-blockprioritysize=50000`.
216  
217  Additionally, as a result of computational simplifications, the priority value
218  used for transactions received with unconfirmed inputs is lower than in prior
219  versions due to avoiding recomputing the amounts as input transactions confirm.
220  
221  External miner policy set via the `prioritisetransaction` RPC to rank
222  transactions already in the mempool continues to work as it has previously.
223  Note, however, that if mining priority transactions is left disabled, the
224  priority delta will be ignored and only the fee metric will be effective.
225  
226  This internal automatic prioritization handling is being considered for removal
227  entirely in Bitcoin Core 0.13, and it is at this time undecided whether the
228  more accurate priority calculation for chained unconfirmed transactions will be
229  restored. Community direction on this topic is particularly requested to help
230  set project priorities.
231  
232  Automatically use Tor hidden services
233  -------------------------------------
234  
235  Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket
236  API, to create and destroy 'ephemeral' hidden services programmatically.
237  Bitcoin Core has been updated to make use of this.
238  
239  This means that if Tor is running (and proper authorization is available),
240  Bitcoin Core automatically creates a hidden service to listen on, without
241  manual configuration. Bitcoin Core will also use Tor automatically to connect
242  to other .onion nodes if the control socket can be successfully opened. This
243  will positively affect the number of available .onion nodes and their usage.
244  
245  This new feature is enabled by default if Bitcoin Core is listening, and
246  a connection to Tor can be made. It can be configured with the `-listenonion`,
247  `-torcontrol` and `-torpassword` settings. To show verbose debugging
248  information, pass `-debug=tor`.
249  
250  Notifications through ZMQ
251  -------------------------
252  
253  Bitcoind can now (optionally) asynchronously notify clients through a
254  ZMQ-based PUB socket of the arrival of new transactions and blocks.
255  This feature requires installation of the ZMQ C API library 4.x and
256  configuring its use through the command line or configuration file.
257  Please see [docs/zmq.md](/doc/zmq.md) for details of operation.
258  
259  Wallet: Transaction fees
260  ------------------------
261  
262  Various improvements have been made to how the wallet calculates
263  transaction fees.
264  
265  Users can decide to pay a predefined fee rate by setting `-paytxfee=<n>`
266  (or `settxfee <n>` rpc during runtime). A value of `n=0` signals Bitcoin
267  Core to use floating fees. By default, Bitcoin Core will use floating
268  fees.
269  
270  Based on past transaction data, floating fees approximate the fees
271  required to get into the `m`th block from now. This is configurable
272  with `-txconfirmtarget=<m>` (default: `2`).
273  
274  Sometimes, it is not possible to give good estimates, or an estimate
275  at all. Therefore, a fallback value can be set with `-fallbackfee=<f>`
276  (default: `0.0002` BTC/kB).
277  
278  At all times, Bitcoin Core will cap fees at `-maxtxfee=<x>` (default:
279  0.10) BTC.
280  Furthermore, Bitcoin Core will never create transactions paying less than
281  the current minimum relay fee.
282  Finally, a user can set the minimum fee rate for all transactions with
283  `-mintxfee=<i>`, which defaults to 1000 satoshis per kB.
284  
285  Wallet: Negative confirmations and conflict detection
286  -----------------------------------------------------
287  
288  The wallet will now report a negative number for confirmations that indicates
289  how deep in the block chain the conflict is found. For example, if a transaction
290  A has 5 confirmations and spends the same input as a wallet transaction B, B
291  will be reported as having -5 confirmations. If another wallet transaction C
292  spends an output from B, it will also be reported as having -5 confirmations.
293  To detect conflicts with historical transactions in the chain a one-time
294  `-rescan` may be needed.
295  
296  Unlike earlier versions, unconfirmed but non-conflicting transactions will never
297  get a negative confirmation count. They are not treated as spendable unless
298  they're coming from ourself (change) and accepted into our local mempool,
299  however. The new "trusted" field in the `listtransactions` RPC output
300  indicates whether outputs of an unconfirmed transaction are considered
301  spendable.
302  
303  Wallet: Merkle branches removed
304  -------------------------------
305  
306  Previously, every wallet transaction stored a Merkle branch to prove its
307  presence in blocks. This wasn't being used for more than an expensive
308  sanity check. Since 0.12, these are no longer stored. When loading a
309  0.12 wallet into an older version, it will automatically rescan to avoid
310  failed checks.
311  
312  Wallet: Pruning
313  ---------------
314  
315  With 0.12 it is possible to use wallet functionality in pruned mode.
316  This can reduce the disk usage from currently around 60 GB to
317  around 2 GB.
318  
319  However, rescans as well as the RPCs `importwallet`, `importaddress`,
320  `importprivkey` are disabled.
321  
322  To enable block pruning set `prune=<N>` on the command line or in
323  `bitcoin.conf`, where `N` is the number of MiB to allot for
324  raw block & undo data.
325  
326  A value of 0 disables pruning. The minimal value above 0 is 550. Your
327  wallet is as secure with high values as it is with low ones. Higher
328  values merely ensure that your node will not shut down upon blockchain
329  reorganizations of more than 2 days - which are unlikely to happen in
330  practice. In future releases, a higher value may also help the network
331  as a whole: stored blocks could be served to other nodes.
332  
333  For further information about pruning, you may also consult the [release
334  notes of v0.11.0](https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning).
335  
336  `NODE_BLOOM` service bit
337  ------------------------
338  
339  Support for the `NODE_BLOOM` service bit, as described in [BIP
340  111](https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki), has been
341  added to the P2P protocol code.
342  
343  BIP 111 defines a service bit to allow peers to advertise that they support
344  bloom filters (such as used by SPV clients) explicitly. It also bumps the protocol
345  version to allow peers to identify old nodes which allow bloom filtering of the
346  connection despite lacking the new service bit.
347  
348  In this version, it is only enforced for peers that send protocol versions
349  `>=70011`. For the next major version it is planned that this restriction will be
350  removed. It is recommended to update SPV clients to check for the `NODE_BLOOM`
351  service bit for nodes that report versions newer than 70011.
352  
353  Option parsing behavior
354  -----------------------
355  
356  Command line options are now parsed strictly in the order in which they are
357  specified. It used to be the case that `-X -noX` ends up, unintuitively, with X
358  set, as `-X` had precedence over `-noX`. This is no longer the case. Like for
359  other software, the last specified value for an option will hold.
360  
361  RPC: Low-level API changes
362  --------------------------
363  
364  - Monetary amounts can be provided as strings. This means that for example the
365    argument to sendtoaddress can be "0.0001" instead of 0.0001. This can be an
366    advantage if a JSON library insists on using a lossy floating point type for
367    numbers, which would be dangerous for monetary amounts.
368  
369  * The `asm` property of each scriptSig now contains the decoded signature hash
370    type for each signature that provides a valid defined hash type.
371  
372  * OP_NOP2 has been renamed to OP_CHECKLOCKTIMEVERIFY by [BIP 65](https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki)
373  
374  The following items contain assembly representations of scriptSig signatures
375  and are affected by this change:
376  
377  - RPC `getrawtransaction`
378  - RPC `decoderawtransaction`
379  - RPC `decodescript`
380  - REST `/rest/tx/` (JSON format)
381  - REST `/rest/block/` (JSON format when including extended tx details)
382  - `bitcoin-tx -json`
383  
384  For example, the `scriptSig.asm` property of a transaction input that
385  previously showed an assembly representation of:
386  
387      304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c509001 400000 OP_NOP2
388  
389  now shows as:
390  
391      304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c5090[ALL] 400000 OP_CHECKLOCKTIMEVERIFY
392  
393  Note that the output of the RPC `decodescript` did not change because it is
394  configured specifically to process scriptPubKey and not scriptSig scripts.
395  
396  RPC: SSL support dropped
397  ------------------------
398  
399  SSL support for RPC, previously enabled by the option `rpcssl` has been dropped
400  from both the client and the server. This was done in preparation for removing
401  the dependency on OpenSSL for the daemon completely.
402  
403  Trying to use `rpcssl` will result in an error:
404  
405      Error: SSL mode for RPC (-rpcssl) is no longer supported.
406  
407  If you are one of the few people that relies on this feature, a flexible
408  migration path is to use `stunnel`. This is an utility that can tunnel
409  arbitrary TCP connections inside SSL. On e.g. Ubuntu it can be installed with:
410  
411      sudo apt-get install stunnel4
412  
413  Then, to tunnel a SSL connection on 28332 to a RPC server bound on localhost on port 18332 do:
414  
415      stunnel -d 28332 -r 127.0.0.1:18332 -p stunnel.pem -P ''
416  
417  It can also be set up system-wide in inetd style.
418  
419  Another way to re-attain SSL would be to setup a httpd reverse proxy. This solution
420  would allow the use of different authentication, loadbalancing, on-the-fly compression and
421  caching. A sample config for apache2 could look like:
422  
423      Listen 443
424  
425      NameVirtualHost *:443
426      <VirtualHost *:443>
427  
428      SSLEngine On
429      SSLCertificateFile /etc/apache2/ssl/server.crt
430      SSLCertificateKeyFile /etc/apache2/ssl/server.key
431  
432      <Location /bitcoinrpc>
433          ProxyPass http://127.0.0.1:8332/
434          ProxyPassReverse http://127.0.0.1:8332/
435          # optional enable digest auth
436          # AuthType Digest
437          # ...
438  
439          # optional bypass bitcoind rpc basic auth
440          # RequestHeader set Authorization "Basic <hash>"
441          # get the <hash> from the shell with: base64 <<< bitcoinrpc:<password>
442      </Location>
443  
444      # Or, balance the load:
445      # ProxyPass / balancer://balancer_cluster_name
446  
447      </VirtualHost>
448  
449  Mining Code Changes
450  -------------------
451  
452  The mining code in 0.12 has been optimized to be significantly faster and use less
453  memory. As part of these changes, consensus critical calculations are cached on a
454  transaction's acceptance into the mempool and the mining code now relies on the
455  consistency of the mempool to assemble blocks. However all blocks are still tested
456  for validity after assembly.
457  
458  Other P2P Changes
459  -----------------
460  
461  The list of banned peers is now stored on disk rather than in memory.
462  Restarting bitcoind will no longer clear out the list of banned peers; instead
463  a new RPC call (`clearbanned`) can be used to manually clear the list.  The new
464  `setban` RPC call can also be used to manually ban or unban a peer.
465  
466  0.12.0 Change log
467  =================
468  
469  Detailed release notes follow. This overview includes changes that affect
470  behavior, not code moves, refactors and string updates. For convenience in locating
471  the code changes and accompanying discussion, both the pull request and
472  git merge commit are mentioned.
473  
474  ### RPC and REST
475  
476  - #6121 `466f0ea` Convert entire source tree from json_spirit to UniValue (Jonas Schnelli)
477  - #6234 `d38cd47` fix rpcmining/getblocktemplate univalue transition logic error (Jonas Schnelli)
478  - #6239 `643114f` Don't go through double in AmountFromValue and ValueFromAmount (Wladimir J. van der Laan)
479  - #6266 `ebab5d3` Fix univalue handling of \u0000 characters. (Daniel Kraft)
480  - #6276 `f3d4dbb` Fix getbalance * 0 (Tom Harding)
481  - #6257 `5ebe7db` Add `paytxfee` and `errors` JSON fields where appropriate (Stephen)
482  - #6271 `754aae5` New RPC command disconnectnode (Alex van der Peet)
483  - #6158 `0abfa8a` Add setban/listbanned RPC commands (Jonas Schnelli)
484  - #6307 `7ecdcd9` rpcban fixes (Jonas Schnelli)
485  - #6290 `5753988` rpc: make `gettxoutsettinfo` run lock-free (Wladimir J. van der Laan)
486  - #6262 `247b914` Return all available information via RPC call "validateaddress" (dexX7)
487  - #6339 `c3f0490` UniValue: don't escape solidus, keep espacing of reverse solidus (Jonas Schnelli)
488  - #6353 `6bcb0a2` Show softfork status in getblockchaininfo (Wladimir J. van der Laan)
489  - #6247 `726e286` Add getblockheader RPC call (Peter Todd)
490  - #6362 `d6db115` Fix null id in RPC response during startup (Forrest Voight)
491  - #5486 `943b322` [REST] JSON support for /rest/headers (Jonas Schnelli)
492  - #6379 `c52e8b3` rpc: Accept scientific notation for monetary amounts in JSON (Wladimir J. van der Laan)
493  - #6388 `fd5dfda` rpc: Implement random-cookie based authentication (Wladimir J. van der Laan)
494  - #6457 `3c923e8` Include pruned state in chaininfo.json (Simon Males)
495  - #6456 `bfd807f` rpc: Avoid unnecessary parsing roundtrip in number formatting, fix locale issue (Wladimir J. van der Laan)
496  - #6380 `240b30e` rpc: Accept strings in AmountFromValue (Wladimir J. van der Laan)
497  - #6346 `6bb2805` Add OP_RETURN support in createrawtransaction RPC call, add tests. (paveljanik)
498  - #6013 `6feeec1` [REST] Add memory pool API (paveljanik)
499  - #6576 `da9beb2` Stop parsing JSON after first finished construct. (Daniel Kraft)
500  - #5677 `9aa9099` libevent-based http server (Wladimir J. van der Laan)
501  - #6633 `bbc2b39` Report minimum ping time in getpeerinfo (Matt Corallo)
502  - #6648 `cd381d7` Simplify logic of REST request suffix parsing. (Daniel Kraft)
503  - #6695 `5e21388` libevent http fixes (Wladimir J. van der Laan)
504  - #5264 `48efbdb` show scriptSig signature hash types in transaction decodes. fixes #3166 (mruddy)
505  - #6719 `1a9f19a` Make HTTP server shutdown more graceful (Wladimir J. van der Laan)
506  - #6859 `0fbfc51` http: Restrict maximum size of http + headers (Wladimir J. van der Laan)
507  - #5936 `bf7c195` [RPC] Add optional locktime to createrawtransaction (Tom Harding)
508  - #6877 `26f5b34` rpc: Add maxmempool and effective min fee to getmempoolinfo (Wladimir J. van der Laan)
509  - #6970 `92701b3` Fix crash in validateaddress with -disablewallet (Wladimir J. van der Laan)
510  - #5574 `755b4ba` Expose GUI labels in RPC as comments (Luke-Jr)
511  - #6990 `dbd2c13` http: speed up shutdown (Wladimir J. van der Laan)
512  - #7013 `36baa9f` Remove LOCK(cs_main) from decodescript (Peter Todd)
513  - #6999 `972bf9c` add (max)uploadtarget infos to getnettotals RPC help (Jonas Schnelli)
514  - #7011 `31de241` Add mediantime to getblockchaininfo (Peter Todd)
515  - #7065 `f91e29f` http: add Boost 1.49 compatibility (Wladimir J. van der Laan)
516  - #7087 `be281d8` [Net]Add -enforcenodebloom option (Patrick Strateman)
517  - #7044 `438ee59` RPC: Added additional config option for multiple RPC users. (Gregory Sanders)
518  - #7072 `c143c49` [RPC] Add transaction size to JSON output (Nikita Zhavoronkov)
519  - #7022 `9afbd96` Change default block priority size to 0 (Alex Morcos)
520  - #7141 `c0c08c7` rpc: Don't translate warning messages (Wladimir J. van der Laan)
521  - #7312 `fd4bd50` Add RPC call abandontransaction (Alex Morcos)
522  - #7222 `e25b158` RPC: indicate which transactions are replaceable (Suhas Daftuar)
523  - #7472 `b2f2b85` rpc: Add WWW-Authenticate header to 401 response (Wladimir J. van der Laan)
524  - #7469 `9cb31e6` net.h fix spelling: misbeha{b,v}ing (Matt)
525  
526  ### Configuration and command-line options
527  
528  - #6164 `8d05ec7` Allow user to use -debug=1 to enable all debugging (lpescher)
529  - #5288 `4452205` Added `-whiteconnections=<n>` option (Josh Lehan)
530  - #6284 `10ac38e` Fix argument parsing oddity with -noX (Wladimir J. van der Laan)
531  - #6489 `c9c017a` Give a better error message if system clock is bad (Casey Rodarmor)
532  - #6462 `c384800` implement uacomment config parameter which can add comments to user agent as per BIP-0014 (Pavol Rusnak)
533  - #6647 `a3babc8` Sanitize uacomment (MarcoFalke)
534  - #6742 `3b2d37c` Changed logging to make -logtimestamps to work also for -printtoconsole (arnuschky)
535  - #6846 `2cd020d` alias -h for -help (Daniel Cousens)
536  - #6622 `7939164` Introduce -maxuploadtarget (Jonas Schnelli)
537  - #6881 `2b62551` Debug: Add option for microsecond precision in debug.log (Suhas Daftuar)
538  - #6776 `e06c14f` Support -checkmempool=N, which runs checks once every N transactions (Pieter Wuille)
539  - #6896 `d482c0a` Make -checkmempool=1 not fail through int32 overflow (Pieter Wuille)
540  - #6993 `b632145` Add -blocksonly option (Patrick Strateman)
541  - #7323 `a344880` 0.12: Backport -bytespersigop option (Luke-Jr)
542  - #7386 `da83ecd` Add option `-permitrbf` to set transaction replacement policy (Wladimir J. van der Laan)
543  - #7290 `b16b5bc` Add missing options help (MarcoFalke)
544  - #7440 `c76bfff` Rename permitrbf to mempoolreplacement and provide minimal string-list forward compatibility (Luke-Jr)
545  
546  ### Block and transaction handling
547  
548  - #6203 `f00b623` Remove P2SH coinbase flag, no longer interesting (Luke-Jr)
549  - #6222 `9c93ee5` Explicitly set tx.nVersion for the genesis block and mining tests (Mark Friedenbach)
550  - #5985 `3a1d3e8` Fix removing of orphan transactions (Alex Morcos)
551  - #6221 `dd8fe82` Prune: Support noncontiguous block files (Adam Weiss)
552  - #6124 `41076aa` Mempool only CHECKLOCKTIMEVERIFY (BIP65) verification, unparameterized version (Peter Todd)
553  - #6329 `d0a10c1` acceptnonstdtxn option to skip (most) "non-standard transaction" checks, for testnet/regtest only (Luke-Jr)
554  - #6410 `7cdefb9` Implement accurate memory accounting for mempool (Pieter Wuille)
555  - #6444 `24ce77d` Exempt unspendable transaction outputs from dust checks (dexX7)
556  - #5913 `a0625b8` Add absurdly high fee message to validation state (Shaul Kfir)
557  - #6177 `2f746c6` Prevent block.nTime from decreasing (Mark Friedenbach)
558  - #6377 `e545371` Handle no chain tip available in InvalidChainFound() (Ross Nicoll)
559  - #6551 `39ddaeb` Handle leveldb::DestroyDB() errors on wipe failure (Adam Weiss)
560  - #6654 `b0ce450` Mempool package tracking (Suhas Daftuar)
561  - #6715 `82d2aef` Fix mempool packages (Suhas Daftuar)
562  - #6680 `4f44530` use CBlockIndex instead of uint256 for UpdatedBlockTip signal (Jonas Schnelli)
563  - #6650 `4fac576` Obfuscate chainstate (James O'Beirne)
564  - #6777 `9caaf6e` Unobfuscate chainstate data in CCoinsViewDB::GetStats (James O'Beirne)
565  - #6722 `3b20e23` Limit mempool by throwing away the cheapest txn and setting min relay fee to it (Matt Corallo)
566  - #6889 `38369dd` fix locking issue with new mempool limiting (Jonas Schnelli)
567  - #6464 `8f3b3cd` Always clean up manual transaction prioritization (Casey Rodarmor)
568  - #6865 `d0badb9` Fix chainstate serialized_size computation (Pieter Wuille)
569  - #6566 `ff057f4` BIP-113: Mempool-only median time-past as endpoint for lock-time calculations (Mark Friedenbach)
570  - #6934 `3038eb6` Restores mempool only BIP113 enforcement (Gregory Maxwell)
571  - #6965 `de7d459` Benchmark sanity checks and fork checks in ConnectBlock (Matt Corallo)
572  - #6918 `eb6172a` Make sigcache faster, more efficient, larger (Pieter Wuille)
573  - #6771 `38ed190` Policy: Lower default limits for tx chains (Alex Morcos)
574  - #6932 `73fa5e6` ModifyNewCoins saves database lookups (Alex Morcos)
575  - #5967 `05d5918` Alter assumptions in CCoinsViewCache::BatchWrite (Alex Morcos)
576  - #6871 `0e93586` nSequence-based Full-RBF opt-in (Peter Todd)
577  - #7008 `eb77416` Lower bound priority (Alex Morcos)
578  - #6915 `2ef5ffa` [Mempool] Improve removal of invalid transactions after reorgs (Suhas Daftuar)
579  - #6898 `4077ad2` Rewrite CreateNewBlock (Alex Morcos)
580  - #6872 `bdda4d5` Remove UTXO cache entries when the tx they were added for is removed/does not enter mempool (Matt Corallo)
581  - #7062 `12c469b` [Mempool] Fix mempool limiting and replace-by-fee for PrioritiseTransaction (Suhas Daftuar)
582  - #7276 `76de36f` Report non-mandatory script failures correctly (Pieter Wuille)
583  - #7217 `e08b7cb` Mark blocks with too many sigops as failed (Suhas Daftuar)
584  - #7387 `f4b2ce8` Get rid of inaccurate ScriptSigArgsExpected (Pieter Wuille)
585  
586  ### P2P protocol and network code
587  
588  - #6172 `88a7ead` Ignore getheaders requests when not synced (Suhas Daftuar)
589  - #5875 `9d60602` Be stricter in processing unrequested blocks (Suhas Daftuar)
590  - #6256 `8ccc07c` Use best header chain timestamps to detect partitioning (Gavin Andresen)
591  - #6283 `a903ad7` make CAddrMan::size() return the correct type of size_t (Diapolo)
592  - #6272 `40400d5` Improve proxy initialization (continues #4871) (Wladimir J. van der Laan, Diapolo)
593  - #6310 `66e5465` banlist.dat: store banlist on disk (Jonas Schnelli)
594  - #6412 `1a2de32` Test whether created sockets are select()able (Pieter Wuille)
595  - #6498 `219b916` Keep track of recently rejected transactions with a rolling bloom filter (cont'd) (Peter Todd)
596  - #6556 `70ec975` Fix masking of irrelevant bits in address groups. (Alex Morcos)
597  - #6530 `ea19c2b` Improve addrman Select() performance when buckets are nearly empty (Pieter Wuille)
598  - #6583 `af9305a` add support for miniupnpc api version 14 (Pavel Vasin)
599  - #6374 `69dc5b5` Connection slot exhaustion DoS mitigation (Patrick Strateman)
600  - #6636 `536207f` net: correctly initialize nMinPingUsecTime (Wladimir J. van der Laan)
601  - #6579 `0c27795` Add NODE_BLOOM service bit and bump protocol version (Matt Corallo)
602  - #6148 `999c8be` Relay blocks when pruning (Suhas Daftuar)
603  - #6588 `cf9bb11` In (strCommand == "tx"), return if AlreadyHave() (Tom Harding)
604  - #6974 `2f71b07` Always allow getheaders from whitelisted peers (Wladimir J. van der Laan)
605  - #6639 `bd629d7` net: Automatically create hidden service, listen on Tor (Wladimir J. van der Laan)
606  - #6984 `9ffc687` don't enforce maxuploadtarget's disconnect for whitelisted peers (Jonas Schnelli)
607  - #7046 `c322652` Net: Improve blocks only mode. (Patrick Strateman)
608  - #7090 `d6454f6` Connect to Tor hidden services by default (when listening on Tor) (Peter Todd)
609  - #7106 `c894fbb` Fix and improve relay from whitelisted peers (Pieter Wuille)
610  - #7129 `5d5ef3a` Direct headers announcement (rebase of #6494) (Pieter Wuille)
611  - #7079 `1b5118b` Prevent peer flooding inv request queue (redux) (redux) (Gregory Maxwell)
612  - #7166 `6ba25d2` Disconnect on mempool requests from peers when over the upload limit. (Gregory Maxwell)
613  - #7133 `f31955d` Replace setInventoryKnown with a rolling bloom filter (rebase of #7100) (Pieter Wuille)
614  - #7174 `82aff88` Don't do mempool lookups for "mempool" command without a filter (Matt Corallo)
615  - #7179 `44fef99` net: Fix sent reject messages for blocks and transactions (Wladimir J. van der Laan)
616  - #7181 `8fc174a` net: Add and document network messages in protocol.h (Wladimir J. van der Laan)
617  - #7125 `10b88be` Replace global trickle node with random delays (Pieter Wuille)
618  - #7415 `cb83beb` net: Hardcoded seeds update January 2016 (Wladimir J. van der Laan)
619  - #7438 `e2d9a58` Do not absolutely protect local peers; decide group ties based on time (Gregory Maxwell)
620  - #7439 `86755bc` Add whitelistforcerelay to control forced relaying. [#7099 redux] (Gregory Maxwell)
621  - #7482 `e16f5b4` Ensure headers count is correct (Suhas Daftuar)
622  
623  ### Validation
624  
625  - #5927 `8d9f0a6` Reduce checkpoints' effect on consensus. (Pieter Wuille)
626  - #6299 `24f2489` Bugfix: Don't check the genesis block header before accepting it (Jorge Timón)
627  - #6361 `d7ada03` Use real number of cores for default -par, ignore virtual cores (Wladimir J. van der Laan)
628  - #6519 `87f37e2` Make logging for validation optional (Wladimir J. van der Laan)
629  - #6351 `2a1090d` CHECKLOCKTIMEVERIFY (BIP65) IsSuperMajority() soft-fork (Peter Todd)
630  - #6931 `54e8bfe` Skip BIP 30 verification where not necessary (Alex Morcos)
631  - #6954 `e54ebbf` Switch to libsecp256k1-based ECDSA validation (Pieter Wuille)
632  - #6508 `61457c2` Switch to a constant-space Merkle root/branch algorithm. (Pieter Wuille)
633  - #6914 `327291a` Add pre-allocated vector type and use it for CScript (Pieter Wuille)
634  - #7500 `889e5b3` Correctly report high-S violations (Pieter Wuille)
635  
636  
637  ### Build system
638  
639  - #6210 `0e4f2a0` build: disable optional use of gmp in internal secp256k1 build (Wladimir J. van der Laan)
640  - #6214 `87406aa` [OSX] revert renaming of Bitcoin-Qt.app and use CFBundleDisplayName (partial revert of #6116) (Jonas Schnelli)
641  - #6218 `9d67b10` build/gitian misc updates (Cory Fields)
642  - #6269 `d4565b6` gitian: Use the new bitcoin-detached-sigs git repo for OSX signatures (Cory Fields)
643  - #6418 `d4a910c` Add autogen.sh to source tarball. (randy-waterhouse)
644  - #6373 `1ae3196` depends: non-qt bumps for 0.12 (Cory Fields)
645  - #6434 `059b352` Preserve user-passed CXXFLAGS with --enable-debug (Gavin Andresen)
646  - #6501 `fee6554` Misc build fixes (Cory Fields)
647  - #6600 `ef4945f` Include bitcoin-tx binary on Debian/Ubuntu (Zak Wilcox)
648  - #6619 `4862708` depends: bump miniupnpc and ccache (Michael Ford)
649  - #6801 `ae69a75` [depends] Latest config.guess and config.sub (Michael Ford)
650  - #6938 `193f7b5` build: If both Qt4 and Qt5 are installed, use Qt5 (Wladimir J. van der Laan)
651  - #7092 `348b281` build: Set osx permissions in the dmg to make Gatekeeper happy (Cory Fields)
652  - #6980 `eccd671` [Depends] Bump Boost, miniupnpc, ccache & zeromq (Michael Ford)
653  - #7424 `aa26ee0` Add security/export checks to gitian and fix current failures (Cory Fields)
654  
655  ### Wallet
656  
657  - #6183 `87550ee` Fix off-by-one error w/ nLockTime in the wallet (Peter Todd)
658  - #6057 `ac5476e` re-enable wallet in autoprune (Jonas Schnelli)
659  - #6356 `9e6c33b` Delay initial pruning until after wallet init (Adam Weiss)
660  - #6088 `91389e5` fundrawtransaction (Matt Corallo)
661  - #6415 `ddd8d80` Implement watchonly support in fundrawtransaction (Matt Corallo)
662  - #6567 `0f0f323` Fix crash when mining with empty keypool. (Daniel Kraft)
663  - #6688 `4939eab` Fix locking in GetTransaction. (Alex Morcos)
664  - #6645 `4dbd43e` Enable wallet key imports without rescan in pruned mode. (Gregory Maxwell)
665  - #6550 `5b77244` Do not store Merkle branches in the wallet. (Pieter Wuille)
666  - #5924 `12a7712` Clean up change computation in CreateTransaction. (Daniel Kraft)
667  - #6906 `48b5b84` Reject invalid pubkeys when reading ckey items from the wallet. (Gregory Maxwell)
668  - #7010 `e0a5ef8` Fix fundrawtransaction handling of includeWatching (Peter Todd)
669  - #6851 `616d61b` Optimisation: Store transaction list order in memory rather than compute it every need (Luke-Jr)
670  - #6134 `e92377f` Improve usage of fee estimation code (Alex Morcos)
671  - #7103 `a775182` [wallet, rpc tests] Fix settxfee, paytxfee (MarcoFalke)
672  - #7105 `30c2d8c` Keep track of explicit wallet conflicts instead of using mempool (Pieter Wuille)
673  - #7096 `9490bd7` [Wallet] Improve minimum absolute fee GUI options (Jonas Schnelli)
674  - #6216 `83f06ca` Take the training wheels off anti-fee-sniping (Peter Todd)
675  - #4906 `96e8d12` Issue#1643: Coinselection prunes extraneous inputs from ApproximateBestSubset (Murch)
676  - #7200 `06c6a58` Checks for null data transaction before issuing error to debug.log (Andy Craze)
677  - #7296 `a36d79b` Add sane fallback for fee estimation (Alex Morcos)
678  - #7293 `ff9b610` Add regression test for vValue sort order (MarcoFalke)
679  - #7306 `4707797` Make sure conflicted wallet tx's update balances (Alex Morcos)
680  - #7381 `621bbd8` [walletdb] Fix syntax error in key parser (MarcoFalke)
681  - #7491 `00ec73e` wallet: Ignore MarkConflict if block hash is not known (Wladimir J. van der Laan)
682  - #7502 `1329963` Update the wallet best block marker before pruning (Pieter Wuille)
683  
684  ### GUI
685  
686  - #6217 `c57e12a` disconnect peers from peers tab via context menu (Diapolo)
687  - #6209 `ab0ec67` extend rpc console peers tab (Diapolo)
688  - #6484 `1369d69` use CHashWriter also in SignVerifyMessageDialog (Pavel Vasin)
689  - #6487 `9848d42` Introduce PlatformStyle (Wladimir J. van der Laan)
690  - #6505 `100c9d3` cleanup icons (MarcoFalke)
691  - #4587 `0c465f5` allow users to set -onion via GUI (Diapolo)
692  - #6529 `c0f66ce` show client user agent in debug window (Diapolo)
693  - #6594 `878ea69` Disallow duplicate windows. (Casey Rodarmor)
694  - #5665 `6f55cdd` add verifySize() function to PaymentServer (Diapolo)
695  - #6317 `ca5e2a1` minor optimisations in peertablemodel (Diapolo)
696  - #6315 `e59d2a8` allow banning and unbanning over UI->peers table (Jonas Schnelli)
697  - #6653 `e04b2fa` Pop debug window in foreground when opened twice (MarcoFalke)
698  - #6864 `c702521` Use monospace font (MarcoFalke)
699  - #6887 `3694b74` Update coin control and smartfee labels (MarcoFalke)
700  - #7000 `814697c` add shortcurts for debug-/console-window (Jonas Schnelli)
701  - #6951 `03403d8` Use maxTxFee instead of 10000000 (MarcoFalke)
702  - #7051 `a190777` ui: Add "Copy raw transaction data" to transaction list context menu (Wladimir J. van der Laan)
703  - #6979 `776848a` simple mempool info in debug window (Jonas Schnelli)
704  - #7006 `26af1ac` add startup option to reset Qt settings (Jonas Schnelli)
705  - #6780 `2a94cd6` Call init's parameter interaction before we create the UI options model (Jonas Schnelli)
706  - #7112 `96b8025` reduce cs_main locks during tip update, more fluently update UI (Jonas Schnelli)
707  - #7206 `f43c2f9` Add "NODE_BLOOM" to guiutil so that peers don't get UNKNOWN[4] (Matt Corallo)
708  - #7282 `5cadf3e` fix coincontrol update issue when deleting a send coins entry (Jonas Schnelli)
709  - #7319 `1320300` Intro: Display required space (MarcoFalke)
710  - #7318 `9265e89` quickfix for RPC timer interface problem (Jonas Schnelli)
711  - #7327 `b16b5bc` [Wallet] Transaction View: LastMonth calculation fixed (crowning-)
712  - #7364 `7726c48` [qt] Windows: Make rpcconsole monospace font larger (MarcoFalke)
713  - #7384 `294f432` [qt] Peertable: Increase SUBVERSION_COLUMN_WIDTH (MarcoFalke)
714  
715  ### Tests and QA
716  
717  - #6305 `9005c91` build: comparison tool swap (Cory Fields)
718  - #6318 `e307e13` build: comparison tool NPE fix (Cory Fields)
719  - #6337 `0564c5b` Testing infrastructure: mocktime fixes (Gavin Andresen)
720  - #6350 `60abba1` add unit tests for the decodescript rpc (mruddy)
721  - #5881 `3203a08` Fix and improve txn_doublespend.py test (Tom Harding)
722  - #6390 `6a73d66` tests: Fix bitcoin-tx signing test case (Wladimir J. van der Laan)
723  - #6368 `7fc25c2` CLTV: Add more tests to improve coverage (Esteban Ordano)
724  - #6414 `5121c68` Fix intermittent test failure, reduce test time (Tom Harding)
725  - #6417 `44fa82d` [QA] fix possible reorg issue in (fund)rawtransaction(s).py RPC test (Jonas Schnelli)
726  - #6398 `3d9362d` rpc: Remove chain-specific RequireRPCPassword (Wladimir J. van der Laan)
727  - #6428 `bb59e78` tests: Remove old sh-based test framework (Wladimir J. van der Laan)
728  - #5515 `d946e9a` RFC: Assert on probable deadlocks if the second lock isnt try_lock (Matt Corallo)
729  - #6287 `d2464df` Clang lock debug (Cory Fields)
730  - #6465 `410fd74` Don't share objects between TestInstances (Casey Rodarmor)
731  - #6534 `6c1c7fd` Fix test locking issues and un-revert the probable-deadlines assertions commit (Cory Fields)
732  - #6509 `bb4faee` Fix race condition on test node shutdown (Casey Rodarmor)
733  - #6523 `561f8af` Add p2p-fullblocktest.py (Casey Rodarmor)
734  - #6590 `981fd92` Fix stale socket rebinding and re-enable python tests for Windows (Cory Fields)
735  - #6730 `cb4d6d0` build: Remove dependency of bitcoin-cli on secp256k1 (Wladimir J. van der Laan)
736  - #6616 `5ab5dca` Regression Tests: Migrated rpc-tests.sh to all Python rpc-tests.py (Peter Tschipper)
737  - #6720 `d479311` Creates unittests for addrman, makes addrman more testable. (Ethan Heilman)
738  - #6853 `c834f56` Added fPowNoRetargeting field to Consensus::Params (Eric Lombrozo)
739  - #6827 `87e5539` [rpc-tests] Check return code (MarcoFalke)
740  - #6848 `f2c869a` Add DERSIG transaction test cases (Ross Nicoll)
741  - #6813 `5242bb3` Support gathering code coverage data for RPC tests with lcov (dexX7)
742  - #6888 `c8322ff` Clear strMiscWarning before running PartitionAlert (Eric Lombrozo)
743  - #6894 `2675276` [Tests] Fix BIP65 p2p test (Suhas Daftuar)
744  - #6863 `725539e` [Test Suite] Fix test for null tx input (Daniel Kraft)
745  - #6926 `a6d0d62` tests: Initialize networking on windows (Wladimir J. van der Laan)
746  - #6822 `9fa54a1` [tests] Be more strict checking dust (MarcoFalke)
747  - #6804 `5fcc14e` [tests] Add basic coverage reporting for RPC tests (James O'Beirne)
748  - #7045 `72dccfc` Bugfix: Use unique autostart filenames on Linux for testnet/regtest (Luke-Jr)
749  - #7095 `d8368a0` Replace scriptnum_test's normative ScriptNum implementation (Wladimir J. van der Laan)
750  - #7063 `6abf6eb` [Tests] Add prioritisetransaction RPC test (Suhas Daftuar)
751  - #7137 `16f4a6e` Tests: Explicitly set chain limits in replace-by-fee test (Suhas Daftuar)
752  - #7216 `9572e49` Removed offline testnet DNSSeed 'alexykot.me'. (tnull)
753  - #7209 `f3ad812` test: don't override BITCOIND and BITCOINCLI if they're set (Wladimir J. van der Laan)
754  - #7226 `301f16a` Tests: Add more tests to p2p-fullblocktest (Suhas Daftuar)
755  - #7153 `9ef7c54` [Tests] Add mempool_limit.py test (Jonas Schnelli)
756  - #7170 `453c567` tests: Disable Tor interaction (Wladimir J. van der Laan)
757  - #7229 `1ed938b` [qa] wallet: Check if maintenance changes the balance (MarcoFalke)
758  - #7308 `d513405` [Tests] Eliminate intermittent failures in sendheaders.py (Suhas Daftuar)
759  - #7468 `947c4ff` [rpc-tests] Change solve() to use rehash (Brad Andrews)
760  
761  ### Miscellaneous
762  
763  - #6213 `e54ff2f` [init] add -blockversion help and extend -upnp help (Diapolo)
764  - #5975 `1fea667` Consensus: Decouple ContextualCheckBlockHeader from checkpoints (Jorge Timón)
765  - #6061 `eba2f06` Separate Consensus::CheckTxInputs and GetSpendHeight in CheckInputs (Jorge Timón)
766  - #5994 `786ed11` detach wallet from miner (Jonas Schnelli)
767  - #6387 `11576a5` [bitcoin-cli] improve error output (Jonas Schnelli)
768  - #6401 `6db53b4` Add BITCOIND_SIGTERM_TIMEOUT to OpenRC init scripts (Florian Schmaus)
769  - #6430 `b01981e` doc: add documentation for shared library libbitcoinconsensus (Braydon Fuller)
770  - #6372 `dcc495e` Update Linearize tool to support Windows paths; fix variable scope; update README and example configuration (Paul Georgiou)
771  - #6453 `8fe5cce` Separate core memory usage computation in core_memusage.h (Pieter Wuille)
772  - #6149 `633fe10` Buffer log messages and explicitly open logs (Adam Weiss)
773  - #6488 `7cbed7f` Avoid leaking file descriptors in RegisterLoad (Casey Rodarmor)
774  - #6497 `a2bf40d` Make sure LogPrintf strings are line-terminated (Wladimir J. van der Laan)
775  - #6504 `b6fee6b` Rationalize currency unit to "BTC" (Ross Nicoll)
776  - #6507 `9bb4dd8` Removed contrib/bitrpc (Casey Rodarmor)
777  - #6527 `41d650f` Use unique name for AlertNotify tempfile (Casey Rodarmor)
778  - #6561 `e08a7d9` limitedmap fixes and tests (Casey Rodarmor)
779  - #6565 `a6f2aff` Make sure we re-acquire lock if a task throws (Casey Rodarmor)
780  - #6599 `f4d88c4` Make sure LogPrint strings are line-terminated (Ross Nicoll)
781  - #6630 `195942d` Replace boost::reverse_lock with our own (Casey Rodarmor)
782  - #6103 `13b8282` Add ZeroMQ notifications (João Barbosa)
783  - #6692 `d5d1d2e` devtools: don't push if signing fails in github-merge (Wladimir J. van der Laan)
784  - #6728 `2b0567b` timedata: Prevent warning overkill (Wladimir J. van der Laan)
785  - #6713 `f6ce59c` SanitizeString: Allow hypen char (MarcoFalke)
786  - #5987 `4899a04` Bugfix: Fix testnet-in-a-box use case (Luke-Jr)
787  - #6733 `b7d78fd` Simple benchmarking framework (Gavin Andresen)
788  - #6854 `a092970` devtools: Add security-check.py (Wladimir J. van der Laan)
789  - #6790 `fa1d252` devtools: add clang-format.py (MarcoFalke)
790  - #7114 `f3d0fdd` util: Don't set strMiscWarning on every exception (Wladimir J. van der Laan)
791  - #7078 `93e0514` uint256::GetCheapHash bigendian compatibility (arowser)
792  - #7094 `34e02e0` Assert now > 0 in GetTime GetTimeMillis GetTimeMicros (Patrick Strateman)
793  
794  Credits
795  =======
796  
797  Thanks to everyone who directly contributed to this release:
798  
799  - accraze
800  - Adam Weiss
801  - Alex Morcos
802  - Alex van der Peet
803  - AlSzacrel
804  - Altoidnerd
805  - Andriy Voskoboinyk
806  - antonio-fr
807  - Arne Brutschy
808  - Ashley Holman
809  - Bob McElrath
810  - Braydon Fuller
811  - BtcDrak
812  - Casey Rodarmor
813  - centaur1
814  - Chris Kleeschulte
815  - Christian Decker
816  - Cory Fields
817  - crowning-
818  - daniel
819  - Daniel Cousens
820  - Daniel Kraft
821  - David Hill
822  - dexX7
823  - Diego Viola
824  - Elias Rohrer
825  - Eric Lombrozo
826  - Erik Mossberg
827  - Esteban Ordano
828  - EthanHeilman
829  - Florian Schmaus
830  - Forrest Voight
831  - Gavin Andresen
832  - Gregory Maxwell
833  - Gregory Sanders / instagibbs
834  - Ian T
835  - Irving Ruan
836  - Jacob Welsh
837  - James O'Beirne
838  - Jeff Garzik
839  - Johnathan Corgan
840  - Jonas Schnelli
841  - Jonathan Cross
842  - João Barbosa
843  - Jorge Timón
844  - Josh Lehan
845  - J Ross Nicoll
846  - kazcw
847  - Kevin Cooper
848  - lpescher
849  - Luke Dashjr
850  - MarcoFalke
851  - Mark Friedenbach
852  - Matt
853  - Matt Bogosian
854  - Matt Corallo
855  - Matt Quinn
856  - Micha
857  - Michael
858  - Michael Ford / fanquake
859  - Midnight Magic
860  - Mitchell Cash
861  - mrbandrews
862  - mruddy
863  - Nick
864  - Patrick Strateman
865  - Paul Georgiou
866  - Paul Rabahy
867  - Pavel Janík / paveljanik
868  - Pavel Vasin
869  - Pavol Rusnak
870  - Peter Josling
871  - Peter Todd
872  - Philip Kaufmann
873  - Pieter Wuille
874  - ptschip
875  - randy-waterhouse
876  - rion
877  - Ross Nicoll
878  - Ryan Havar
879  - Shaul Kfir
880  - Simon Males
881  - Stephen
882  - Suhas Daftuar
883  - tailsjoin
884  - Thomas Kerin
885  - Tom Harding
886  - tulip
887  - unsystemizer
888  - Veres Lajos
889  - Wladimir J. van der Laan
890  - xor-freenet
891  - Zak Wilcox
892  - zathras-crypto
893  
894  As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).