Inside Bitcoin
Opening the selected file…
Inside Bitcoin
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
1Bitcoin Core version 0.9.0 is now available from:3https://bitcoin.org/bin/0.9.0/5This is a new major version release, bringing both new features and6bug fixes.8Please report bugs using the issue tracker at github:10https://github.com/bitcoin/bitcoin/issues12How to Upgrade13--------------15If you are running an older version, shut it down. Wait until it has completely16shut down (which might take a few minutes for older versions), uninstall all17earlier versions of Bitcoin, then run the installer (on Windows) or just copy18over /Applications/Bitcoin-Qt (on Mac) or bitcoind/bitcoin-qt (on Linux).20If you are upgrading from version 0.7.2 or earlier, the first time you run210.9.0 your blockchain files will be re-indexed, which will take anywhere from2230 minutes to several hours, depending on the speed of your machine.24On Windows, do not forget to uninstall all earlier versions of the Bitcoin25client first, especially if you are switching to the 64-bit version.27Windows 64-bit installer28-------------------------30New in 0.9.0 is the Windows 64-bit version of the client. There have been31frequent reports of users running out of virtual memory on 32-bit systems32during the initial sync. Because of this it is recommended to install the3364-bit version if your system supports it.35NOTE: Release candidate 2 Windows binaries are not code-signed; use PGP36and the SHA256SUMS.asc file to make sure your binaries are correct.37In the final 0.9.0 release, Windows setup.exe binaries will be code-signed.39OSX 10.5 / 32-bit no longer supported40-------------------------------------420.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).46Downgrading warnings47--------------------49The 'chainstate' for this release is not always compatible with previous50releases, so if you run 0.9 and then decide to switch back to a510.8.x release you might get a blockchain validation error when starting the52old release (due to 'pruned outputs' being omitted from the index of53unspent transaction outputs).55Running the old release with the -reindex option will rebuild the chainstate56data structures and correct the problem.58Also, the first time you run a 0.8.x release on a 0.9 wallet it will rescan59the blockchain for missing spent coins, which will take a long time (tens60of minutes on a typical machine).62Rebranding to Bitcoin Core63---------------------------65To reduce confusion between Bitcoin-the-network and Bitcoin-the-software we66have renamed the reference client to Bitcoin Core.69OP_RETURN and data in the block chain70-------------------------------------71On OP_RETURN: There was been some confusion and misunderstanding in72the community, regarding the OP_RETURN feature in 0.9 and data in the73blockchain. This change is not an endorsement of storing data in the74blockchain. The OP_RETURN change creates a provably-prunable output,75to avoid data storage schemes -- some of which were already deployed --76that were storing arbitrary data such as images as forever-unspendable77TX outputs, bloating bitcoin's UTXO database.79Storing arbitrary data in the blockchain is still a bad idea; it is less80costly and far more efficient to store non-currency data elsewhere.82Autotools build system83-----------------------85For 0.9.0 we switched to an autotools-based build system instead of individual86(q)makefiles.88Using the standard "./autogen.sh; ./configure; make" to build Bitcoin-Qt and89bitcoind makes it easier for experienced open source developers to contribute90to the project.92Be sure to check doc/build-*.md for your platform before building from source.94Bitcoin-cli95-------------97Another change in the 0.9 release is moving away from the bitcoind executable98functioning both as a server and as a RPC client. The RPC client functionality99("tell the running bitcoin daemon to do THIS") was split into a separate100executable, 'bitcoin-cli'. The RPC client code will eventually be removed from101bitcoind, but will be kept for backwards compatibility for a release or two.103`walletpassphrase` RPC104-----------------------106The behavior of the `walletpassphrase` RPC when the wallet is already unlocked107has changed between 0.8 and 0.9.109The 0.8 behavior of `walletpassphrase` is to fail when the wallet is already unlocked:111> walletpassphrase 1000112walletunlocktime = now + 1000113> walletpassphrase 10114Error: Wallet is already unlocked (old unlock time stays)116The new behavior of `walletpassphrase` is to set a new unlock time overriding117the old one:119> walletpassphrase 1000120walletunlocktime = now + 1000121> walletpassphrase 10122walletunlocktime = now + 10 (overriding the old unlock time)124Transaction malleability-related fixes125--------------------------------------127This release contains a few fixes for transaction ID (TXID) malleability128issues:130- -nospendzeroconfchange command-line option, to avoid spending131zero-confirmation change132- IsStandard() transaction rules tightened to prevent relaying and mining of133mutated transactions134- Additional information in listtransactions/gettransaction output to135report wallet transactions that conflict with each other because136they spend the same outputs.137- Bug fixes to the getbalance/listaccounts RPC commands, which would report138incorrect balances for double-spent (or mutated) transactions.139- New option: -zapwallettxes to rebuild the wallet's transaction information141Transaction Fees142----------------144This release drops the default fee required to relay transactions across the145network and for miners to consider the transaction in their blocks to1460.01mBTC per kilobyte.148Note that getting a transaction relayed across the network does NOT guarantee149that the transaction will be accepted by a miner; by default, miners fill150their blocks with 50 kilobytes of high-priority transactions, and then with151700 kilobytes of the highest-fee-per-kilobyte transactions.153The minimum relay/mining fee-per-kilobyte may be changed with the154minrelaytxfee option. Note that previous releases incorrectly used155the mintxfee setting to determine which low-priority transactions should156be considered for inclusion in blocks.158The wallet code still uses a default fee for low-priority transactions of1590.1mBTC per kilobyte. During periods of heavy transaction volume, even this160fee may not be enough to get transactions confirmed quickly; the mintxfee161option may be used to override the default.1630.9.0 Release notes164=======================166RPC:168- New notion of 'conflicted' transactions, reported as confirmations: -1169- 'listreceivedbyaddress' now provides tx ids170- Add raw transaction hex to 'gettransaction' output171- Updated help and tests for 'getreceivedby(account|address)'172- In 'getblock', accept 2nd 'verbose' parameter, similar to getrawtransaction,173but defaulting to 1 for backward compatibility174- Add 'verifychain', to verify chain database at runtime175- Add 'dumpwallet' and 'importwallet' RPCs176- 'keypoolrefill' gains optional size parameter177- Add 'getbestblockhash', to return tip of best chain178- Add 'chainwork' (the total work done by all blocks since the genesis block)179to 'getblock' output180- Make RPC password resistant to timing attacks181- Clarify help messages and add examples182- Add 'getrawchangeaddress' call for raw transaction change destinations183- Reject insanely high fees by default in 'sendrawtransaction'184- Add RPC call 'decodescript' to decode a hex-encoded transaction script185- Make 'validateaddress' provide redeemScript186- Add 'getnetworkhashps' to get the calculated network hashrate187- New RPC 'ping' command to request ping, new 'pingtime' and 'pingwait' fields188in 'getpeerinfo' output189- Adding new 'addrlocal' field to 'getpeerinfo' output190- Add verbose boolean to 'getrawmempool'191- Add rpc command 'getunconfirmedbalance' to obtain total unconfirmed balance192- Explicitly ensure that wallet is unlocked in `importprivkey`193- Add check for valid keys in `importprivkey`195Command-line options:197- New option: -nospendzeroconfchange to never spend unconfirmed change outputs198- New option: -zapwallettxes to rebuild the wallet's transaction information199- Rename option '-tor' to '-onion' to better reflect what it does200- Add '-disablewallet' mode to let bitcoind run entirely without wallet (when201built with wallet)202- Update default '-rpcsslciphers' to include TLSv1.2203- make '-logtimestamps' default on and rework help-message204- RPC client option: '-rpcwait', to wait for server start205- Remove '-logtodebugger'206- Allow `-noserver` with bitcoind208Block-chain handling and storage:210- Update leveldb to 1.15211- Check for correct genesis (prevent cases where a datadir from the wrong212network is accidentally loaded)213- Allow txindex to be removed and add a reindex dialog214- Log aborted block database rebuilds215- Store orphan blocks in serialized form, to save memory216- Limit the number of orphan blocks in memory to 750217- Fix non-standard disconnected transactions causing mempool orphans218- Add a new checkpoint at block 279,000220Wallet:222- Bug fixes and new regression tests to correctly compute223the balance of wallets containing double-spent (or mutated) transactions224- Store key creation time. Calculate whole-wallet birthday.225- Optimize rescan to skip blocks prior to birthday226- Let user select wallet file with -wallet=foo.dat227- Consider generated coins mature at 101 instead of 120 blocks228- Improve wallet load time229- Don't count txins for priority to encourage sweeping230- Don't create empty transactions when reading a corrupted wallet231- Fix rescan to start from beginning after importprivkey232- Only create signatures with low S values234Mining:236- Increase default -blockmaxsize/prioritysize to 750K/50K237- 'getblocktemplate' does not require a key to create a block template238- Mining code fee policy now matches relay fee policy240Protocol and network:242- Drop the fee required to relay a transaction to 0.01mBTC per kilobyte243- Send tx relay flag with version244- New 'reject' P2P message (BIP 0061, see245https://gist.github.com/gavinandresen/7079034 for draft)246- Dump addresses every 15 minutes instead of 10 seconds247- Relay OP_RETURN data TxOut as standard transaction type248- Remove CENT-output free transaction rule when relaying249- Lower maximum size for free transaction creation250- Send multiple inv messages if mempool.size > MAX_INV_SZ
Independent explanations by MyBitcoinExplorer. Not affiliated with or endorsed by Bitcoin Core. Guides are educational and do not replace the source or its tests.
Bitcoin Core source © its contributors, distributed under the MIT license. Original notices and bundled third-party licenses are retained in the source tree.