This is a release candidate for a new major version. A major version bringsboth new features and bug fixes.

Please report bugs using the issue tracker at github:

https://github.com/bitcoin/bitcoin/issues

How to Upgrade--------------

If you are running an older version, shut it down. Wait until it has completelyshut down (which might take a few minutes for older versions), uninstall allearlier versions of Bitcoin, then run the installer (on Windows) or just copyover /Applications/Bitcoin-Qt (on Mac) or bitcoind/bitcoin-qt (on Linux).

If you are upgrading from version 0.7.2 or earlier, the first time you run0.9.0 your blockchain files will be re-indexed, which will take anywhere from 30 minutes to several hours, depending on the speed of your machine.

On Windows, do not forget to uninstall all earlier versions of the Bitcoinclient first, especially if you are switching to the 64-bit version.

Windows 64-bit installer-------------------------

New in 0.9.0 is the Windows 64-bit version of the client. There have beenfrequent reports of users running out of virtual memory on 32-bit systemsduring the initial sync. Because of this it is recommended to install the64-bit version if your system supports it.

NOTE: Release candidate 2 Windows binaries are not code-signed; use PGPand the SHA256SUMS.asc file to make sure your binaries are correct.In the final 0.9.0 release, Windows setup.exe binaries will be code-signed.

The 'chainstate' for this release is not always compatible with previousreleases, so if you run 0.9 and then decide to switch back to a0.8.x release you might get a blockchain validation error when starting theold release (due to 'pruned outputs' being omitted from the index ofunspent transaction outputs).

Running the old release with the -reindex option will rebuild the chainstatedata structures and correct the problem.

Also, the first time you run a 0.8.x release on a 0.9 wallet it will rescanthe blockchain for missing spent coins, which will take a long time (tensof minutes on a typical machine).

Rebranding to Bitcoin Core---------------------------

To reduce confusion between Bitcoin-the-network and Bitcoin-the-software wehave renamed the reference client to Bitcoin Core.

Autotools build system-----------------------

For 0.9.0 we switched to an autotools-based build system instead of individual(q)makefiles.

Using the standard "./autogen.sh; ./configure; make" to build Bitcoin-Qt andbitcoind makes it easier for experienced open source developers to contribute to the project.

Be sure to check doc/build-*.md for your platform before building from source.

Bitcoin-cli-------------

Another change in the 0.9 release is moving away from the bitcoind executablefunctioning both as a server and as a RPC client. The RPC client functionality("tell the running bitcoin daemon to do THIS") was split into a separateexecutable, 'bitcoin-cli'. The RPC client code will eventually be removed frombitcoind, but will be kept for backwards compatibility for a release or two.

`walletpassphrase` RPC-----------------------

The behavior of the `walletpassphrase` RPC when the wallet is already unlockedhas changed between 0.8 and 0.9.

The 0.8 behavior of `walletpassphrase` is to fail when the wallet is already unlocked:

This release contains a few fixes for transaction ID (TXID) malleability issues:

- -nospendzeroconfchange command-line option, to avoid spending zero-confirmation change- IsStandard() transaction rules tightened to prevent relaying and mining of mutated transactions- Additional information in listtransactions/gettransaction output to report wallet transactions that conflict with each other because they spend the same outputs.- Bug fixes to the getbalance/listaccounts RPC commands, which would report incorrect balances for double-spent (or mutated) transactions.- New option: -zapwallettxes to rebuild the wallet's transaction information

Transaction Fees----------------

This release drops the default fee required to relay transactions across thenetwork and for miners to consider the transaction in their blocks to0.01mBTC per kilobyte.

Note that getting a transaction relayed across the network does NOT guaranteethat the transaction will be accepted by a miner; by default, miners filltheir blocks with 50 kilobytes of high-priority transactions, and then with700 kilobytes of the highest-fee-per-kilobyte transactions.

The minimum relay/mining fee-per-kilobyte may be changed with theminrelaytxfee option. Note that previous releases incorrectly usedthe mintxfee setting to determine which low-priority transactions shouldbe considered for inclusion in blocks.

The wallet code still uses a default fee for low-priority transactions of0.1mBTC per kilobyte. During periods of heavy transaction volume, even thisfee may not be enough to get transactions confirmed quickly; the mintxfeeoption may be used to override the default.

0.9.0 Release notes=======================

RPC:

- New notion of 'conflicted' transactions, reported as confirmations: -1- 'listreceivedbyaddress' now provides tx ids- Add raw transaction hex to 'gettransaction' output- Updated help and tests for 'getreceivedby(account|address)'- In 'getblock', accept 2nd 'verbose' parameter, similar to getrawtransaction, but defaulting to 1 for backward compatibility- Add 'verifychain', to verify chain database at runtime- Add 'dumpwallet' and 'importwallet' RPCs- 'keypoolrefill' gains optional size parameter- Add 'getbestblockhash', to return tip of best chain- Add 'chainwork' (the total work done by all blocks since the genesis block) to 'getblock' output- Make RPC password resistant to timing attacks- Clarify help messages and add examples- Add 'getrawchangeaddress' call for raw transaction change destinations- Reject insanely high fees by default in 'sendrawtransaction'- Add RPC call 'decodescript' to decode a hex-encoded transaction script- Make 'validateaddress' provide redeemScript- Add 'getnetworkhashps' to get the calculated network hashrate- New RPC 'ping' command to request ping, new 'pingtime' and 'pingwait' fields in 'getpeerinfo' output- Adding new 'addrlocal' field to 'getpeerinfo' output- Add verbose boolean to 'getrawmempool'- Add rpc command 'getunconfirmedbalance' to obtain total unconfirmed balance- Explicitly ensure that wallet is unlocked in `importprivkey`- Add check for valid keys in `importprivkey`

Command-line options:

- New option: -nospendzeroconfchange to never spend unconfirmed change outputs- New option: -zapwallettxes to rebuild the wallet's transaction information- Rename option '-tor' to '-onion' to better reflect what it does- Add '-disablewallet' mode to let bitcoind run entirely without wallet (when built with wallet)- Update default '-rpcsslciphers' to include TLSv1.2- make '-logtimestamps' default on and rework help-message- RPC client option: '-rpcwait', to wait for server start- Remove '-logtodebugger'- Allow `-noserver` with bitcoind

Block-chain handling and storage:

- Update leveldb to 1.15- Check for correct genesis (prevent cases where a datadir from the wrong network is accidentally loaded)- Allow txindex to be removed and add a reindex dialog- Log aborted block database rebuilds- Store orphan blocks in serialized form, to save memory- Limit the number of orphan blocks in memory to 750- Fix non-standard disconnected transactions causing mempool orphans- Add a new checkpoint at block 279,000