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.18.0 is now available from:3<https://bitcoincore.org/bin/bitcoin-core-0.18.0/>5This is a new major version release, including new features, various bug6fixes and performance improvements, as well as updated translations.8Please report bugs using the issue tracker at GitHub:10<https://github.com/bitcoin/bitcoin/issues>12To receive security and update notifications, please subscribe to:14<https://bitcoincore.org/en/list/announcements/join/>16How to Upgrade17==============19If you are running an older version, shut it down. Wait until it has20completely shut down (which might take a few minutes for older21versions), then run the installer (on Windows) or just copy over22`/Applications/Bitcoin-Qt` (on Mac) or `bitcoind`/`bitcoin-qt` (on23Linux).25The first time you run version 0.15.0 or newer, your chainstate database26will be converted to a new format, which will take anywhere from a few27minutes to half an hour, depending on the speed of your machine.29Note that the block database format also changed in version 0.8.0 and30there is no automatic upgrade code from before version 0.8 to version310.15.0 or later. Upgrading directly from 0.7.x and earlier without32redownloading the blockchain is not supported. However, as usual, old33wallet versions are still supported.35Compatibility36==============38Bitcoin Core is supported and extensively tested on operating systems39using the Linux kernel, macOS 10.10+, and Windows 7 and newer. It is not40recommended to use Bitcoin Core on unsupported systems.42Bitcoin Core should also work on most other Unix-like systems but is not43as frequently tested on them.45From 0.17.0 onwards, macOS <10.10 is no longer supported. 0.17.0 is46built using Qt 5.9.x, which doesn't support versions of macOS older than4710.10. Additionally, Bitcoin Core does not yet change appearance when48macOS "dark mode" is activated.50In addition to previously-supported CPU platforms, this release's51pre-compiled distribution also provides binaries for the RISC-V52platform.54If you are using the `systemd` unit configuration file located at55`contrib/init/bitcoind.service`, it has been changed to use56`/var/lib/bitcoind` as the data directory instead of57`~bitcoin/.bitcoin`. When switching over to the new configuration file,58please make sure that the filesystem on which `/var/lib/bitcoind` will59exist has enough space (check using `df -h /var/lib/bitcoind`), and60optionally copy over your existing data directory. See the [systemd init61file section](#systemd-init-file) for more details.63Known issues64============66Wallet GUI67----------69For advanced users who have both (1) enabled coin control features, and70(2) are using multiple wallets loaded at the same time: The coin control71input selection dialog can erroneously retain wrong-wallet state when72switching wallets using the dropdown menu. For now, it is recommended73not to use coin control features with multiple wallets loaded.75Notable changes76===============78Mining79------81- Calls to `getblocktemplate` will fail if the segwit rule is not82specified. Calling `getblocktemplate` without segwit specified is83almost certainly a misconfiguration since doing so results in lower84rewards for the miner. Failed calls will produce an error message85describing how to enable the segwit rule.87Configuration option changes88----------------------------90- A warning is printed if an unrecognized section name is used in the91configuration file. Recognized sections are `[test]`, `[main]`, and92`[regtest]`.94- Four new options are available for configuring the maximum number of95messages that ZMQ will queue in memory (the "high water mark") before96dropping additional messages. The default value is 1,000, the same as97was used for previous releases. See the [ZMQ98documentation](https://github.com/bitcoin/bitcoin/blob/master/doc/zmq.md#usage)99for details.101- The `rpcallowip` option can no longer be used to automatically listen102on all network interfaces. Instead, the `rpcbind` parameter must be103used to specify the IP addresses to listen on. Listening for RPC104commands over a public network connection is insecure and should be105disabled, so a warning is now printed if a user selects such a106configuration. If you need to expose RPC in order to use a tool like107Docker, ensure you only bind RPC to your localhost, e.g. `docker run108[...] -p 127.0.0.1:8332:8332` (this is an extra `:8332` over the109normal Docker port specification).111- The `rpcpassword` option now causes a startup error if the password112set in the configuration file contains a hash character (#), as it's113ambiguous whether the hash character is meant for the password or as a114comment.116- The `whitelistforcerelay` option is used to relay transactions from117whitelisted peers even when not accepted to the mempool. This option118now defaults to being off, so that changes in policy and119disconnect/ban behavior will not cause a node that is whitelisting120another to be dropped by peers. Users can still explicitly enable121this behavior with the command line option (and may want to consider122[contacting](https://bitcoincore.org/en/contact/) the Bitcoin Core123project to let us know about their use-case, as this feature could be124deprecated in the future).126systemd init file127-----------------129The systemd init file (`contrib/init/bitcoind.service`) has been changed130to use `/var/lib/bitcoind` as the data directory instead of131`~bitcoin/.bitcoin`. This change makes Bitcoin Core more consistent with132other services, and makes the systemd init config more consistent with133existing Upstart and OpenRC configs.135The configuration, PID, and data directories are now completely managed136by systemd, which will take care of their creation, permissions, etc.137See [`systemd.exec(5)`](https://www.freedesktop.org/software/systemd/man/systemd.exec.html#RuntimeDirectory=)138for more details.140When using the provided init files under `contrib/init`, overriding the141`datadir` option in `/etc/bitcoin/bitcoin.conf` will have no effect.142This is because the command line arguments specified in the init files143take precedence over the options specified in144`/etc/bitcoin/bitcoin.conf`.147Documentation148-------------150- A new short [document](https://github.com/bitcoin/bitcoin/blob/master/doc/JSON-RPC-interface.md)151about the JSON-RPC interface describes cases where the results of an152RPC might contain inconsistencies between data sourced from different153subsystems, such as wallet state and mempool state. A note is added154to the [REST interface documentation](https://github.com/bitcoin/bitcoin/blob/master/doc/REST-interface.md)155indicating that the same rules apply.157- Further information is added to the [JSON-RPC158documentation](https://github.com/bitcoin/bitcoin/blob/master/doc/JSON-RPC-interface.md)159about how to secure this interface.161- A new [document](https://github.com/bitcoin/bitcoin/blob/master/doc/bitcoin-conf.md)162about the `bitcoin.conf` file describes how to use it to configure163Bitcoin Core.165- A new document introduces Bitcoin Core's BIP174 [Partially-Signed166Bitcoin Transactions167(PSBT)](https://github.com/bitcoin/bitcoin/blob/master/doc/psbt.md)168interface, which is used to allow multiple programs to collaboratively169work to create, sign, and broadcast new transactions. This is useful170for offline (cold storage) wallets, multisig wallets, coinjoin171implementations, and many other cases where two or more programs need172to interact to generate a complete transaction.174- The [output script175descriptor](https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md)176documentation has been updated with information about new features in177this still-developing language for describing the output scripts that178a wallet or other program wants to receive notifications for, such as179which addresses it wants to know received payments. The language is180currently used in multiple new and updated RPCs described in these181release notes and is expected to be adapted to other RPCs and to the182underlying wallet structure.184Build system changes185--------------------187- A new `--disable-bip70` option may be passed to `./configure` to188prevent Bitcoin-Qt from being built with support for the BIP70 payment189protocol or from linking libssl. As the payment protocol has exposed190Bitcoin Core to libssl vulnerabilities in the past, builders who don't191need BIP70 support are encouraged to use this option to reduce their192exposure to future vulnerabilities.194- The minimum required version of Qt (when building the GUI) has been195increased from 5.2 to 5.5.1 (the [depends196system](https://github.com/bitcoin/bitcoin/blob/master/depends/README.md)197provides 5.9.7)199New RPCs200--------202- `getnodeaddresses` returns peer addresses known to this node. It may203be used to find nodes to connect to without using a DNS seeder.205- `listwalletdir` returns a list of wallets in the wallet directory206(either the default wallet directory or the directory configured by207the `-walletdir` parameter).209- `getrpcinfo` returns runtime details of the RPC server. At the moment,210it returns an array of the currently active commands and how long211they've been running.213- `deriveaddresses` returns one or more addresses corresponding to an214[output descriptor](https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md).216- `getdescriptorinfo` accepts a descriptor and returns information about217it, including its computed checksum.219- `joinpsbts` merges multiple distinct PSBTs into a single PSBT. The220multiple PSBTs must have different inputs. The resulting PSBT will221contain every input and output from all of the PSBTs. Any signatures222provided in any of the PSBTs will be dropped.224- `analyzepsbt` examines a PSBT and provides information about what225the PSBT contains and the next steps that need to be taken in order226to complete the transaction. For each input of a PSBT, `analyzepsbt`227provides information about what information is missing for that228input, including whether a UTXO needs to be provided, what pubkeys229still need to be provided, which scripts need to be provided, and230what signatures are still needed. Every input will also list which231role is needed to complete that input, and `analyzepsbt` will also232list the next role in general needed to complete the PSBT.233`analyzepsbt` will also provide the estimated fee rate and estimated234virtual size of the completed transaction if it has enough235information to do so.237- `utxoupdatepsbt` searches the set of Unspent Transaction Outputs238(UTXOs) to find the outputs being spent by the partial transaction.239PSBTs need to have the UTXOs being spent to be provided because240the signing algorithm requires information from the UTXO being spent.241For segwit inputs, only the UTXO itself is necessary. For242non-segwit outputs, the entire previous transaction is needed so243that signers can be sure that they are signing the correct thing.244Unfortunately, because the UTXO set only contains UTXOs and not full245transactions, `utxoupdatepsbt` will only add the UTXO for segwit246inputs.248Updated RPCs249------------
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.