1Bitcoin Core version 0.10.0 is now available from:
2
3  https://bitcoin.org/bin/0.10.0/
4
5This is a new major version release, bringing both new features and
6bug fixes.
7
8Please report bugs using the issue tracker at github:
9
10  https://github.com/bitcoin/bitcoin/issues
11
12Upgrading and downgrading
13=========================
14
15How to Upgrade
16--------------
17
18If you are running an older version, shut it down. Wait until it has completely
19shut down (which might take a few minutes for older versions), then run the
20installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or
21bitcoind/bitcoin-qt (on Linux).
22
23Downgrading warning
24---------------------
25
26Because release 0.10.0 makes use of headers-first synchronization and parallel
27block download (see further), the block files and databases are not
28backwards-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
31received, really), which makes it incompatible with some tools or
32other programs. Reindexing using earlier versions will also not work
33anymore as a result of this.
34
35* The block index database will now hold headers for which no block is
36stored on disk, which earlier versions won't support.
37
38If you want to be able to downgrade smoothly, make a backup of your entire data
39directory. Without this your node will need start syncing (or importing from
40bootstrap.dat) anew afterwards. It is possible that the data from a completely
41synchronised 0.10 node may be usable in older versions as-is, but this is not
42supported and may break as soon as the older version attempts to reindex.
43
44This does not affect wallet forward or backward compatibility.
45
46
47Notable changes
48===============
49
50Faster synchronization
51----------------------
52
53Bitcoin Core now uses 'headers-first synchronization'. This means that we first
54ask peers for block headers (a total of 27 megabytes, as of December 2014) and
55validate those. In a second stage, when the headers have been discovered, we
56download the blocks. However, as we already know about the whole chain in
57advance, the blocks can be downloaded in parallel from all available peers.
58
59In practice, this means a much faster and more robust synchronization. On
60recent hardware with a decent network link, it can be as little as 3 hours
61for an initial full synchronization. You may notice a slower progress in the
62very first few minutes, when headers are still being fetched and verified, but
63it should gain speed afterwards.
64
65A few RPCs were added/updated as a result of this:
66- `getblockchaininfo` now returns the number of validated headers in addition to
67the number of validated blocks.
68- `getpeerinfo` lists both the number of blocks and headers we know we have in
69common with each peer. While synchronizing, the heights of the blocks that we
70have 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,
73including those we only have headers for.
74
75Transaction fee changes
76-----------------------
77
78This release automatically estimates how high a transaction fee (or how
79high a priority) transactions require to be confirmed quickly. The default
80settings will create transactions that confirm quickly; see the new
81'txconfirmtarget' setting to control the tradeoff between fees and
82confirmation times. Fees are added by default unless the 'sendfreetransactions'
83setting is enabled.
84
85Prior releases used hard-coded fees (and priorities), and would
86sometimes create transactions that took a very long time to confirm.
87
88Statistics used to estimate fees and priorities are saved in the
89data directory in the `fee_estimates.dat` file just before
90program shutdown, and are read in at startup.
91
92New command line options for transaction fee changes:
93- `-txconfirmtarget=n` : create transactions that have enough fees (or priority)
94so they are likely to begin confirmation within n blocks (default: 1). This setting
95is over-ridden by the -paytxfee option.
96- `-sendfreetransactions` : Send transactions as zero-fee transactions if possible
97(default: 0)
98
99New RPC commands for fee estimation:
100- `estimatefee nblocks` : Returns approximate fee-per-1,000-bytes needed for
101a transaction to begin confirmation within nblocks. Returns -1 if not enough
102transactions have been observed to compute a good estimate.
103- `estimatepriority nblocks` : Returns approximate priority needed for
104a zero-fee transaction to begin confirmation within nblocks. Returns -1 if not
105enough free transactions have been observed to compute a good
106estimate.
107
108RPC access control changes
109--------------------------
110
111Subnet matching for the purpose of access control is now done
112by matching the binary network address, instead of with string wildcard matching.
113For 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
119An arbitrary number of `-rpcallow` arguments can be given. An incoming connection will be accepted if its origin address
120matches one of them.
121
122For 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
131Using 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
136REST interface
137--------------
138
139A new HTTP API is exposed when running with the `-rest` flag, which allows
140unauthenticated access to public node data.
141
142It is served on the same port as RPC, but does not need a password, and uses
143plain HTTP instead of JSON-RPC.
144
145Assuming 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
150In every case, *EXT* can be `bin` (for raw binary data), `hex` (for hex-encoded
151binary) or `json`.
152
153For more details, see the `doc/REST-interface.md` document in the repository.
154
155RPC Server "Warm-Up" Mode
156-------------------------
157
158The RPC server is started earlier now, before most of the expensive
159intialisations like loading the block index.  It is available now almost
160immediately after starting the process.  However, until all initialisations
161are done, it always returns an immediate error with code -28 to all calls.
162
163This new behaviour can be useful for clients to know that a server is already
164started and will be available soon (for instance, so that they do not
165have to start it themselves).
166
167Improved signing security
168-------------------------
169
170For 0.10 the security of signing against unusual attacks has been
171improved by making the signatures constant time and deterministic.
172
173This change is a result of switching signing to use libsecp256k1
174instead of OpenSSL. Libsecp256k1 is a cryptographic library
175optimized for the curve Bitcoin uses which was created by Bitcoin
176Core developer Pieter Wuille.
177
178There exist attacks[1] against most ECC implementations where an
179attacker on shared virtual machine hardware could extract a private
180key if they could cause a target to sign using the same key hundreds
181of times. While using shared hosts and reusing keys are inadvisable
182for other reasons, it's a better practice to avoid the exposure.
183
184OpenSSL has code in their source repository for derandomization
185and reduction in timing leaks that we've eagerly wanted to use for a
186long time, but this functionality has still not made its
187way into a released version of OpenSSL. Libsecp256k1 achieves
188significantly stronger protection: As far as we're aware this is
189the only deployed implementation of constant time signing for
190the curve Bitcoin uses and we have reason to believe that
191libsecp256k1 is better tested and more thoroughly reviewed
192than the implementation in OpenSSL.
193
194[1] https://eprint.iacr.org/2014/161.pdf
195
196Watch-only wallet support
197-------------------------
198
199The wallet can now track transactions to and from wallets for which you know
200all addresses (or scripts), even without the private keys.
201
202This can be used to track payments without needing the private keys online on a
203possibly vulnerable system. In addition, it can help for (manual) construction
204of multisig transactions where you are only one of the signers.
205
206One new RPC, `importaddress`, is added which functions similarly to
207`importprivkey`, but instead takes an address or script (in hexadecimal) as
208argument.  After using it, outputs credited to this address or script are
209considered to be received, and transactions consuming these outputs will be
210considered to be sent.
211
212The following RPCs have optional support for watch-only:
213`getbalance`, `listreceivedbyaddress`, `listreceivedbyaccount`,
214`listtransactions`, `listaccounts`, `listsinceblock`, `gettransaction`. See the
215RPC documentation for those methods for more information.
216
217Compared to using `getrawtransaction`, this mechanism does not require
218`-txindex`, scales better, integrates better with the wallet, and is compatible
219with future block chain pruning functionality. It does mean that all relevant
220addresses need to added to the wallet before the payment, though.
221
222Consensus library
223-----------------
224
225Starting from 0.10.0, the Bitcoin Core distribution includes a consensus library.
226
227The purpose of this library is to make the verification functionality that is
228critical to Bitcoin's consensus available to other applications, e.g. to language
229bindings such as [python-bitcoinlib](https://pypi.python.org/pypi/python-bitcoinlib) or
230alternative node implementations.
231
232This library is called `libbitcoinconsensus.so` (or, `.dll` for Windows).
233Its interface is defined in the C header [bitcoinconsensus.h](https://github.com/bitcoin/bitcoin/blob/0.10/src/script/bitcoinconsensus.h).
234
235In 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
238correctly spends the passed scriptPubKey under additional constraints indicated by flags
239- `bitcoinconsensus_version` returns the API version, currently at an experimental `0`
240
241The functionality is planned to be extended to e.g. UTXO management in upcoming releases, but the interface
242for existing methods should remain stable.
243
244Standard script rules relaxed for P2SH addresses
245------------------------------------------------
246
247The IsStandard() rules have been almost completely removed for P2SH
248redemption scripts, allowing applications to make use of any valid
249script type, such as "n-of-m OR y", hash-locked oracle addresses, etc.
250While the Bitcoin protocol has always supported these types of script,
251actually using them on mainnet has been previously inconvenient as
252standard Bitcoin Core nodes wouldn't relay them to miners, nor would
253most miners include them in blocks they mined.
254
255bitcoin-tx
256----------
257
258It has been observed that many of the RPC functions offered by bitcoind are
259"pure functions", and operate independently of the bitcoind wallet. This
260included many of the RPC "raw transaction" API functions, such as
261createrawtransaction.
262
263bitcoin-tx is a newly introduced command line utility designed to enable easy
264manipulation of bitcoin transactions. A summary of its operation may be
265obtained via "bitcoin-tx --help" Transactions may be created or signed in a
266manner similar to the RPC raw tx API. Transactions may be updated, deleting
267inputs or outputs, or appending new inputs and outputs. Custom scripts may be
268easily composed using a simple text notation, borrowed from the bitcoin test
269suite.
270
271This tool may be used for experimenting with new transaction types, signing
272multi-party transactions, and many other uses. Long term, the goal is to
273deprecate and remove "pure function" RPC API calls, as those do not require a
274server round-trip to execute.
275
276Other utilities "bitcoin-key" and "bitcoin-script" have been proposed, making
277key and script operations easily accessible via command line.
278
279Mining and relay policy enhancements
280------------------------------------
281
282Bitcoin Core's block templates are now for version 3 blocks only, and any mining
283software relying on its `getblocktemplate` must be updated in parallel to use
284libblkmaker either version 0.4.2 or any version from 0.5.1 onward.
285If you are solo mining, this will affect you the moment you upgrade Bitcoin
286Core, which must be done prior to BIP66 achieving its 951/1001 status.
287If you are mining with the stratum mining protocol: this does not affect you.
288If you are mining with the getblocktemplate protocol to a pool: this will affect
289you at the pool operator's discretion, which must be no later than BIP66
290achieving its 951/1001 status.
291
292The `prioritisetransaction` RPC method has been added to enable miners to
293manipulate the priority of transactions on an individual basis.
294
295Bitcoin Core now supports BIP 22 long polling, so mining software can be
296notified immediately of new templates rather than having to poll periodically.
297
298Support for BIP 23 block proposals is now available in Bitcoin Core's
299`getblocktemplate` method. This enables miners to check the basic validity of
300their next block before expending work on it, reducing risks of accidental
301hardforks or mining invalid blocks.
302
303Two new options to control mining policy:
304- `-datacarrier=0/1` : Relay and mine "data carrier" (OP_RETURN) transactions
305if this is 1.
306- `-datacarriersize=n` : Maximum size, in bytes, we consider acceptable for
307"data carrier" outputs.
308
309The relay policy has changed to more properly implement the desired behavior of not
310relaying free (or very low fee) transactions unless they have a priority above the
311AllowFreeThreshold(), in which case they are relayed subject to the rate limiter.
312
313BIP 66: strict DER encoding for signatures
314------------------------------------------
315
316Bitcoin Core 0.10 implements BIP 66, which introduces block version 3, and a new
317consensus rule, which prohibits non-DER signatures. Such transactions have been
318non-standard since Bitcoin v0.8.0 (released in February 2013), but were
319technically still permitted inside blocks.
320
321This change breaks the dependency on OpenSSL's signature parsing, and is
322required if implementations would want to remove all of OpenSSL from the
323consensus code.
324
325The same miner-voting mechanism as in BIP 34 is used: when 751 out of a
326sequence of 1001 blocks have version number 3 or higher, the new consensus
327rule becomes active for those blocks. When 951 out of a sequence of 1001
328blocks have version number 3 or higher, it becomes mandatory for all blocks.
329
330Backward compatibility with current mining software is NOT provided, thus miners
331should read the first paragraph of "Mining and relay policy enhancements" above.
332
3330.10.0 Change log
334=================
335
336Detailed release notes follow. This overview includes changes that affect external
337behavior, not code moves, refactors or string updates.
338
339RPC:
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
383Command-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
404Block 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
440P2P 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
471Validation:
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
488Build 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
506Wallet:
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
522GUI:
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
564Tests:
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
624Miscellaneous:
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
655Credits
656=======
657
658Thanks 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
761As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
762
763