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.
501multiple IP addresses. If you manually ban a peer, such as by using502the `setban` RPC, all connections from that peer will still be503rejected.505Wallet506-------508- The key metadata will need to be upgraded the first time that the HD509seed is available. For unencrypted wallets this will occur on wallet510loading. For encrypted wallets this will occur the first time the511wallet is unlocked.513- Newly encrypted wallets will no longer require restarting the514software. Instead such wallets will be completely unloaded and515reloaded to achieve the same effect.517- A sub-project of Bitcoin Core now provides Hardware Wallet Interaction518(HWI) scripts that allow command-line users to use several popular519hardware key management devices with Bitcoin Core. See their [project520page](https://github.com/bitcoin-core/HWI#readme) for details.522Security523--------525- This release changes the Random Number Generator (RNG) used from526OpenSSL to Bitcoin Core's own implementation, although entropy527gathered by Bitcoin Core is fed out to OpenSSL and then read back in528when the program needs strong randomness. This moves Bitcoin Core a529little closer to no longer needing to depend on OpenSSL, a dependency530that has caused security issues in the past. The new implementation531gathers entropy from multiple sources, including from hardware532supporting the rdseed CPU instruction.534Changes for particular platforms535--------------------------------537- On macOS, Bitcoin Core now opts out of application CPU throttling538("app nap") during initial blockchain download, when catching up from539over 100 blocks behind the current chain tip, or when reindexing chain540data. This helps prevent these operations from taking an excessively541long time because the operating system is attempting to conserve542power.5440.18.0 change log545=================547### Consensus548- #14247 Fix crash bug with duplicate inputs within a transaction (TheBlueMatt)550### Mining551- #14811 Mining: Enforce that segwit option must be set in GBT (jnewbery)553### Block and transaction handling554- #13310 Report progress in ReplayBlocks while rolling forward (promag)555- #13783 validation: Pass tx pool reference into CheckSequenceLocks (MarcoFalke)556- #14834 validation: Assert that pindexPrev is non-null when required (kallewoof)557- #14085 index: Fix for indexers skipping genesis block (jimpo)558- #14963 mempool, validation: Explain `cs_main` locking semantics (MarcoFalke)559- #15193 Default `-whitelistforcerelay` to off (sdaftuar)560- #15429 Update `assumevalid`, `minimumchainwork`, and `getchaintxstats` to height 563378 (gmaxwell)561- #15552 Granular invalidateblock and RewindBlockIndex (MarcoFalke)562- #14841 Move CheckBlock() call to critical section (hebasto)564### P2P protocol and network code565- #14025 Remove dead code for nVersion=10300 (MarcoFalke)566- #12254 BIP 158: Compact Block Filters for Light Clients (jimpo)567- #14073 blockfilter: Avoid out-of-bounds script access (jimpo)568- #14140 Switch nPrevNodeCount to vNodesSize (pstratem)569- #14027 Skip stale tip checking if outbound connections are off or if reindexing (gmaxwell)570- #14532 Never bind `INADDR_ANY` by default, and warn when doing so explicitly (luke-jr)571- #14733 Make peer timeout configurable, speed up very slow test and ensure correct code path tested (zallarak)572- #14336 Implement poll (pstratem)573- #15051 IsReachable is the inverse of IsLimited (DRY). Includes unit tests (mmachicao)574- #15138 Drop IsLimited in favor of IsReachable (Empact)575- #14605 Return of the Banman (dongcarl)576- #14970 Add dnsseed.emzy.de to DNS seeds (Emzy)577- #14929 Allow connections from misbehavior banned peers (gmaxwell)578- #15345 Correct comparison of addr count (dongcarl)579- #15201 Add missing locking annotation for vNodes. vNodes is guarded by cs_vNodes (practicalswift)580- #14626 Select orphan transaction uniformly for eviction (sipa)581- #15486 Ensure tried collisions resolve, and allow feeler connections to existing outbound netgroups (sdaftuar)583### Wallet584- #13962 Remove unused `dummy_tx` variable from FillPSBT (dongcarl)585- #13967 Don't report `minversion` wallet entry as unknown (instagibbs)586- #13988 Add checks for settxfee reasonableness (ajtowns)587- #12559 Avoid locking `cs_main` in some wallet RPC (promag)588- #13631 Add CMerkleTx::IsImmatureCoinBase method (Empact)589- #14023 Remove accounts RPCs (jnewbery)590- #13825 Kill accounts (jnewbery)591- #10605 Add AssertLockHeld assertions in CWallet::ListCoins (ryanofsky)592- #12490 Remove deprecated wallet rpc features from `bitcoin_server` (jnewbery)593- #14138 Set `encrypted_batch` to nullptr after delete. Avoid double free in the case of NDEBUG (practicalswift)594- #14168 Remove `ENABLE_WALLET` from `libbitcoin_server.a` (jnewbery)595- #12493 Reopen CDBEnv after encryption instead of shutting down (achow101)596- #14282 Remove `-usehd` option (jnewbery)597- #14146 Remove trailing separators from `-walletdir` arg (PierreRochard)598- #14291 Add ListWalletDir utility function (promag)599- #14468 Deprecate `generate` RPC method (jnewbery)600- #11634 Add missing `cs_wallet`/`cs_KeyStore` locks to wallet (practicalswift)601- #14296 Remove `addwitnessaddress` (jnewbery)602- #14451 Add BIP70 deprecation warning and allow building GUI without BIP70 support (jameshilliard)603- #14320 Fix duplicate fileid detection (ken2812221)604- #14561 Remove `fs::relative` call and fix listwalletdir tests (promag)605- #14454 Add SegWit support to importmulti (MeshCollider)606- #14410 rpcwallet: `ischange` field for `getaddressinfo` RPC (mrwhythat)607- #14350 Add WalletLocation class (promag)608- #14689 Require a public key to be retrieved when signing a P2PKH input (achow101)609- #14478 Show error to user when corrupt wallet unlock fails (MeshCollider)610- #14411 Restore ability to list incoming transactions by label (ryanofsky)611- #14552 Detect duplicate wallet by comparing the db filename (ken2812221)612- #14678 Remove redundant KeyOriginInfo access, already done in CreateSig (instagibbs)613- #14477 Add ability to convert solvability info to descriptor (sipa)614- #14380 Fix assert crash when specified change output spend size is unknown (instagibbs)615- #14760 Log env path in `BerkeleyEnvironment::Flush` (promag)616- #14646 Add expansion cache functions to descriptors (unused for now) (sipa)617- #13076 Fix ScanForWalletTransactions to return an enum indicating scan result: `success` / `failure` / `user_abort` (Empact)618- #14821 Replace CAffectedKeysVisitor with descriptor based logic (sipa)619- #14957 Initialize `stop_block` in CWallet::ScanForWalletTransactions (Empact)620- #14565 Overhaul `importmulti` logic (sipa)621- #15039 Avoid leaking nLockTime fingerprint when anti-fee-sniping (MarcoFalke)622- #14268 Introduce SafeDbt to handle Dbt with free or `memory_cleanse` raii-style (Empact)623- #14711 Remove uses of chainActive and mapBlockIndex in wallet code (ryanofsky)624- #15279 Clarify rescanblockchain doc (MarcoFalke)625- #15292 Remove `boost::optional`-related false positive -Wmaybe-uninitialized warnings on GCC compiler (hebasto)626- #13926 [Tools] bitcoin-wallet - a tool for creating and managing wallets offline (jnewbery)627- #11911 Free BerkeleyEnvironment instances when not in use (ryanofsky)628- #15235 Do not import private keys to wallets with private keys disabled (achow101)629- #15263 Descriptor expansions only need pubkey entries for PKH/WPKH (sipa)630- #15322 Add missing `cs_db` lock (promag)631- #15297 Releases dangling files on `BerkeleyEnvironment::Close` (promag)632- #14491 Allow descriptor imports with importmulti (MeshCollider)633- #15365 Add lock annotation for mapAddressBook (MarcoFalke)634- #15226 Allow creating blank (empty) wallets (alternative) (achow101)635- #15390 [wallet-tool] Close bdb when flushing wallet (jnewbery)636- #15334 Log absolute paths for the wallets (hebasto)637- #14978 Factor out PSBT utilities from RPCs for use in GUI code; related refactoring (gwillen)638- #14481 Add P2SH-P2WSH support to listunspent RPC (MeshCollider)639- #14021 Import key origin data through descriptors in importmulti (achow101)640- #14075 Import watch only pubkeys to the keypool if private keys are disabled (achow101)641- #15368 Descriptor checksums (sipa)642- #15433 Use a single wallet batch for `UpgradeKeyMetadata` (jonasschnelli)643- #15408 Remove unused `TransactionError` constants (MarcoFalke)644- #15583 Log and ignore errors in ListWalletDir and IsBerkeleyBtree (promag)645- #14195 Pass privkey export DER compression flag correctly (fingera)646- #15299 Fix assertion in `CKey::SignCompact` (promag)647- #14437 Start to separate wallet from node (ryanofsky)648- #15749 Fix: importmulti only imports origin info for PKH outputs (sipa)650### RPC and other APIs651- #12842 Prevent concurrent `savemempool` (promag)652- #13987 Report `minfeefilter` value in `getpeerinfo` RPC (ajtowns)653- #13891 Remove getinfo deprecation warning (jnewbery)654- #13399 Add `submitheader` (MarcoFalke)655- #12676 Show `bip125-replaceable` flag, when retrieving mempool entries (dexX7)656- #13723 PSBT key path cleanups (sipa)657- #14008 Preserve a format of RPC command definitions (kostyantyn)658- #9332 Let wallet `importmulti` RPC accept labels for standard scriptPubKeys (ryanofsky)659- #13983 Return more specific reject reason for submitblock (MarcoFalke)660- #13152 Add getnodeaddresses RPC command (chris-belcher)661- #14298 rest: Improve performance for JSON calls (alecalve)662- #14297 Remove warning for removed estimatefee RPC (jnewbery)663- #14373 Consistency fixes for RPC descriptions (ch4ot1c)664- #14150 Add key origin support to descriptors (sipa)665- #14518 Always throw in getblockstats if `-txindex` is required (promag)666- #14060 ZMQ: add options to configure outbound message high water mark, aka SNDHWM (mruddy)667- #13381 Add possibility to preserve labels on importprivkey (marcoagner)668- #14530 Use `RPCHelpMan` to generate RPC doc strings (MarcoFalke)669- #14720 Correctly name RPC arguments (MarcoFalke)670- #14726 Use `RPCHelpMan` for all RPCs (MarcoFalke)671- #14796 Pass argument descriptions to `RPCHelpMan` (MarcoFalke)672- #14670 http: Fix HTTP server shutdown (promag)673- #14885 Assert that named arguments are unique in `RPCHelpMan` (promag)674- #14877 Document default values for optional arguments (MarcoFalke)675- #14875 RPCHelpMan: Support required arguments after optional ones (MarcoFalke)676- #14993 Fix data race (UB) in InterruptRPC() (practicalswift)677- #14653 rpcwallet: Add missing transaction categories to RPC helptexts (andrewtoth)678- #14981 Clarify RPC `getrawtransaction`'s time help text (benthecarman)679- #12151 Remove `cs_main` lock from blockToJSON and blockheaderToJSON (promag)680- #15078 Document `bytessent_per_msg` and `bytesrecv_per_msg` (MarcoFalke)681- #15057 Correct `reconsiderblock `help text, add test (MarcoFalke)682- #12153 Avoid permanent `cs_main` lock in `getblockheader` (promag)683- #14982 Add `getrpcinfo` command (promag)684- #15122 Expand help text for `importmulti` changes (jnewbery)685- #15186 remove duplicate solvable field from `getaddressinfo` (fanquake)686- #15209 zmq: log outbound message high water mark when reusing socket (fanquake)687- #15177 rest: Improve tests and documention of /headers and /block (promag)688- #14353 rest: Add blockhash call, fetch blockhash by height (jonasschnelli)689- #15248 Compile on GCC4.8 (MarcoFalke)690- #14987 RPCHelpMan: Pass through Result and Examples (MarcoFalke)691- #15159 Remove lookup to UTXO set from GetTransaction (amitiuttarwar)692- #15245 remove deprecated mentions of signrawtransaction from fundraw help (instagibbs)693- #14667 Add `deriveaddresses` RPC util method (Sjors)694- #15357 Don't ignore `-maxtxfee` when wallet is disabled (JBaczuk)695- #15337 Fix for segfault if combinepsbt called with empty inputs (benthecarman)696- #14918 RPCHelpMan: Check default values are given at compile-time (MarcoFalke)697- #15383 mining: Omit uninitialized currentblockweight, currentblocktx (MarcoFalke)698- #13932 Additional utility RPCs for PSBT (achow101)699- #15401 Actually throw help when passed invalid number of params (MarcoFalke)700- #15471 rpc/gui: Remove 'Unknown block versions being mined' warning (laanwj)701- #15497 Consistent range arguments in scantxoutset/importmulti/deriveaddresses (sipa)702- #15510 deriveaddresses: add range to CRPCConvertParam (Sjors)703- #15582 Fix overflow bug in analyzepsbt fee: CAmount instead of int (sipa)704- #13424 Consistently validate txid / blockhash length and encoding in rpc calls (Empact)705- #15750 Remove the addresses field from the getaddressinfo return object (jnewbery)707### GUI708- #13634 Compile `boost::signals2` only once (MarcoFalke)709- #13248 Make proxy icon from statusbar clickable (mess110)710- #12818 TransactionView: highlight replacement tx after fee bump (Sjors)711- #13529 Use new Qt5 connect syntax (promag)712- #14162 Also log and print messages or questions like bitcoind (MarcoFalke)713- #14385 Avoid system harfbuzz and bz2 (theuni)714- #14450 Fix QCompleter popup regression (hebasto)715- #14177 Set C locale for amountWidget (hebasto)716- #14374 Add `Blocksdir` to Debug window (hebasto)717- #14554 Remove unused `adjustedTime` parameter (hebasto)718- #14228 Enable system tray icon by default if available (hebasto)719- #14608 Remove the "Pay only required fee…" checkbox (hebasto)720- #14521 qt, docs: Fix `bitcoin-qt -version` output formatting (hebasto)721- #13966 When private key is disabled, only show watch-only balance (ken2812221)722- #14828 Remove hidden columns in coin control dialog (promag)723- #14783 Fix `boost::signals2::no_slots_error` in early calls to InitWarning (promag)724- #14854 Cleanup SplashScreen class (hebasto)725- #14801 Use window() instead of obsolete topLevelWidget() (hebasto)726- #14573 Add Window menu (promag)727- #14979 Restore < Qt5.6 compatibility for addAction (jonasschnelli)728- #14975 Refactoring with QString::toNSString() (hebasto)729- #15000 Fix broken notificator on GNOME (hebasto)730- #14375 Correct misleading "overridden options" label (hebasto)731- #15007 Notificator class refactoring (hebasto)732- #14784 Use `WalletModel*` instead of the wallet name as map key (promag)733- #11625 Add BitcoinApplication & RPCConsole tests (ryanofsky)734- #14517 Fix start with the `-min` option (hebasto)735- #13216 implements concept for different disk sizes on intro (marcoagner)736- #15114 Replace remaining 0 with nullptr (Empact)737- #14594 Fix minimized window bug on Linux (hebasto)738- #14556 Fix confirmed transaction labeled "open" (#13299) (hebasto)739- #15149 Show current wallet name in window title (promag)740- #15136 "Peers" tab overhaul (hebasto)741- #14250 Remove redundant stopThread() and stopExecutor() signals (hebasto)742- #15040 Add workaround for QProgressDialog bug on macOS (hebasto)743- #15101 Add WalletController (promag)744- #15178 Improve "help-console" message (hebasto)745- #15210 Fix window title update (promag)746- #15167 Fix wallet selector size adjustment (hebasto)747- #15208 Remove macOS launch-at-startup when compiled with > macOS 10.11, fix memory mismanagement (jonasschnelli)748- #15163 Correct units for "-dbcache" and "-prune" (hebasto)749- #15225 Change the receive button to respond to keypool state changing (achow101)750- #15280 Fix shutdown order (promag)
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.