1 Bitcoin Core version 0.10.0 is now available from:
3 https://bitcoin.org/bin/0.10.0/
5 This is a new major version release, bringing both new features and
8 Please report bugs using the issue tracker at github:
10 https://github.com/bitcoin/bitcoin/issues
12 Upgrading and downgrading
13 =========================
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).
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:
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.
35 * The block index database will now hold headers for which no block is
36 stored on disk, which earlier versions won't support.
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.
44 This does not affect wallet forward or backward compatibility.
50 Faster synchronization
51 ----------------------
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.
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.
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
72 - A new RPC `getchaintips` lists all known branches of the block chain,
73 including those we only have headers for.
75 Transaction fee changes
76 -----------------------
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'
85 Prior releases used hard-coded fees (and priorities), and would
86 sometimes create transactions that took a very long time to confirm.
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.
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
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
108 RPC access control changes
109 --------------------------
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
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`)
119 An arbitrary number of `-rpcallow` arguments can be given. An incoming connection will be accepted if its origin address
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!) |
131 Using wildcards will result in the rule being rejected with the following error in debug.log:
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).
139 A new HTTP API is exposed when running with the `-rest` flag, which allows
140 unauthenticated access to public node data.
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.
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*
150 In every case, *EXT* can be `bin` (for raw binary data), `hex` (for hex-encoded
153 For more details, see the `doc/REST-interface.md` document in the repository.
155 RPC Server "Warm-Up" Mode
156 -------------------------
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.
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).
167 Improved signing security
168 -------------------------
170 For 0.10 the security of signing against unusual attacks has been
171 improved by making the signatures constant time and deterministic.
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.
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.
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.
194 [1] https://eprint.iacr.org/2014/161.pdf
196 Watch-only wallet support
197 -------------------------
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.
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.
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.
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.
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.
225 Starting from 0.10.0, the Bitcoin Core distribution includes a consensus library.
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.
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).
235 In its initial version the API includes two functions:
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`
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.
244 Standard script rules relaxed for P2SH addresses
245 ------------------------------------------------
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.
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.
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
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.
276 Other utilities "bitcoin-key" and "bitcoin-script" have been proposed, making
277 key and script operations easily accessible via command line.
279 Mining and relay policy enhancements
280 ------------------------------------
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.
292 The `prioritisetransaction` RPC method has been added to enable miners to
293 manipulate the priority of transactions on an individual basis.
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.
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.
303 Two new options to control mining policy:
304 - `-datacarrier=0/1` : Relay and mine "data carrier" (OP_RETURN) transactions
306 - `-datacarriersize=n` : Maximum size, in bytes, we consider acceptable for
307 "data carrier" outputs.
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.
313 BIP 66: strict DER encoding for signatures
314 ------------------------------------------
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.
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
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.
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.
336 Detailed release notes follow. This overview includes changes that affect external
337 behavior, not code moves, refactors or string updates.
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
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
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
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.
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
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
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
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
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
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
658 Thanks to everyone who contributed to this release:
671 - Ben Holden-Crowther
674 - Christian von Roques
741 - Ruben Dario Ponticelli
757 - Wladimir J. van der Laan
761 As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).