Bitcoin Core 0.16.0
Bitcoin Core installation binaries can be downloaded from bitcoincore.org and the source-code is available from the Bitcoin Core source repository.
Bitcoin Core version 0.16.0 is now available from:
https://bitcoincore.org/bin/bitcoin-core-0.16.0/
or through bittorrent:
magnet:?xt=urn:btih:6493ae7a15b4d32bb4eca1dfaf6dcc0c143492cb&dn=bitcoin-core-0.16.0&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Fzer0day.ch%3A1337&tr=udp%3A%2F%2Fexplodie.org%3A6969
This is a new major version release, including new features, various bugfixes and performance improvements, as well as updated translations.
Please report bugs using the issue tracker at GitHub:
https://github.com/bitcoin/bitcoin/issues
To receive security and update notifications, please subscribe to:
https://bitcoincore.org/en/list/announcements/join/
How to Upgrade
If you are running an older version, shut it down. Wait until it has completely
shut down (which might take a few minutes for older versions), then run the
installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac)
or bitcoind/bitcoin-qt (on Linux).
The first time you run version 0.15.0 or newer, your chainstate database will be converted to a new format, which will take anywhere from a few minutes to half an hour, depending on the speed of your machine.
Note that the block database format also changed in version 0.8.0 and there is no automatic upgrade code from before version 0.8 to version 0.15.0 or higher. Upgrading directly from 0.7.x and earlier without re-downloading the blockchain is not supported. However, as usual, old wallet versions are still supported.
Downgrading warning
Wallets created in 0.16 and later are not compatible with versions prior to 0.16 and will not work if you try to use newly created wallets in older versions. Existing wallets that were created with older versions are not affected by this.
Compatibility
Bitcoin Core is extensively tested on multiple operating systems using the Linux kernel, macOS 10.8+, and Windows Vista and later. Windows XP is not supported.
Bitcoin Core should also work on most other Unix-like systems but is not frequently tested on them.
Notable changes
Wallet changes
Segwit Wallet
Bitcoin Core 0.16.0 introduces full support for segwit in the wallet and user interfaces. A new -addresstype argument has been added, which supports legacy, p2sh-segwit (default), and bech32 addresses. It controls what kind of addresses are produced by getnewaddress, getaccountaddress, and createmultisigaddress. A -changetype argument has also been added, with the same options, and by default equal to -addresstype, to control which kind of change is used.
A new address_type parameter has been added to the getnewaddress and addmultisigaddress RPCs to specify which type of address to generate.
A change_type argument has been added to the fundrawtransaction RPC to override the -changetype argument for specific transactions.
- All segwit addresses created through 
getnewaddressor*multisigRPCs explicitly get their redeemscripts added to the wallet file. This means that downgrading after creating a segwit address will work, as long as the wallet file is up to date. - All segwit keys in the wallet get an implicit redeemscript added, without it being written to the file. This means recovery of an old backup will work, as long as you use new software.
 - All keypool keys that are seen used in transactions explicitly get their redeemscripts added to the wallet files. This means that downgrading after recovering from a backup that includes a segwit address will work
 
Note that some RPCs do not yet support segwit addresses. Notably, signmessage/verifymessage doesn’t support segwit addresses, nor does importmulti at this time. Support for segwit in those RPCs will continue to be added in future versions.
P2WPKH change outputs are now used by default if any destination in the transaction is a P2WPKH or P2WSH output. This is done to ensure the change output is as indistinguishable from the other outputs as possible in either case.
BIP173 (Bech32) Address support (“bc1…” addresses)
Full support for native segwit addresses (BIP173 / Bech32) has now been added. This includes the ability to send to BIP173 addresses (including non-v0 ones), and generating these addresses (including as default new addresses, see above).
A checkbox has been added to the GUI to select whether a Bech32 address or P2SH-wrapped address should be generated when using segwit addresses. When launched with -addresstype=bech32 it is checked by default. When launched with -addresstype=legacy it is unchecked and disabled.
HD-wallets by default
Due to a backward-incompatible change in the wallet database, wallets created with version 0.16.0 will be rejected by previous versions. Also, version 0.16.0 will only create hierarchical deterministic (HD) wallets. Note that this only applies to new wallets; wallets made with previous versions will not be upgraded to be HD.
Replace-By-Fee by default in GUI
The send screen now uses BIP125 RBF by default, regardless of -walletrbf.
There is a checkbox to mark the transaction as final.
The RPC default remains unchanged: to use RBF, launch with -walletrbf=1 or
use the replaceable argument for individual transactions.
Wallets directory configuration (-walletdir)
Bitcoin Core now has more flexibility in where the wallets directory can be located. Previously wallet database files were stored at the top level of the bitcoin data directory. The behavior is now:
- For new installations (where the data directory doesn’t already exist),
wallets will now be stored in a new 
wallets/subdirectory inside the data directory by default. - For existing nodes (where the data directory already exists), wallets will be
stored in the data directory root by default. If a 
wallets/subdirectory already exists in the data directory root, then wallets will be stored in thewallets/subdirectory by default. - The location of the wallets directory can be overridden by specifying a
-walletdir=<path>option where<path>can be an absolute path to a directory or directory symlink. 
Care should be taken when choosing the wallets directory location, as if it becomes unavailable during operation, funds may be lost.
Build: Minimum GCC bumped to 4.8.x
The minimum version of the GCC compiler required to compile Bitcoin Core is now 4.8. No effort will be
made to support older versions of GCC. See discussion in issue #11732 for more information.
The minimum version for the Clang compiler is still 3.3. Other minimum dependency versions can be found in doc/dependencies.md in the repository.
Support for signalling pruned nodes (BIP159)
Pruned nodes can now signal BIP159’s NODE_NETWORK_LIMITED using service bits, in preparation for full BIP159 support in later versions. This would allow pruned nodes to serve the most recent blocks. However, the current change does not yet include support for connecting to these pruned peers.
Performance: SHA256 assembly enabled by default
The SHA256 hashing optimizations for architectures supporting SSE4, which lead to ~50% speedups in SHA256 on supported hardware (~5% faster synchronization and block validation), have now been enabled by default. In previous versions they were enabled using the --enable-experimental-asm flag when building, but are now the default and no longer deemed experimental.
GUI changes
- Uses of “µBTC” in the GUI now also show the more colloquial term “bits”, specified in BIP176.
 - The option to reuse a previous address has now been removed. This was justified by the need to “resend” an invoice, but now that we have the request history, that need should be gone.
 - Support for searching by TXID has been added, rather than just address and label.
 - A “Use available balance” option has been added to the send coins dialog, to add the remaining available wallet balance to a transaction output.
 - A toggle for unblinding the password fields on the password dialog has been added.
 
RPC changes
New rescanblockchain RPC
A new RPC rescanblockchain has been added to manually invoke a blockchain rescan.
The RPC supports start and end-height arguments for the rescan, and can be used in a
multiwallet environment to rescan the blockchain at runtime.
New savemempool RPC
A new savemempool RPC has been added which allows the current mempool to be saved to
disk at any time to avoid it being lost due to crashes / power loss.
Safe mode disabled by default
Safe mode is now disabled by default and must be manually enabled (with -disablesafemode=0) if you wish to use it. Safe mode is a feature that disables a subset of RPC calls - mostly related to the wallet and sending - automatically in case certain problem conditions with the network are detected. However, developers have come to regard these checks as not reliable enough to act on automatically. Even with safe mode disabled, they will still cause warnings in the warnings field of the getneworkinfo RPC and launch the -alertnotify command.
Renamed script for creating JSON-RPC credentials
The share/rpcuser/rpcuser.py script was renamed to share/rpcauth/rpcauth.py. This script can be
used to create rpcauth credentials for a JSON-RPC user.
Validateaddress improvements
The validateaddress RPC output has been extended with a few new fields, and support for segwit addresses (both P2SH and Bech32). Specifically:
- A new field 
iswitnessis True for P2WPKH and P2WSH addresses (“bc1…” addresses), but not for P2SH-wrapped segwit addresses (see below). - The existing field 
isscriptwill now also report True for P2WSH addresses. - A new field 
embeddedis present for all script addresses where the script is known and matches something that can be interpreted as a known address. This is particularly true for P2SH-P2WPKH and P2SH-P2WSH addresses. The value forembeddedincludes much of the informationvalidateaddresswould report if invoked directly on the embedded address. - For multisig scripts a new 
pubkeysfield was added that reports the full public keys involved in the script (if known). This is a replacement for the existingaddressesfield (which reports the same information but encoded as P2PKH addresses), represented in a more useful and less confusing way. Theaddressesfield remains present for non-segwit addresses for backward compatibility. - For all single-key addresses with known key (even when wrapped in P2SH or P2WSH), the 
pubkeyfield will be present. In particular, this means that invokingvalidateaddresson the output ofgetnewaddresswill always report thepubkey, even when the address type is P2SH-P2WPKH. 
Low-level changes
- The deprecated RPC 
getinfowas removed. It is recommended that the more specific RPCs are used:getblockchaininfogetnetworkinfogetwalletinfogetmininginfo
 - The wallet RPC 
getreceivedbyaddresswill return an error if called with an address not in the wallet. - The wallet RPC 
addwitnessaddresswas deprecated and will be removed in version 0.17, set theaddress_typeargument ofgetnewaddress, or option-addresstype=[bech32|p2sh-segwit]instead. dumpwalletnow includes hex-encoded scripts from the wallet in the dumpfile, andimportwalletnow imports these scripts, but corresponding addresses may not be added correctly or a manual rescan may be required to find relevant transactions.- The RPC 
getblockchaininfonow includes anerrorsfield. - A new 
blockhashparameter has been added to thegetrawtransactionRPC which allows for a raw transaction to be fetched from a specific block if known, even without-txindexenabled. - The 
decoderawtransactionandfundrawtransactionRPCs now have optionaliswitnessparameters to override the heuristic witness checks if necessary. - The 
walletpassphrasetimeout is now clamped to 2^30 seconds. - Using addresses with the 
createmultisigRPC is now deprecated, and will be removed in a later version. Public keys should be used instead. - Blockchain rescans now no longer lock the wallet for the entire rescan process, so other RPCs can now be used at the same time (although results of balances / transactions may be incorrect or incomplete until the rescan is complete).
 - The 
loggingRPC has now been made public rather than hidden. - An 
initialblockdownloadboolean has been added to thegetblockchaininfoRPC to indicate whether the node is currently in IBD or not. minrelaytxfeeis now included in the output ofgetmempoolinfo
Other changed command-line options
-debuglogfile=<file>can be used to specify an alternative debug logging file.- bitcoin-cli now has an 
-stdinrpcpassoption to allow the RPC password to be read from standard input. - The 
-usehdoption has been removed. - bitcoin-cli now supports a new 
-getinfoflag which returns an output like that of the now-removedgetinfoRPC. 
Testing changes
- The default regtest JSON-RPC port has been changed to 18443 to avoid conflict with testnet’s default of 18332.
 - Segwit is now always active in regtest mode by default. Thus, if you upgrade a regtest node you will need to either -reindex or use the old rules by adding 
vbparams=segwit:0:999999999999to your regtest bitcoin.conf. Failure to do this will result in a CheckBlockIndex() assertion failure that will look like: Assertion `(pindexFirstNeverProcessed != nullptr) == (pindex->nChainTx == 0)’ failed. 
0.16.0 change log
Block and transaction handling
- #10953 
aeed345Combine scriptPubKey and amount as CTxOut in CScriptCheck (jl2012) - #11309 
93d20a7Minor cleanups for AcceptToMemoryPool (morcos) - #11418 
38c201fAdd error string for CLEANSTACK script violation (maaku) - #11411 
339da9cChange SignatureHash input index check to an assert (jimpo) - #11406 
e12522dAdd state message print to AcceptBlock failure message (TheBlueMatt) - #11062 
26fee4fMark mempool import fails that were found in mempool as ‘already there’ (kallewoof) - #11269 
61fb806CTxMemPoolEntry::UpdateAncestorState: modifySiagOps param type (donaloconnor) - #11747 
e970396Fix: Open files read only if requested (Elbandi) - #11737 
46d1ebfDocument partial validation in ConnectBlock() (sdaftuar) - #10699 
c090262Make all script validation flags backward compatible (sipa) - #10279 
214046fAdd a CChainState class to validation.cpp to take another step towards clarifying internal interfaces (TheBlueMatt) - #11824 
d9fdac1Block ActivateBestChain to empty validationinterface queue (TheBlueMatt) - #12127 
9501dc2Remove unused mempool index (sdaftuar) - #12118 
44080a9Sort mempool by min(feerate, ancestor_feerate) (sdaftuar) - #8498 
0e3a411Minimize the number of times it is checked that no money… (jtimon) - #12368 
3f5012bHold mempool.cs for the duration of ATMP (TheBlueMatt) - #12401 
d44cd7eReset pblocktree before deleting LevelDB file (Sjors) - #12415 
f893824Interrupt loading thread after shutdown request (promag) 
P2P protocol and network code
- #10596 
6866b49Add vConnect to CConnman::Options (benma) - #10663 
9d31ed2Split resolve out of connect (theuni) - #11113 
fef65c4Ignore getheaders requests for very old side blocks (jimpo) - #11585 
5aeaa9caddrman: Add missing lock in Clear() (CAddrMan) (practicalswift) - #11524 
5ef3b69De-duplicate connection eviction logic (tjps) - #11580 
1f4375fDo not send (potentially) invalid headers in response to getheaders (TheBlueMatt) - #11655 
aca77a4Assert state.m_chain_sync.m_work_header in ConsiderEviction (practicalswift) - #11744 
3ff6ff5Add missing locks in net.{cpp,h} (practicalswift) - #11740 
59d3dc8Implement BIP159 NODE_NETWORK_LIMITED (pruned peers) signaling only (jonasschnelli) - #11583 
37ffa16Do not make it trivial for inbound peers to generate log entries (TheBlueMatt) - #11363 
ba2f195Split socket create/connect (theuni) - #11917 
bc66765Add testnet DNS seed: seed.testnet.bitcoin.sprovoost.nl (Sjors) - #11512 
6e89de5Use GetDesireableServiceFlags in seeds, dnsseeds, fixing static seed adding (TheBlueMatt) - #12262 
16bac24Hardcoded seed update (laanwj) - #12270 
9cf6393Update chainTxData for 0.16 (laanwj) - #12392 
0f61651Fix ignoring tx data requests when fPauseSend is set on a peer (TheBlueMatt) 
Wallet
- #11039 
fc51565Avoid second mapWallet lookup (promag) - #10952 
2621673Remove vchDefaultKey and have better first run detection (achow101) - #11007 
fc5c237Fix potential memory leak when loading a corrupted wallet file (practicalswift) - #10976 
07c92b9Move some static functions out of wallet.h/cpp (ryanofsky) - #11117 
961901fPrepare for non-Base58 addresses (sipa) - #10916 
e6ab88aadd missing lock to crypter GetKeys() (benma) - #10767 
791a0e6Clarify wallet initialization / destruction interface (jnewbery) - #11250 
c22a53cBump wallet version to 159900 and remove theusehdoption (achow101) - #11307 
4f7e37eDisplay non-HD error on first run (MarcoFalke) - #11408 
69c7eceFix parameter name typo in ErasePurpose walletdb method (PierreRochard) - #11167 
aa624b6Full BIP173 (Bech32) support (sipa) - #11594 
0ecc630Improve -disablewallet parameter interaction (promag) - #10368 
77ba4bfRemove helper conversion operator from wallet (kallewoof) - #11074 
99ec126Assert that CWallet::SyncMetaData finds oldest transaction (BitonicEelis) - #11272 
e6e3fc3CKeystore/CCrypter: move relevant implementation out of the header (jonasschnelli) - #10286 
927a1d7Call wallet notify callbacks in scheduler thread (without cs_main) (TheBlueMatt) - #10600 
4ed8180Make feebumper class stateless (ryanofsky) - #11466 
d080a7dSpecify custom wallet directory with -walletdir param (MeshCollider) - #11839 
8ab6c0bDon’t attempt mempool entry for wallet transactions on startup (instagibbs) - #11854 
2214954Split up key and script metadata for better type safety (ryanofsky) - #11870 
ef8ba7dRemove unnecessary mempool lock in ReacceptWalletTransactions (promag) - #11864 
2ae58d5Make CWallet::FundTransaction atomic (promag) - #11886 
df71819Clarify getbalance meaning a tiny bit in response to questions (TheBlueMatt) - #11923 
81c89e9Remove unused fNoncriticalErrors variable from CWalletDB::FindWalletTx (PierreRochard) - #11726 
604e08cCleanups + nit fixes for walletdir PR (MeshCollider) - #11403 
d889c03Segwit wallet support (sipa) - #11970 
b7450cdAdd test coverage for bitcoin-cli multiwallet calls (ryanofsky) - #11904 
66e3af7Add a lock to the wallet directory (MeshCollider) - #12101 
c7978beClamp walletpassphrase timeout to 2^30 seconds and check its bounds (achow101) - #12210 
17180faDeprecate addwitnessaddress (laanwj) - #12220 
f4c942eError if relative -walletdir is specified (ryanofsky) - #11281 
8470e64Avoid permanent cs_main/cs_wallet lock during RescanFromTime (jonasschnelli) - #12119 
9594139Use P2WPKH change output if any destination is P2WPKH or P2WSH (Sjors) - #12213 
eadb2daAdd address type option to addmultisigaddress (promag) - #12276 
7936446Remove duplicate mapWallet lookups (promag) 
RPC and other APIs
- #11008 
3841aafEnable disablesafemode by default (gmaxwell) - #11050 
7ed57d3Avoid treating null RPC arguments different from missing arguments (ryanofsky) - #10997 
affe927Add option -stdinrpcpass to bitcoin-cli to allow RPC password to be read from standard input (jharvell) - #11179 
e0e3cbbPush down safe mode checks (laanwj) - #11203 
d745b4cadd wtxid to mempool entry output (sdaftuar) - #11099 
bc561b4Add savemempool RPC (greenaddress) - #10838 
66a5b41(finally) remove getinfo (TheBlueMatt) - #10753 
7fcd61btest: Check RPC argument mapping (laanwj) - #11288 
0f8e095More user-friendly error message when partially signing (MeshCollider) - #11031 
ef8340ddeprecate estimatefee (jnewbery) - #10858 
9a8e916Add “errors” field to getblockchaininfo and unify “errors” field in get*info RPCs (achow101) - #11021 
90926dbFix getchaintxstats() (AkioNak) - #11367 
3a93270getblockchaininfo: Add disk_size, prune_target_size (esotericnonsense) - #11006 
a1d78b5Improve shutdown process (promag) - #11529 
ff92fbfAvoid slow transaction search with txindex enabled (promag) - #11618 
87d90efLock cs_main in blockToJSON/blockheaderToJSON (practicalswift) - #11626 
998c304MakeloggingRPC public (laanwj) - #11258 
033c786Add initialblockdownload to getblockchaininfo (jnewbery) - #11087 
99bc0b4Diagnose unsuitable outputs in lockunspent() (BitonicEelis) - #11710 
9388639cli: Reject arguments to -getinfo (laanwj) - #11738 
d4267a3Fix sendrawtransaction hang when sending a tx already in mempool (TheBlueMatt) - #11753 
32c9b57clarify abortrescan rpc use (instagibbs) - #11191 
ef14f2eImprove help text and behavior of RPC-logging (AkioNak) - #10874 
9e38d35getblockchaininfo: Loop through the bip9 soft fork deployments instead of hard coding (achow101) - #10275 
497d0e0Allow fetching tx directly from specified block in getrawtransaction (kallewoof) - #11178 
fee0370Add iswitness parameter to decode- and fundrawtransaction RPCs (MeshCollider) - #11667 
711d16cAdd scripts to dumpwallet RPC (MeshCollider) - #11475 
9bad8d6mempoolinfo should take ::minRelayTxFee into account (mess110) - #12001 
a9a49e6Adding ::minRelayTxFee amount to getmempoolinfo and updating help (jeffrade) - #12198 
adce1deAdd deprecation error forgetinfo(laanwj) - #11415 
69ec021Disallow using addresses in createmultisig (achow101) - #12278 
288deacAdd special error for genesis coinbase to getrawtransaction (MeshCollider) - #11362 
c6223b3Remove nBlockMaxSize from miner opt struct as it is no longer used (gmaxwell) - #10825 
28485c7Set regtest JSON-RPC port to 18443 to avoid conflict with testnet 18332 (fametrano) - #11303 
e542728Fix estimatesmartfee rounding display issue (TheBlueMatt) - #7061 
8c2de82Add RPC call “rescanblockchain<startheight><stopheight>” (jonasschnelli) - #11055 
95e14dcRPC getreceivedbyaddress should return error if called with address not owned by the wallet (jnewbery) - #12366 
93de37ahttp: Join worker threads before deleting work queue (laanwj) - #12315 
758a41eBech32 addresses in dumpwallet (fivepiece) - #12427 
3762ac1Make signrawtransaction accept P2SH-P2WSH redeemscripts (sipa) 
GUI
- #10964 
64e66bbPass SendCoinsRecipient (208 bytes) by reference (practicalswift) - #11169 
5b8af7bMake tabs toolbar no longer have a context menu (achow101) - #10911 
9c8f365Fix typo and access key in optionsdialog.ui (keystrike) - #10770 
ea729d5Drop upgrade-cancel callback registration for a generic “cancelable” (TheBlueMatt) - #11156 
a3624ddFix memory leaks in qt/guiutil.cpp (danra) - #11268 
31e72b2[macOS] remove Growl support, remove unused code (jonasschnelli) - #11193 
c5c77bdTerminate string *pszExePath after readlink and without using memset (practicalswift) - #11508 
ffa5159Fix crash via division by zero assertion (jonasschnelli) - #11499 
6157e8cAdd upload and download info to the peerlist (debug menu) (aarongolliver) - #11480 
ffc0b11Add toggle for unblinding password fields (tjps) - #11316 
22cdf93Add use available balance in send coins dialog (CryptAxe, promag) - #3716 
13e352dReceive: Remove option to reuse a previous address (luke-jr) - #11690 
f0c1f8aFix the StartupWMClass for bitoin-qt, so gnome-shell can recognize it (eklitzke) - #10920 
f6f8d54Fix potential memory leak in newPossibleKey(ChangeCWallet *wallet) (practicalswift) - #11698 
7293d06RPC-Console nested commands documentation (lmlsna) - #11395 
38d31f9Enable searching by transaction id (luke-jr) - #11556 
91eeaa0Improved copy for RBF checkbox and tooltip (Sjors) - #11809 
80f9dadFix proxy setting options dialog crash (laanwj) - #11616 
8585bb8Update ban-state in case of dirty-state during periodic sweep (jonasschnelli) - #11605 
f19ca12Enable RBF by default in QT (Sjors) - #12074 
a1136f0Optimizes boolean expression model && model->haveWatchOnly() (251Labs) - #12035 
eeb6d52Change µBTC to bits (jb55) - #12092 
fd4ca17Replaces numbered place marker %2 with %1 (251Labs) - #12173 
bbc91b7Use flexible font size for QRCode image address (jonasschnelli) - #12211 
10d10d7Avoid potential null dereference in ReceiveCoinsDialog constructor (ryanofsky) - #12261 
f359afcBump BLOCK_CHAIN_SIZE to 200GB (laanwj) - #11991 
062c8b6Receive: checkbox for bech32 address (Sjors) - #11644 
045a809Fix qt build broken by 5a5e4e9 (TheBlueMatt) - #11448 
d473e6dreset addrProxy/addrSeparateProxyTor if colon char missing (mess110) - #12377 
604f289qt: Poll ShutdownTimer after init is done (MarcoFalke) - #12374 
daaae36qt: Make sure splash screen is freed on AppInitMain fail (laanwj) - #12349 
ad10b90shutdown: fix crash on shutdown with reindex-chainstate (theuni) 
Build system
- #10923 
2c9f5ectravis: Build with –enable-werror under OS X (practicalswift) - #11176 
df8c722build: Rename –enable-experimental-asm to –enable-asm and enable by default (laanwj) - #11286 
11dacc6[depends] Don’t build libevent sample code (fanquake) - #7142 
801dd40Travis: Test build against system libs (& Qt4) (luke-jr) - #11380 
390771bRemove outdated share/certs/ directory (MeshCollider) - #11391 
7632310Remove lxcbr0 lines from gitian-build.sh (MeshCollider) - #11435 
167cef8build: Make “make clean” remove all files created when running “make check” (practicalswift) - #11460 
e022463[depends] mac_alias 2.0.6, ds_store 1.1.2 (fanquake) - #11541 
bb9ab0fBuild: Fix Automake warnings when running autogen.sh (fanquake) - #11611 
0e70791[build] Don’t fail when passed –disable-lcov and lcov isn’t available (fanquake) - #11651 
3c098a8refactor: Make all #includes relative to project root (laanwj, MeshCollider, ryanofsky) - #11621 
1f7695b[build] Add temp_bitcoin_locale_qrc to CLEAN_QT to fix make distcheck (fanquake) - #11755 
84fa645[Docs] Bump minimum required version of GCC to 4.8 (fanquake) - #9254 
6d3dc52[depends] ZeroMQ 4.2.2 (fanquake) - #11842 
3c8f0a3[build] Add missing stuff to clean-local (kallewoof) - #11936 
483bb67[build] Warn that only libconsensus can be built without Boost (fanquake) - #11945 
7a11ba7Improve BSD compatibility of contrib/install_db4.sh (laanwj) - #11981 
180a255Fix gitian build after libzmq bump (theuni) - #11903 
8f68fd2[trivial] Add required package dependencies for depends cross compilation (jonasschnelli) - #12168 
45cf8a0#include sys/fcntl.h to just fcntl.h (without sys/) (jsarenik) - #12095 
3fa1ab4Use BDB_LIBS/CFLAGS and pass –disable-replication (fanquake) - #11711 
6378e5cbitcoin_qt.m4: Minor fixes and clean-ups (fanquake) - #11989 
90d4104.gitignore: add QT Creator artifacts (Sjors) - #11577 
c0ae864Fix warnings (-Wsign-compare) when building with DEBUG_ADDRMAN (practicalswift) 
Tests and QA
- #11024 
3e55f13Remove OldSetKeyFromPassphrase/OldEncrypt/OldDecrypt (practicalswift) - #10679 
31b2612Document the non-DER-conformance of one test in tx_valid.json (schildbach) - #11160 
ede386cImprove versionbits_computeblockversion test code consistency (danra) - #10303 
f088a1bInclude ms/blk stats in Connect* benchmarks (kallewoof) - #10777 
d81dccfAvoid redundant assignments. Remove unused variables (practicalswift) - #11260 
52f8877travis: Assert default datadir isn’t created, Run scripted diff only once (MarcoFalke) - #11271 
638e6c5travis: filter out pyenv (theuni) - #11285 
3255d63Add -usehd to excluded args in check-doc.py (MeshCollider) - #11297 
16e4184Make sure ~/.bitcoin doesn’t exist before build (MeshCollider) - #11311 
cce94c5travis: Revert default datadir check (MarcoFalke) - #11300 
f4ed44aAdd a lint check for trailing whitespace (MeshCollider) - #11323 
4ce2f3dmininode: add an optimistic write and disable nagle (theuni) - #11370 
2d85899Add getblockchaininfo functional test (promag) - #11365 
f199b8aAdd Qt GUI tests to Overview and ReceiveCoin Page (anditto) - #11293 
dbc4ae0Deduplicate CMerkleBlock construction code, add test coverage (jamesob) - #10440 
9e8ef9dAdd libFuzzer support (practicalswift) - #10941 
364da2cAdd blocknotify and walletnotify functional tests (promag) - #11420 
8928093Bump univalue subtree and fix json formatting in tests (MarcoFalke) - #10099 
424be03Slightly Improve Unit Tests for Checkqueue (JeremyRubin) - #11513 
14b860bA few Python3 tidy ups (jnewbery) - #11486 
2ca518dAdd uacomment tests (mess110) - #11452 
02ac8c8Improve ZMQ functional test (promag) - #10409 
b5545d8Add fuzz testing for BlockTransactions and BlockTransactionsRequest (practicalswift) - #11389 
dd56166Support having segwit always active in regtest (sipa, ajtowns, jnewbery) - #11562 
5776582bench: use std::chrono rather than gettimeofday (theuni) - #11182 
f7388e9Add P2P interface to TestNode (jnewbery) - #11552 
b5f9f02Improve wallet-accounts test (ryanofsky) - #11638 
5e3f5e4Dead mininode code (jnewbery) - #11646 
fe503e1Require a steady clock for bench with at least micro precision (TheBlueMatt) - #11468 
76b3349Make comp test framework more debuggable (jnewbery) - #11623 
ee92243Add missing locks to tests (practicalswift) - #11035 
927e528[contrib] Add Valgrind suppressions file (practicalswift) - #11641 
7adeea3Only allow disconnecting all NodeConns (MarcoFalke) - #11677 
3bdf242Remove unused NodeConn members (MarcoFalke) - #11699 
66d46c7[travis-ci] Only run linters on Pull Requests (jnewbery) - #11654 
084f52fInitialize recently introduced non-static class member lastCycles to zero in constructor (practicalswift) - #11648 
ccc70a2Add messages.py (jnewbery) - #11713 
49667a7Fix for mismatched extern definition in wallet tests (sipsorcery) - #11707 
0d89fa0Fix sendheaders (jnewbery) - #11718 
9cdd2bcMove pwalletMain to wallet test fixture (laanwj) - #11714 
901ba3eTest that mempool rejects coinbase transactions (jamesob) - #11743 
3d6ad40Add multiwallet prefix test (MarcoFalke) - #11683 
a892218Remove unused mininode functions {ser,deser}_int_vector(…). Remove unused imports (practicalswift) - #11712 
9f2c2dbSplit NodeConn from NodeConnCB (jnewbery) - #11791 
13e31ddRename NodeConn and NodeConnCB (jnewbery) - #11835 
f60b4adAdd Travis check for unused Python imports (practicalswift) - #11849 
ad1820cAssert that only one NetworkThread exists (jnewbery) - #11877 
d4991c0Improve createrawtransaction functional tests (promag) - #11220 
2971fd0Check specific validation error in miner tests (Sjors) - #11947 
797441eFix rawtransactions test (laanwj) - #11946 
8049241Remove unused variable (firstAddrnServices) (practicalswift) - #11867 
18a1bbaImprove node network test (jnewbery) - #11883 
cfd99ddAdd configuration file/argument testing (MeshCollider) - #11879 
d4e404aRemove redundant univalue_tests.cpp (jnewbery) - #11748 
20166f8Adding unit tests for GetDifficulty in blockchain.cpp (merehap) - #11517 
5180a86Improve benchmark precision (martinus) - #11291 
a332a7dFix string concatenation to os.path.join and add exception case (dongsam) - #11965 
d38d1a3Note on test order in test_runner (MarcoFalke) - #11997 
ddff344util_tests.cpp: actually check ignored args (ajtowns) - #12079 
45173faImprove prioritisetransaction test coverage (promag) - #12150 
92a810dFix ListCoins test failure due to unset g_address_type, g_change_type (ryanofsky) - #12133 
1d2eabaFix rare failure in p2p-segwit.py (sdaftuar) - #12082 
0910cbeAdding test case forSINGLE|ANYONECANPAYhash type in tx_valid.json (Christewart) - #11796 
4db16ecFunctional test naming convention (ajtowns) - #12227 
b987ca4test_runner: Readable output if create_cache.py fails (ryanofsky) - #12089 
126000bMake TestNodeCLI command optional in send_cli (MarcoFalke) - #11774 
6970b30Rename functional tests (ajtowns) - #12264 
598a9c4Fix versionbits warning test (jnewbery) - #12217 
1213be6Add missing syncwithvalidationinterfacequeue to tests (MarcoFalke) - #12292 
eebe458Fix names of excluded extended tests for travis (ajtowns) - #11789 
60d739e[travis-ci] Combine logs on failure (jnewbery) - #11838 
3e50024Add getrawtransaction in_active_chain=False test (MarcoFalke) - #12206 
898f560Sync with validationinterface queue in sync_mempools (MarcoFalke) - #12424 
ff44101Fix rescan test failure due to unset g_address_type, g_change_type (ryanofsky) - #12388 
e2431d1travis: Full clone for git subtree check (MarcoFalke) 
Documentation
- #10680 
6366941Fix inconsistencies and grammar in various files (MeshCollider) - #11011 
7db65c3Add a comment on the use of prevector in script (gmaxwell) - #10878 
c58128fFix Markdown formatting issues in init.md (dongcarl) - #11066 
9e00a62Document the preference of nullptr over NULL or (void*)0 (practicalswift) - #11094 
271e40aHash in ZMQ hash is raw bytes, not hex (runn1ng) - #11026 
ea3ac59Bugfix: Use testnet RequireStandard for -acceptnonstdtxn default (luke-jr) - #11058 
4b65fa5Comments: More comments on functions/globals in standard.h (jimpo) - #11112 
3f726c9[developer-notes] By default, declare single-argument constructors “explicit” (practicalswift) - #11155 
a084767Trivial: Documentation fixes for CVectorWriter ctors (danra) - #11136 
108222bDocs: Add python3 to list of dependencies on some platforms (danra) - #11216 
81f8c03Update hmac_sha256.h (utsavgupta) - #11236 
ba05971Add note on translations to CONTRIBUTING.md (MeshCollider) - #11173 
4eb1f39RPC: Fix currency unit string in the help text (AkioNak) - #11135 
21e2f2fUpdate developer notes with RPC response guidelines (promag) - #11219 
bcc8a62explain how to recompile a modified unit test (Sjors) - #10779 
f656147Create dependencies.md (flack) - #10682 
2a56bafMove the AreInputsStandard documentation next to its implementation (esneider) - #11276 
ee50c9eUpdate CONTRIBUTING.md to reduce unnecessary review workload (jonasschnelli) - #11264 
b148803Fix broken Markdown table in dependencies.md (practicalswift) - #10691 
ce82985Properly comment about shutdown process in init.cpp file (wraith7) - #11330 
ae233c4Fix comments for DEFAULT_WHITELIST[FORCE]RELAY (danra) - #11340 
d6d2c85Fix validation comments (danra) - #11305 
2847480Update release notes and manpages for 0.16 (MarcoFalke) - #11132 
551d7bfDocument assumptions that are being made to avoid NULL pointer dereferences (practicalswift) - #11390 
12ed800Document scripted-diff (jnewbery) - #11392 
a3b4c59Fix stale link in gitian-building.md (shooterman) - #11401 
4202273Move gitian building to external repo (MarcoFalke) - #11414 
bbc901dRemove partial gitian build instructions from descriptors dir (fanquake) - #11571 
c95832dFixed a couple small grammatical errors (BitsInMyBlood) - #11624 
f9b74efChange formatting for sequence of steps (vivganes) - #11597 
6f01dcfFix error messages in CFeeBumper (kallewoof) - #11438 
7fbf3c6Updated Windows build doc for WSL/Xenial workaround (sipsorcery) - #11663 
41aa9c4Add getreceivedbyaddress release notes (MarcoFalke) - #11533 
cbb54e7Update WSL installation notes for Fall Creators update (Thoragh) - #11680 
4db82b7Add instructions for lcov report generation (jamesob) - #11686 
54aedc0Make ISSUE_TEMPLATE a bit shorter, mention hardware tests (TheBlueMatt) - #11704 
ea68190Windows build doc update (sipsorcery) - #11706 
5197100Make default issue text all comments to make issues more readable (TheBlueMatt) - #11140 
1429132Improve #endif comments (danra) - #11729 
7a43fbblinks to code style guides (Sjors) - #11793 
8879d50Bump OS X version to 10.13 (Varunram) - #11783 
16fff80Fix shutdown in case of errors during initialization (laanwj) - #11804 
00d25e9Fixed outdated link with archive.is (TimothyShimmin) - #11960 
4307062Fix link to installation script (laudaa) - #12027 
63a4dc1Remove boost –c++ flag from osx build instructions (fernandezpablo85) - #12062 
5961b23Increment MIT Licence copyright header year on files modified in 2017 (akx20000a) - #12063 
36a5a44Update license year range to 2018 (akx20000a) - #12093 
5691028Fix incorrect Markdown link (practicalswift) - #12143 
b0d626dFix link for BIP159 pull request (azuchi) - #12112 
3c62868Remove the ending slashes from RPC URI format (jackycjh) - #12166 
e839d65Clarify -walletdir usage (jnewbery) - #12241 
b030133Fix incorrect link in /test/ README.md (fanquake) - #12187 
b5e4b9bUpdating benchmarkmarking.md with an updated sample output (jeffrade) - #12294 
7cf1aeaCreate NetBSD build instructions and fix compilation (fanquake) - #12251 
cc5870ainitwallet: Do not translate highly technical addresstype help (MarcoFalke) - #11984 
efae366Update OpenBSD build instructions for 6.2 (cont’d) (laanwj) - #12293 
9d9c418Mention that HD is enabled if hdmasterkeyid is present in getwalletinfo RPC help (fanquake) - #12077 
c04cb48Correctsendmanycurl example (251Labs) - #10677 
b3ecb7bDocument that addmultisigaddress is intended for non-watchonly addresses (instagibbs) - #12177 
cad504bFix address_type help text of getnewaddress and getrawchangeaddress (mruddy) 
Refactoring
- #9964 
b6a4891Add const to methods that do not modify the object for which it is called (practicalswift) - #10965 
655970dReplace deprecated throw() with noexcept specifier (C++11) (practicalswift) - #10645 
c484ec6Use nullptr (C++11) instead of zero (0) as the null pointer constant (practicalswift) - #10901 
22e301aFix constness of ArgsManager methods (promag) - #10969 
4afb5aaDeclare single-argument (non-converting) constructors “explicit” (practicalswift) - #11071 
dbf6bd6Use static_assert(…, …) (C++11) instead of assert(…) where appropriate (practicalswift) - #10809 
c559884optim: mark a few classes final (theuni) - #10843 
2ab7c63Add attribute [[noreturn]] (C++11) to functions that will not return (practicalswift) - #11151 
7fd49d0Fix header guards using reserved identifiers (danra) - #11138 
2982511Compat: Simplify bswap_16 implementation (danra) - #11161 
745bbdcRemove redundant explicitly defined copy ctors (danra) - #11144 
cee4fe1Move local include to before system includes (danra) - #10781 
60dd9ccPython cleanups (practicalswift) - #10701 
50fae68Remove the virtual specifier for functions with the override specifier (practicalswift) - #11164 
38a54a5Fix boost headers included as user instead of system headers (danra) - #11143 
3aa60b7Fix include path for bitcoin-config.h (danra) - #8330 
59e1789Structure Packing Optimizations in C{,Mutable}Transaction (JeremyRubin) - #10845 
39ae413Remove unreachable code (practicalswift) - #11238 
6acdb1fAdd assertions before potential null deferences (MeshCollider) - #11259 
089b742Remove duplicate destination decoding (promag) - #11232 
2f0d3e6Ensure that data types are consistent (jjz) - #10793 
efb4383Changing &var[0] to var.data() (MeshCollider) - #11196 
e278f86Switch memory_cleanse implementation to BoringSSL’s to ensure memory clearing even with -lto (maaku) - #10888 
9821274range-based loops and const qualifications in net.cpp (benma) - #11351 
6c4fecfRefactor: Modernize disallowed copy constructors/assignment (danra) - #11385 
94c9015Remove some unused functions and methods (sipa) - #11301 
8776787add m_added_nodes to connman options (benma) - #11432 
058c0f9Remove unused fTry from push_lock (promag) - #11107 
e93fff1Fix races in AppInitMain and others with lock and atomic bools (MeshCollider) - #9572 
17f2aceSkip witness sighash cache for non-segwit transactions (jl2012) - #10961 
da0478eImprove readability of DecodeBase58Check(…) (practicalswift) - #11133 
a865b38Document assumptions that are being made to avoid division by zero (practicalswift) - #11073 
3bb77ebRemove dead store in ecdsa_signature_parse_der_lax (BitonicEelis) - #10898 
470c730Fix invalid checks (NULL checks after dereference, redundant checks, etc.) (practicalswift) - #11495 
50d72b3[trivial] Make namespace explicit for is_regular_file (jnewbery) - #11511 
db2f83e[Init] Remove redundant exit(EXIT_FAILURE) instances and replace with return false (donaloconnor) - #10866 
ef8a634Fix -Wthread-safety-analysis warnings. Compile with -Wthread-safety-analysis if available (practicalswift) - #11221 
0dec4ccRefactor: simpler read (gnuser) - #10696 
ef3758dRemove redundant nullptr checks before deallocation (practicalswift) - #11043 
5e9be16Use std::unique_ptr (C++11) where possible (practicalswift) - #11353 
05a7619Small refactor of CCoinsViewCache::BatchWrite() (danra) - #10749 
2adbddbUse compile-time constants instead of unnamed enumerations (remove “enum hack”) (practicalswift) - #11603 
a933cb1Move RPC registration out of AppInitParameterInteraction (ryanofsky) - #11722 
26efc22Switched sync.{cpp,h} to std threading primitives (tjps) - #10493 
fbce66aUse range-based for loops (C++11) when looping over map elements (practicalswift) - #11337 
0d7e0a3Fix code constness in CBlockIndex::GetAncestor() overloads (danra) - #11516 
0e722e8crypto: Add test cases covering the relevant HMAC-SHA{256,512} key length boundaries (practicalswift) - #10574 
5d132e8Remove includes in .cpp files for things the corresponding .h file already included (practicalswift) - #11884 
66479c0Remove unused include in hash.cpp (kallewoof) - #10839 
c66adb2Don’t use pass by reference to const for cheaply-copied types (bool, char, etc.) (practicalswift) - #10657 
79399c8Utils: Improvements to ECDSA key-handling code (str4d) - #12250 
e37ca2bMake CKey::Load references const (ryanofsky) - #12108 
9220426Remove unused fQuit var from checkqueue.h (donaloconnor) - #12159 
f3c7062Use the character based overload for std::string::find (kekimusmaximus) - #12266 
3448907Move scheduler/threadGroup into common-init instead of per-app (TheBlueMatt) 
Miscellaneous
- #11246 
777519bgithub-merge: Coalesce git fetches (laanwj) - #10871 
c9a4aa8Handle getinfo in bitcoin-cli w/ -getinfo (revival of #8843) (achow101) - #11419 
093074bUtils: Fix launchctl not being able to stop bitcoind (OmeGak) - #11394 
6e4e98ePerform a weaker subtree check in Travis (sipa) - #11702 
4122112[build] Add a script for installing db4 (jamesob) - #11794 
dd49862Prefix leveldb debug logging (laanwj) - #11781 
24df9afAdd-debuglogfileoption (laanwj) - #10773 
c17f11fShell script cleanups (practicalswift) - #11829 
7630a1fTest datadir specified in conf file exists (MeshCollider) - #11836 
d44535dRename rpcuser.py to rpcauth.py (hkjn) - #11831 
d48ab83Always return true if AppInitMain got to the end (TheBlueMatt) - #11943 
1808660contrib: fix typo in install_db4.sh help message (laanwj) - #12075 
c991b30[scripts] Add missing univalue file to copyright_header.py (fanquake) - #12197 
000ac4fLog debug build status and warn when running benchmarks (laanwj) - #10672 
6ab0e4cAvoid division by zero in the case of a corrupt estimates file (practicalswift) - #11273 
cdd6bbfIgnore old format estimation file (Xekyo) - #11951 
1fb34e0Remove dead feeest-file read code for old versions (TheBlueMatt) - #11421 
9ccafb1Merge current secp256k1 subtree (MarcoFalke) - #11573 
2631d55[Util] Update tinyformat.h (fanquake) - #10529 
331352fImprove bitcoind systemd service file (Flowdalic) - #11620 
70fec9e[build] .gitignore: add background.tiff (Sjors) - #11558 
68e021eMinimal code changes to allow msvc compilation (sipsorcery) - #11284 
10bee0dFix invalid memory access in CScript::operator+= (guidovranken, ajtowns) - #10939 
a1f7f18[init] Check non-emptiness of -blocknotify command prior to executing (practicalswift) - #11467 
937613dFix typos. Use nullptr instead of NULL (practicalswift) - #11834 
5bea05b[verify-commits] Fix gpg.sh’s echoing for commits with ‘\n’ (TheBlueMatt) - #11830 
a13e443rpcuser.py: Use ‘python’ not ‘python2’ (hkjn) - #12194 
7abb0f0Add change type option to fundrawtransaction (promag) - #12269 
2ae7cf8Update defaultAssumeValid to block 506067 (gmaxwell) - #11952 
9ab9963univalue: Bump subtree (MarcoFalke) - #12367 
09fc859Fix two fast-shutdown bugs (TheBlueMatt) - #12422 
4d54e7autil: Make LockDirectory thread-safe, consistent, and fix OpenBSD 6.2 build (laanwj) 
Credits
Thanks to everyone who directly contributed to this release:
- 251
 - Aaron Clauson
 - Aaron Golliver
 - aaron-hanson
 - Adam Langley
 - Akio Nakamura
 - Akira Takizawa
 - Alejandro Avilés
 - Alex Morcos
 - Alin Rus
 - Anditto Heristyo
 - Andras Elso
 - Andreas Schildbach
 - Andrew Chow
 - Anthony Towns
 - azuchi
 - Carl Dong
 - Chris Moore
 - Chris Stewart
 - Christian Gentry
 - Cory Fields
 - Cristian Mircea Messel
 - CryptAxe
 - Dan Raviv
 - Daniel Edgecumbe
 - danra
 - david60
 - Donal O’Connor
 - dongsamb
 - Dusty Williams
 - Eelis
 - esneider
 - Evan Klitzke
 - fanquake
 - Ferdinando M. Ametrano
 - fivepiece
 - flack
 - Florian Schmaus
 - gnuser
 - Gregory Maxwell
 - Gregory Sanders
 - Henrik Jonsson
 - Jack Grigg
 - Jacky C
 - James Evans
 - James O’Beirne
 - Jan Sarenik
 - Jeff Rade
 - Jeremiah Buddenhagen
 - Jeremy Rubin
 - Jim Posen
 - jjz
 - Joe Harvell
 - Johannes Kanig
 - John Newbery
 - Johnson Lau
 - Jonas Nick
 - Jonas Schnelli
 - João Barbosa
 - Jorge Timón
 - Karel Bílek
 - Karl-Johan Alm
 - klemens
 - Kyuntae Ethan Kim
 - laudaa
 - Lawrence Nahum
 - Lucas Betschart
 - Luke Dashjr
 - Luke Mlsna
 - MarcoFalke
 - Mark Friedenbach
 - Marko Bencun
 - Martin Ankerl
 - Matt Corallo
 - mruddy
 - Murch
 - NicolasDorier
 - Pablo Fernandez
 - Paul Berg
 - Pedro Branco
 - Pierre Rochard
 - Pieter Wuille
 - practicalswift
 - Randolf Richardson
 - Russell Yanofsky
 - Samuel Dobson
 - Sean Erle Johnson
 - Shooter
 - Sjors Provoost
 - Suhas Daftuar
 - Thomas Snider
 - Thoragh
 - Tim Shimmin
 - Tomas van der Wansem
 - Utsav Gupta
 - Varunram Ganesh
 - Vivek Ganesan
 - Werner Lemberg
 - William Casarin
 - Willy Ko
 - Wladimir J. van der Laan
 
As well as everyone that helped translating on Transifex.
