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.11.0 is now available from:3<https://bitcoin.org/bin/bitcoin-core-0.11.0/>5This is a new major version release, bringing both new features and6bug fixes.8Please report bugs using the issue tracker at github:10<https://github.com/bitcoin/bitcoin/issues>12Upgrading and downgrading13=========================15How to Upgrade16--------------18If you are running an older version, shut it down. Wait until it has completely19shut down (which might take a few minutes for older versions), then run the20installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or21bitcoind/bitcoin-qt (on Linux).23Downgrade warning24------------------26Because release 0.10.0 and later makes use of headers-first synchronization and27parallel block download (see further), the block files and databases are not28backwards-compatible with pre-0.10 versions of Bitcoin Core or other software:30* Blocks will be stored on disk out of order (in the order they are31received, really), which makes it incompatible with some tools or32other programs. Reindexing using earlier versions will also not work33anymore as a result of this.35* The block index database will now hold headers for which no block is36stored on disk, which earlier versions won't support.38If you want to be able to downgrade smoothly, make a backup of your entire data39directory. Without this your node will need start syncing (or importing from40bootstrap.dat) anew afterwards. It is possible that the data from a completely41synchronised 0.10 node may be usable in older versions as-is, but this is not42supported and may break as soon as the older version attempts to reindex.44This does not affect wallet forward or backward compatibility. There are no45known problems when downgrading from 0.11.x to 0.10.x.47Important information48======================50Transaction flooding51---------------------53At the time of this release, the P2P network is being flooded with low-fee54transactions. This causes a ballooning of the mempool size.56If this growth of the mempool causes problematic memory use on your node, it is57possible to change a few configuration options to work around this. The growth58of the mempool can be monitored with the RPC command `getmempoolinfo`.60One is to increase the minimum transaction relay fee `minrelaytxfee`, which61defaults to 0.00001. This will cause transactions with fewer BTC/kB fee to be62rejected, and thus fewer transactions entering the mempool.64The other is to restrict the relaying of free transactions with65`limitfreerelay`. This option sets the number of kB/minute at which66free transactions (with enough priority) will be accepted. It defaults to 15.67Reducing this number reduces the speed at which the mempool can grow due68to free transactions.70For example, add the following to `bitcoin.conf`:72minrelaytxfee=0.0000573limitfreerelay=575More robust solutions are being worked on for a follow-up release.77Notable changes78===============80Block file pruning81----------------------83This release supports running a fully validating node without maintaining a copy84of the raw block and undo data on disk. To recap, there are four types of data85related to the blockchain in the bitcoin system: the raw blocks as received over86the network (blk???.dat), the undo data (rev???.dat), the block index and the87UTXO set (both LevelDB databases). The databases are built from the raw data.89Block pruning allows Bitcoin Core to delete the raw block and undo data once90it's been validated and used to build the databases. At that point, the raw data91is used only to relay blocks to other nodes, to handle reorganizations, to look92up old transactions (if -txindex is enabled or via the RPC/REST interfaces), or93for rescanning the wallet. The block index continues to hold the metadata about94all blocks in the blockchain.96The user specifies how much space to allot for block & undo files. The minimum97allowed is 550MB. Note that this is in addition to whatever is required for the98block index and UTXO databases. The minimum was chosen so that Bitcoin Core will99be able to maintain at least 288 blocks on disk (two days worth of blocks at 10100minutes per block). In rare instances it is possible that the amount of space101used will exceed the pruning target in order to keep the required last 288102blocks on disk.104Block pruning works during initial sync in the same way as during steady state,105by deleting block files "as you go" whenever disk space is allocated. Thus, if106the user specifies 550MB, once that level is reached the program will begin107deleting the oldest block and undo files, while continuing to download the108blockchain.110For now, block pruning disables block relay. In the future, nodes with block111pruning will at a minimum relay "new" blocks, meaning blocks that extend their112active chain.114Block pruning is currently incompatible with running a wallet due to the fact115that block data is used for rescanning the wallet and importing keys or116addresses (which require a rescan.) However, running the wallet with block117pruning will be supported in the near future, subject to those limitations.119Block pruning is also incompatible with -txindex and will automatically disable120it.122Once you have pruned blocks, going back to unpruned state requires123re-downloading the entire blockchain. To do this, re-start the node with124-reindex. Note also that any problem that would cause a user to reindex (e.g.,125disk corruption) will cause a pruned node to redownload the entire blockchain.126Finally, note that when a pruned node reindexes, it will delete any blk???.dat127and rev???.dat files in the data directory prior to restarting the download.129To enable block pruning on the command line:131- `-prune=N`: where N is the number of MB to allot for raw block & undo data.133Modified RPC calls: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 an137error.138- `getrawtransaction` will no longer be able to locate a transaction that has a139UTXO but where its block file has been pruned.141Pruning is disabled by default.143Big endian support144--------------------146Experimental support for big-endian CPU architectures was added in this147release. All little-endian specific code was replaced with endian-neutral148constructs. This has been tested on at least MIPS and PPC hosts. The build149system will automatically detect the endianness of the target.151Memory usage optimization152--------------------------154There have been many changes in this release to reduce the default memory usage155of a node, among which:157- Accurate UTXO cache size accounting (#6102); this makes the option `-dbcache`158precise where this grossly underestimated memory usage before159- Reduce size of per-peer data structure (#6064 and others); this increases the160number of connections that can be supported with the same amount of memory161- Reduce the number of threads (#5964, #5679); lowers the amount of (esp.162virtual) memory needed164Fee estimation changes165----------------------167This release improves the algorithm used for fee estimation. Previously, -1168was returned when there was insufficient data to give an estimate. Now, -1169will also be returned when there is no fee or priority high enough for the170desired confirmation target. In those cases, it can help to ask for an estimate171for a higher target number of blocks. It is not uncommon for there to be no172fee or priority high enough to be reliably (85%) included in the next block and173for this reason, the default for `-txconfirmtarget=n` has changed from 1 to 2.175Privacy: Disable wallet transaction broadcast176----------------------------------------------178This release adds an option `-walletbroadcast=0` to prevent automatic179transaction broadcast and rebroadcast (#5951). This option allows separating180transaction submission from the node functionality.182Making use of this, third-party scripts can be written to take care of183transaction (re)broadcast:185- Send the transaction as normal, either through RPC or the GUI186- Retrieve the transaction data through RPC using `gettransaction` (NOT187`getrawtransaction`). The `hex` field of the result will contain the raw188hexadecimal representation of the transaction189- The transaction can then be broadcasted through arbitrary mechanisms190supported by the script192One such application is selective Tor usage, where the node runs on the normal193internet but transactions are broadcasted over Tor.195For an example script see [bitcoin-submittx](https://github.com/laanwj/bitcoin-submittx).197Privacy: Stream isolation for Tor198----------------------------------200This release adds functionality to create a new circuit for every peer201connection, when the software is used with Tor. The new option,202`-proxyrandomize`, is on by default.204When enabled, every outgoing connection will (potentially) go through a205different exit node. That significantly reduces the chance to get unlucky and206pick a single exit node that is either malicious, or widely banned from the P2P207network. This improves connection reliability as well as privacy, especially208for the initial connections.210**Important note:** If a non-Tor SOCKS5 proxy is configured that supports211authentication, but doesn't require it, this change may cause that proxy to reject212connections. A user and password is sent where they weren't before. This setup213is exceedingly rare, but in this case `-proxyrandomize=0` can be passed to214disable the behavior.2160.11.0 Change log217=================219Detailed release notes follow. This overview includes changes that affect220behavior, not code moves, refactors and string updates. For convenience in locating221the code changes and accompanying discussion, both the pull request and222git merge commit are mentioned.224### RPC and REST225- #5461 `5f7279a` signrawtransaction: validate private key226- #5444 `103f66b` Add /rest/headers/<count>/<hash>.<ext>227- #4964 `95ecc0a` Add scriptPubKey field to validateaddress RPC call228- #5476 `c986972` Add time offset into getpeerinfo output229- #5540 `84eba47` Add unconfirmed and immature balances to getwalletinfo230- #5599 `40e96a3` Get rid of the internal miner's hashmeter231- #5711 `87ecfb0` Push down RPC locks232- #5754 `1c4e3f9` fix getblocktemplate lock issue233- #5756 `5d901d8` Fix getblocktemplate_proposals test by mining one block234- #5548 `d48ce48` Add /rest/chaininfos235- #5992 `4c4f1b4` Push down RPC reqWallet flag236- #6036 `585b5db` Show zero value txouts in listunspent237- #5199 `6364408` Add RPC call `gettxoutproof` to generate and verify merkle blocks238- #5418 `16341cc` Report missing inputs in sendrawtransaction239- #5937 `40f5e8d` show script verification errors in signrawtransaction result240- #5420 `1fd2d39` getutxos REST command (based on Bip64)241- #6193 `42746b0` [REST] remove json input for getutxos, limit to query max. 15 outpoints242- #6226 `5901596` json: fail read_string if string contains trailing garbage244### Configuration and command-line options245- #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 structures247- #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
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.