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.13.1 is now available from:3<https://bitcoin.org/bin/bitcoin-core-0.13.1/>5This is a new minor version release, including activation parameters for the6segwit softfork, various bugfixes and performance improvements, as well as7updated translations.9Please report bugs using the issue tracker at github:11<https://github.com/bitcoin/bitcoin/issues>13To receive security and update notifications, please subscribe to:15<https://bitcoincore.org/en/list/announcements/join/>17Compatibility18==============20Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),21an OS initially released in 2001. This means that not even critical security22updates will be released anymore. Without security updates, using a bitcoin23wallet on a XP machine is irresponsible at least.25In addition to that, with 0.12.x there have been varied reports of Bitcoin Core26randomly crashing on Windows XP. It is [not clear](https://github.com/bitcoin/bitcoin/issues/7681#issuecomment-217439891)27what the source of these crashes is, but it is likely that upstream28libraries such as Qt are no longer being tested on XP.30We do not have time nor resources to provide support for an OS that is31end-of-life. From 0.13.0 on, Windows XP is no longer supported. Users are32suggested to upgrade to a newer version of Windows, or install an alternative OS33that is supported.35No attempt is made to prevent installing or running the software on Windows XP,36you can still do so at your own risk, but do not expect it to work: do not37report issues about Windows XP to the issue tracker.39From 0.13.1 onwards OS X 10.7 is no longer supported. 0.13.0 was intended to work on 10.7+,40but severe issues with the libc++ version on 10.7.x keep it from running reliably.410.13.1 now requires 10.8+, and will communicate that to 10.7 users, rather than crashing unexpectedly.43Notable changes44===============46Segregated witness soft fork47----------------------------49Segregated witness (segwit) is a soft fork that, if activated, will50allow transaction-producing software to separate (segregate) transaction51signatures (witnesses) from the part of the data in a transaction that is52covered by the txid. This provides several immediate benefits:54- **Elimination of unwanted transaction malleability:** Segregating the witness55allows both existing and upgraded software to calculate the transaction56identifier (txid) of transactions without referencing the witness, which can57sometimes be changed by third-parties (such as miners) or by co-signers in a58multisig spend. This solves all known cases of unwanted transaction59malleability, which is a problem that makes programming Bitcoin wallet60software more difficult and which seriously complicates the design of smart61contracts for Bitcoin.63- **Capacity increase:** Segwit transactions contain new fields that are not64part of the data currently used to calculate the size of a block, which65allows a block containing segwit transactions to hold more data than allowed66by the current maximum block size. Estimates based on the transactions67currently found in blocks indicate that if all wallets switch to using68segwit, the network will be able to support about 70% more transactions. The69network will also be able to support more of the advanced-style payments70(such as multisig) than it can support now because of the different weighting71given to different parts of a transaction after segwit activates (see the72following section for details).74- **Weighting data based on how it affects node performance:** Some parts of75each Bitcoin block need to be stored by nodes in order to validate future76blocks; other parts of a block can be immediately forgotten (pruned) or used77only for helping other nodes sync their copy of the block chain. One large78part of the immediately prunable data are transaction signatures (witnesses),79and segwit makes it possible to give a different "weight" to segregated80witnesses to correspond with the lower demands they place on node resources.81Specifically, each byte of a segregated witness is given a weight of 1, each82other byte in a block is given a weight of 4, and the maximum allowed weight83of a block is 4 million. Weighting the data this way better aligns the most84profitable strategy for creating blocks with the long-term costs of block85validation.87- **Signature covers value:** A simple improvement in the way signatures are88generated in segwit simplifies the design of secure signature generators89(such as hardware wallets), reduces the amount of data the signature90generator needs to download, and allows the signature generator to operate91more quickly. This is made possible by having the generator sign the amount92of bitcoins they think they are spending, and by having full nodes refuse to93accept those signatures unless the amount of bitcoins being spent is exactly94the same as was signed. For non-segwit transactions, wallets instead had to95download the complete previous transactions being spent for every payment96they made, which could be a slow operation on hardware wallets and in other97situations where bandwidth or computation speed was constrained.99- **Linear scaling of sighash operations:** In 2015 a block was produced that100required about 25 seconds to validate on modern hardware because of the way101transaction signature hashes are performed. Other similar blocks, or blocks102that could take even longer to validate, can still be produced today. The103problem that caused this can't be fixed in a soft fork without unwanted104side-effects, but transactions that opt-in to using segwit will now use a105different signature method that doesn't suffer from this problem and doesn't106have any unwanted side-effects.108- **Increased security for multisig:** Bitcoin addresses (both P2PKH addresses109that start with a '1' and P2SH addresses that start with a '3') use a hash110function known as RIPEMD-160. For P2PKH addresses, this provides about 160111bits of security---which is beyond what cryptographers believe can be broken112today. But because P2SH is more flexible, only about 80 bits of security is113provided per address. Although 80 bits is very strong security, it is within114the realm of possibility that it can be broken by a powerful adversary.115Segwit allows advanced transactions to use the SHA256 hash function instead,116which provides about 128 bits of security (that is 281 trillion times as117much security as 80 bits and is equivalent to the maximum bits of security118believed to be provided by Bitcoin's choice of parameters for its Elliptic119Curve Digital Security Algorithm [ECDSA].)121- **More efficient almost-full-node security** Satoshi Nakamoto's original122Bitcoin paper describes a method for allowing newly-started full nodes to123skip downloading and validating some data from historic blocks that are124protected by large amounts of proof of work. Unfortunately, Nakamoto's125method can't guarantee that a newly-started node using this method will126produce an accurate copy of Bitcoin's current ledger (called the UTXO set),127making the node vulnerable to falling out of consensus with other nodes.128Although the problems with Nakamoto's method can't be fixed in a soft fork,129Segwit accomplishes something similar to his original proposal: it makes it130possible for a node to optionally skip downloading some blockchain data131(specifically, the segregated witnesses) while still ensuring that the node132can build an accurate copy of the UTXO set for the block chain with the most133proof of work. Segwit enables this capability at the consensus layer, but134note that Bitcoin Core does not provide an option to use this capability as135of this 0.13.1 release.137- **Script versioning:** Segwit makes it easy for future soft forks to allow138Bitcoin users to individually opt-in to almost any change in the Bitcoin139Script language when those users receive new transactions. Features140currently being researched by Bitcoin Core contributors that may use this141capability include support for Schnorr signatures, which can improve the142privacy and efficiency of multisig transactions (or transactions with143multiple inputs), and Merklized Abstract Syntax Trees (MAST), which can144improve the privacy and efficiency of scripts with two or more conditions.145Other Bitcoin community members are studying several other improvements146that can be made using script versioning.148Activation for the segwit soft fork is being managed using BIP9149versionbits. Segwit's version bit is bit 1, and nodes will begin150tracking which blocks signal support for segwit at the beginning of the151first retarget period after segwit's start date of 15 November 2016. If15295% of blocks within a 2,016-block retarget period (about two weeks)153signal support for segwit, the soft fork will be locked in. After154another 2,016 blocks, segwit will activate.156For more information about segwit, please see the [segwit FAQ][], the157[segwit wallet developers guide][] or BIPs [141][BIP141], [143][BIP143],158[144][BIP144], and [145][BIP145]. If you're a miner or mining pool159operator, please see the [versionbits FAQ][] for information about160signaling support for a soft fork.162[Segwit FAQ]: https://bitcoincore.org/en/2016/01/26/segwit-benefits/163[segwit wallet developers guide]: https://bitcoincore.org/en/segwit_wallet_dev/164[BIP141]: https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki165[BIP143]: https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki166[BIP144]: https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki167[BIP145]: https://github.com/bitcoin/bips/blob/master/bip-0145.mediawiki168[versionbits FAQ]: https://bitcoincore.org/en/2016/06/08/version-bits-miners-faq/171Null dummy soft fork172-------------------174Combined with the segwit soft fork is an additional change that turns a175long-existing network relay policy into a consensus rule. The176`OP_CHECKMULTISIG` and `OP_CHECKMULTISIGVERIFY` opcodes consume an extra177stack element ("dummy element") after signature validation. The dummy178element is not inspected in any manner, and could be replaced by any179value without invalidating the script.181Because any value can be used for this dummy element, it's possible for182a third-party to insert data into other people's transactions, changing183the transaction's txid (called transaction malleability) and possibly184causing other problems.186Since Bitcoin Core 0.10.0, nodes have defaulted to only relaying and187mining transactions whose dummy element was a null value (0x00, also188called OP_0). The null dummy soft fork turns this relay rule into a189consensus rule both for non-segwit transactions and segwit transactions,190so that this method of mutating transactions is permanently eliminated191from the network.193Signaling for the null dummy soft fork is done by signaling support194for segwit, and the null dummy soft fork will activate at the same time195as segwit.197For more information, please see [BIP147][].199[BIP147]: https://github.com/bitcoin/bips/blob/master/bip-0147.mediawiki201Low-level RPC changes202---------------------204- `importprunedfunds` only accepts two required arguments. Some versions accept205an optional third arg, which was always ignored. Make sure to never pass more206than two arguments.209Linux ARM builds210----------------212With the 0.13.0 release, pre-built Linux ARM binaries were added to the set of213uploaded executables. Additional detail on the ARM architecture targeted by each214is provided below.216The following extra files can be found in the download directory or torrent:218- `bitcoin-${VERSION}-arm-linux-gnueabihf.tar.gz`: Linux binaries targeting219the 32-bit ARMv7-A architecture.220- `bitcoin-${VERSION}-aarch64-linux-gnu.tar.gz`: Linux binaries targeting221the 64-bit ARMv8-A architecture.223ARM builds are still experimental. If you have problems on a certain device or224Linux distribution combination please report them on the bug tracker, it may be225possible to resolve them. Note that the device you use must be (backward)226compatible with the architecture targeted by the binary that you use.227For example, a Raspberry Pi 2 Model B or Raspberry Pi 3 Model B (in its 32-bit228execution state) device, can run the 32-bit ARMv7-A targeted binary. However,229no model of Raspberry Pi 1 device can run either binary because they are all230ARMv6 architecture devices that are not compatible with ARMv7-A or ARMv8-A.232Note that Android is not considered ARM Linux in this context. The executables233are not expected to work out of the box on Android.2360.13.1 Change log237=================239Detailed release notes follow. This overview includes changes that affect240behavior, not code moves, refactors and string updates. For convenience in locating241the code changes and accompanying discussion, both the pull request and242git merge commit are mentioned.244### Consensus245- #8636 `9dfa0c8` Implement NULLDUMMY softfork (BIP147) (jl2012)246- #8848 `7a34a46` Add NULLDUMMY verify flag in bitcoinconsensus.h (jl2012)247- #8937 `8b66659` Define start and end time for segwit deployment (sipa)249### RPC and other APIs250- #8581 `526d2b0` Drop misleading option in importprunedfunds (MarcoFalke)
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.