release-notes-0.11.0.md
1 Bitcoin Core version 0.11.0 is now available from: 2 3 <https://bitcoin.org/bin/bitcoin-core-0.11.0/> 4 5 This is a new major version release, bringing both new features and 6 bug fixes. 7 8 Please report bugs using the issue tracker at github: 9 10 <https://github.com/bitcoin/bitcoin/issues> 11 12 Upgrading and downgrading 13 ========================= 14 15 How to Upgrade 16 -------------- 17 18 If you are running an older version, shut it down. Wait until it has completely 19 shut down (which might take a few minutes for older versions), then run the 20 installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or 21 bitcoind/bitcoin-qt (on Linux). 22 23 Downgrade warning 24 ------------------ 25 26 Because release 0.10.0 and later makes use of headers-first synchronization and 27 parallel block download (see further), the block files and databases are not 28 backwards-compatible with pre-0.10 versions of Bitcoin Core or other software: 29 30 * Blocks will be stored on disk out of order (in the order they are 31 received, really), which makes it incompatible with some tools or 32 other programs. Reindexing using earlier versions will also not work 33 anymore as a result of this. 34 35 * The block index database will now hold headers for which no block is 36 stored on disk, which earlier versions won't support. 37 38 If you want to be able to downgrade smoothly, make a backup of your entire data 39 directory. Without this your node will need start syncing (or importing from 40 bootstrap.dat) anew afterwards. It is possible that the data from a completely 41 synchronised 0.10 node may be usable in older versions as-is, but this is not 42 supported and may break as soon as the older version attempts to reindex. 43 44 This does not affect wallet forward or backward compatibility. There are no 45 known problems when downgrading from 0.11.x to 0.10.x. 46 47 Important information 48 ====================== 49 50 Transaction flooding 51 --------------------- 52 53 At the time of this release, the P2P network is being flooded with low-fee 54 transactions. This causes a ballooning of the mempool size. 55 56 If this growth of the mempool causes problematic memory use on your node, it is 57 possible to change a few configuration options to work around this. The growth 58 of the mempool can be monitored with the RPC command `getmempoolinfo`. 59 60 One is to increase the minimum transaction relay fee `minrelaytxfee`, which 61 defaults to 0.00001. This will cause transactions with fewer BTC/kB fee to be 62 rejected, and thus fewer transactions entering the mempool. 63 64 The other is to restrict the relaying of free transactions with 65 `limitfreerelay`. This option sets the number of kB/minute at which 66 free transactions (with enough priority) will be accepted. It defaults to 15. 67 Reducing this number reduces the speed at which the mempool can grow due 68 to free transactions. 69 70 For example, add the following to `bitcoin.conf`: 71 72 minrelaytxfee=0.00005 73 limitfreerelay=5 74 75 More robust solutions are being worked on for a follow-up release. 76 77 Notable changes 78 =============== 79 80 Block file pruning 81 ---------------------- 82 83 This release supports running a fully validating node without maintaining a copy 84 of the raw block and undo data on disk. To recap, there are four types of data 85 related to the blockchain in the bitcoin system: the raw blocks as received over 86 the network (blk???.dat), the undo data (rev???.dat), the block index and the 87 UTXO set (both LevelDB databases). The databases are built from the raw data. 88 89 Block pruning allows Bitcoin Core to delete the raw block and undo data once 90 it's been validated and used to build the databases. At that point, the raw data 91 is used only to relay blocks to other nodes, to handle reorganizations, to look 92 up old transactions (if -txindex is enabled or via the RPC/REST interfaces), or 93 for rescanning the wallet. The block index continues to hold the metadata about 94 all blocks in the blockchain. 95 96 The user specifies how much space to allot for block & undo files. The minimum 97 allowed is 550MB. Note that this is in addition to whatever is required for the 98 block index and UTXO databases. The minimum was chosen so that Bitcoin Core will 99 be able to maintain at least 288 blocks on disk (two days worth of blocks at 10 100 minutes per block). In rare instances it is possible that the amount of space 101 used will exceed the pruning target in order to keep the required last 288 102 blocks on disk. 103 104 Block pruning works during initial sync in the same way as during steady state, 105 by deleting block files "as you go" whenever disk space is allocated. Thus, if 106 the user specifies 550MB, once that level is reached the program will begin 107 deleting the oldest block and undo files, while continuing to download the 108 blockchain. 109 110 For now, block pruning disables block relay. In the future, nodes with block 111 pruning will at a minimum relay "new" blocks, meaning blocks that extend their 112 active chain. 113 114 Block pruning is currently incompatible with running a wallet due to the fact 115 that block data is used for rescanning the wallet and importing keys or 116 addresses (which require a rescan.) However, running the wallet with block 117 pruning will be supported in the near future, subject to those limitations. 118 119 Block pruning is also incompatible with -txindex and will automatically disable 120 it. 121 122 Once you have pruned blocks, going back to unpruned state requires 123 re-downloading the entire blockchain. To do this, re-start the node with 124 -reindex. Note also that any problem that would cause a user to reindex (e.g., 125 disk corruption) will cause a pruned node to redownload the entire blockchain. 126 Finally, note that when a pruned node reindexes, it will delete any blk???.dat 127 and rev???.dat files in the data directory prior to restarting the download. 128 129 To enable block pruning on the command line: 130 131 - `-prune=N`: where N is the number of MB to allot for raw block & undo data. 132 133 Modified RPC calls: 134 135 - `getblockchaininfo` now includes whether we are in pruned mode or not. 136 - `getblock` will check if the block's data has been pruned and if so, return an 137 error. 138 - `getrawtransaction` will no longer be able to locate a transaction that has a 139 UTXO but where its block file has been pruned. 140 141 Pruning is disabled by default. 142 143 Big endian support 144 -------------------- 145 146 Experimental support for big-endian CPU architectures was added in this 147 release. All little-endian specific code was replaced with endian-neutral 148 constructs. This has been tested on at least MIPS and PPC hosts. The build 149 system will automatically detect the endianness of the target. 150 151 Memory usage optimization 152 -------------------------- 153 154 There have been many changes in this release to reduce the default memory usage 155 of a node, among which: 156 157 - Accurate UTXO cache size accounting (#6102); this makes the option `-dbcache` 158 precise where this grossly underestimated memory usage before 159 - Reduce size of per-peer data structure (#6064 and others); this increases the 160 number of connections that can be supported with the same amount of memory 161 - Reduce the number of threads (#5964, #5679); lowers the amount of (esp. 162 virtual) memory needed 163 164 Fee estimation changes 165 ---------------------- 166 167 This release improves the algorithm used for fee estimation. Previously, -1 168 was returned when there was insufficient data to give an estimate. Now, -1 169 will also be returned when there is no fee or priority high enough for the 170 desired confirmation target. In those cases, it can help to ask for an estimate 171 for a higher target number of blocks. It is not uncommon for there to be no 172 fee or priority high enough to be reliably (85%) included in the next block and 173 for this reason, the default for `-txconfirmtarget=n` has changed from 1 to 2. 174 175 Privacy: Disable wallet transaction broadcast 176 ---------------------------------------------- 177 178 This release adds an option `-walletbroadcast=0` to prevent automatic 179 transaction broadcast and rebroadcast (#5951). This option allows separating 180 transaction submission from the node functionality. 181 182 Making use of this, third-party scripts can be written to take care of 183 transaction (re)broadcast: 184 185 - Send the transaction as normal, either through RPC or the GUI 186 - Retrieve the transaction data through RPC using `gettransaction` (NOT 187 `getrawtransaction`). The `hex` field of the result will contain the raw 188 hexadecimal representation of the transaction 189 - The transaction can then be broadcasted through arbitrary mechanisms 190 supported by the script 191 192 One such application is selective Tor usage, where the node runs on the normal 193 internet but transactions are broadcasted over Tor. 194 195 For an example script see [bitcoin-submittx](https://github.com/laanwj/bitcoin-submittx). 196 197 Privacy: Stream isolation for Tor 198 ---------------------------------- 199 200 This release adds functionality to create a new circuit for every peer 201 connection, when the software is used with Tor. The new option, 202 `-proxyrandomize`, is on by default. 203 204 When enabled, every outgoing connection will (potentially) go through a 205 different exit node. That significantly reduces the chance to get unlucky and 206 pick a single exit node that is either malicious, or widely banned from the P2P 207 network. This improves connection reliability as well as privacy, especially 208 for the initial connections. 209 210 **Important note:** If a non-Tor SOCKS5 proxy is configured that supports 211 authentication, but doesn't require it, this change may cause that proxy to reject 212 connections. A user and password is sent where they weren't before. This setup 213 is exceedingly rare, but in this case `-proxyrandomize=0` can be passed to 214 disable the behavior. 215 216 0.11.0 Change log 217 ================= 218 219 Detailed release notes follow. This overview includes changes that affect 220 behavior, not code moves, refactors and string updates. For convenience in locating 221 the code changes and accompanying discussion, both the pull request and 222 git merge commit are mentioned. 223 224 ### RPC and REST 225 - #5461 `5f7279a` signrawtransaction: validate private key 226 - #5444 `103f66b` Add /rest/headers/<count>/<hash>.<ext> 227 - #4964 `95ecc0a` Add scriptPubKey field to validateaddress RPC call 228 - #5476 `c986972` Add time offset into getpeerinfo output 229 - #5540 `84eba47` Add unconfirmed and immature balances to getwalletinfo 230 - #5599 `40e96a3` Get rid of the internal miner's hashmeter 231 - #5711 `87ecfb0` Push down RPC locks 232 - #5754 `1c4e3f9` fix getblocktemplate lock issue 233 - #5756 `5d901d8` Fix getblocktemplate_proposals test by mining one block 234 - #5548 `d48ce48` Add /rest/chaininfos 235 - #5992 `4c4f1b4` Push down RPC reqWallet flag 236 - #6036 `585b5db` Show zero value txouts in listunspent 237 - #5199 `6364408` Add RPC call `gettxoutproof` to generate and verify merkle blocks 238 - #5418 `16341cc` Report missing inputs in sendrawtransaction 239 - #5937 `40f5e8d` show script verification errors in signrawtransaction result 240 - #5420 `1fd2d39` getutxos REST command (based on Bip64) 241 - #6193 `42746b0` [REST] remove json input for getutxos, limit to query max. 15 outpoints 242 - #6226 `5901596` json: fail read_string if string contains trailing garbage 243 244 ### Configuration and command-line options 245 - #5636 `a353ad4` Add option `-allowselfsignedrootcertificate` to allow self signed root certs (for testing payment requests) 246 - #5900 `3e8a1f2` Add a consistency check `-checkblockindex` for the block chain data structures 247 - #5951 `7efc9cf` Make it possible to disable wallet transaction broadcast (using `-walletbroadcast=0`) 248 - #5911 `b6ea3bc` privacy: Stream isolation for Tor (on by default, use `-proxyrandomize=0` to disable) 249 - #5863 `c271304` Add autoprune functionality (`-prune=<size>`) 250 - #6153 `0bcf04f` Parameter interaction: disable upnp if -proxy set 251 - #6274 `4d9c7fe` Add option `-alerts` to opt out of alert system 252 253 ### Block and transaction handling 254 - #5367 `dcc1304` Do all block index writes in a batch 255 - #5253 `203632d` Check against MANDATORY flags prior to accepting to mempool 256 - #5459 `4406c3e` Reject headers that build on an invalid parent 257 - #5481 `055f3ae` Apply AreSane() checks to the fees from the network 258 - #5580 `40d65eb` Preemptively catch a few potential bugs 259 - #5349 `f55c5e9` Implement test for merkle tree malleability in CPartialMerkleTree 260 - #5564 `a89b837` clarify obscure uses of EvalScript() 261 - #5521 `8e4578a` Reject non-final txs even in testnet/regtest 262 - #5707 `6af674e` Change hardcoded character constants to descriptive named constants for db keys 263 - #5286 `fcf646c` Change the default maximum OP_RETURN size to 80 bytes 264 - #5710 `175d86e` Add more information to errors in ReadBlockFromDisk 265 - #5948 `b36f1ce` Use GetAncestor to compute new target 266 - #5959 `a0bfc69` Add additional block index consistency checks 267 - #6058 `7e0e7f8` autoprune minor post-merge improvements 268 - #5159 `2cc1372` New fee estimation code 269 - #6102 `6fb90d8` Implement accurate UTXO cache size accounting 270 - #6129 `2a82298` Bug fix for clearing fCheckForPruning 271 - #5947 `e9af4e6` Alert if it is very likely we are getting a bad chain 272 - #6203 `c00ae64` Remove P2SH coinbase flag, no longer interesting 273 - #5985 `37b4e42` Fix removing of orphan transactions 274 - #6221 `6cb70ca` Prune: Support noncontiguous block files 275 - #6256 `fce474c` Use best header chain timestamps to detect partitioning 276 - #6233 `a587606` Advance pindexLastCommonBlock for blocks in chainActive 277 278 ### P2P protocol and network code 279 - #5507 `844ace9` Prevent DOS attacks on in-flight data structures 280 - #5770 `32a8b6a` Sanitize command strings before logging them 281 - #5859 `dd4ffce` Add correct bool combiner for net signals 282 - #5876 `8e4fd0c` Add a NODE_GETUTXO service bit and document NODE_NETWORK 283 - #6028 `b9311fb` Move nLastTry from CAddress to CAddrInfo 284 - #5662 `5048465` Change download logic to allow calling getdata on inbound peers 285 - #5971 `18d2832` replace absolute sleep with conditional wait 286 - #5918 `7bf5d5e` Use equivalent PoW for non-main-chain requests 287 - #6059 `f026ab6` chainparams: use SeedSpec6's rather than CAddress's for fixed seeds 288 - #6080 `31c0bf1` Add jonasschnellis dns seeder 289 - #5976 `9f7809f` Reduce download timeouts as blocks arrive 290 - #6172 `b4bbad1` Ignore getheaders requests when not synced 291 - #5875 `304892f` Be stricter in processing unrequested blocks 292 - #6333 `41bbc85` Hardcoded seeds update June 2015 293 294 ### Validation 295 - #5143 `48e1765` Implement BIP62 rule 6 296 - #5713 `41e6e4c` Implement BIP66 297 298 ### Build system 299 - #5501 `c76c9d2` Add mips, mipsel and aarch64 to depends platforms 300 - #5334 `cf87536` libbitcoinconsensus: Add pkg-config support 301 - #5514 `ed11d53` Fix 'make distcheck' 302 - #5505 `a99ef7d` Build winshutdownmonitor.cpp on Windows only 303 - #5582 `e8a6639` Osx toolchain update 304 - #5684 `ab64022` osx: bump build sdk to 10.9 305 - #5695 `23ef5b7` depends: latest config.guess and config.sub 306 - #5509 `31dedb4` Fixes when compiling in c++11 mode 307 - #5819 `f8e68f7` release: use static libstdc++ and disable reduced exports by default 308 - #5510 `7c3fbc3` Big endian support 309 - #5149 `c7abfa5` Add script to verify all merge commits are signed 310 - #6082 `7abbb7e` qt: disable qt tests when one of the checks for the gui fails 311 - #6244 `0401aa2` configure: Detect (and reject) LibreSSL 312 - #6269 `95aca44` gitian: Use the new bitcoin-detached-sigs git repo for OSX signatures 313 - #6285 `ef1d506` Fix scheduler build with some boost versions. 314 - #6280 `25c2216` depends: fix Boost 1.55 build on GCC 5 315 - #6303 `b711599` gitian: add a gitian-win-signer descriptor 316 - #6246 `8ea6d37` Fix build on FreeBSD 317 - #6282 `daf956b` fix crash on shutdown when e.g. changing -txindex and abort action 318 - #6354 `bdf0d94` Gitian windows signing normalization 319 320 ### Wallet 321 - #2340 `811c71d` Discourage fee sniping with nLockTime 322 - #5485 `d01bcc4` Enforce minRelayTxFee on wallet created tx and add a maxtxfee option 323 - #5508 `9a5cabf` Add RandAddSeedPerfmon to MakeNewKey 324 - #4805 `8204e19` Do not flush the wallet in AddToWalletIfInvolvingMe(..) 325 - #5319 `93b7544` Clean up wallet encryption code 326 - #5831 `df5c246` Subtract fee from amount 327 - #6076 `6c97fd1` wallet: fix boost::get usage with boost 1.58 328 - #5511 `23c998d` Sort pending wallet transactions before reaccepting 329 - #6126 `26e08a1` Change default nTxConfirmTarget to 2 330 - #6183 `75a4d51` Fix off-by-one error w/ nLockTime in the wallet 331 - #6276 `c9fd907` Fix getbalance * 0 332 333 ### GUI 334 - #5219 `f3af0c8` New icons 335 - #5228 `bb3c75b` HiDPI (retina) support for splash screen 336 - #5258 `73cbf0a` The RPC Console should be a QWidget to make window more independent 337 - #5488 `851dfc7` Light blue icon color for regtest 338 - #5547 `a39aa74` New icon for the debug window 339 - #5493 `e515309` Adopt style colour for button icons 340 - #5557 `70477a0` On close of splashscreen interrupt verifyDB 341 - #5559 `83be8fd` Make the command-line-args dialog better 342 - #5144 `c5380a9` Elaborate on signverify message dialog warning 343 - #5489 `d1aa3c6` Optimize PNG files 344 - #5649 `e0cd2f5` Use text-color icons for system tray Send/Receive menu entries 345 - #5651 `848f55d` Coin Control: Use U+2248 "ALMOST EQUAL TO" rather than a simple tilde 346 - #5626 `ab0d798` Fix icon sizes and column width 347 - #5683 `c7b22aa` add new osx dmg background picture 348 - #5620 `7823598` Payment request expiration bug fix 349 - #5729 `9c4a5a5` Allow unit changes for read-only BitcoinAmountField 350 - #5753 `0f44672` Add bitcoin logo to about screen 351 - #5629 `a956586` Prevent amount overflow problem with payment requests 352 - #5830 `215475a` Don't save geometry for options and about/help window 353 - #5793 `d26f0b2` Honor current network when creating autostart link 354 - #5847 `f238add` Startup script for centos, with documentation 355 - #5915 `5bd3a92` Fix a static qt5 crash when using certain versions of libxcb 356 - #5898 `bb56781` Fix rpc console font size to flexible metrics 357 - #5467 `bc8535b` Payment request / server work - part 2 358 - #6161 `180c164` Remove movable option for toolbar 359 - #6160 `0d862c2` Overviewpage: make sure warning icons gets colored 360 361 ### Tests 362 - #5453 `2f2d337` Add ability to run single test manually to RPC tests 363 - #5421 `886eb57` Test unexecuted OP_CODESEPARATOR 364 - #5530 `565b300` Additional rpc tests 365 - #5611 `37b185c` Fix spurious windows test failures after 012598880c 366 - #5613 `2eda47b` Fix smartfees test for change to relay policy 367 - #5612 `e3f5727` Fix zapwallettxes test 368 - #5642 `30a5b5f` Prepare paymentservertests for new unit tests 369 - #5784 `e3a3cd7` Fix usage of NegateSignatureS in script_tests 370 - #5813 `ee9f2bf` Add unit tests for next difficulty calculations 371 - #5855 `d7989c0` Travis: run unit tests in different orders 372 - #5852 `cdae53e` Reinitialize state in between individual unit tests. 373 - #5883 `164d7b6` tests: add a BasicTestingSetup and apply to all tests 374 - #5940 `446bb70` Regression test for ResendWalletTransactions 375 - #6052 `cf7adad` fix and enable bip32 unit test 376 - #6039 `734f80a` tests: Error when setgenerate is used on regtest 377 - #6074 `948beaf` Correct the PUSHDATA4 minimal encoding test in script_invalid.json 378 - #6032 `e08886d` Stop nodes after RPC tests, even with --nocleanup 379 - #6075 `df1609f` Add additional script edge condition tests 380 - #5981 `da38dc6` Python P2P testing 381 - #5958 `9ef00c3` Add multisig rpc tests 382 - #6112 `fec5c0e` Add more script edge condition tests 383 384 ### Miscellaneous 385 - #5457, #5506, #5952, #6047 Update libsecp256k1 386 - #5437 `84857e8` Add missing CAutoFile::IsNull() check in main 387 - #5490 `ec20fd7` Replace uint256/uint160 with opaque blobs where possible 388 - #5654, #5764 Adding jonasschnelli's GPG key 389 - #5477 `5f04d1d` OS X 10.10: LSSharedFileListItemResolve() is deprecated 390 - #5679 `beff11a` Get rid of DetectShutdownThread 391 - #5787 `9bd8c9b` Add fanquake PGP key 392 - #5366 `47a79bb` No longer check osx compatibility in RenameThread 393 - #5689 `07f4386` openssl: abstract out OPENSSL_cleanse 394 - #5708 `8b298ca` Add list of implemented BIPs 395 - #5809 `46bfbe7` Add bitcoin-cli man page 396 - #5839 `86eb461` keys: remove libsecp256k1 verification until it's actually supported 397 - #5749 `d734d87` Help messages correctly formatted (79 chars) 398 - #5884 `7077fe6` BUGFIX: Stack around the variable 'rv' was corrupted 399 - #5849 `41259ca` contrib/init/bitcoind.openrc: Compatibility with previous OpenRC init script variables 400 - #5950 `41113e3` Fix locale fallback and guard tests against invalid locale settings 401 - #5965 `7c6bfb1` Add git-subtree-check.sh script 402 - #6033 `1623f6e` FreeBSD, OpenBSD thread renaming 403 - #6064 `b46e7c2` Several changes to mruset 404 - #6104 `3e2559c` Show an init message while activating best chain 405 - #6125 `351f73e` Clean up parsing of bool command line args 406 - #5964 `b4c219b` Lightweight task scheduler 407 - #6116 `30dc3c1` [OSX] rename Bitcoin-Qt.app to Bitcoin-Core.app 408 - #6168 `b3024f0` contrib/linearize: Support linearization of testnet blocks 409 - #6098 `7708fcd` Update Windows resource files (and add one for bitcoin-tx) 410 - #6159 `e1412d3` Catch errors on datadir lock and pidfile delete 411 - #6186 `182686c` Fix two problems in CSubnet parsing 412 - #6174 `df992b9` doc: add translation strings policy 413 - #6210 `dfdb6dd` build: disable optional use of gmp in internal secp256k1 build 414 - #6264 `94cd705` Remove translation for -help-debug options 415 - #6286 `3902c15` Remove berkeley-db4 workaround in MacOSX build docs 416 - #6319 `3f8fcc9` doc: update mailing list address 417 418 Credits 419 ======= 420 421 Thanks to everyone who directly contributed to this release: 422 423 - 21E14 424 - Adam Weiss 425 - Alex Morcos 426 - ayeowch 427 - azeteki 428 - Ben Holden-Crowther 429 - bikinibabe 430 - BitcoinPRReadingGroup 431 - Blake Jakopovic 432 - BtcDrak 433 - charlescharles 434 - Chris Arnesen 435 - Ciemon 436 - CohibAA 437 - Corinne Dashjr 438 - Cory Fields 439 - Cozz Lovan 440 - Daira Hopwood 441 - Daniel Kraft 442 - Dave Collins 443 - David A. Harding 444 - dexX7 445 - Earlz 446 - Eric Lombrozo 447 - Eric R. Schulz 448 - Everett Forth 449 - Flavien Charlon 450 - fsb4000 451 - Gavin Andresen 452 - Gregory Maxwell 453 - Heath 454 - Ivan Pustogarov 455 - Jacob Welsh 456 - Jameson Lopp 457 - Jason Lewicki 458 - Jeff Garzik 459 - Jonas Schnelli 460 - Jonathan Brown 461 - Jorge Timón 462 - joshr 463 - jtimon 464 - Julian Yap 465 - Luca Venturini 466 - Luke Dashjr 467 - Manuel Araoz 468 - MarcoFalke 469 - Matt Bogosian 470 - Matt Corallo 471 - Micha 472 - Michael Ford 473 - Mike Hearn 474 - mrbandrews 475 - Nicolas Benoit 476 - paveljanik 477 - Pavel Janík 478 - Pavel Vasin 479 - Peter Todd 480 - Philip Kaufmann 481 - Pieter Wuille 482 - pstratem 483 - randy-waterhouse 484 - rion 485 - Rob Van Mieghem 486 - Ross Nicoll 487 - Ruben de Vries 488 - sandakersmann 489 - Shaul Kfir 490 - Shawn Wilkinson 491 - sinetek 492 - Suhas Daftuar 493 - svost 494 - Thomas Zander 495 - Tom Harding 496 - UdjinM6 497 - Vitalii Demianets 498 - Wladimir J. van der Laan 499 500 And all those who contributed additional code review and/or security research: 501 502 - Sergio Demian Lerner 503 504 As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/). 505