Bitcoin Core version 0.15.1 is now available from:
https://bitcoincore.org/bin/bitcoin-core-0.15.1/
or
https://bitcoin.org/bin/bitcoin-core-0.15.1/
This is a new minor version release, including 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/
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 higher, 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.
The file format of fee_estimates.dat
changed in version 0.15.0. Hence, a
downgrade from version 0.15 or upgrade to version 0.15 will cause all fee
estimates to be discarded.
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. Upgrading directly from 0.7.x and earlier without redownloading the blockchain is not supported. However, as usual, old wallet versions are still supported.
The chainstate database for this release is not compatible with previous
releases, so if you run 0.15 and then decide to switch back to any
older version, you will need to run the old release with the -reindex-chainstate
option to rebuild the chainstate data structures in the old format.
If your node has pruning enabled, this will entail re-downloading and processing the entire blockchain.
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.
A number of changes to the way Bitcoin Core deals with peer connections and invalid blocks have been made, as a safety precaution against blockchain forks and misbehaving peers.
Unrequested blocks with less work than the minimum-chain-work are now no longer processed even if they have more work than the tip (a potential issue during IBD where the tip may have low-work). This prevents peers wasting the resources of a node.
Peers which provide a chain with less work than the minimum-chain-work during IBD will now be disconnected.
For a given outbound peer, we now check whether their best known block has at least as much work as our tip. If it doesn’t, and if we still haven’t heard about a block with sufficient work after a 20 minute timeout, then we send a single getheaders message, and wait 2 more minutes. If after two minutes their best known block has insufficient work, we disconnect that peer. We protect 4 of our outbound peers from being disconnected by this logic to prevent excessive network topology changes as a result of this algorithm, while still ensuring that we have a reasonable number of nodes not known to be on bogus chains.
Outbound (non-manual) peers that serve us block headers that are already known to be invalid (other than compact block announcements, because BIP 152 explicitly permits nodes to relay compact blocks before fully validating them) will now be disconnected.
If the chain tip has not been advanced for over 30 minutes, we now assume the tip may be stale and will try to connect to an additional outbound peer. A periodic check ensures that if this extra peer connection is in use, we will disconnect the peer that least recently announced a new block.
The set of all known invalid-themselves blocks (i.e. blocks which we attempted to connect but which were found to be invalid) are now tracked and used to check if new headers build on an invalid chain. This ensures that everything that descends from an invalid block is marked as such.
Though blockmaxweight has been preferred for limiting the size of blocks returned by getblocktemplate since 0.13.0, blockmaxsize remained as an option for those who wished to limit their block size directly. Using this option resulted in a few UI issues as well as non-optimal fee selection and ever-so-slightly worse performance, and has thus now been deprecated. Further, the blockmaxsize option is now used only to calculate an implied blockmaxweight, instead of limiting block size directly. Any miners who wish to limit their blocks by size, instead of by weight, will have to do so manually by removing transactions from their block template directly.
The GUI settings will now be written to guisettings.ini.bak
in the data directory before wiping them when
the -resetguisettings
argument is used. This can be used to retroactively troubleshoot issues due to the
GUI settings.
Previously, it was possible to open the same wallet twice by manually copying the wallet file, causing issues when both were opened simultaneously. It is no longer possible to open copies of the same wallet.
-minimumchainwork
argument addedA hidden debug argument -minimumchainwork
has been added to allow a custom minimum work value to be used
when validating a chain.
The “currentblocksize” value in getmininginfo has been removed.
dumpwallet
no longer allows overwriting files. This is a security measure
as well as prevents dangerous user mistakes.
backupwallet
will now fail when attempting to backup to source file, rather than
destroying the wallet.
listsinceblock
will now throw an error if an unknown blockhash
argument
value is passed, instead of returning a list of all wallet transactions since
the genesis block. The behaviour is unchanged when an empty string is provided.
7871a7d
Fix confusing blockmax{size,weight} options, dont default to throwing away money (TheBlueMatt)2a5d099
gettxout: Slightly improve doc and tests (jtimon)b1a6c94
update cli for estimate*fee argument rename (laanwj)20cdc2b
Fix importmulti bug when importing an already imported key (pedrobranco)a43be5b
Prevent dumpwallet
from overwriting files (laanwj)405e069
Update named args documentation for importprivkey (dusty-wil)b278a43
Write authcookie atomically (laanwj)7d4546f
Make listsinceblock refuse unknown block hash (ryanofsky)8195cb0
Work-around an upstream libevent bug (theuni)27e861a
Improve and document SOCKS code (laanwj)0fe2a9a
When clearing addrman clear mapInfo and mapAddr (instagibbs)a2bd86a
Remove my testnet DNS seed (schildbach)0a5477c
net processing: swap out signals for an interface class (theuni)55b7abf
Check that new headers are not a descendant of an invalid block (more effeciently) (TheBlueMatt)49bf090
Connect to a new outbound peer if our tip is stale (sdaftuar)fc966bb
Disconnect outbound peers on invalid chains (sdaftuar)ec8dedf
Add missing lock in ProcessHeadersMessage(…) (practicalswift)6f27965
Replace relevant services logic with a function suite (TheBlueMatt)bf191a7
Disconnect from outbound peers with bad headers chains (sdaftuar)da4908c
Allow setting nMinimumChainWork on command line (sdaftuar)2df65ee
Don’t process unrequested, low-work blocks (sdaftuar)b6c0209
Fix validationinterface build on super old boost/clang (TheBlueMatt)265bb21
Add share/rpcuser to dist. source code archive (MarcoFalke)19d63e8
Remove custom fee radio group and remove nCustomFeeRadio setting (achow101)7310f1f
Fix display of package name on ‘open config file’ tooltip (esotericnonsense)6642558
Add delay before filtering transactions (lclc)6a62c74
Backup former GUI settings on -resetguisettings
(laanwj)8d13b42
Replace save|restoreWindowGeometry with Qt functions (MeshCollider)2e31b1d
Fixing division by zero in time remaining (MeshCollider)47c02a8
Use IsMine to validate custom change address (MarcoFalke)9e8aae3
Close DB on error (kallewoof)6b4d9f2
Update stored witness in AddToWallet (sdaftuar)2cb720a
Acquire cs_main lock before cs_wallet during wallet initialization (ryanofsky)9c8006d
Avoid opening copied wallet databases simultaneously (ryanofsky)de7053f
Fix leak in CDB constructor (promag)fd79ed6
Ensure backupwallet fails when attempting to backup to source file (tomasvdw)d570aa4
Fix crash on shutdown with invalid wallet (MeshCollider)a825d4a
Fix bip68-sequence rpc test (jl2012)847c75e
Add getmininginfo test (mess110)806c78f
add functional test for mempoolreplacement command line arg (instagibbs)e169349
Restore bitcoin-util-test py2 compatibility (MarcoFalke)2e1ac70
zapwallettxes: Wait up to 3s for mempool reload (MarcoFalke)716066d
test bitcoin-cli (jnewbery)019c492
Allow “make cov” out-of-tree; Fix rpc mapping check (MarcoFalke)51bad91
0.15.1 Backports (MarcoFalke)2f0b30a
Fix error introduced into p2p-segwit.py, and prevent future similar errors (sdaftuar)e4605d9
Tests for zmqpubrawtx and zmqpubrawblock (achow101)eeb24a3
TestNode: Add wait_until_stopped helper method (MarcoFalke)5398f20
Move wait_until to util (MarcoFalke)812c870
Add bitcoin-cli -stdin and -stdinrpcpass functional tests (promag)1d80d1e
fix timeout issues from TestNode (jnewbery)f1ced0d
Make p2p-leaktests.py more robust (jnewbery)f3f7891
Stop test_bitcoin-qt touching ~/.bitcoin (MeshCollider)f0b6795
Remove redundant testutil.cpp|h files (MeshCollider)cef0319
fixups from set_test_params() (jnewbery)f9cf7b5
Check connectivity before sending in assumevalid.py (jnewbery)c276c1e
Increase initial RPC timeout to 60 seconds (laanwj)fc2aa09
Introduce TestNode (jnewbery)d8dd8e7
Fixup dbcrash interaction with add_nodes() (jnewbery)4424176
Improve signmessages functional test (mess110)2c4ff35
Unit tests for script/standard and IsMine functions (jimpo)a36f332
Verify DBWrapper iterators are taking snapshots (TheBlueMatt)bb5e7cb
TestNode tidyups (jnewbery)ca0f3f7
travis: move back to the minimal image (theuni)adbc9d1
Fix race condition failures in replace-by-fee.py, sendheaders.py (sdaftuar)4108879
Make tmpdir option an absolute path, misc cleanup (MarcoFalke)5b728c8
Fix RPC failure testing (again) (jnewbery)b6468d3
Test listwallets RPC (mess110)75997c3
Disallow uncompressed pubkeys in bitcoin-tx [multisig] output adds (TheBlueMatt)dea3b87
[Docs] Update Windows build instructions for using WSL and Ubuntu 17.04 (fanquake)8b61aee
Put back inadvertently removed copyright notices (gmaxwell)cf18f42
[Docs] Update OpenBSD Build Instructions for OpenBSD 6.2 (fanquake)50bd3f6
Avoid returning a BIP9Stats object with uninitialized values (practicalswift)01223a0
[verify-commits] Allow revoked keys to expire (TheBlueMatt)Thanks to everyone who directly contributed to this release:
As well as everyone that helped translating on Transifex.