/ doc / release-notes / release-notes-0.10.0.md
release-notes-0.10.0.md
  1  Bitcoin Core version 0.10.0 is now available from:
  2  
  3    https://bitcoin.org/bin/0.10.0/
  4  
  5  This is a new major version release, bringing both new features and
  6  bug fixes.
  7  
  8  Please report bugs using the issue tracker at github:
  9  
 10    https://github.com/bitcoin/bitcoin/issues
 11  
 12  Upgrading and downgrading
 13  =========================
 14  
 15  How to Upgrade
 16  --------------
 17  
 18  If you are running an older version, shut it down. Wait until it has completely
 19  shut down (which might take a few minutes for older versions), then run the
 20  installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or
 21  bitcoind/bitcoin-qt (on Linux).
 22  
 23  Downgrading warning
 24  ---------------------
 25  
 26  Because release 0.10.0 makes use of headers-first synchronization and parallel
 27  block download (see further), the block files and databases are not
 28  backwards-compatible with older versions of Bitcoin Core or other software:
 29  
 30  * Blocks will be stored on disk out of order (in the order they are
 31  received, really), which makes it incompatible with some tools or
 32  other programs. Reindexing using earlier versions will also not work
 33  anymore as a result of this.
 34  
 35  * The block index database will now hold headers for which no block is
 36  stored on disk, which earlier versions won't support.
 37  
 38  If you want to be able to downgrade smoothly, make a backup of your entire data
 39  directory. Without this your node will need start syncing (or importing from
 40  bootstrap.dat) anew afterwards. It is possible that the data from a completely
 41  synchronised 0.10 node may be usable in older versions as-is, but this is not
 42  supported and may break as soon as the older version attempts to reindex.
 43  
 44  This does not affect wallet forward or backward compatibility.
 45  
 46  
 47  Notable changes
 48  ===============
 49  
 50  Faster synchronization
 51  ----------------------
 52  
 53  Bitcoin Core now uses 'headers-first synchronization'. This means that we first
 54  ask peers for block headers (a total of 27 megabytes, as of December 2014) and
 55  validate those. In a second stage, when the headers have been discovered, we
 56  download the blocks. However, as we already know about the whole chain in
 57  advance, the blocks can be downloaded in parallel from all available peers.
 58  
 59  In practice, this means a much faster and more robust synchronization. On
 60  recent hardware with a decent network link, it can be as little as 3 hours
 61  for an initial full synchronization. You may notice a slower progress in the
 62  very first few minutes, when headers are still being fetched and verified, but
 63  it should gain speed afterwards.
 64  
 65  A few RPCs were added/updated as a result of this:
 66  - `getblockchaininfo` now returns the number of validated headers in addition to
 67  the number of validated blocks.
 68  - `getpeerinfo` lists both the number of blocks and headers we know we have in
 69  common with each peer. While synchronizing, the heights of the blocks that we
 70  have requested from peers (but haven't received yet) are also listed as
 71  'inflight'.
 72  - A new RPC `getchaintips` lists all known branches of the block chain,
 73  including those we only have headers for.
 74  
 75  Transaction fee changes
 76  -----------------------
 77  
 78  This release automatically estimates how high a transaction fee (or how
 79  high a priority) transactions require to be confirmed quickly. The default
 80  settings will create transactions that confirm quickly; see the new
 81  'txconfirmtarget' setting to control the tradeoff between fees and
 82  confirmation times. Fees are added by default unless the 'sendfreetransactions' 
 83  setting is enabled.
 84  
 85  Prior releases used hard-coded fees (and priorities), and would
 86  sometimes create transactions that took a very long time to confirm.
 87  
 88  Statistics used to estimate fees and priorities are saved in the
 89  data directory in the `fee_estimates.dat` file just before
 90  program shutdown, and are read in at startup.
 91  
 92  New command line options for transaction fee changes:
 93  - `-txconfirmtarget=n` : create transactions that have enough fees (or priority)
 94  so they are likely to begin confirmation within n blocks (default: 1). This setting
 95  is over-ridden by the -paytxfee option.
 96  - `-sendfreetransactions` : Send transactions as zero-fee transactions if possible 
 97  (default: 0)
 98  
 99  New RPC commands for fee estimation:
100  - `estimatefee nblocks` : Returns approximate fee-per-1,000-bytes needed for
101  a transaction to begin confirmation within nblocks. Returns -1 if not enough
102  transactions have been observed to compute a good estimate.
103  - `estimatepriority nblocks` : Returns approximate priority needed for
104  a zero-fee transaction to begin confirmation within nblocks. Returns -1 if not
105  enough free transactions have been observed to compute a good
106  estimate.
107  
108  RPC access control changes
109  --------------------------
110  
111  Subnet matching for the purpose of access control is now done
112  by matching the binary network address, instead of with string wildcard matching.
113  For the user this means that `-rpcallowip` takes a subnet specification, which can be
114  
115  - a single IP address (e.g. `1.2.3.4` or `fe80::0012:3456:789a:bcde`)
116  - a network/CIDR (e.g. `1.2.3.0/24` or `fe80::0000/64`)
117  - a network/netmask (e.g. `1.2.3.4/255.255.255.0` or `fe80::0012:3456:789a:bcde/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff`)
118  
119  An arbitrary number of `-rpcallow` arguments can be given. An incoming connection will be accepted if its origin address
120  matches one of them.
121  
122  For example:
123  
124  | 0.9.x and before                           | 0.10.x                                |
125  |--------------------------------------------|---------------------------------------|
126  | `-rpcallowip=192.168.1.1`                  | `-rpcallowip=192.168.1.1` (unchanged) |
127  | `-rpcallowip=192.168.1.*`                  | `-rpcallowip=192.168.1.0/24`          |
128  | `-rpcallowip=192.168.*`                    | `-rpcallowip=192.168.0.0/16`          |
129  | `-rpcallowip=*` (dangerous!)               | `-rpcallowip=::/0` (still dangerous!) |
130  
131  Using wildcards will result in the rule being rejected with the following error in debug.log:
132  
133      Error: Invalid -rpcallowip subnet specification: *. Valid are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24).
134  
135  
136  REST interface
137  --------------
138  
139  A new HTTP API is exposed when running with the `-rest` flag, which allows
140  unauthenticated access to public node data.
141  
142  It is served on the same port as RPC, but does not need a password, and uses
143  plain HTTP instead of JSON-RPC.
144  
145  Assuming a local RPC server running on port 8332, it is possible to request:
146  - Blocks: http://localhost:8332/rest/block/*HASH*.*EXT*
147  - Blocks without transactions: http://localhost:8332/rest/block/notxdetails/*HASH*.*EXT*
148  - Transactions (requires `-txindex`): http://localhost:8332/rest/tx/*HASH*.*EXT*
149  
150  In every case, *EXT* can be `bin` (for raw binary data), `hex` (for hex-encoded
151  binary) or `json`.
152  
153  For more details, see the `doc/REST-interface.md` document in the repository.
154  
155  RPC Server "Warm-Up" Mode
156  -------------------------
157  
158  The RPC server is started earlier now, before most of the expensive
159  intialisations like loading the block index.  It is available now almost
160  immediately after starting the process.  However, until all initialisations
161  are done, it always returns an immediate error with code -28 to all calls.
162  
163  This new behaviour can be useful for clients to know that a server is already
164  started and will be available soon (for instance, so that they do not
165  have to start it themselves).
166  
167  Improved signing security
168  -------------------------
169  
170  For 0.10 the security of signing against unusual attacks has been
171  improved by making the signatures constant time and deterministic.
172  
173  This change is a result of switching signing to use libsecp256k1
174  instead of OpenSSL. Libsecp256k1 is a cryptographic library
175  optimized for the curve Bitcoin uses which was created by Bitcoin
176  Core developer Pieter Wuille.
177  
178  There exist attacks[1] against most ECC implementations where an
179  attacker on shared virtual machine hardware could extract a private
180  key if they could cause a target to sign using the same key hundreds
181  of times. While using shared hosts and reusing keys are inadvisable
182  for other reasons, it's a better practice to avoid the exposure.
183  
184  OpenSSL has code in their source repository for derandomization
185  and reduction in timing leaks that we've eagerly wanted to use for a
186  long time, but this functionality has still not made its
187  way into a released version of OpenSSL. Libsecp256k1 achieves
188  significantly stronger protection: As far as we're aware this is
189  the only deployed implementation of constant time signing for
190  the curve Bitcoin uses and we have reason to believe that
191  libsecp256k1 is better tested and more thoroughly reviewed
192  than the implementation in OpenSSL.
193  
194  [1] https://eprint.iacr.org/2014/161.pdf
195  
196  Watch-only wallet support
197  -------------------------
198  
199  The wallet can now track transactions to and from wallets for which you know
200  all addresses (or scripts), even without the private keys.
201  
202  This can be used to track payments without needing the private keys online on a
203  possibly vulnerable system. In addition, it can help for (manual) construction
204  of multisig transactions where you are only one of the signers.
205  
206  One new RPC, `importaddress`, is added which functions similarly to
207  `importprivkey`, but instead takes an address or script (in hexadecimal) as
208  argument.  After using it, outputs credited to this address or script are
209  considered to be received, and transactions consuming these outputs will be
210  considered to be sent.
211  
212  The following RPCs have optional support for watch-only:
213  `getbalance`, `listreceivedbyaddress`, `listreceivedbyaccount`,
214  `listtransactions`, `listaccounts`, `listsinceblock`, `gettransaction`. See the
215  RPC documentation for those methods for more information.
216  
217  Compared to using `getrawtransaction`, this mechanism does not require
218  `-txindex`, scales better, integrates better with the wallet, and is compatible
219  with future block chain pruning functionality. It does mean that all relevant
220  addresses need to added to the wallet before the payment, though.
221  
222  Consensus library
223  -----------------
224  
225  Starting from 0.10.0, the Bitcoin Core distribution includes a consensus library.
226  
227  The purpose of this library is to make the verification functionality that is
228  critical to Bitcoin's consensus available to other applications, e.g. to language
229  bindings such as [python-bitcoinlib](https://pypi.python.org/pypi/python-bitcoinlib) or
230  alternative node implementations.
231  
232  This library is called `libbitcoinconsensus.so` (or, `.dll` for Windows).
233  Its interface is defined in the C header [bitcoinconsensus.h](https://github.com/bitcoin/bitcoin/blob/0.10/src/script/bitcoinconsensus.h).
234  
235  In its initial version the API includes two functions:
236  
237  - `bitcoinconsensus_verify_script` verifies a script. It returns whether the indicated input of the provided serialized transaction 
238  correctly spends the passed scriptPubKey under additional constraints indicated by flags
239  - `bitcoinconsensus_version` returns the API version, currently at an experimental `0`
240  
241  The functionality is planned to be extended to e.g. UTXO management in upcoming releases, but the interface
242  for existing methods should remain stable.
243  
244  Standard script rules relaxed for P2SH addresses
245  ------------------------------------------------
246  
247  The IsStandard() rules have been almost completely removed for P2SH
248  redemption scripts, allowing applications to make use of any valid
249  script type, such as "n-of-m OR y", hash-locked oracle addresses, etc.
250  While the Bitcoin protocol has always supported these types of script,
251  actually using them on mainnet has been previously inconvenient as
252  standard Bitcoin Core nodes wouldn't relay them to miners, nor would
253  most miners include them in blocks they mined.
254  
255  bitcoin-tx
256  ----------
257  
258  It has been observed that many of the RPC functions offered by bitcoind are
259  "pure functions", and operate independently of the bitcoind wallet. This
260  included many of the RPC "raw transaction" API functions, such as
261  createrawtransaction.
262  
263  bitcoin-tx is a newly introduced command line utility designed to enable easy
264  manipulation of bitcoin transactions. A summary of its operation may be
265  obtained via "bitcoin-tx --help" Transactions may be created or signed in a
266  manner similar to the RPC raw tx API. Transactions may be updated, deleting
267  inputs or outputs, or appending new inputs and outputs. Custom scripts may be
268  easily composed using a simple text notation, borrowed from the bitcoin test
269  suite.
270  
271  This tool may be used for experimenting with new transaction types, signing
272  multi-party transactions, and many other uses. Long term, the goal is to
273  deprecate and remove "pure function" RPC API calls, as those do not require a
274  server round-trip to execute.
275  
276  Other utilities "bitcoin-key" and "bitcoin-script" have been proposed, making
277  key and script operations easily accessible via command line.
278  
279  Mining and relay policy enhancements
280  ------------------------------------
281  
282  Bitcoin Core's block templates are now for version 3 blocks only, and any mining
283  software relying on its `getblocktemplate` must be updated in parallel to use
284  libblkmaker either version 0.4.2 or any version from 0.5.1 onward.
285  If you are solo mining, this will affect you the moment you upgrade Bitcoin
286  Core, which must be done prior to BIP66 achieving its 951/1001 status.
287  If you are mining with the stratum mining protocol: this does not affect you.
288  If you are mining with the getblocktemplate protocol to a pool: this will affect
289  you at the pool operator's discretion, which must be no later than BIP66
290  achieving its 951/1001 status.
291  
292  The `prioritisetransaction` RPC method has been added to enable miners to
293  manipulate the priority of transactions on an individual basis.
294  
295  Bitcoin Core now supports BIP 22 long polling, so mining software can be
296  notified immediately of new templates rather than having to poll periodically.
297  
298  Support for BIP 23 block proposals is now available in Bitcoin Core's
299  `getblocktemplate` method. This enables miners to check the basic validity of
300  their next block before expending work on it, reducing risks of accidental
301  hardforks or mining invalid blocks.
302  
303  Two new options to control mining policy:
304  - `-datacarrier=0/1` : Relay and mine "data carrier" (OP_RETURN) transactions
305  if this is 1.
306  - `-datacarriersize=n` : Maximum size, in bytes, we consider acceptable for
307  "data carrier" outputs.
308  
309  The relay policy has changed to more properly implement the desired behavior of not 
310  relaying free (or very low fee) transactions unless they have a priority above the 
311  AllowFreeThreshold(), in which case they are relayed subject to the rate limiter.
312  
313  BIP 66: strict DER encoding for signatures
314  ------------------------------------------
315  
316  Bitcoin Core 0.10 implements BIP 66, which introduces block version 3, and a new
317  consensus rule, which prohibits non-DER signatures. Such transactions have been
318  non-standard since Bitcoin v0.8.0 (released in February 2013), but were
319  technically still permitted inside blocks.
320  
321  This change breaks the dependency on OpenSSL's signature parsing, and is
322  required if implementations would want to remove all of OpenSSL from the
323  consensus code.
324  
325  The same miner-voting mechanism as in BIP 34 is used: when 751 out of a
326  sequence of 1001 blocks have version number 3 or higher, the new consensus
327  rule becomes active for those blocks. When 951 out of a sequence of 1001
328  blocks have version number 3 or higher, it becomes mandatory for all blocks.
329  
330  Backward compatibility with current mining software is NOT provided, thus miners
331  should read the first paragraph of "Mining and relay policy enhancements" above.
332  
333  0.10.0 Change log
334  =================
335  
336  Detailed release notes follow. This overview includes changes that affect external
337  behavior, not code moves, refactors or string updates.
338  
339  RPC:
340  - `f923c07` Support IPv6 lookup in bitcoin-cli even when IPv6 only bound on localhost
341  - `b641c9c` Fix addnode "onetry": Connect with OpenNetworkConnection
342  - `171ca77` estimatefee / estimatepriority RPC methods
343  - `b750cf1` Remove cli functionality from bitcoind
344  - `f6984e8` Add "chain" to getmininginfo, improve help in getblockchaininfo
345  - `99ddc6c` Add nLocalServices info to RPC getinfo
346  - `cf0c47b` Remove getwork() RPC call
347  - `2a72d45` prioritisetransaction <txid> <priority delta> <priority tx fee>
348  - `e44fea5` Add an option `-datacarrier` to allow users to disable relaying/mining data carrier transactions
349  - `2ec5a3d` Prevent easy RPC memory exhaustion attack
350  - `d4640d7` Added argument to getbalance to include watchonly addresses and fixed errors in balance calculation
351  - `83f3543` Added argument to listaccounts to include watchonly addresses
352  - `952877e` Showing 'involvesWatchonly' property for transactions returned by 'listtransactions' and 'listsinceblock'. It is only appended when the transaction involves a watchonly address
353  - `d7d5d23` Added argument to listtransactions and listsinceblock to include watchonly addresses
354  - `f87ba3d` added includeWatchonly argument to 'gettransaction' because it affects balance calculation
355  - `0fa2f88` added includedWatchonly argument to listreceivedbyaddress/...account
356  - `6c37f7f` `getrawchangeaddress`: fail when keypool exhausted and wallet locked
357  - `ff6a7af` getblocktemplate: longpolling support
358  - `c4a321f` Add peerid to getpeerinfo to allow correlation with the logs
359  - `1b4568c` Add vout to ListTransactions output
360  - `b33bd7a` Implement "getchaintips" RPC command to monitor blockchain forks
361  - `733177e` Remove size limit in RPC client, keep it in server
362  - `6b5b7cb` Categorize rpc help overview
363  - `6f2c26a` Closely track mempool byte total. Add "getmempoolinfo" RPC
364  - `aa82795` Add detailed network info to getnetworkinfo RPC
365  - `01094bd` Don't reveal whether password is <20 or >20 characters in RPC
366  - `57153d4` rpc: Compute number of confirmations of a block from block height
367  - `ff36cbe` getnetworkinfo: export local node's client sub-version string
368  - `d14d7de` SanitizeString: allow '(' and ')'
369  - `31d6390` Fixed setaccount accepting foreign address
370  - `b5ec5fe` update getnetworkinfo help with subversion
371  - `ad6e601` RPC additions after headers-first
372  - `33dfbf5` rpc: Fix leveldb iterator leak, and flush before `gettxoutsetinfo`
373  - `2aa6329` Enable customising node policy for datacarrier data size with a -datacarriersize option
374  - `f877aaa` submitblock: Use a temporary CValidationState to determine accurately the outcome of ProcessBlock
375  - `e69a587` submitblock: Support for returning specific rejection reasons
376  - `af82884` Add "warmup mode" for RPC server
377  - `e2655e0` Add unauthenticated HTTP REST interface to public blockchain data
378  - `683dc40` Disable SSLv3 (in favor of TLS) for the RPC client and server
379  - `44b4c0d` signrawtransaction: validate private key
380  - `9765a50` Implement BIP 23 Block Proposal
381  - `f9de17e` Add warning comment to getinfo
382  
383  Command-line options:
384  - `ee21912` Use netmasks instead of wildcards for IP address matching
385  - `deb3572` Add `-rpcbind` option to allow binding RPC port on a specific interface
386  - `96b733e` Add `-version` option to get just the version
387  - `1569353` Add `-stopafterblockimport` option
388  - `77cbd46` Let -zapwallettxes recover transaction meta data
389  - `1c750db` remove -tor compatibility code (only allow -onion)
390  - `4aaa017` rework help messages for fee-related options
391  - `4278b1d` Clarify error message when invalid -rpcallowip
392  - `6b407e4` -datadir is now allowed in config files
393  - `bdd5b58` Add option `-sysperms` to disable 077 umask (create new files with system default umask)
394  - `cbe39a3` Add "bitcoin-tx" command line utility and supporting modules
395  - `dbca89b` Trigger -alertnotify if network is upgrading without you
396  - `ad96e7c` Make -reindex cope with out-of-order blocks
397  - `16d5194` Skip reindexed blocks individually
398  - `ec01243` --tracerpc option for regression tests
399  - `f654f00` Change -genproclimit default to 1
400  - `3c77714` Make -proxy set all network types, avoiding a connect leak
401  - `57be955` Remove -printblock, -printblocktree, and -printblockindex
402  - `ad3d208` remove -maxorphanblocks config parameter since it is no longer functional
403  
404  Block and transaction handling:
405  - `7a0e84d` ProcessGetData(): abort if a block file is missing from disk
406  - `8c93bf4` LoadBlockIndexDB(): Require block db reindex if any `blk*.dat` files are missing
407  - `77339e5` Get rid of the static chainMostWork (optimization)
408  - `4e0eed8` Allow ActivateBestChain to release its lock on cs_main
409  - `18e7216` Push cs_mains down in ProcessBlock
410  - `fa126ef` Avoid undefined behavior using CFlatData in CScript serialization
411  - `7f3b4e9` Relax IsStandard rules for pay-to-script-hash transactions
412  - `c9a0918` Add a skiplist to the CBlockIndex structure
413  - `bc42503` Use unordered_map for CCoinsViewCache with salted hash (optimization)
414  - `d4d3fbd` Do not flush the cache after every block outside of IBD (optimization)
415  - `ad08d0b` Bugfix: make CCoinsViewMemPool support pruned entries in underlying cache
416  - `5734d4d` Only remove actualy failed blocks from setBlockIndexValid
417  - `d70bc52` Rework block processing benchmark code
418  - `714a3e6` Only keep setBlockIndexValid entries that are possible improvements
419  - `ea100c7` Reduce maximum coinscache size during verification (reduce memory usage)
420  - `4fad8e6` Reject transactions with excessive numbers of sigops
421  - `b0875eb` Allow BatchWrite to destroy its input, reducing copying (optimization)
422  - `92bb6f2` Bypass reloading blocks from disk (optimization)
423  - `2e28031` Perform CVerifyDB on pcoinsdbview instead of pcoinsTip (reduce memory usage)
424  - `ab15b2e` Avoid copying undo data (optimization)
425  - `341735e` Headers-first synchronization
426  - `afc32c5` Fix rebuild-chainstate feature and improve its performance
427  - `e11b2ce` Fix large reorgs
428  - `ed6d1a2` Keep information about all block files in memory
429  - `a48f2d6` Abstract context-dependent block checking from acceptance
430  - `7e615f5` Fixed mempool sync after sending a transaction
431  - `51ce901` Improve chainstate/blockindex disk writing policy
432  - `a206950` Introduce separate flushing modes
433  - `9ec75c5` Add a locking mechanism to IsInitialBlockDownload to ensure it never goes from false to true
434  - `868d041` Remove coinbase-dependant transactions during reorg
435  - `723d12c` Remove txn which are invalidated by coinbase maturity during reorg
436  - `0cb8763` Check against MANDATORY flags prior to accepting to mempool
437  - `8446262` Reject headers that build on an invalid parent
438  - `008138c` Bugfix: only track UTXO modification after lookup
439  
440  P2P protocol and network code:
441  - `f80cffa` Do not trigger a DoS ban if SCRIPT_VERIFY_NULLDUMMY fails
442  - `c30329a` Add testnet DNS seed of Alex Kotenko
443  - `45a4baf` Add testnet DNS seed of Andreas Schildbach
444  - `f1920e8` Ping automatically every 2 minutes (unconditionally)
445  - `806fd19` Allocate receive buffers in on the fly
446  - `6ecf3ed` Display unknown commands received
447  - `aa81564` Track peers' available blocks
448  - `caf6150` Use async name resolving to improve net thread responsiveness
449  - `9f4da19` Use pong receive time rather than processing time
450  - `0127a9b` remove SOCKS4 support from core and GUI, use SOCKS5
451  - `40f5cb8` Send rejects and apply DoS scoring for errors in direct block validation
452  - `dc942e6` Introduce whitelisted peers
453  - `c994d2e` prevent SOCKET leak in BindListenPort()
454  - `a60120e` Add built-in seeds for .onion
455  - `60dc8e4` Allow -onlynet=onion to be used
456  - `3a56de7` addrman: Do not propagate obviously poor addresses onto the network
457  - `6050ab6` netbase: Make SOCKS5 negotiation interruptible
458  - `604ee2a` Remove tx from AlreadyAskedFor list once we receive it, not when we process it
459  - `efad808` Avoid reject message feedback loops
460  - `71697f9` Separate protocol versioning from clientversion
461  - `20a5f61` Don't relay alerts to peers before version negotiation
462  - `b4ee0bd` Introduce preferred download peers
463  - `845c86d` Do not use third party services for IP detection
464  - `12a49ca` Limit the number of new addressses to accumulate
465  - `35e408f` Regard connection failures as attempt for addrman
466  - `a3a7317` Introduce 10 minute block download timeout
467  - `3022e7d` Require sufficent priority for relay of free transactions
468  - `58fda4d` Update seed IPs, based on bitcoin.sipa.be crawler data
469  - `18021d0` Remove bitnodes.io from dnsseeds.
470  
471  Validation:
472  - `6fd7ef2` Also switch the (unused) verification code to low-s instead of even-s
473  - `584a358` Do merkle root and txid duplicates check simultaneously
474  - `217a5c9` When transaction outputs exceed inputs, show the offending amounts so as to aid debugging
475  - `f74fc9b` Print input index when signature validation fails, to aid debugging
476  - `6fd59ee` script.h: set_vch() should shift a >32 bit value
477  - `d752ba8` Add SCRIPT_VERIFY_SIGPUSHONLY (BIP62 rule 2) (test only)
478  - `698c6ab` Add SCRIPT_VERIFY_MINIMALDATA (BIP62 rules 3 and 4) (test only)
479  - `ab9edbd` script: create sane error return codes for script validation and remove logging
480  - `219a147` script: check ScriptError values in script tests
481  - `0391423` Discourage NOPs reserved for soft-fork upgrades
482  - `98b135f` Make STRICTENC invalid pubkeys fail the script rather than the opcode
483  - `307f7d4` Report script evaluation failures in log and reject messages
484  - `ace39db` consensus: guard against openssl's new strict DER checks
485  - `12b7c44` Improve robustness of DER recoding code
486  - `76ce5c8` fail immediately on an empty signature
487  
488  Build system:
489  - `f25e3ad` Fix build in OS X 10.9
490  - `65e8ba4` build: Switch to non-recursive make
491  - `460b32d` build: fix broken boost chrono check on some platforms
492  - `9ce0774` build: Fix windows configure when using --with-qt-libdir
493  - `ea96475` build: Add mention of --disable-wallet to bdb48 error messages
494  - `1dec09b` depends: add shared dependency builder
495  - `c101c76` build: Add --with-utils (bitcoin-cli and bitcoin-tx, default=yes). Help string consistency tweaks. Target sanity check fix
496  - `e432a5f` build: add option for reducing exports (v2)
497  - `6134b43` Fixing condition 'sabotaging' MSVC build
498  - `af0bd5e` osx: fix signing to make Gatekeeper happy (again)
499  - `a7d1f03` build: fix dynamic boost check when --with-boost= is used
500  - `d5fd094` build: fix qt test build when libprotobuf is in a non-standard path
501  - `2cf5f16` Add libbitcoinconsensus library
502  - `914868a` build: add a deterministic dmg signer 
503  - `2d375fe` depends: bump openssl to 1.0.1k
504  - `b7a4ecc` Build: Only check for boost when building code that requires it
505  
506  Wallet:
507  - `b33d1f5` Use fee/priority estimates in wallet CreateTransaction
508  - `4b7b1bb` Sanity checks for estimates
509  - `c898846` Add support for watch-only addresses
510  - `d5087d1` Use script matching rather than destination matching for watch-only
511  - `d88af56` Fee fixes
512  - `a35b55b` Dont run full check every time we decrypt wallet
513  - `3a7c348` Fix make_change to not create half-satoshis
514  - `f606bb9` fix a possible memory leak in CWalletDB::Recover
515  - `870da77` fix possible memory leaks in CWallet::EncryptWallet
516  - `ccca27a` Watch-only fixes
517  - `9b1627d` [Wallet] Reduce minTxFee for transaction creation to 1000 satoshis
518  - `a53fd41` Deterministic signing
519  - `15ad0b5` Apply AreSane() checks to the fees from the network
520  - `11855c1` Enforce minRelayTxFee on wallet created tx and add a maxtxfee option
521  
522  GUI:
523  - `c21c74b` osx: Fix missing dock menu with qt5
524  - `b90711c` Fix Transaction details shows wrong To:
525  - `516053c` Make links in 'About Bitcoin Core' clickable
526  - `bdc83e8` Ensure payment request network matches client network
527  - `65f78a1` Add GUI view of peer information
528  - `06a91d9` VerifyDB progress reporting
529  - `fe6bff2` Add BerkeleyDB version info to RPCConsole
530  - `b917555` PeerTableModel: Fix potential deadlock. #4296
531  - `dff0e3b` Improve rpc console history behavior
532  - `95a9383` Remove CENT-fee-rule from coin control completely
533  - `56b07d2` Allow setting listen via GUI
534  - `d95ba75` Log messages with type>QtDebugMsg as non-debug
535  - `8969828` New status bar Unit Display Control and related changes
536  - `674c070` seed OpenSSL PNRG with Windows event data
537  - `509f926` Payment request parsing on startup now only changes network if a valid network name is specified
538  - `acd432b` Prevent balloon-spam after rescan
539  - `7007402` Implement SI-style (thin space) thoudands separator
540  - `91cce17` Use fixed-point arithmetic in amount spinbox
541  - `bdba2dd` Remove an obscure option no-one cares about
542  - `bd0aa10` Replace the temporary file hack currently used to change Bitcoin-Qt's dock icon (OS X) with a buffer-based solution
543  - `94e1b9e` Re-work overviewpage UI
544  - `8bfdc9a` Better looking trayicon
545  - `b197bf3` disable tray interactions when client model set to 0
546  - `1c5f0af` Add column Watch-only to transactions list
547  - `21f139b` Fix tablet crash. closes #4854
548  - `e84843c` Broken addresses on command line no longer trigger testnet
549  - `a49f11d` Change splash screen to normal window
550  - `1f9be98` Disable App Nap on OSX 10.9+
551  - `27c3e91` Add proxy to options overridden if necessary
552  - `4bd1185` Allow "emergency" shutdown during startup
553  - `d52f072` Don't show wallet options in the preferences menu when running with -disablewallet
554  - `6093aa1` Qt: QProgressBar CPU-Issue workaround
555  - `0ed9675` [Wallet] Add global boolean whether to send free transactions (default=true)
556  - `ed3e5e4` [Wallet] Add global boolean whether to pay at least the custom fee (default=true)
557  - `e7876b2` [Wallet] Prevent user from paying a non-sense fee
558  - `c1c9d5b` Add Smartfee to GUI
559  - `e0a25c5` Make askpassphrase dialog behave more sanely
560  - `94b362d` On close of splashscreen interrupt verifyDB
561  - `b790d13` English translation update
562  - `8543b0d` Correct tooltip on address book page
563  
564  Tests:
565  - `b41e594` Fix script test handling of empty scripts
566  - `d3a33fc` Test CHECKMULTISIG with m == 0 and n == 0
567  - `29c1749` Let tx (in)valid tests use any SCRIPT_VERIFY flag
568  - `6380180` Add rejection of non-null CHECKMULTISIG dummy values
569  - `21bf3d2` Add tests for BoostAsioToCNetAddr
570  - `b5ad5e7` Add Python test for -rpcbind and -rpcallowip
571  - `9ec0306` Add CODESEPARATOR/FindAndDelete() tests
572  - `75ebced` Added many rpc wallet tests
573  - `0193fb8` Allow multiple regression tests to run at once
574  - `92a6220` Hook up sanity checks
575  - `3820e01` Extend and move all crypto tests to crypto_tests.cpp
576  - `3f9a019` added list/get received by address/ account tests
577  - `a90689f` Remove timing-based signature cache unit test
578  - `236982c` Add skiplist unit tests
579  - `f4b00be` Add CChain::GetLocator() unit test
580  - `b45a6e8` Add test for getblocktemplate longpolling
581  - `cdf305e` Set -discover=0 in regtest framework
582  - `ed02282` additional test for OP_SIZE in script_valid.json
583  - `0072d98` script tests: BOOLAND, BOOLOR decode to integer
584  - `833ff16` script tests: values that overflow to 0 are true
585  - `4cac5db` script tests: value with trailing 0x00 is true
586  - `89101c6` script test: test case for 5-byte bools
587  - `d2d9dc0` script tests: add tests for CHECKMULTISIG limits
588  - `d789386` Add "it works" test for bitcoin-tx
589  - `df4d61e` Add bitcoin-tx tests
590  - `aa41ac2` Test IsPushOnly() with invalid push
591  - `6022b5d` Make `script_{valid,invalid}.json` validation flags configurable
592  - `8138cbe` Add automatic script test generation, and actual checksig tests
593  - `ed27e53` Add coins_tests with a large randomized CCoinViewCache test
594  - `9df9cf5` Make SCRIPT_VERIFY_STRICTENC compatible with BIP62
595  - `dcb9846` Extend getchaintips RPC test
596  - `554147a` Ensure MINIMALDATA invalid tests can only fail one way
597  - `dfeec18` Test every numeric-accepting opcode for correct handling of the numeric minimal encoding rule
598  - `2b62e17` Clearly separate PUSHDATA and numeric argument MINIMALDATA tests
599  - `16d78bd` Add valid invert of invalid every numeric opcode tests
600  - `f635269` tests: enable alertnotify test for Windows
601  - `7a41614` tests: allow rpc-tests to get filenames for bitcoind and bitcoin-cli from the environment
602  - `5122ea7` tests: fix forknotify.py on windows
603  - `fa7f8cd` tests: remove old pull-tester scripts
604  - `7667850` tests: replace the old (unused since Travis) tests with new rpc test scripts
605  - `f4e0aef` Do signature-s negation inside the tests
606  - `1837987` Optimize -regtest setgenerate block generation
607  - `2db4c8a` Fix node ranges in the test framework
608  - `a8b2ce5` regression test only setmocktime RPC call
609  - `daf03e7` RPC tests: create initial chain with specific timestamps
610  - `8656dbb` Port/fix txnmall.sh regression test
611  - `ca81587` Test the exact order of CHECKMULTISIG sig/pubkey evaluation
612  - `7357893` Prioritize and display -testsafemode status in UI
613  - `f321d6b` Add key generation/verification to ECC sanity check
614  - `132ea9b` miner_tests: Disable checkpoints so they don't fail the subsidy-change test
615  - `bc6cb41` QA RPC tests: Add tests block block proposals
616  - `f67a9ce` Use deterministically generated script tests
617  - `11d7a7d` [RPC] add rpc-test for http keep-alive (persistent connections)
618  - `34318d7` RPC-test based on invalidateblock for mempool coinbase spends
619  - `76ec867` Use actually valid transactions for script tests
620  - `c8589bf` Add actual signature tests
621  - `e2677d7` Fix smartfees test for change to relay policy
622  - `263b65e` tests: run sanity checks in tests too
623  
624  Miscellaneous:
625  - `122549f` Fix incorrect checkpoint data for testnet3
626  - `5bd02cf` Log used config file to debug.log on startup
627  - `68ba85f` Updated Debian example bitcoin.conf with config from wiki + removed some cruft and updated comments
628  - `e5ee8f0` Remove -beta suffix
629  - `38405ac` Add comment regarding experimental-use service bits
630  - `be873f6` Issue warning if collecting RandSeed data failed
631  - `8ae973c` Allocate more space if necessary in RandSeedAddPerfMon
632  - `675bcd5` Correct comment for 15-of-15 p2sh script size
633  - `fda3fed` libsecp256k1 integration
634  - `2e36866` Show nodeid instead of addresses in log (for anonymity) unless otherwise requested
635  - `cd01a5e` Enable paranoid corruption checks in LevelDB >= 1.16
636  - `9365937` Add comment about never updating nTimeOffset past 199 samples
637  - `403c1bf` contrib: remove getwork-based pyminer (as getwork API call has been removed)
638  - `0c3e101` contrib: Added systemd .service file in order to help distributions integrate bitcoind
639  - `0a0878d` doc: Add new DNSseed policy
640  - `2887bff` Update coding style and add .clang-format
641  - `5cbda4f` Changed LevelDB cursors to use scoped pointers to ensure destruction when going out of scope
642  - `b4a72a7` contrib/linearize: split output files based on new-timestamp-year or max-file-size
643  - `e982b57` Use explicit fflush() instead of setvbuf()
644  - `234bfbf` contrib: Add init scripts and docs for Upstart and OpenRC
645  - `01c2807` Add warning about the merkle-tree algorithm duplicate txid flaw
646  - `d6712db` Also create pid file in non-daemon mode
647  - `772ab0e` contrib: use batched JSON-RPC in linarize-hashes (optimization)
648  - `7ab4358` Update bash-completion for v0.10
649  - `6e6a36c` contrib: show pull # in prompt for github-merge script
650  - `5b9f842` Upgrade leveldb to 1.18, make chainstate databases compatible between ARM and x86 (issue #2293)
651  - `4e7c219` Catch UTXO set read errors and shutdown
652  - `867c600` Catch LevelDB errors during flush
653  - `06ca065` Fix CScriptID(const CScript& in) in empty script case
654  
655  Credits
656  =======
657  
658  Thanks to everyone who contributed to this release:
659  
660  - 21E14
661  - Adam Weiss
662  - Aitor Pazos
663  - Alexander Jeng
664  - Alex Morcos
665  - Alon Muroch
666  - Andreas Schildbach
667  - Andrew Poelstra
668  - Andy Alness
669  - Ashley Holman
670  - Benedict Chan
671  - Ben Holden-Crowther
672  - Bryan Bishop
673  - BtcDrak
674  - Christian von Roques
675  - Clinton Christian
676  - Cory Fields
677  - Cozz Lovan
678  - daniel
679  - Daniel Kraft
680  - David Hill
681  - Derek701
682  - dexX7
683  - dllud
684  - Dominyk Tiller
685  - Doug
686  - elichai
687  - elkingtowa
688  - ENikS
689  - Eric Shaw
690  - Federico Bond
691  - Francis GASCHET
692  - Gavin Andresen
693  - Giuseppe Mazzotta
694  - Glenn Willen
695  - Gregory Maxwell
696  - gubatron
697  - HarryWu
698  - himynameismartin
699  - Huang Le
700  - Ian Carroll
701  - imharrywu
702  - Jameson Lopp
703  - Janusz Lenar
704  - JaSK
705  - Jeff Garzik
706  - JL2035
707  - Johnathan Corgan
708  - Jonas Schnelli
709  - jtimon
710  - Julian Haight
711  - Kamil Domanski
712  - kazcw
713  - kevin
714  - kiwigb
715  - Kosta Zertsekel
716  - LongShao007
717  - Luke Dashjr
718  - Mark Friedenbach
719  - Mathy Vanvoorden
720  - Matt Corallo
721  - Matthew Bogosian
722  - Micha
723  - Michael Ford
724  - Mike Hearn
725  - mrbandrews
726  - mruddy
727  - ntrgn
728  - Otto Allmendinger
729  - paveljanik
730  - Pavel Vasin
731  - Peter Todd
732  - phantomcircuit
733  - Philip Kaufmann
734  - Pieter Wuille
735  - pryds
736  - randy-waterhouse
737  - R E Broadley
738  - Rose Toomey
739  - Ross Nicoll
740  - Roy Badami
741  - Ruben Dario Ponticelli
742  - Rune K. Svendsen
743  - Ryan X. Charles
744  - Saivann
745  - sandakersmann
746  - SergioDemianLerner
747  - shshshsh
748  - sinetek
749  - Stuart Cardall
750  - Suhas Daftuar
751  - Tawanda Kembo
752  - Teran McKinney
753  - tm314159
754  - Tom Harding
755  - Trevin Hofmann
756  - Whit J
757  - Wladimir J. van der Laan
758  - Yoichi Hirai
759  - Zak Wilcox
760  
761  As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
762