release-notes-0.9.0.md
1 Bitcoin Core version 0.9.0 is now available from: 2 3 https://bitcoin.org/bin/0.9.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 How to Upgrade 13 -------------- 14 15 If you are running an older version, shut it down. Wait until it has completely 16 shut down (which might take a few minutes for older versions), uninstall all 17 earlier versions of Bitcoin, then run the installer (on Windows) or just copy 18 over /Applications/Bitcoin-Qt (on Mac) or bitcoind/bitcoin-qt (on Linux). 19 20 If you are upgrading from version 0.7.2 or earlier, the first time you run 21 0.9.0 your blockchain files will be re-indexed, which will take anywhere from 22 30 minutes to several hours, depending on the speed of your machine. 23 24 On Windows, do not forget to uninstall all earlier versions of the Bitcoin 25 client first, especially if you are switching to the 64-bit version. 26 27 Windows 64-bit installer 28 ------------------------- 29 30 New in 0.9.0 is the Windows 64-bit version of the client. There have been 31 frequent reports of users running out of virtual memory on 32-bit systems 32 during the initial sync. Because of this it is recommended to install the 33 64-bit version if your system supports it. 34 35 NOTE: Release candidate 2 Windows binaries are not code-signed; use PGP 36 and the SHA256SUMS.asc file to make sure your binaries are correct. 37 In the final 0.9.0 release, Windows setup.exe binaries will be code-signed. 38 39 OSX 10.5 / 32-bit no longer supported 40 ------------------------------------- 41 42 0.9.0 drops support for older Macs. The minimum requirements are now: 43 * A 64-bit-capable CPU (see http://support.apple.com/kb/ht3696); 44 * Mac OS 10.6 or later (see https://support.apple.com/kb/ht1633). 45 46 Downgrading warnings 47 -------------------- 48 49 The 'chainstate' for this release is not always compatible with previous 50 releases, so if you run 0.9 and then decide to switch back to a 51 0.8.x release you might get a blockchain validation error when starting the 52 old release (due to 'pruned outputs' being omitted from the index of 53 unspent transaction outputs). 54 55 Running the old release with the -reindex option will rebuild the chainstate 56 data structures and correct the problem. 57 58 Also, the first time you run a 0.8.x release on a 0.9 wallet it will rescan 59 the blockchain for missing spent coins, which will take a long time (tens 60 of minutes on a typical machine). 61 62 Rebranding to Bitcoin Core 63 --------------------------- 64 65 To reduce confusion between Bitcoin-the-network and Bitcoin-the-software we 66 have renamed the reference client to Bitcoin Core. 67 68 69 OP_RETURN and data in the block chain 70 ------------------------------------- 71 On OP_RETURN: There was been some confusion and misunderstanding in 72 the community, regarding the OP_RETURN feature in 0.9 and data in the 73 blockchain. This change is not an endorsement of storing data in the 74 blockchain. The OP_RETURN change creates a provably-prunable output, 75 to avoid data storage schemes -- some of which were already deployed -- 76 that were storing arbitrary data such as images as forever-unspendable 77 TX outputs, bloating bitcoin's UTXO database. 78 79 Storing arbitrary data in the blockchain is still a bad idea; it is less 80 costly and far more efficient to store non-currency data elsewhere. 81 82 Autotools build system 83 ----------------------- 84 85 For 0.9.0 we switched to an autotools-based build system instead of individual 86 (q)makefiles. 87 88 Using the standard "./autogen.sh; ./configure; make" to build Bitcoin-Qt and 89 bitcoind makes it easier for experienced open source developers to contribute 90 to the project. 91 92 Be sure to check doc/build-*.md for your platform before building from source. 93 94 Bitcoin-cli 95 ------------- 96 97 Another change in the 0.9 release is moving away from the bitcoind executable 98 functioning both as a server and as a RPC client. The RPC client functionality 99 ("tell the running bitcoin daemon to do THIS") was split into a separate 100 executable, 'bitcoin-cli'. The RPC client code will eventually be removed from 101 bitcoind, but will be kept for backwards compatibility for a release or two. 102 103 `walletpassphrase` RPC 104 ----------------------- 105 106 The behavior of the `walletpassphrase` RPC when the wallet is already unlocked 107 has changed between 0.8 and 0.9. 108 109 The 0.8 behavior of `walletpassphrase` is to fail when the wallet is already unlocked: 110 111 > walletpassphrase 1000 112 walletunlocktime = now + 1000 113 > walletpassphrase 10 114 Error: Wallet is already unlocked (old unlock time stays) 115 116 The new behavior of `walletpassphrase` is to set a new unlock time overriding 117 the old one: 118 119 > walletpassphrase 1000 120 walletunlocktime = now + 1000 121 > walletpassphrase 10 122 walletunlocktime = now + 10 (overriding the old unlock time) 123 124 Transaction malleability-related fixes 125 -------------------------------------- 126 127 This release contains a few fixes for transaction ID (TXID) malleability 128 issues: 129 130 - -nospendzeroconfchange command-line option, to avoid spending 131 zero-confirmation change 132 - IsStandard() transaction rules tightened to prevent relaying and mining of 133 mutated transactions 134 - Additional information in listtransactions/gettransaction output to 135 report wallet transactions that conflict with each other because 136 they spend the same outputs. 137 - Bug fixes to the getbalance/listaccounts RPC commands, which would report 138 incorrect balances for double-spent (or mutated) transactions. 139 - New option: -zapwallettxes to rebuild the wallet's transaction information 140 141 Transaction Fees 142 ---------------- 143 144 This release drops the default fee required to relay transactions across the 145 network and for miners to consider the transaction in their blocks to 146 0.01mBTC per kilobyte. 147 148 Note that getting a transaction relayed across the network does NOT guarantee 149 that the transaction will be accepted by a miner; by default, miners fill 150 their blocks with 50 kilobytes of high-priority transactions, and then with 151 700 kilobytes of the highest-fee-per-kilobyte transactions. 152 153 The minimum relay/mining fee-per-kilobyte may be changed with the 154 minrelaytxfee option. Note that previous releases incorrectly used 155 the mintxfee setting to determine which low-priority transactions should 156 be considered for inclusion in blocks. 157 158 The wallet code still uses a default fee for low-priority transactions of 159 0.1mBTC per kilobyte. During periods of heavy transaction volume, even this 160 fee may not be enough to get transactions confirmed quickly; the mintxfee 161 option may be used to override the default. 162 163 0.9.0 Release notes 164 ======================= 165 166 RPC: 167 168 - New notion of 'conflicted' transactions, reported as confirmations: -1 169 - 'listreceivedbyaddress' now provides tx ids 170 - Add raw transaction hex to 'gettransaction' output 171 - Updated help and tests for 'getreceivedby(account|address)' 172 - In 'getblock', accept 2nd 'verbose' parameter, similar to getrawtransaction, 173 but defaulting to 1 for backward compatibility 174 - Add 'verifychain', to verify chain database at runtime 175 - Add 'dumpwallet' and 'importwallet' RPCs 176 - 'keypoolrefill' gains optional size parameter 177 - Add 'getbestblockhash', to return tip of best chain 178 - Add 'chainwork' (the total work done by all blocks since the genesis block) 179 to 'getblock' output 180 - Make RPC password resistant to timing attacks 181 - Clarify help messages and add examples 182 - Add 'getrawchangeaddress' call for raw transaction change destinations 183 - Reject insanely high fees by default in 'sendrawtransaction' 184 - Add RPC call 'decodescript' to decode a hex-encoded transaction script 185 - Make 'validateaddress' provide redeemScript 186 - Add 'getnetworkhashps' to get the calculated network hashrate 187 - New RPC 'ping' command to request ping, new 'pingtime' and 'pingwait' fields 188 in 'getpeerinfo' output 189 - Adding new 'addrlocal' field to 'getpeerinfo' output 190 - Add verbose boolean to 'getrawmempool' 191 - Add rpc command 'getunconfirmedbalance' to obtain total unconfirmed balance 192 - Explicitly ensure that wallet is unlocked in `importprivkey` 193 - Add check for valid keys in `importprivkey` 194 195 Command-line options: 196 197 - New option: -nospendzeroconfchange to never spend unconfirmed change outputs 198 - New option: -zapwallettxes to rebuild the wallet's transaction information 199 - Rename option '-tor' to '-onion' to better reflect what it does 200 - Add '-disablewallet' mode to let bitcoind run entirely without wallet (when 201 built with wallet) 202 - Update default '-rpcsslciphers' to include TLSv1.2 203 - make '-logtimestamps' default on and rework help-message 204 - RPC client option: '-rpcwait', to wait for server start 205 - Remove '-logtodebugger' 206 - Allow `-noserver` with bitcoind 207 208 Block-chain handling and storage: 209 210 - Update leveldb to 1.15 211 - Check for correct genesis (prevent cases where a datadir from the wrong 212 network is accidentally loaded) 213 - Allow txindex to be removed and add a reindex dialog 214 - Log aborted block database rebuilds 215 - Store orphan blocks in serialized form, to save memory 216 - Limit the number of orphan blocks in memory to 750 217 - Fix non-standard disconnected transactions causing mempool orphans 218 - Add a new checkpoint at block 279,000 219 220 Wallet: 221 222 - Bug fixes and new regression tests to correctly compute 223 the balance of wallets containing double-spent (or mutated) transactions 224 - Store key creation time. Calculate whole-wallet birthday. 225 - Optimize rescan to skip blocks prior to birthday 226 - Let user select wallet file with -wallet=foo.dat 227 - Consider generated coins mature at 101 instead of 120 blocks 228 - Improve wallet load time 229 - Don't count txins for priority to encourage sweeping 230 - Don't create empty transactions when reading a corrupted wallet 231 - Fix rescan to start from beginning after importprivkey 232 - Only create signatures with low S values 233 234 Mining: 235 236 - Increase default -blockmaxsize/prioritysize to 750K/50K 237 - 'getblocktemplate' does not require a key to create a block template 238 - Mining code fee policy now matches relay fee policy 239 240 Protocol and network: 241 242 - Drop the fee required to relay a transaction to 0.01mBTC per kilobyte 243 - Send tx relay flag with version 244 - New 'reject' P2P message (BIP 0061, see 245 https://gist.github.com/gavinandresen/7079034 for draft) 246 - Dump addresses every 15 minutes instead of 10 seconds 247 - Relay OP_RETURN data TxOut as standard transaction type 248 - Remove CENT-output free transaction rule when relaying 249 - Lower maximum size for free transaction creation 250 - Send multiple inv messages if mempool.size > MAX_INV_SZ 251 - Split MIN_PROTO_VERSION into INIT_PROTO_VERSION and MIN_PEER_PROTO_VERSION 252 - Do not treat fFromMe transaction differently when broadcasting 253 - Process received messages one at a time without sleeping between messages 254 - Improve logging of failed connections 255 - Bump protocol version to 70002 256 - Add some additional logging to give extra network insight 257 - Added new DNS seed from bitcoinstats.com 258 259 Validation: 260 261 - Log reason for non-standard transaction rejection 262 - Prune provably-unspendable outputs, and adapt consistency check for it. 263 - Detect any sufficiently long fork and add a warning 264 - Call the -alertnotify script when we see a long or invalid fork 265 - Fix multi-block reorg transaction resurrection 266 - Reject non-canonically-encoded serialization sizes 267 - Reject dust amounts during validation 268 - Accept nLockTime transactions that finalize in the next block 269 270 Build system: 271 272 - Switch to autotools-based build system 273 - Build without wallet by passing `--disable-wallet` to configure, this 274 removes the BerkeleyDB dependency 275 - Upgrade gitian dependencies (libpng, libz, libupnpc, boost, openssl) to more 276 recent versions 277 - Windows 64-bit build support 278 - Solaris compatibility fixes 279 - Check integrity of gitian input source tarballs 280 - Enable full GCC Stack-smashing protection for all OSes 281 282 GUI: 283 284 - Switch to Qt 5.2.0 for Windows build 285 - Add payment request (BIP 0070) support 286 - Improve options dialog 287 - Show transaction fee in new send confirmation dialog 288 - Add total balance in overview page 289 - Allow user to choose data directory on first start, when data directory is 290 missing, or when the -choosedatadir option is passed 291 - Save and restore window positions 292 - Add vout index to transaction id in transactions details dialog 293 - Add network traffic graph in debug window 294 - Add open URI dialog 295 - Add Coin Control Features 296 - Improve receive coins workflow: make the 'Receive' tab into a form to request 297 payments, and move historical address list functionality to File menu. 298 - Rebrand to `Bitcoin Core` 299 - Move initialization/shutdown to a thread. This prevents "Not responding" 300 messages during startup. Also show a window during shutdown. 301 - Don't regenerate autostart link on every client startup 302 - Show and store message of normal bitcoin:URI 303 - Fix richtext detection hang issue on very old Qt versions 304 - OS X: Make use of the 10.8+ user notification center to display Growl-like 305 notifications 306 - OS X: Added NSHighResolutionCapable flag to Info.plist for better font 307 rendering on Retina displays. 308 - OS X: Fix bitcoin-qt startup crash when clicking dock icon 309 - Linux: Fix Gnome bitcoin: URI handler 310 311 Miscellaneous: 312 313 - Add Linux script (contrib/qos/tc.sh) to limit outgoing bandwidth 314 - Add '-regtest' mode, similar to testnet but private with instant block 315 generation with 'setgenerate' RPC. 316 - Add 'linearize.py' script to contrib, for creating bootstrap.dat 317 - Add separate bitcoin-cli client 318 319 Credits 320 -------- 321 322 Thanks to everyone who contributed to this release: 323 324 - Andrey 325 - Ashley Holman 326 - b6393ce9-d324-4fe1-996b-acf82dbc3d53 327 - bitsofproof 328 - Brandon Dahler 329 - Calvin Tam 330 - Christian Decker 331 - Christian von Roques 332 - Christopher Latham 333 - Chuck 334 - coblee 335 - constantined 336 - Cory Fields 337 - Cozz Lovan 338 - daniel 339 - Daniel Larimer 340 - David Hill 341 - Dmitry Smirnov 342 - Drak 343 - Eric Lombrozo 344 - fanquake 345 - fcicq 346 - Florin 347 - frewil 348 - Gavin Andresen 349 - Gregory Maxwell 350 - gubatron 351 - Guillermo Céspedes Tabárez 352 - Haakon Nilsen 353 - HaltingState 354 - Han Lin Yap 355 - harry 356 - Ian Kelling 357 - Jeff Garzik 358 - Johnathan Corgan 359 - Jonas Schnelli 360 - Josh Lehan 361 - Josh Triplett 362 - Julian Langschaedel 363 - Kangmo 364 - Lake Denman 365 - Luke Dashjr 366 - Mark Friedenbach 367 - Matt Corallo 368 - Michael Bauer 369 - Michael Ford 370 - Michagogo 371 - Midnight Magic 372 - Mike Hearn 373 - Nils Schneider 374 - Noel Tiernan 375 - Olivier Langlois 376 - patrick s 377 - Patrick Strateman 378 - paveljanik 379 - Peter Todd 380 - phantomcircuit 381 - phelixbtc 382 - Philip Kaufmann 383 - Pieter Wuille 384 - Rav3nPL 385 - R E Broadley 386 - regergregregerrge 387 - Robert Backhaus 388 - Roman Mindalev 389 - Rune K. Svendsen 390 - Ryan Niebur 391 - Scott Ellis 392 - Scott Willeke 393 - Sergey Kazenyuk 394 - Shawn Wilkinson 395 - Sined 396 - sje 397 - Subo1978 398 - super3 399 - Tamas Blummer 400 - theuni 401 - Thomas Holenstein 402 - Timon Rapp 403 - Timothy Stranex 404 - Tom Geller 405 - Torstein Husebø 406 - Vaclav Vobornik 407 - vhf / victor felder 408 - Vinnie Falco 409 - Warren Togami 410 - Wil Bown 411 - Wladimir J. van der Laan