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.
252Low-level changes253=================255Utilities256---------258- The `bitcoin-cli` utility used with the `-getinfo` parameter now259returns a `headers` field with the number of downloaded block headers260on the best headers chain (similar to the `blocks` field that is also261returned) and a `verificationprogress` field that estimates how much262of the best block chain has been synced by the local node. The263information returned no longer includes the `protocolversion`,264`walletversion`, and `keypoololdest` fields. (#17302, #17650)266- The `bitcoin-cli` utility now accepts a `-stdinwalletpassphrase`267parameter that can be used when calling the `walletpassphrase` and268`walletpassphrasechange` RPCs to read the passphrase from standard269input without echoing it to the terminal, improving security against270anyone who can look at your screen. The existing `-stdinrpcpass`271parameter is also updated to not echo the passphrase. (#13716)273Command line274------------276- Command line options prefixed with main/test/regtest network names like277`-main.port=8333` `-test.server=1` previously were allowed but ignored. Now278they trigger "Invalid parameter" errors on startup. (#17482)280New RPCs281--------283- The `dumptxoutset` RPC outputs a serialized snapshot of the current284UTXO set. A script is provided in the `contrib/devtools` directory285for generating a snapshot of the UTXO set at a particular block286height. (#16899)288- The `generatetodescriptor` RPC allows testers using regtest mode to289generate blocks that pay an arbitrary output script descriptor.290(#16943)292Updated RPCs293------------295- The `verifychain` RPC default values are now static instead of296depending on the command line options or configuration file297(`-checklevel`, and `-checkblocks`). Users can pass in the RPC298arguments explicitly when they don't want to rely on the default299values. (#18541)301- The `getblockchaininfo` RPC's `verificationprogress` field will no302longer report values higher than 1. Previously it would occasionally303report the chain was more than 100% verified. (#17328)305Tests306-----308- It is now an error to use an unqualified `walletdir=path` setting in309the config file if running on testnet or regtest networks. The setting310now needs to be qualified as `chain.walletdir=path` or placed in the311appropriate `[chain]` section. (#17447)313- `-fallbackfee` was 0 (disabled) by default for the main chain, but3140.0002 by default for the test chains. Now it is 0 by default for all315chains. Testnet and regtest users will have to add316`fallbackfee=0.0002` to their configuration if they weren't setting it317and they want it to keep working like before. (#16524)319Build system320------------322- Support is provided for building with the Android Native Development323Kit (NDK). (#16110)3250.20.0 change log326=================328### Mining329- #18742 miner: Avoid stack-use-after-return in validationinterface (MarcoFalke)331### Block and transaction handling332- #15283 log: Fix UB with bench on genesis block (instagibbs)333- #16507 feefilter: Compute the absolute fee rather than stored rate (instagibbs)334- #16688 log: Add validation interface logging (jkczyz)335- #16805 log: Add timing information to FlushStateToDisk() (jamesob)336- #16902 O(1) `OP_IF/NOTIF/ELSE/ENDIF` script implementation (sipa)337- #16945 introduce CChainState::GetCoinsCacheSizeState (jamesob)338- #16974 Walk pindexBestHeader back to ChainActive().Tip() if it is invalid (TheBlueMatt)339- #17004 Remove REJECT code from CValidationState (jnewbery)340- #17080 Explain why `fCheckDuplicateInputs` can not be skipped and remove it (MarcoFalke)341- #17328 GuessVerificationProgress: cap the ratio to 1 (darosior)342- #17399 Templatize ValidationState instead of subclassing (jkczyz)343- #17407 node: Add reference to mempool in NodeContext (MarcoFalke)344- #17708 prevector: Avoid misaligned member accesses (ajtowns)345- #17850,#17896,#17957,#18021,#18021,#18112 Serialization improvements (sipa)346- #17925 Improve UpdateTransactionsFromBlock with Epochs (JeremyRubin)347- #18002 Abstract out script execution out of `VerifyWitnessProgram()` (sipa)348- #18388 Make VerifyWitnessProgram use a Span stack (sipa)349- #18433 serialization: prevent int overflow for big Coin::nHeight (pierreN)350- #18500 chainparams: Bump assumed valid hash (MarcoFalke)351- #18551 Do not clear validationinterface entries being executed (sipa)353### P2P protocol and network code354- #15437 Remove BIP61 reject messages (MarcoFalke)355- #16702 Supply and use asmap to improve IP bucketing in addrman (naumenkogs)356- #16851 Continue relaying transactions after they expire from mapRelay (ajtowns)357- #17164 Avoid allocating memory for addrKnown where we don't need it (naumenkogs)358- #17243 tools: add PoissonNextSend method that returns mockable time (amitiuttarwar)359- #17251 SocketHandler logs peer id for close and disconnect (Sjors)360- #17573 Seed RNG with precision timestamps on receipt of net messages (TheBlueMatt)361- #17624 Fix an uninitialized read in ProcessMessage(…, "tx", …) when receiving a transaction we already have (practicalswift)362- #17754 Don't allow resolving of std::string with embedded NUL characters. Add tests (practicalswift)363- #17758 Fix CNetAddr::IsRFC2544 comment + tests (tynes)364- #17812 config, net, test: Asmap feature refinements and functional tests (jonatack)365- #17951 Use rolling bloom filter of recent block txs for AlreadyHave() check (sdaftuar)366- #17985 Remove forcerelay of rejected txs (MarcoFalke)367- #18023 Fix some asmap issues (sipa)368- #18054 Reference instead of copy in BlockConnected range loop (jonatack)369- #18376 Fix use-after-free in tests (vasild)370- #18454 Make addr relay mockable, add test (MarcoFalke)371- #18458 Add missing `cs_vNodes` lock (MarcoFalke)372- #18506 Hardcoded seeds update for 0.20 (laanwj)373- #18808 Drop unknown types in getdata (jnewbery)374- #18962 Only send a getheaders for one block in an INV (jnewbery)376### Wallet377- #13339 Replace %w by wallet name in -walletnotify script (promag)378- #15931 Remove GetDepthInMainChain dependency on locked chain interface (ariard)379- #16373 bumpfee: Return PSBT when wallet has privkeys disabled (instagibbs)380- #16524 Disable -fallbackfee by default (jtimon)381- #16766 Make IsTrusted scan parents recursively (JeremyRubin)382- #16884 Change default address type to bech32 (instagibbs)383- #16911 Only check the hash of transactions loaded from disk (achow101)384- #16923 Handle duplicate fileid exception (promag)385- #17056 descriptors: Introduce sortedmulti descriptor (achow101)386- #17070 Avoid showing GUI popups on RPC errors (MarcoFalke)387- #17138 Remove wallet access to some node arguments (jnewbery)388- #17237 LearnRelatedScripts only if KeepDestination (promag)389- #17260 Split some CWallet functions into new LegacyScriptPubKeyMan (achow101)390- #17261 Make ScriptPubKeyMan an actual interface and the wallet to have multiple (achow101)391- #17290 Enable BnB coin selection for preset inputs and subtract fee from outputs (achow101)392- #17373 Various fixes and cleanup to keypool handling in LegacyScriptPubKeyMan and CWallet (achow101)393- #17410 Rename `db` log category to `walletdb` (like `coindb`) (laanwj)394- #17444 Avoid showing GUI popups on RPC errors (take 2) (MarcoFalke)395- #17447 Make -walletdir network only (promag)396- #17537 Cleanup and move opportunistic and superfluous TopUp()s (achow101)397- #17553 Remove out of date comments for CalculateMaximumSignedTxSize (instagibbs)398- #17568 Fix when sufficient preset inputs and subtractFeeFromOutputs (achow101)399- #17677 Activate watchonly wallet behavior for LegacySPKM only (instagibbs)400- #17719 Document better -keypool as a look-ahead safety mechanism (ariard)401- #17843 Reset reused transactions cache (fjahr)402- #17889 Improve CWallet:MarkDestinationsDirty (promag)403- #18034 Get the OutputType for a descriptor (achow101)404- #18067 Improve LegacyScriptPubKeyMan::CanProvide script recognition (ryanofsky)405- #18115 Pass in transactions and messages for signing instead of exporting the private keys (achow101)406- #18192,#18546 Bugfix: Wallet: Safely deal with change in the address book (luke-jr)407- #18204 descriptors: Improve descriptor cache and cache xpubs (achow101)408- #18274 rpc/wallet: Initialize nFeeRequired to avoid using garbage value on failure (kallewoof)409- #18312 Remove deprecated fee bumping by totalFee (jonatack)410- #18338 Fix wallet unload race condition (promag)412### RPC and other APIs413- #12763 Add RPC Whitelist Feature from #12248 (JeremyRubin)414- #13716 cli: `-stdinwalletpassphrase` and non-echo stdin passwords (kallewoof)415- #16689 Add missing fields to wallet rpc help output (ariard)416- #16821 Fix bug where duplicate PSBT keys are accepted (erasmospunk)417- #16899 UTXO snapshot creation (dumptxoutset)418- #17156 psbt: Check that various indexes and amounts are within bounds (achow101)419- #17264 Set default bip32derivs to true for psbt methods (Sjors)420- #17283 improve getaddressinfo test coverage, help, code docs (jonatack)421- #17302 cli: Add "headers" and "verificationprogress" to -getinfo (laanwj)422- #17318 replace asserts in RPC code with `CHECK_NONFATAL` and add linter (adamjonas)423- #17437 Expose block height of wallet transactions (promag)424- #17519 Remove unused `COINBASE_FLAGS` (narula)425- #17578 Simplify getaddressinfo labels, deprecate previous behavior (jonatack)426- #17585 deprecate getaddressinfo label (jonatack)427- #17746 Remove vector copy from listtransactions (promag)428- #17809 Auto-format RPCResult (MarcoFalke)429- #18032 Output a descriptor in createmultisig and addmultisigaddress (achow101)430- #18122 Update validateaddress RPCExamples to bech32 (theStack)431- #18208 Change RPCExamples to bech32 (yusufsahinhamza)432- #18268 Remove redundant types from descriptions (docallag)433- #18346 Document an RPCResult for all calls; Enforce at compile time (MarcoFalke)434- #18396 Add missing HelpExampleRpc for getblockfilter (theStack)435- #18398 Fix broken RPCExamples for waitforblock(height) (theStack)436- #18444 Remove final comma for last entry of fixed-size arrays/objects in RPCResult (luke-jr)437- #18459 Remove unused getbalances() code (jonatack)438- #18484 Correctly compute redeemScript from witnessScript for signrawtransaction (achow101)439- #18487 Fix rpcRunLater race in walletpassphrase (promag)440- #18499 Make rpc documentation not depend on call-time rpc args (MarcoFalke)441- #18532 Avoid initialization-order-fiasco on static CRPCCommand tables (MarcoFalke)442- #18541 Make verifychain default values static, not depend on global args (MarcoFalke)443- #18809 Do not advertise dumptxoutset as a way to flush the chainstate (MarcoFalke)444- #18814 Relock wallet only if most recent callback (promag)446### GUI447- #15023 Restore RPC Console to non-wallet tray icon menu (luke-jr)448- #15084 Don't disable the sync overlay when wallet is disabled (benthecarman)449- #15098 Show addresses for "SendToSelf" transactions (hebasto)450- #15756 Add shortcuts for tab tools (promag)451- #16944 create PSBT with watch-only wallet (Sjors)452- #16964 Change sendcoins dialogue Yes to Send (instagibbs)453- #17068 Always generate `bitcoinstrings.cpp` on `make translate` (D4nte)454- #17096 Rename debug window (Zero-1729)455- #17105 Make RPCConsole::TabTypes an enum class (promag)456- #17125 Add toolTip and placeholderText to sign message fields (dannmat)457- #17165 Remove BIP70 support (fanquake)458- #17180 Improved tooltip for send amount field (JeremyCrookshank)459- #17186 Add placeholder text to the sign message field (Danny-Scott)460- #17195 Send amount placeholder value (JeremyCrookshank)461- #17226 Fix payAmount tooltip in SendCoinsEntry (promag)462- #17360 Cleaning up hide button tool tip (Danny-Scott)463- #17446 Changed tooltip for 'Label' & 'Message' text fields to be more clear (dannmat)464- #17453 Fix intro dialog labels when the prune button is toggled (hebasto)465- #17474 Bugfix: GUI: Recognise `NETWORK_LIMITED` in formatServicesStr (luke-jr)466- #17492 Bump fee returns PSBT on clipboard for watchonly-only wallets (instagibbs)467- #17567 Remove macOS start on login code (fanquake)468- #17587 Show watch-only balance in send screen (Sjors)469- #17694 Disable 3rd-party tx-urls when wallet disabled (brakmic)470- #17696 Force set nPruneSize in QSettings after the intro dialog (hebasto)471- #17702 Move static placeholder texts to forms (laanwj)472- #17826 Log Qt related info (hebasto)473- #17886 Restore English translation option (achow101)474- #17906 Set CConnman byte counters earlier to avoid uninitialized reads (ryanofsky)475- #17935 Hide HD & encryption icons when no wallet loaded (brakmic)476- #17998 Shortcut to close ModalOverlay (emilengler)477- #18007 Bugfix: GUI: Hide the HD/encrypt icons earlier so they get re-shown if another wallet is open (luke-jr)478- #18060 Drop PeerTableModel dependency to ClientModel (promag)479- #18062 Fix unintialized WalletView::progressDialog (promag)480- #18091 Pass clientmodel changes from walletframe to walletviews (jonasschnelli)481- #18101 Fix deprecated QCharRef usage (hebasto)482- #18121 Throttle GUI update pace when -reindex (hebasto)483- #18123 Fix race in WalletModel::pollBalanceChanged (ryanofsky)484- #18160 Avoid Wallet::GetBalance in WalletModel::pollBalanceChanged (promag)485- #18360 Bump transifex slug and update English translations for 0.20 (laanwj)486- #18402 Display mapped AS in peers info window (jonatack)487- #18492 Translations update pre-branch (laanwj)488- #18549 Fix Window -> Minimize menu item (hebasto)489- #18578 Fix leak in CoinControlDialog::updateView (promag)490- #18894 Fix manual coin control with multiple wallets loaded (promag)492### Build system493- #16667 Remove mingw linker workaround from win gitian descriptor (fanquake)494- #16669 Use new fork of osslsigncode for windows gitian signing (fanquake)495- #16949 Only pass --disable-dependency-tracking to packages that understand it (fanquake)496- #17008 Bump libevent to 2.1.11 in depends (stefanwouldgo)497- #17029 gitian: Various improvements for windows descriptor (dongcarl)498- #17033 Disable _FORTIFY_SOURCE when enable-debug (achow101)499- #17057 Switch to upstream libdmg-hfsplus (fanquake)500- #17066 Remove workaround for ancient libtool (hebasto)
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.