Merge #11335: Replace save|restoreWindowGeometry with Qt functions
[bitcoinplatinum.git] / doc / release-notes / release-notes-0.9.0.md
blob170410ca40a3bd1bb059f02a7102d88e0ab95e27
1 Bitcoin Core version 0.9.0 is now available from:
3   https://bitcoin.org/bin/0.9.0/
5 This is a new major version release, bringing both new features and
6 bug fixes.
8 Please report bugs using the issue tracker at github:
10   https://github.com/bitcoin/bitcoin/issues
12 How to Upgrade
13 --------------
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).
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.
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.
27 Windows 64-bit installer
28 -------------------------
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.
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.
39 OSX 10.5 / 32-bit no longer supported
40 -------------------------------------
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).
46 Downgrading warnings
47 --------------------
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).
55 Running the old release with the -reindex option will rebuild the chainstate
56 data structures and correct the problem.
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).
62 Rebranding to Bitcoin Core
63 ---------------------------
65 To reduce confusion between Bitcoin-the-network and Bitcoin-the-software we
66 have renamed the reference client to Bitcoin Core.
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.
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.
82 Autotools build system
83 -----------------------
85 For 0.9.0 we switched to an autotools-based build system instead of individual
86 (q)makefiles.
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.
92 Be sure to check doc/build-*.md for your platform before building from source.
94 Bitcoin-cli
95 -------------
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.
103 `walletpassphrase` RPC
104 -----------------------
106 The behavior of the `walletpassphrase` RPC when the wallet is already unlocked
107 has changed between 0.8 and 0.9.
109 The 0.8 behavior of `walletpassphrase` is to fail when the wallet is already unlocked:
111     > walletpassphrase 1000
112     walletunlocktime = now + 1000
113     > walletpassphrase 10
114     Error: Wallet is already unlocked (old unlock time stays)
116 The new behavior of `walletpassphrase` is to set a new unlock time overriding
117 the old one:
119     > walletpassphrase 1000
120     walletunlocktime = now + 1000
121     > walletpassphrase 10
122     walletunlocktime = now + 10 (overriding the old unlock time)
124 Transaction malleability-related fixes
125 --------------------------------------
127 This release contains a few fixes for transaction ID (TXID) malleability 
128 issues:
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
141 Transaction Fees
142 ----------------
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.
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.
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.
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.
163 0.9.0 Release notes
164 =======================
166 RPC:
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`
195 Command-line options:
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
208 Block-chain handling and storage:
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
220 Wallet:
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
234 Mining:
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
240 Protocol and network:
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
259 Validation:
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
270 Build system:
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
282 GUI:
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
311 Miscellaneous:
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
319 Credits
320 --------
322 Thanks to everyone who contributed to this release:
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