Bitcoin Core version 0.11.0 is now available from:
https://bitcoin.org/bin/bitcoin-core-0.11.0/
This is a new major version release, bringing both new features and bug fixes.
Please report bugs using the issue tracker at github:
https://github.com/bitcoin/bitcoin/issues
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).
Because release 0.10.0 and later makes use of headers-first synchronization and parallel block download (see further), the block files and databases are not backwards-compatible with pre-0.10 versions of Bitcoin Core or other software:
Blocks will be stored on disk out of order (in the order they are received, really), which makes it incompatible with some tools or other programs. Reindexing using earlier versions will also not work anymore as a result of this.
The block index database will now hold headers for which no block is stored on disk, which earlier versions won’t support.
If you want to be able to downgrade smoothly, make a backup of your entire data directory. Without this your node will need start syncing (or importing from bootstrap.dat) anew afterwards. It is possible that the data from a completely synchronised 0.10 node may be usable in older versions as-is, but this is not supported and may break as soon as the older version attempts to reindex.
This does not affect wallet forward or backward compatibility. There are no known problems when downgrading from 0.11.x to 0.10.x.
At the time of this release, the P2P network is being flooded with low-fee transactions. This causes a ballooning of the mempool size.
If this growth of the mempool causes problematic memory use on your node, it is
possible to change a few configuration options to work around this. The growth
of the mempool can be monitored with the RPC command getmempoolinfo
.
One is to increase the minimum transaction relay fee minrelaytxfee
, which
defaults to 0.00001. This will cause transactions with fewer BTC/kB fee to be
rejected, and thus fewer transactions entering the mempool.
The other is to restrict the relaying of free transactions with
limitfreerelay
. This option sets the number of kB/minute at which
free transactions (with enough priority) will be accepted. It defaults to 15.
Reducing this number reduces the speed at which the mempool can grow due
to free transactions.
For example, add the following to bitcoin.conf
:
minrelaytxfee=0.00005
limitfreerelay=5
More robust solutions are being worked on for a follow-up release.
This release supports running a fully validating node without maintaining a copy of the raw block and undo data on disk. To recap, there are four types of data related to the blockchain in the bitcoin system: the raw blocks as received over the network (blk???.dat), the undo data (rev???.dat), the block index and the UTXO set (both LevelDB databases). The databases are built from the raw data.
Block pruning allows Bitcoin Core to delete the raw block and undo data once it’s been validated and used to build the databases. At that point, the raw data is used only to relay blocks to other nodes, to handle reorganizations, to look up old transactions (if -txindex is enabled or via the RPC/REST interfaces), or for rescanning the wallet. The block index continues to hold the metadata about all blocks in the blockchain.
The user specifies how much space to allot for block & undo files. The minimum allowed is 550MB. Note that this is in addition to whatever is required for the block index and UTXO databases. The minimum was chosen so that Bitcoin Core will be able to maintain at least 288 blocks on disk (two days worth of blocks at 10 minutes per block). In rare instances it is possible that the amount of space used will exceed the pruning target in order to keep the required last 288 blocks on disk.
Block pruning works during initial sync in the same way as during steady state, by deleting block files “as you go” whenever disk space is allocated. Thus, if the user specifies 550MB, once that level is reached the program will begin deleting the oldest block and undo files, while continuing to download the blockchain.
For now, block pruning disables block relay. In the future, nodes with block pruning will at a minimum relay “new” blocks, meaning blocks that extend their active chain.
Block pruning is currently incompatible with running a wallet due to the fact that block data is used for rescanning the wallet and importing keys or addresses (which require a rescan.) However, running the wallet with block pruning will be supported in the near future, subject to those limitations.
Block pruning is also incompatible with -txindex and will automatically disable it.
Once you have pruned blocks, going back to unpruned state requires re-downloading the entire blockchain. To do this, re-start the node with -reindex. Note also that any problem that would cause a user to reindex (e.g., disk corruption) will cause a pruned node to redownload the entire blockchain. Finally, note that when a pruned node reindexes, it will delete any blk???.dat and rev???.dat files in the data directory prior to restarting the download.
To enable block pruning on the command line:
-prune=N
: where N is the number of MB to allot for raw block & undo data.Modified RPC calls:
getblockchaininfo
now includes whether we are in pruned mode or not.getblock
will check if the block’s data has been pruned and if so, return an
error.getrawtransaction
will no longer be able to locate a transaction that has a
UTXO but where its block file has been pruned.Pruning is disabled by default.
Experimental support for big-endian CPU architectures was added in this release. All little-endian specific code was replaced with endian-neutral constructs. This has been tested on at least MIPS and PPC hosts. The build system will automatically detect the endianness of the target.
There have been many changes in this release to reduce the default memory usage of a node, among which:
-dbcache
precise where this grossly underestimated memory usage beforeThis release improves the algorithm used for fee estimation. Previously, -1
was returned when there was insufficient data to give an estimate. Now, -1
will also be returned when there is no fee or priority high enough for the
desired confirmation target. In those cases, it can help to ask for an estimate
for a higher target number of blocks. It is not uncommon for there to be no
fee or priority high enough to be reliably (85%) included in the next block and
for this reason, the default for -txconfirmtarget=n
has changed from 1 to 2.
This release adds an option -walletbroadcast=0
to prevent automatic
transaction broadcast and rebroadcast (#5951). This option allows separating
transaction submission from the node functionality.
Making use of this, third-party scripts can be written to take care of transaction (re)broadcast:
gettransaction
(NOT
getrawtransaction
). The hex
field of the result will contain the raw
hexadecimal representation of the transactionOne such application is selective Tor usage, where the node runs on the normal internet but transactions are broadcasted over Tor.
For an example script see bitcoin-submittx.
This release adds functionality to create a new circuit for every peer
connection, when the software is used with Tor. The new option,
-proxyrandomize
, is on by default.
When enabled, every outgoing connection will (potentially) go through a different exit node. That significantly reduces the chance to get unlucky and pick a single exit node that is either malicious, or widely banned from the P2P network. This improves connection reliability as well as privacy, especially for the initial connections.
Important note: If a non-Tor SOCKS5 proxy is configured that supports
authentication, but doesn’t require it, this change may cause that proxy to reject
connections. A user and password is sent where they weren’t before. This setup
is exceedingly rare, but in this case -proxyrandomize=0
can be passed to
disable the behavior.
Detailed release notes follow. This overview includes changes that affect behavior, not code moves, refactors and string updates. For convenience in locating the code changes and accompanying discussion, both the pull request and git merge commit are mentioned.
5f7279a
signrawtransaction: validate private key103f66b
Add /rest/headers/95ecc0a
Add scriptPubKey field to validateaddress RPC callc986972
Add time offset into getpeerinfo output84eba47
Add unconfirmed and immature balances to getwalletinfo40e96a3
Get rid of the internal miner’s hashmeter87ecfb0
Push down RPC locks1c4e3f9
fix getblocktemplate lock issue5d901d8
Fix getblocktemplate_proposals test by mining one blockd48ce48
Add /rest/chaininfos4c4f1b4
Push down RPC reqWallet flag585b5db
Show zero value txouts in listunspent6364408
Add RPC call gettxoutproof
to generate and verify merkle blocks16341cc
Report missing inputs in sendrawtransaction40f5e8d
show script verification errors in signrawtransaction result1fd2d39
getutxos REST command (based on Bip64)42746b0
[REST] remove json input for getutxos, limit to query max. 15 outpoints5901596
json: fail read_string if string contains trailing garbagea353ad4
Add option -allowselfsignedrootcertificate
to allow self signed root certs (for testing payment requests)3e8a1f2
Add a consistency check -checkblockindex
for the block chain data structures7efc9cf
Make it possible to disable wallet transaction broadcast (using -walletbroadcast=0
)b6ea3bc
privacy: Stream isolation for Tor (on by default, use -proxyrandomize=0
to disable)c271304
Add autoprune functionality (-prune=<size>
)0bcf04f
Parameter interaction: disable upnp if -proxy set4d9c7fe
Add option -alerts
to opt out of alert systemdcc1304
Do all block index writes in a batch203632d
Check against MANDATORY flags prior to accepting to mempool4406c3e
Reject headers that build on an invalid parent055f3ae
Apply AreSane() checks to the fees from the network40d65eb
Preemptively catch a few potential bugsf55c5e9
Implement test for merkle tree malleability in CPartialMerkleTreea89b837
clarify obscure uses of EvalScript()8e4578a
Reject non-final txs even in testnet/regtest6af674e
Change hardcoded character constants to descriptive named constants for db keysfcf646c
Change the default maximum OP_RETURN size to 80 bytes175d86e
Add more information to errors in ReadBlockFromDiskb36f1ce
Use GetAncestor to compute new targeta0bfc69
Add additional block index consistency checks7e0e7f8
autoprune minor post-merge improvements2cc1372
New fee estimation code6fb90d8
Implement accurate UTXO cache size accounting2a82298
Bug fix for clearing fCheckForPruninge9af4e6
Alert if it is very likely we are getting a bad chainc00ae64
Remove P2SH coinbase flag, no longer interesting37b4e42
Fix removing of orphan transactions6cb70ca
Prune: Support noncontiguous block filesfce474c
Use best header chain timestamps to detect partitioninga587606
Advance pindexLastCommonBlock for blocks in chainActive844ace9
Prevent DOS attacks on in-flight data structures32a8b6a
Sanitize command strings before logging themdd4ffce
Add correct bool combiner for net signals8e4fd0c
Add a NODE_GETUTXO service bit and document NODE_NETWORKb9311fb
Move nLastTry from CAddress to CAddrInfo5048465
Change download logic to allow calling getdata on inbound peers18d2832
replace absolute sleep with conditional wait7bf5d5e
Use equivalent PoW for non-main-chain requestsf026ab6
chainparams: use SeedSpec6’s rather than CAddress’s for fixed seeds31c0bf1
Add jonasschnellis dns seeder9f7809f
Reduce download timeouts as blocks arriveb4bbad1
Ignore getheaders requests when not synced304892f
Be stricter in processing unrequested blocks41bbc85
Hardcoded seeds update June 201548e1765
Implement BIP62 rule 641e6e4c
Implement BIP66c76c9d2
Add mips, mipsel and aarch64 to depends platformscf87536
libbitcoinconsensus: Add pkg-config supported11d53
Fix ‘make distcheck’a99ef7d
Build winshutdownmonitor.cpp on Windows onlye8a6639
Osx toolchain updateab64022
osx: bump build sdk to 10.923ef5b7
depends: latest config.guess and config.sub31dedb4
Fixes when compiling in c++11 modef8e68f7
release: use static libstdc++ and disable reduced exports by default7c3fbc3
Big endian supportc7abfa5
Add script to verify all merge commits are signed7abbb7e
qt: disable qt tests when one of the checks for the gui fails0401aa2
configure: Detect (and reject) LibreSSL95aca44
gitian: Use the new bitcoin-detached-sigs git repo for OSX signaturesef1d506
Fix scheduler build with some boost versions.25c2216
depends: fix Boost 1.55 build on GCC 5b711599
gitian: add a gitian-win-signer descriptor8ea6d37
Fix build on FreeBSDdaf956b
fix crash on shutdown when e.g. changing -txindex and abort actionbdf0d94
Gitian windows signing normalization811c71d
Discourage fee sniping with nLockTimed01bcc4
Enforce minRelayTxFee on wallet created tx and add a maxtxfee option9a5cabf
Add RandAddSeedPerfmon to MakeNewKey8204e19
Do not flush the wallet in AddToWalletIfInvolvingMe(..)93b7544
Clean up wallet encryption codedf5c246
Subtract fee from amount6c97fd1
wallet: fix boost::get usage with boost 1.5823c998d
Sort pending wallet transactions before reaccepting26e08a1
Change default nTxConfirmTarget to 275a4d51
Fix off-by-one error w/ nLockTime in the walletc9fd907
Fix getbalance * 0f3af0c8
New iconsbb3c75b
HiDPI (retina) support for splash screen73cbf0a
The RPC Console should be a QWidget to make window more independent851dfc7
Light blue icon color for regtesta39aa74
New icon for the debug windowe515309
Adopt style colour for button icons70477a0
On close of splashscreen interrupt verifyDB83be8fd
Make the command-line-args dialog betterc5380a9
Elaborate on signverify message dialog warningd1aa3c6
Optimize PNG filese0cd2f5
Use text-color icons for system tray Send/Receive menu entries848f55d
Coin Control: Use U+2248 “ALMOST EQUAL TO” rather than a simple tildeab0d798
Fix icon sizes and column widthc7b22aa
add new osx dmg background picture7823598
Payment request expiration bug fix9c4a5a5
Allow unit changes for read-only BitcoinAmountField0f44672
Add bitcoin logo to about screena956586
Prevent amount overflow problem with payment requests215475a
Don’t save geometry for options and about/help windowd26f0b2
Honor current network when creating autostart linkf238add
Startup script for centos, with documentation5bd3a92
Fix a static qt5 crash when using certain versions of libxcbbb56781
Fix rpc console font size to flexible metricsbc8535b
Payment request / server work - part 2180c164
Remove movable option for toolbar0d862c2
Overviewpage: make sure warning icons gets colored2f2d337
Add ability to run single test manually to RPC tests886eb57
Test unexecuted OP_CODESEPARATOR565b300
Additional rpc tests37b185c
Fix spurious windows test failures after 012598880c2eda47b
Fix smartfees test for change to relay policye3f5727
Fix zapwallettxes test30a5b5f
Prepare paymentservertests for new unit testse3a3cd7
Fix usage of NegateSignatureS in script_testsee9f2bf
Add unit tests for next difficulty calculationsd7989c0
Travis: run unit tests in different orderscdae53e
Reinitialize state in between individual unit tests.164d7b6
tests: add a BasicTestingSetup and apply to all tests446bb70
Regression test for ResendWalletTransactionscf7adad
fix and enable bip32 unit test734f80a
tests: Error when setgenerate is used on regtest948beaf
Correct the PUSHDATA4 minimal encoding test in script_invalid.jsone08886d
Stop nodes after RPC tests, even with –nocleanupdf1609f
Add additional script edge condition testsda38dc6
Python P2P testing9ef00c3
Add multisig rpc testsfec5c0e
Add more script edge condition tests84857e8
Add missing CAutoFile::IsNull() check in mainec20fd7
Replace uint256/uint160 with opaque blobs where possible5f04d1d
OS X 10.10: LSSharedFileListItemResolve() is deprecatedbeff11a
Get rid of DetectShutdownThread9bd8c9b
Add fanquake PGP key47a79bb
No longer check osx compatibility in RenameThread07f4386
openssl: abstract out OPENSSL_cleanse8b298ca
Add list of implemented BIPs46bfbe7
Add bitcoin-cli man page86eb461
keys: remove libsecp256k1 verification until it’s actually supportedd734d87
Help messages correctly formatted (79 chars)7077fe6
BUGFIX: Stack around the variable ‘rv’ was corrupted41259ca
contrib/init/bitcoind.openrc: Compatibility with previous OpenRC init script variables41113e3
Fix locale fallback and guard tests against invalid locale settings7c6bfb1
Add git-subtree-check.sh script1623f6e
FreeBSD, OpenBSD thread renamingb46e7c2
Several changes to mruset3e2559c
Show an init message while activating best chain351f73e
Clean up parsing of bool command line argsb4c219b
Lightweight task scheduler30dc3c1
[OSX] rename Bitcoin-Qt.app to Bitcoin-Core.appb3024f0
contrib/linearize: Support linearization of testnet blocks7708fcd
Update Windows resource files (and add one for bitcoin-tx)e1412d3
Catch errors on datadir lock and pidfile delete182686c
Fix two problems in CSubnet parsingdf992b9
doc: add translation strings policydfdb6dd
build: disable optional use of gmp in internal secp256k1 build94cd705
Remove translation for -help-debug options3902c15
Remove berkeley-db4 workaround in MacOSX build docs3f8fcc9
doc: update mailing list addressThanks to everyone who directly contributed to this release:
And all those who contributed additional code review and/or security research:
As well as everyone that helped translating on Transifex.