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.
251-------------------------253- The `testnet` field in `bitcoin-cli -getinfo` has been renamed to254`chain` and now returns the current network name as defined in BIP70255(main, test, regtest). (#15566)257Low-level changes258=================260RPC261---263- `getblockchaininfo` no longer returns a `bip9_softforks` object.264Instead, information has been moved into the `softforks` object and265an additional `type` field describes how Bitcoin Core determines266whether that soft fork is active (e.g. BIP9 or BIP90). See the RPC267help for details. (#16060)269- `getblocktemplate` no longer returns a `rules` array containing `CSV`270and `segwit` (the BIP9 deployments that are currently in active271state). (#16060)273- `getrpcinfo` now returns a `logpath` field with the path to274`debug.log`. (#15483)276Tests277-----279- The regression test chain enabled by the `-regtest` command line flag280now requires transactions to not violate standard policy by default.281This is the same default used for mainnet and makes it easier to test282mainnet behavior on regtest. Note that the testnet still allows283non-standard txs by default and that the policy can be locally284adjusted with the `-acceptnonstdtxn` command line flag for both test285chains. (#15891)287Configuration288------------290- A setting specified in the default section but not also specified in a291network-specific section (e.g. testnet) will now produce an error292preventing startup instead of just a warning unless the network is293mainnet. This prevents settings intended for mainnet from being294applied to testnet or regtest. (#15629)296- On platforms supporting `thread_local`, log lines can be prefixed with297the name of the thread that caused the log. To enable this behavior,298use `-logthreadnames=1`. (#15849)300Network301-------303- When fetching a transaction announced by multiple peers, previous versions of304Bitcoin Core would sequentially attempt to download the transaction from each305announcing peer until the transaction is received, in the order that those306peers' announcements were received. In this release, the download logic has307changed to randomize the fetch order across peers and to prefer sending308download requests to outbound peers over inbound peers. This fixes an issue309where inbound peers could prevent a node from getting a transaction.310(#14897, #15834)312- If a Tor hidden service is being used, Bitcoin Core will be bound to313the standard port 8333 even if a different port is configured for314clearnet connections. This prevents leaking node identity through use315of identical non-default port numbers. (#15651)317Mempool and transaction relay318-----------------------------320- Allows one extra single-ancestor transaction per package. Previously,321if a transaction in the mempool had 25 descendants, or it and all of322its descendants were over 101,000 vbytes, any newly-received323transaction that was also a descendant would be ignored. Now, one324extra descendant will be allowed provided it is an immediate325descendant (child) and the child's size is 10,000 vbytes or less.326This makes it possible for two-party contract protocols such as327Lightning Network to give each participant an output they can spend328immediately for Child-Pays-For-Parent (CPFP) fee bumping without329allowing one malicious participant to fill the entire package and thus330prevent the other participant from spending their output. (#15681)332- Transactions with outputs paying v1 to v16 witness versions (future333segwit versions) are now accepted into the mempool, relayed, and334mined. Attempting to spend those outputs remains forbidden by policy335("non-standard"). When this change has been widely deployed, wallets336and services can accept any valid bech32 Bitcoin address without337concern that transactions paying future segwit versions will become338stuck in an unconfirmed state. (#15846)340- Legacy transactions (transactions with no segwit inputs) must now be341sent using the legacy encoding format, enforcing the rule specified in342BIP144. (#14039)344Wallet345------347- When in pruned mode, a rescan that was triggered by an `importwallet`,348`importpubkey`, `importaddress`, or `importprivkey` RPC will only fail349when blocks have been pruned. Previously it would fail when `-prune`350has been set. This change allows setting `-prune` to a high value351(e.g. the disk size) without the calls to any of the import RPCs352failing until the first block is pruned. (#15870)354- When creating a transaction with a fee above `-maxtxfee` (default 0.1355BTC), the RPC commands `walletcreatefundedpsbt` and356`fundrawtransaction` will now fail instead of rounding down the fee.357Be aware that the `feeRate` argument is specified in BTC per 1,000358vbytes, not satoshi per vbyte. (#16257)360- A new wallet flag `avoid_reuse` has been added (default off). When361enabled, a wallet will distinguish between used and unused addresses,362and default to not use the former in coin selection. When setting363this flag on an existing wallet, rescanning the blockchain is required364to correctly mark previously used destinations. Together with "avoid365partial spends" (added in Bitcoin Core v0.17.0), this can eliminate a366serious privacy issue where a malicious user can track spends by367sending small payments to a previously-paid address that would then368be included with unrelated inputs in future payments. (#13756)370Build system changes371--------------------373- Python >=3.5 is now required by all aspects of the project. This374includes the build systems, test framework and linters. The previously375supported minimum (3.4), was EOL in March 2019. (#14954)377- The minimum supported miniUPnPc API version is set to 10. This keeps378compatibility with Ubuntu 16.04 LTS and Debian 8 `libminiupnpc-dev`379packages. Please note, on Debian this package is still vulnerable to380[CVE-2017-8798](https://security-tracker.debian.org/tracker/CVE-2017-8798)381(in jessie only) and382[CVE-2017-1000494](https://security-tracker.debian.org/tracker/CVE-2017-1000494)383(both in jessie and in stretch). (#15993)3850.19.0 change log386=================388### Consensus389- #16128 Delete error-prone CScript constructor only used with FindAndDelete (instagibbs)390- #16060 Bury bip9 deployments (jnewbery)392### Policy393- #15557 Enhance `bumpfee` to include inputs when targeting a feerate (instagibbs)394- #15846 Make sending to future native witness outputs standard (sipa)396### Block and transaction handling397- #15632 Remove ResendWalletTransactions from the Validation Interface (jnewbery)398- #14121 Index for BIP 157 block filters (jimpo)399- #15141 Rewrite DoS interface between validation and net_processing (sdaftuar)400- #15880 utils and libraries: Replace deprecated Boost Filesystem functions (hebasto)401- #15971 validation: Add compile-time checking for negative locking requirement in LimitValidationInterfaceQueue (practicalswift)402- #15999 init: Remove dead code in LoadChainTip (MarcoFalke)403- #16015 validation: Hold cs_main when reading chainActive in RewindBlockIndex (practicalswift)404- #16056 remove unused magic number from consistency check (instagibbs)405- #16171 Remove -mempoolreplacement to prevent needless block prop slowness (TheBlueMatt)406- #15894 Remove duplicated "Error: " prefix in logs (hebasto)407- #14193 validation: Add missing mempool locks (MarcoFalke)408- #15681 Allow one extra single-ancestor transaction per package (TheBlueMatt)409- #15305 [validation] Crash if disconnecting a block fails (sdaftuar)410- #16471 log correct messages when CPFP fails (jnewbery)411- #16433 txmempool: Remove unused default value MemPoolRemovalReason::UNKNOWN (MarcoFalke)412- #13868 Remove unused fScriptChecks parameter from CheckInputs (Empact)413- #16421 Conservatively accept RBF bumps bumping one tx at the package limits (TheBlueMatt)414- #16854 Prevent UpdateTip log message from being broken up (stevenroose)415- #16956 validation: Make GetWitnessCommitmentIndex public (MarcoFalke)416- #16713 Ignore old versionbit activations to avoid 'unknown softforks' warning (jnewbery)417- #17002 chainparams: Bump assumed chain params (MarcoFalke)418- #16849 Fix block index inconsistency in InvalidateBlock() (sdaftuar)420### P2P protocol and network code421- #15597 Generate log entry when blocks messages are received unexpectedly (pstratem)422- #15654 Remove unused unsanitized user agent string CNode::strSubVer (MarcoFalke)423- #15689 netaddress: Update CNetAddr for ORCHIDv2 (dongcarl)424- #15834 Fix transaction relay bugs introduced in #14897 and expire transactions from peer in-flight map (sdaftuar)425- #15651 torcontrol: Use the default/standard network port for Tor hidden services, even if the internal port is set differently (luke-jr)426- #16188 Document what happens to getdata of unknown type (MarcoFalke)427- #15649 Add ChaCha20Poly1305@Bitcoin AEAD (jonasschnelli)428- #16152 Disable bloom filtering by default (TheBlueMatt)429- #15993 Drop support of the insecure miniUPnPc versions (hebasto)430- #16197 Use mockable time for tx download (MarcoFalke)431- #16248 Make whitebind/whitelist permissions more flexible (NicolasDorier)432- #16618 [Fix] Allow connection of a noban banned peer (NicolasDorier)433- #16631 Restore default whitelistrelay to true (NicolasDorier)434- #15759 Add 2 outbound block-relay-only connections (sdaftuar)435- #15558 Don't query all DNS seeds at once (sipa)436- #16999 0.19 seeds update (laanwj)438### Wallet439- #15288 Remove wallet -> node global function calls (ryanofsky)440- #15491 Improve log output for errors during load (gwillen)441- #13541 wallet/rpc: sendrawtransaction maxfeerate (kallewoof)442- #15680 Remove resendwallettransactions RPC method (jnewbery)443- #15508 Refactor analyzepsbt for use outside RPC code (gwillen)444- #15747 Remove plethora of Get*Balance (MarcoFalke)445- #15728 Refactor relay transactions (jnewbery)446- #15639 bitcoin-wallet tool: Drop libbitcoin_server.a dependency (ryanofsky)447- #15853 Remove unused import checkpoints.h (MarcoFalke)448- #15780 add cachable amounts for caching credit/debit values (kallewoof)449- #15778 Move maxtxfee from node to wallet (jnewbery)450- #15901 log on rescan completion (andrewtoth)451- #15917 Avoid logging no_such_file_or_directory error (promag)452- #15452 Replace CScriptID and CKeyID in CTxDestination with dedicated types (instagibbs)453- #15870 Only fail rescan when blocks have actually been pruned (MarcoFalke)454- #15006 Add option to create an encrypted wallet (achow101)455- #16001 Give WalletModel::UnlockContext move semantics (sipa)456- #15741 Batch write imported stuff in importmulti (achow101)457- #16144 do not encrypt wallets with disabled private keys (mrwhythat)458- #15024 Allow specific private keys to be derived from descriptor (meshcollider)459- #13756 "avoid_reuse" wallet flag for improved privacy (kallewoof)460- #16226 Move ismine to the wallet module (achow101)461- #16239 wallet/rpc: follow-up clean-up/fixes to avoid_reuse (kallewoof)462- #16286 refactoring: wallet: Fix GCC 7.4.0 warning (hebasto)463- #16257 abort when attempting to fund a transaction above -maxtxfee (Sjors)464- #16237 Have the wallet give out destinations instead of keys (achow101)465- #16322 Fix -maxtxfee check by moving it to CWallet::CreateTransaction (promag)466- #16361 Remove redundant pre-TopUpKeypool check (instagibbs)467- #16244 Move wallet creation out of the createwallet rpc into its own function (achow101)468- #16227 Refactor CWallet's inheritance chain (achow101)469- #16208 Consume ReserveDestination on successful CreateTransaction (instagibbs)470- #16301 Use CWallet::Import* functions in all import* RPCs (achow101)471- #16402 Remove wallet settings from chainparams (MarcoFalke)472- #16415 Get rid of PendingWalletTx class (ryanofsky)473- #15588 Log the actual wallet file version and no longer publicly expose the "version" record (achow101)474- #16399 Improve wallet creation (fjahr)475- #16475 Enumerate walletdb keys (MarcoFalke)476- #15709 Do not add "setting" key as unknown (Bushstar)477- #16451 Remove CMerkleTx (jnewbery)478- #15906 Move min_depth and max_depth to coin control (amitiuttarwar)479- #16502 Drop unused OldKey (promag)480- #16394 Allow createwallet to take empty passwords to make unencrypted wallets (achow101)481- #15911 Use wallet RBF default for walletcreatefundedpsbt (Sjors)482- #16503 Remove p2pEnabled from Chain interface (ariard)483- #16557 restore coinbase and confirmed/conflicted checks in SubmitMemoryPoolAndRelay() (jnewbery)484- #14934 Descriptor expansion cache clarifications (Sjors)485- #16383 rpcwallet: default include_watchonly to true for watchonly wallets (jb55)486- #16542 Return more specific errors about invalid descriptors (achow101)487- #16572 Fix Char as Bool in Wallet (JeremyRubin)488- #16753 extract PubKey from P2PK script with Solver (theStack)489- #16716 Use wallet name instead of pointer on unload/release (promag)490- #16185 gettransaction: add an argument to decode the transaction (darosior)491- #16745 Translate all initErrors in CreateWalletFromFile (MarcoFalke)492- #16792 Assert that the HRP is lowercase in Bech32::Encode (meshcollider)493- #16624 encapsulate transactions state (ariard)494- #16830 Cleanup walletinitinterface.h (hebasto)495- #16796 Fix segfault in CreateWalletFromFile (MarcoFalke)496- #16866 Rename 'decode' argument in gettransaction method to 'verbose' (jnewbery)497- #16727 Explicit feerate for bumpfee (instagibbs)498- #16609 descriptor: fix missed m_script_arg arg renaming in #14934 (fanquake)500### RPC and other APIs
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.