Bitcoin Core Changelog

What's new in Bitcoin Core 25.0

Oct 19, 2023
  • P2P and network changes:
  • Transactions of non-witness size 65 bytes and above are now allowed by mempool and relay policy. This is to better reflect the actual afforded protections against CVE-2017-12842 and open up additional use-cases of smaller transaction sizes. (#26265)
  • New RPCs:
  • The scanblocks RPC returns the relevant blockhashes from a set of descriptors by scanning all blockfilters in the given range. It can be used in combination with the getblockheader and rescanblockchain RPCs to achieve fast wallet rescans. Note that this functionality can only be used if a compact block filter index (-blockfilterindex=1) has been constructed by the node. (#23549)
  • Updated RPCs:
  • All JSON-RPC methods accept a new named parameter called args that can contain positional parameter values. This is a convenience to allow some parameter values to be passed by name without having to name every value. The python test framework and bitcoin-cli tool both take advantage of this, so for example:
  • bitcoin-cli -named createwallet wallet_name=mywallet load_on_startup=1
  • Can now be shortened to:
  • bitcoin-cli -named createwallet mywallet load_on_startup=1
  • The verifychain RPC will now return false if the checks didn’t fail, but couldn’t be completed at the desired depth and level. This could be due to missing data while pruning, due to an insufficient dbcache or due to the node being shutdown before the call could finish. (#25574)
  • sendrawtransaction has a new, optional argument, maxburnamount with a default value of 0. Any transaction containing an unspendable output with a value greater than maxburnamount will not be submitted. At present, the outputs deemed unspendable are those with scripts that begin with an OP_RETURN code (known as ‘datacarriers’), scripts that exceed the maximum script size, and scripts that contain invalid opcodes.
  • The testmempoolaccept RPC now returns 2 additional results within the “fees” result: “effective-feerate” is the feerate including fees and sizes of transactions validated together if package validation was used, and also includes any modified fees from prioritisetransaction. The “effective-includes” result lists the wtxids of transactions whose modified fees and sizes were used in the effective-feerate (#26646).
  • decodescript may now infer a Miniscript descriptor under P2WSH context if it is not lacking information. (#27037)
  • finalizepsbt is now able to finalize a transaction with inputs spending Miniscript-compatible P2WSH scripts. (#24149)
  • Changes to wallet related RPCs can be found in the Wallet section below.
  • Build System:
  • The --enable-upnp-default and --enable-natpmp-default options have been removed. If you want to use port mapping, you can configure it using a .conf file, or by passing the relevant options at runtime. (#26896)
  • Updated settings:
  • If the -checkblocks or -checklevel options are explicitly provided by the user, but the verification checks cannot be completed due to an insufficient dbcache, Bitcoin Core will now return an error at startup. (#25574)
  • Ports specified in -port and -rpcport options are now validated at startup. Values that previously worked and were considered valid can now result in errors. (#22087)
  • Setting -blocksonly will now reduce the maximum mempool memory to 5MB (users may still use -maxmempool to override). Previously, the default 300MB would be used, leading to unexpected memory usage for users running with -blocksonly expecting it to eliminate mempool memory usage.
  • As unused mempool memory is shared with dbcache, this also reduces the dbcache size for users running with -blocksonly, potentially impacting performance.
  • Setting -maxconnections=0 will now disable -dnsseed and -listen (users may still set them to override).
  • Changes to GUI or wallet related settings can be found in the GUI or Wallet section below.
  • New settings:
  • The shutdownnotify option is used to specify a command to execute synchronously before Bitcoin Core has begun its shutdown sequence. (#23395)
  • Wallet:
  • The minconf option, which allows a user to specify the minimum number of confirmations a UTXO being spent has, and the maxconf option, which allows specifying the maximum number of confirmations, have been added to the following RPCs in #25375:
  • fundrawtransaction
  • send
  • walletcreatefundedpsbt
  • sendall
  • Added a new next_index field in the response in listdescriptors to have the same format as importdescriptors (#26194)
  • RPC listunspent now has a new argument include_immature_coinbase to include coinbase UTXOs that don’t meet the minimum spendability depth requirement (which before were silently skipped). (#25730)
  • Rescans for descriptor wallets are now significantly faster if compact block filters (BIP158) are available. Since those are not constructed by default, the configuration option “-blockfilterindex=1” has to be provided to take advantage of the optimization. This improves the performance of the RPC calls rescanblockchain, importdescriptors and restorewallet. (#25957)
  • RPC unloadwallet now fails if a rescan is in progress. (#26618)
  • Wallet passphrases may now contain null characters. Prior to this change, only characters up to the first null character were recognized and accepted. (#27068)
  • Address Purposes strings are now restricted to the currently known values of “send”, “receive”, and “refund”. Wallets that have unrecognized purpose strings will have loading warnings, and the listlabels RPC will raise an error if an unrecognized purpose is requested. (#27217)
  • In the createwallet, loadwallet, unloadwallet, and restorewallet RPCs, the “warning” string field is deprecated in favor of a “warnings” field that returns a JSON array of strings to better handle multiple warning messages and for consistency with other wallet RPCs. The “warning” field will be fully removed from these RPCs in v26. It can be temporarily re-enabled during the deprecation period by launching bitcoind with the configuration option -deprecatedrpc=walletwarningfield. (#27279)
  • Descriptor wallets can now spend coins sent to P2WSH Miniscript descriptors. (#24149)
  • GUI changes:
  • The “Mask values” is a persistent option now. (gui#701)
  • The “Mask values” option affects the “Transaction” view now, in addition to the “Overview” one. (gui#708)
  • REST:
  • A new /rest/deploymentinfo endpoint has been added for fetching various state info regarding deployments of consensus changes. (#25412)
  • Binary verification:
  • The binary verification script has been updated. In previous releases it would verify that the binaries had been signed with a single “release key”. In this release and moving forward it will verify that the binaries are signed by a threshold of trusted keys. For more details and examples, see: https://github.com/bitcoin/bitcoin/blob/master/contrib/verify-binaries/README.md (#27358)
  • Low-level changes:
  • RPC:
  • The JSON-RPC server now rejects requests where a parameter is specified multiple times with the same name, instead of silently overwriting earlier parameter values with later ones. (#26628)
  • RPC listsinceblock now accepts an optional label argument to fetch incoming transactions having the specified label. (#25934)
  • Previously setban, addpeeraddress, walletcreatefundedpsbt, methods allowed non-boolean and non-null values to be passed as boolean parameters. Any string, number, array, or object value that was passed would be treated as false. After this change, passing any value except true, false, or null now triggers a JSON value is not of expected type error. (#26213)

New in Bitcoin Core 23.1.0 (Dec 22, 2022)

  • Consensus:
  • #19438 Introduce deploymentstatus (ajtowns)
  • #20207 Follow-up extra comments on taproot code and tests (sipa)
  • #21330 Deal with missing data in signature hashes more consistently (sipa)
  • Policy:
  • #18766 Disable fee estimation in blocksonly mode (by removing the fee estimates global) (darosior)
  • #20497 Add MAX_STANDARD_SCRIPTSIG_SIZE to policy (sanket1729)
  • #20611 Move TX_MAX_STANDARD_VERSION to policy (MarcoFalke)
  • Mining:
  • #19937, bitcoin/bitcoin#20923 Signet mining utility (ajtowns)
  • Block and transaction handling:
  • #14501 Fix possible data race when committing block files (luke-jr)
  • #15946 Allow maintaining the blockfilterindex when using prune (jonasschnelli)
  • #18710 Add local thread pool to CCheckQueue (hebasto)
  • #19521 Coinstats Index (fjahr)
  • #19806 UTXO snapshot activation (jamesob)
  • #19905 Remove dead CheckForkWarningConditionsOnNewFork (MarcoFalke)
  • #19935 Move SaltedHashers to separate file and add some new ones (achow101)
  • #20054 Remove confusing and useless “unexpected version” warning (MarcoFalke)
  • #20519 Handle rename failure in DumpMempool(…) by using the RenameOver(…) return value (practicalswift)
  • #20749, bitcoin/bitcoin#20750, bitcoin/bitcoin#21055, bitcoin/bitcoin#21270, bitcoin/bitcoin#21525, bitcoin/bitcoin#21391, bitcoin/bitcoin#21767, bitcoin/bitcoin#21866 Prune g_chainman usage (dongcarl)
  • #20833 rpc/validation: enable packages through testmempoolaccept (glozow)
  • #20834 Locks and docs in ATMP and CheckInputsFromMempoolAndCache (glozow)
  • #20854 Remove unnecessary try-block (amitiuttarwar)
  • #20868 Remove redundant check on pindex (jarolrod)
  • #20921 Don’t try to invalidate genesis block in CChainState::InvalidateBlock (theStack)
  • #20972 Locks: Annotate CTxMemPool::check to require cs_main (dongcarl)
  • #21009 Remove RewindBlockIndex logic (dhruv)
  • #21025 Guard chainman chainstates with cs_main (dongcarl)
  • #21202 Two small clang lock annotation improvements (amitiuttarwar)
  • #21523 Run VerifyDB on all chainstates (jamesob)
  • #21573 Update libsecp256k1 subtree to latest master (sipa)
  • #21582, bitcoin/bitcoin#21584, bitcoin/bitcoin#21585 Fix assumeutxo crashes (MarcoFalke)
  • #21681 Fix ActivateSnapshot to use hardcoded nChainTx (jamesob)
  • #21796 index: Avoid async shutdown on init error (MarcoFalke)
  • #21946 Document and test lack of inherited signaling in RBF policy (ariard)
  • #22084 Package testmempoolaccept followups (glozow)
  • #22102 Remove Warning: from warning message printed for unknown new rules (prayank23)
  • #22112 Force port 0 in I2P (vasild)
  • #22135 CRegTestParams: Use args instead of gArgs (kiminuo)
  • #22146 Reject invalid coin height and output index when loading assumeutxo (MarcoFalke)
  • #22253 Distinguish between same tx and same-nonwitness-data tx in mempool (glozow)
  • #22261 Two small fixes to node broadcast logic (jnewbery)
  • #22415 Make m_mempool optional in CChainState (jamesob)
  • #22499 Update assumed chain params (sriramdvt)
  • #22589 net, doc: update I2P hardcoded seeds and docs for 22.0 (jonatack)
  • P2P protocol and network code:
  • #18077 Add NAT-PMP port forwarding support (hebasto)
  • #18722 addrman: improve performance by using more suitable containers (vasild)
  • #18819 Replace cs_feeFilter with simple std::atomic (MarcoFalke)
  • #19203 Add regression fuzz harness for CVE-2017-18350. Add FuzzedSocket (practicalswift)
  • #19288 fuzz: Add fuzzing harness for TorController (practicalswift)
  • #19415 Make DNS lookup mockable, add fuzzing harness (practicalswift)
  • #19509 Per-Peer Message Capture (troygiorshev)
  • #19763 Don’t try to relay to the address’ originator (vasild)
  • #19771 Replace enum CConnMan::NumConnections with enum class ConnectionDirection (luke-jr)
  • #19776 net, rpc: expose high bandwidth mode state via getpeerinfo (theStack)
  • #19832 Put disconnecting logs into BCLog::NET category (hebasto)
  • #19858 Periodically make block-relay connections and sync headers (sdaftuar)
  • #19884 No delay in adding fixed seeds if -dnsseed=0 and peers.dat is empty (dhruv)
  • #20079 Treat handshake misbehavior like unknown message (MarcoFalke)
  • #20138 Assume that SetCommonVersion is called at most once per peer (MarcoFalke)
  • #20162 p2p: declare Announcement::m_state as uint8_t, add getter/setter (jonatack)
  • #20197 Protect onions in AttemptToEvictConnection(), add eviction protection test coverage (jonatack)
  • #20210 assert CNode::m_inbound_onion is inbound in ctor, add getter, unit tests (jonatack)
  • #20228 addrman: Make addrman a top-level component (jnewbery)
  • #20234 Don’t bind on 0.0.0.0 if binds are restricted to Tor (vasild)
  • #20477 Add unit testing of node eviction logic (practicalswift)
  • #20516 Well-defined CAddress disk serialization, and addrv2 anchors.dat (sipa)
  • #20557 addrman: Fix new table bucketing during unserialization (jnewbery)
  • #20561 Periodically clear m_addr_known (sdaftuar)
  • #20599 net processing: Tolerate sendheaders and sendcmpct messages before verack (jnewbery)
  • #20616 Check CJDNS address is valid (lontivero)
  • #20617 Remove m_is_manual_connection from CNodeState (ariard)
  • #20624 net processing: Remove nStartingHeight check from block relay (jnewbery)
  • #20651 Make p2p recv buffer timeout 20 minutes for all peers (jnewbery)
  • #20661 Only select from addrv2-capable peers for torv3 address relay (sipa)
  • #20685 Add I2P support using I2P SAM (vasild)
  • #20690 Clean up logging of outbound connection type (sdaftuar)
  • #20721 Move ping data to net_processing (jnewbery)
  • #20724 Cleanup of -debug=net log messages (ajtowns)
  • #20747 net processing: Remove dropmessagestest (jnewbery)
  • #20764 cli -netinfo peer connections dashboard updates 🎄 ✨ (jonatack)
  • #20788 add RAII socket and use it instead of bare SOCKET (vasild)
  • #20791 remove unused legacyWhitelisted in AcceptConnection() (jonatack)
  • #20816 Move RecordBytesSent() call out of cs_vSend lock (jnewbery)
  • #20845 Log to net debug in MaybeDiscourageAndDisconnect except for noban and manual peers (MarcoFalke)
  • #20864 Move SocketSendData lock annotation to header (MarcoFalke)
  • #20965 net, rpc: return NET_UNROUTABLE as not_publicly_routable, automate helps (jonatack)
  • #20966 banman: save the banlist in a JSON format on disk (vasild)
  • #21015 Make all of net_processing (and some of net) use std::chrono types (dhruv)
  • #21029 bitcoin-cli: Correct docs (no “generatenewaddress” exists) (luke-jr)
  • #21148 Split orphan handling from net_processing into txorphanage (ajtowns)
  • #21162 Net Processing: Move RelayTransaction() into PeerManager (jnewbery)
  • #21167 make CNode::m_inbound_onion public, initialize explicitly (jonatack)
  • #21186 net/net processing: Move addr data into net_processing (jnewbery)
  • #21187 Net processing: Only call PushAddress() from net_processing (jnewbery)
  • #21198 Address outstanding review comments from PR20721 (jnewbery)
  • #21222 log: Clarify log message when file does not exist (MarcoFalke)
  • #21235 Clarify disconnect log message in ProcessGetBlockData, remove send bool (MarcoFalke)
  • #21236 Net processing: Extract addr send functionality into MaybeSendAddr() (jnewbery)
  • #21261 update inbound eviction protection for multiple networks, add I2P peers (jonatack)
  • #21328 net, refactor: pass uint16 CService::port as uint16 (jonatack)
  • #21387 Refactor sock to add I2P fuzz and unit tests (vasild)
  • #21395 Net processing: Remove unused CNodeState.address member (jnewbery)
  • #21407 i2p: limit the size of incoming messages (vasild)
  • #21506 p2p, refactor: make NetPermissionFlags an enum class (jonatack)
  • #21509 Don’t send FEEFILTER in blocksonly mode (mzumsande)
  • #21560 Add Tor v3 hardcoded seeds (laanwj)
  • #21563 Restrict period when cs_vNodes mutex is locked (hebasto)
  • #21564 Avoid calling getnameinfo when formatting IPv4 addresses in CNetAddr::ToStringIP (practicalswift)
  • #21631 i2p: always check the return value of Sock::Wait() (vasild)
  • #21644 p2p, bugfix: use NetPermissions::HasFlag() in CConnman::Bind() (jonatack)
  • #21659 flag relevant Sock methods with [[nodiscard]] (vasild)
  • #21750 remove unnecessary check of CNode::cs_vSend (vasild)
  • #21756 Avoid calling getnameinfo when formatting IPv6 addresses in CNetAddr::ToStringIP (practicalswift)
  • #21775 Limit m_block_inv_mutex (MarcoFalke)
  • #21825 Add I2P hardcoded seeds (jonatack)
  • #21843 p2p, rpc: enable GetAddr, GetAddresses, and getnodeaddresses by network (jonatack)
  • #21845 net processing: Don’t require locking cs_main before calling RelayTransactions() (jnewbery)
  • #21872 Sanitize message type for logging (laanwj)
  • #21914 Use stronger AddLocal() for our I2P address (vasild)
  • #21985 Return IPv6 scope id in CNetAddr::ToStringIP() (laanwj)
  • #21992 Remove -feefilter option (amadeuszpawlik)
  • #21996 Pass strings to NetPermissions::TryParse functions by const ref (jonatack)
  • #22013 ignore block-relay-only peers when skipping DNS seed (ajtowns)
  • #22050 Remove tor v2 support (jonatack)
  • #22096 AddrFetch - don’t disconnect on self-announcements (mzumsande)
  • #22141 net processing: Remove hash and fValidatedHeaders from QueuedBlock (jnewbery)
  • #22144 Randomize message processing peer order (sipa)
  • #22147 Protect last outbound HB compact block peer (sdaftuar)
  • #22179 Torv2 removal followups (vasild)
  • #22211 Relay I2P addresses even if not reachable (by us) (vasild)
  • #22284 Performance improvements to ProtectEvictionCandidatesByRatio() (jonatack)
  • #22387 Rate limit the processing of rumoured addresses (sipa)
  • #22455 addrman: detect on-disk corrupted nNew and nTried during unserialization (vasild)
  • Wallet:
  • #15710 Catch ios_base::failure specifically (Bushstar)
  • #16546 External signer support - Wallet Box edition (Sjors)
  • #17331 Use effective values throughout coin selection (achow101)
  • #18418 Increase OUTPUT_GROUP_MAX_ENTRIES to 100 (fjahr)
  • #18842 Mark replaced tx to not be in the mempool anymore (MarcoFalke)
  • #19136 Add parent_desc to getaddressinfo (achow101)
  • #19137 wallettool: Add dump and createfromdump commands (achow101)
  • #19651 importdescriptors update existing (S3RK)
  • #20040 Refactor OutputGroups to handle fees and spending eligibility on grouping (achow101)
  • #20202 Make BDB support optional (achow101)
  • #20226, bitcoin/bitcoin#21277, - #21063 Add listdescriptors command (S3RK)
  • #20267 Disable and fix tests for when BDB is not compiled (achow101)
  • #20275 List all wallets in non-SQLite and non-BDB builds (ryanofsky)
  • #20365 wallettool: Add parameter to create descriptors wallet (S3RK)
  • #20403 upgradewallet fixes, improvements, test coverage (jonatack)
  • #20448 unloadwallet: Allow specifying wallet_name param matching RPC endpoint wallet (luke-jr)
  • #20536 Error with “Transaction too large” if the funded tx will end up being too large after signing (achow101)
  • #20687 Add missing check for -descriptors wallet tool option (MarcoFalke)
  • #20952 Add BerkeleyDB version sanity check at init time (laanwj)
  • #21127 Load flags before everything else (Sjors)
  • #21141 Add new format string placeholders for walletnotify (maayank)
  • #21238 A few descriptor improvements to prepare for Taproot support (sipa)
  • #21302 createwallet examples for descriptor wallets (S3RK)
  • #21329 descriptor wallet: Cache last hardened xpub and use in normalized descriptors (achow101)
  • #21365 Basic Taproot signing support for descriptor wallets (sipa)
  • #21417 Misc external signer improvement and HWI 2 support (Sjors)
  • #21467 Move external signer out of wallet module (Sjors)
  • #21572 Fix wrong wallet RPC context set after #21366 (ryanofsky)
  • #21574 Drop JSONRPCRequest constructors after #21366 (ryanofsky)
  • #21666 Miscellaneous external signer changes (fanquake)
  • #21759 Document coin selection code (glozow)
  • #21786 Ensure sat/vB feerates are in range (mantissa of 3) (jonatack)
  • #21944 Fix issues when walletdir is root directory (prayank23)
  • #22042 Replace size/weight estimate tuple with struct for named fields (instagibbs)
  • #22051 Basic Taproot derivation support for descriptors (sipa)
  • #22154 Add OutputType::BECH32M and related wallet support for fetching bech32m addresses (achow101)
  • #22156 Allow tr() import only when Taproot is active (achow101)
  • #22166 Add support for inferring tr() descriptors (sipa)
  • #22173 Do not load external signers wallets when unsupported (achow101)
  • #22308 Add missing BlockUntilSyncedToCurrentChain (MarcoFalke)
  • #22334 Do not spam about non-existent spk managers (S3RK)
  • #22379 Erase spkmans rather than setting to nullptr (achow101)
  • #22421 Make IsSegWitOutput return true for taproot outputs (sipa)
  • #22461 Change ScriptPubKeyMan::Upgrade default to True (achow101)
  • #22492 Reorder locks in dumpwallet to avoid lock order assertion (achow101)
  • #22686 Use GetSelectionAmount in ApproximateBestSubset (achow101)
  • RPC and other APIs:
  • #18335, bitcoin/bitcoin#21484 cli: Print useful error if bitcoind rpc work queue exceeded (LarryRuane)
  • #18466 Fix invalid parameter error codes for {sign,verify}message RPCs (theStack)
  • #18772 Calculate fees in getblock using BlockUndo data (robot-visions)
  • #19033 http: Release work queue after event base finish (promag)
  • #19055 Add MuHash3072 implementation (fjahr)
  • #19145 Add hash_type MUHASH for gettxoutsetinfo (fjahr)
  • #19847 Avoid duplicate set lookup in gettxoutproof (promag)
  • #20286 Deprecate addresses and reqSigs from RPC outputs (mjdietzx)
  • #20459 Fail to return undocumented return values (MarcoFalke)
  • #20461 Validate -rpcauth arguments (promag)
  • #20556 Properly document return values (submitblock, gettxout, getblocktemplate, scantxoutset) (MarcoFalke)
  • #20755 Remove deprecated fields from getpeerinfo (amitiuttarwar)
  • #20832 Better error messages for invalid addresses (eilx2)
  • #20867 Support up to 20 keys for multisig under Segwit context (darosior)
  • #20877 cli: -netinfo user help and argument parsing improvements (jonatack)
  • #20891 Remove deprecated bumpfee behavior (achow101)
  • #20916 Return wtxid from testmempoolaccept (MarcoFalke)
  • #20917 Add missing signet mentions in network name lists (theStack)
  • #20941 Document RPC_TRANSACTION_ALREADY_IN_CHAIN exception (jarolrod)
  • #20944 Return total fee in getmempoolinfo (MarcoFalke)
  • #20964 Add specific error code for “wallet already loaded” (laanwj)
  • #21053 Document {previous,next}blockhash as optional (theStack)
  • #21056 Add a -rpcwaittimeout parameter to limit time spent waiting (cdecker)
  • #21192 cli: Treat high detail levels as maximum in -netinfo (laanwj)
  • #21311 Document optional fields for getchaintxstats result (theStack)
  • #21359 include_unsafe option for fundrawtransaction (t-bast)
  • #21426 Remove scantxoutset EXPERIMENTAL warning (jonatack)
  • #21544 Missing doc updates for bumpfee psbt update (MarcoFalke)
  • #21594 Add network field to getnodeaddresses (jonatack)
  • #21595, bitcoin/bitcoin#21753 cli: Create -addrinfo (jonatack)
  • #21602 Add additional ban time fields to listbanned (jarolrod)
  • #21679 Keep default argument value in correct type (promag)
  • #21718 Improve error message for getblock invalid datatype (klementtan)
  • #21913 RPCHelpMan fixes (kallewoof)
  • #22021 bumpfee/psbtbumpfee fixes and updates (jonatack)
  • #22043 addpeeraddress test coverage, code simplify/constness (jonatack)
  • #22327 cli: Avoid truncating -rpcwaittimeout (MarcoFalke)
  • GUI:
  • #18948 Call setParent() in the parent’s context (hebasto)
  • #20482 Add depends qt fix for ARM macs (jonasschnelli)
  • #21836 scripted-diff: Replace three dots with ellipsis in the ui strings (hebasto)
  • #21935 Enable external signer support for GUI builds (Sjors)
  • #22133 Make QWindowsVistaStylePlugin available again (regression) (hebasto)
  • gui#4 UI external signer support (e.g. hardware wallet) (Sjors)
  • gui#13 Hide peer detail view if multiple are selected (promag)
  • gui#18 Add peertablesortproxy module (hebasto)
  • gui#21 Improve pruning tooltip (fluffypony, BitcoinErrorLog)
  • gui#72 Log static plugins meta data and used style (hebasto)
  • gui#79 Embed monospaced font (hebasto)
  • gui#85 Remove unused “What’s This” button in dialogs on Windows OS (hebasto)
  • gui#115 Replace “Hide tray icon” option with positive “Show tray icon” one (hebasto)
  • gui#118 Remove BDB version from the Information tab (hebasto)
  • gui#121 Early subscribe core signals in transaction table model (promag)
  • gui#123 Do not accept command while executing another one (hebasto)
  • gui#125 Enable changing the autoprune block space size in intro dialog (luke-jr)
  • gui#138 Unlock encrypted wallet “OK” button bugfix (mjdietzx)
  • gui#139 doc: Improve gui/src/qt README.md (jarolrod)
  • gui#154 Support macOS Dark mode (goums, Uplab)
  • gui#162 Add network to peers window and peer details (jonatack)
  • gui#163, bitcoin-core/gui#180 Peer details: replace Direction with Connection Type (jonatack)
  • gui#164 Handle peer addition/removal in a right way (hebasto)
  • gui#165 Save QSplitter state in QSettings (hebasto)
  • gui#173 Follow Qt docs when implementing rowCount and columnCount (hebasto)
  • gui#179 Add Type column to peers window, update peer details name/tooltip (jonatack)
  • gui#186 Add information to “Confirm fee bump” window (prayank23)
  • gui#189 Drop workaround for QTBUG-42503 which was fixed in Qt 5.5.0 (prusnak)
  • gui#194 Save/restore RPCConsole geometry only for window (hebasto)
  • gui#202 Fix right panel toggle in peers tab (RandyMcMillan)
  • gui#203 Display plain “Inbound” in peer details (jonatack)
  • gui#204 Drop buggy TableViewLastColumnResizingFixer class (hebasto)
  • gui#205, bitcoin-core/gui#229 Save/restore TransactionView and recentRequestsView tables column sizes (hebasto)
  • gui#206 Display fRelayTxes and bip152_highbandwidth_{to, from} in peer details (jonatack)
  • gui#213 Add Copy Address Action to Payment Requests (jarolrod)
  • gui#214 Disable requests context menu actions when appropriate (jarolrod)
  • gui#217 Make warning label look clickable (jarolrod)
  • gui#219 Prevent the main window popup menu (hebasto)
  • gui#220 Do not translate file extensions (hebasto)
  • gui#221 RPCConsole translatable string fixes and improvements (jonatack)
  • gui#226 Add “Last Block” and “Last Tx” rows to peer details area (jonatack)
  • gui#233 qt test: Don’t bind to regtest port (achow101)
  • gui#243 Fix issue when disabling the auto-enabled blank wallet checkbox (jarolrod)
  • gui#246 Revert “qt: Use “fusion” style on macOS Big Sur with old Qt” (hebasto)
  • gui#248 For values of “Bytes transferred” and “Bytes/s” with 1000-based prefix names use 1000-based divisor instead of 1024-based (wodry)
  • gui#251 Improve URI/file handling message (hebasto)
  • gui#256 Save/restore column sizes of the tables in the Peers tab (hebasto)
  • gui#260 Handle exceptions isntead of crash (hebasto)
  • gui#263 Revamp context menus (hebasto)
  • gui#271 Don’t clear console prompt when font resizing (jarolrod)
  • gui#275 Support runtime appearance adjustment on macOS (hebasto)
  • gui#276 Elide long strings in their middle in the Peers tab (hebasto)
  • gui#281 Set shortcuts for console’s resize buttons (jarolrod)
  • gui#293 Enable wordWrap for Services (RandyMcMillan)
  • gui#296 Do not use QObject::tr plural syntax for numbers with a unit symbol (hebasto)
  • gui#297 Avoid unnecessary translations (hebasto)
  • gui#298 Peertableview alternating row colors (RandyMcMillan)
  • gui#300 Remove progress bar on modal overlay (brunoerg)
  • gui#309 Add access to the Peers tab from the network icon (hebasto)
  • gui#311 Peers Window rename ‘Peer id’ to ‘Peer’ (jarolrod)
  • gui#313 Optimize string concatenation by default (hebasto)
  • gui#325 Align numbers in the “Peer Id” column to the right (hebasto)
  • gui#329 Make console buttons look clickable (jarolrod)
  • gui#330 Allow prompt icon to be colorized (jarolrod)
  • gui#331 Make RPC console welcome message translation-friendly (hebasto)
  • gui#332 Replace disambiguation strings with translator comments (hebasto)
  • gui#335 test: Use QSignalSpy instead of QEventLoop (jarolrod)
  • gui#343 Improve the GUI responsiveness when progress dialogs are used (hebasto)
  • gui#361 Fix GUI segfault caused by bitcoin/bitcoin#22216 (ryanofsky)
  • gui#362 Add keyboard shortcuts to context menus (luke-jr)
  • gui#366 Dark Mode fixes/portability (luke-jr)
  • gui#375 Emit dataChanged signal to dynamically re-sort Peers table (hebasto)
  • gui#393 Fix regression in “Encrypt Wallet” menu item (hebasto)
  • gui#396 Ensure external signer option remains disabled without signers (achow101)
  • gui#406 Handle new added plurals in bitcoin_en.ts (hebasto)
  • Build system:
  • #17227 Add Android packaging support (icota)
  • #17920 guix: Build support for macOS (dongcarl)
  • #18298 Fix Qt processing of configure script for depends with DEBUG=1 (hebasto)
  • #19160 multiprocess: Add basic spawn and IPC support (ryanofsky)
  • #19504 Bump minimum python version to 3.6 (ajtowns)
  • #19522 fix building libconsensus with reduced exports for Darwin targets (fanquake)
  • #19683 Pin clang search paths for darwin host (dongcarl)
  • #19764 Split boost into build/host packages + bump + cleanup (dongcarl)
  • #19817 libtapi 1100.0.11 (fanquake)
  • #19846 enable unused member function diagnostic (Zero-1729)
  • #19867 Document and cleanup Qt hacks (fanquake)
  • #20046 Set CMAKE_INSTALL_RPATH for native packages (ryanofsky)
  • #20223 Drop the leading 0 from the version number (achow101)
  • #20333 Remove native_biplist dependency (fanquake)
  • #20353 configure: Support -fdebug-prefix-map and -fmacro-prefix-map (ajtowns)
  • #20359 Various config.site.in improvements and linting (dongcarl)
  • #20413 Require C++17 compiler (MarcoFalke)
  • #20419 Set minimum supported macOS to 10.14 (fanquake)
  • #20421 miniupnpc 2.2.2 (fanquake)
  • #20422 Mac deployment unification (fanquake)
  • #20424 Update univalue subtree (MarcoFalke)
  • #20449 Fix Windows installer build (achow101)
  • #20468 Warn when generating man pages for binaries built from a dirty branch (tylerchambers)
  • #20469 Avoid secp256k1.h include from system (dergoegge)
  • #20470 Replace genisoimage with xorriso (dongcarl)
  • #20471 Use C++17 in depends (fanquake)
  • #20496 Drop unneeded macOS framework dependencies (hebasto)
  • #20520 Do not force Precompiled Headers (PCH) for building Qt on Linux (hebasto)
  • #20549 Support make src/bitcoin-node and src/bitcoin-gui (promag)
  • #20565 Ensure PIC build for bdb on Android (BlockMechanic)
  • #20594 Fix getauxval calls in randomenv.cpp (jonasschnelli)
  • #20603 Update crc32c subtree (MarcoFalke)
  • #20609 configure: output notice that test binary is disabled by fuzzing (apoelstra)
  • #20619 guix: Quality of life improvements (dongcarl)
  • #20629 Improve id string robustness (dongcarl)
  • #20641 Use Qt top-level build facilities (hebasto)
  • #20650 Drop workaround for a fixed bug in Qt build system (hebasto)
  • #20673 Use more legible qmake commands in qt package (hebasto)
  • #20684 Define .INTERMEDIATE target once only (hebasto)
  • #20720 more robustly check for fcf-protection support (fanquake)
  • #20734 Make platform-specific targets available for proper platform builds only (hebasto)
  • #20936 build fuzz tests by default (danben)
  • #20937 guix: Make nsis reproducible by respecting SOURCE-DATE-EPOCH (dongcarl)
  • #20938 fix linking against -latomic when building for riscv (fanquake)
  • #20939 fix RELOC_SECTION security check for bitcoin-util (fanquake)
  • #20963 gitian-linux: Build binaries for 64-bit POWER (continued) (laanwj)
  • #21036 gitian: Bump descriptors to focal for 22.0 (fanquake)
  • #21045 Adds switch to enable/disable randomized base address in MSVC builds (EthanHeilman)
  • #21065 make macOS HOST in download-osx generic (fanquake)
  • #21078 guix: only download sources for hosts being built (fanquake)
  • #21116 Disable –disable-fuzz-binary for gitian/guix builds (hebasto)
  • #21182 remove mostly pointless BOOST_PROCESS macro (fanquake)
  • #21205 actually fail when Boost is missing (fanquake)
  • #21209 use newer source for libnatpmp (fanquake)
  • #21226 Fix fuzz binary compilation under windows (danben)
  • #21231 Add /opt/homebrew to path to look for boost libraries (fyquah)
  • #21239 guix: Add codesignature attachment support for osx+win (dongcarl)
  • #21250 Make HAVE_O_CLOEXEC available outside LevelDB (bugfix) (theStack)
  • #21272 guix: Passthrough SDK_PATH into container (dongcarl)
  • #21274 assumptions: Assume C++17 (fanquake)
  • #21286 Bump minimum Qt version to 5.9.5 (hebasto)
  • #21298 guix: Bump time-machine, glibc, and linux-headers (dongcarl)
  • #21304 guix: Add guix-clean script + establish gc-root for container profiles (dongcarl)
  • #21320 fix libnatpmp macos cross compile (fanquake)
  • #21321 guix: Add curl to required tool list (hebasto)
  • #21333 set Unicode true for NSIS installer (fanquake)
  • #21339 Make AM_CONDITIONAL([ENABLE_EXTERNAL_SIGNER]) unconditional (hebasto)
  • #21349 Fix fuzz-cuckoocache cross-compiling with DEBUG=1 (hebasto)
  • #21354 build, doc: Drop no longer required packages from macOS cross-compiling dependencies (hebasto)
  • #21363 build, qt: Improve Qt static plugins/libs check code (hebasto)
  • #21375 guix: Misc feedback-based fixes + hier restructuring (dongcarl)
  • #21376 Qt 5.12.10 (fanquake)
  • #21382 Clean remnants of QTBUG-34748 fix (hebasto)
  • #21400 Fix regression introduced in #21363 (hebasto)
  • #21403 set –build when configuring packages in depends (fanquake)
  • #21421 don’t try and use -fstack-clash-protection on Windows (fanquake)
  • #21423 Cleanups and follow ups after bumping Qt to 5.12.10 (hebasto)
  • #21427 Fix id_string invocations (dongcarl)
  • #21430 Add -Werror=implicit-fallthrough compile flag (hebasto)
  • #21457 Split libtapi and clang out of native_cctools (fanquake)
  • #21462 guix: Add guix-{attest,verify} scripts (dongcarl)
  • #21495 build, qt: Fix static builds on macOS Big Sur (hebasto)
  • #21497 Do not opt-in unused CoreWLAN stuff in depends for macOS (hebasto)
  • #21543 Enable safe warnings for msvc builds (hebasto)
  • #21565 Make bitcoin_qt.m4 more generic (fanquake)
  • #21610 remove -Wdeprecated-register from NOWARN flags (fanquake)
  • #21613 enable -Wdocumentation (fanquake)
  • #21629 Fix configuring when building depends with NO_BDB=1 (fanquake)
  • #21654 build, qt: Make Qt rcc output always deterministic (hebasto)
  • #21655 build, qt: No longer need to set QT_RCC_TEST=1 for determinism (hebasto)
  • #21658 fix make deploy for arm64-darwin (sgulls)
  • #21694 Use XLIFF file to provide more context to Transifex translators (hebasto)
  • #21708, bitcoin/bitcoin#21593 Drop pointless sed commands (hebasto)
  • #21731 Update msvc build to use Qt5.12.10 binaries (sipsorcery)
  • #21733 Re-add command to install vcpkg (dplusplus1024)
  • #21793 Use -isysroot over --sysroot on macOS (fanquake)
  • #21869 Add missing -D_LIBCPP_DEBUG=1 to debug flags (MarcoFalke)
  • #21889 macho: check for control flow instrumentation (fanquake)
  • #21920 Improve macro for testing -latomic requirement (MarcoFalke)
  • #21991 libevent 2.1.12-stable (fanquake)
  • #22054 Bump Qt version to 5.12.11 (hebasto)
  • #22063 Use Qt archive of the same version as the compiled binaries (hebasto)
  • #22070 Don’t use cf-protection when targeting arm-apple-darwin (fanquake)
  • #22071 Latest config.guess and config.sub (fanquake)
  • #22075 guix: Misc leftover usability improvements (dongcarl)
  • #22123 Fix qt.mk for mac arm64 (promag)
  • #22174 build, qt: Fix libraries linking order for Linux hosts (hebasto)
  • #22182 guix: Overhaul how guix-{attest,verify} works and hierarchy (dongcarl)
  • #22186 build, qt: Fix compiling qt package in depends with GCC 11 (hebasto)
  • #22199 macdeploy: minor fixups and simplifications (fanquake)
  • #22230 Fix MSVC linker /SubSystem option for bitcoin-qt.exe (hebasto)
  • #22234 Mark print-% target as phony (dgoncharov)
  • #22238 improve detection of eBPF support (fanquake)
  • #22258 Disable deprecated-copy warning only when external warnings are enabled (MarcoFalke)
  • #22320 set minimum required Boost to 1.64.0 (fanquake)
  • #22348 Fix cross build for Windows with Boost Process (hebasto)
  • #22365 guix: Avoid relying on newer symbols by rebasing our cross toolchains on older glibcs (dongcarl)
  • #22381 guix: Test security-check sanity before performing them (with macOS) (fanquake)
  • #22405 Remove –enable-glibc-back-compat from Guix build (fanquake)
  • #22406 Remove –enable-determinism configure option (fanquake)
  • #22410 Avoid GCC 7.1 ABI change warning in guix build (sipa)
  • #22436 use aarch64 Clang if cross-compiling for darwin on aarch64 (fanquake)
  • #22465 guix: Pin kernel-header version, time-machine to upstream 1.3.0 commit (dongcarl)
  • #22511 guix: Silence getent(1) invocation, doc fixups (dongcarl)
  • #22531 guix: Fixes to guix-{attest,verify} (achow101)
  • #22642 release: Release with separate sha256sums and sig files (dongcarl)
  • #22685 clientversion: No suffix #if CLIENT_VERSION_IS_RELEASE (dongcarl)
  • #22713 Fix build with Boost 1.77.0 (sizeofvoid)
  • Tests and QA:
  • #14604 Add test and refactor feature_block.py (sanket1729)
  • #17556 Change feature_config_args.py not to rely on strange regtest=0 behavior (ryanofsky)
  • #18795 wallet issue with orphaned rewards (domob1812)
  • #18847 compressor: Use a prevector in CompressScript serialization (jb55)
  • #19259 fuzz: Add fuzzing harness for LoadMempool(…) and DumpMempool(…) (practicalswift)
  • #19315 Allow outbound & block-relay-only connections in functional tests. (amitiuttarwar)
  • #19698 Apply strict verification flags for transaction tests and assert backwards compatibility (glozow)
  • #19801 Check for all possible OP_CLTV fail reasons in feature_cltv.py (BIP 65) (theStack)
  • #19893 Remove or explain syncwithvalidationinterfacequeue (MarcoFalke)
  • #19972 fuzz: Add fuzzing harness for node eviction logic (practicalswift)
  • #19982 Fix inconsistent lock order in wallet_tests/CreateWallet (hebasto)
  • #20000 Fix creation of “std::string”s with s (vasild)
  • #20047 Use wait_for_{block,header} helpers in p2p_fingerprint.py (theStack)
  • #20171 Add functional test test_txid_inv_delay (ariard)
  • #20189 Switch to BIP341’s suggested scheme for outputs without script (sipa)
  • #20248 Fix length of R check in key_signature_tests (dgpv)
  • #20276, bitcoin/bitcoin#20385, bitcoin/bitcoin#20688, bitcoin/bitcoin#20692 Run various mempool tests even with wallet disabled (mjdietzx)
  • #20323 Create or use existing properly initialized NodeContexts (dongcarl)
  • #20354 Add feature_taproot.py --previous_release (MarcoFalke)
  • #20370 fuzz: Version handshake (MarcoFalke)
  • #20377 fuzz: Fill various small fuzzing gaps (practicalswift)
  • #20425 fuzz: Make CAddrMan fuzzing harness deterministic (practicalswift)
  • #20430 Sanitizers: Add suppression for unsigned-integer-overflow in libstdc++ (jonasschnelli)
  • #20437 fuzz: Avoid time-based “non-determinism” in fuzzing harnesses by using mocked GetTime() (practicalswift)
  • #20458 Add is_bdb_compiled helper (Sjors)
  • #20466 Fix intermittent p2p_fingerprint issue (MarcoFalke)
  • #20472 Add testing of ParseInt/ParseUInt edge cases with leading +/-/0:s (practicalswift)
  • #20507 sync: print proper lock order location when double lock is detected (vasild)
  • #20522 Fix sync issue in disconnect_p2ps (amitiuttarwar)
  • #20524 Move MIN_VERSION_SUPPORTED to p2p.py (jnewbery)
  • #20540 Fix wallet_multiwallet issue on windows (MarcoFalke)
  • #20560 fuzz: Link all targets once (MarcoFalke)
  • #20567 Add option to git-subtree-check to do full check, add help (laanwj)
  • #20569 Fix intermittent wallet_multiwallet issue with got_loading_error (MarcoFalke)
  • #20613 Use Popen.wait instead of RPC in assert_start_raises_init_error (MarcoFalke)
  • #20663 fuzz: Hide script_assets_test_minimizer (MarcoFalke)
  • #20674 fuzz: Call SendMessages after ProcessMessage to increase coverage (MarcoFalke)
  • #20683 Fix restart node race (MarcoFalke)
  • #20686 fuzz: replace CNode code with fuzz/util.h::ConsumeNode() (jonatack)
  • #20733 Inline non-member functions with body in fuzzing headers (pstratem)
  • #20737 Add missing assignment in mempool_resurrect.py (MarcoFalke)
  • #20745 Correct epoll_ctl data race suppression (hebasto)
  • #20748 Add race:SendZmqMessage tsan suppression (MarcoFalke)
  • #20760 Set correct nValue for multi-op-return policy check (MarcoFalke)
  • #20761 fuzz: Check that NULL_DATA is unspendable (MarcoFalke)
  • #20765 fuzz: Check that certain script TxoutType are nonstandard (mjdietzx)
  • #20772 fuzz: Bolster ExtractDestination(s) checks (mjdietzx)
  • #20789 fuzz: Rework strong and weak net enum fuzzing (MarcoFalke)
  • #20828 fuzz: Introduce CallOneOf helper to replace switch-case (MarcoFalke)
  • #20839 fuzz: Avoid extraneous copy of input data, using Span<> (MarcoFalke)
  • #20844 Add sanitizer suppressions for AMD EPYC CPUs (MarcoFalke)
  • #20857 Update documentation in feature_csv_activation.py (PiRK)
  • #20876 Replace getmempoolentry with testmempoolaccept in MiniWallet (MarcoFalke)
  • #20881 fuzz: net permission flags in net processing (MarcoFalke)
  • #20882 fuzz: Add missing muhash registration (MarcoFalke)
  • #20908 fuzz: Use mocktime in process_message* fuzz targets (MarcoFalke)
  • #20915 fuzz: Fail if message type is not fuzzed (MarcoFalke)
  • #20946 fuzz: Consolidate fuzzing TestingSetup initialization (dongcarl)
  • #20954 Declare nodes type in test_framework.py (kiminuo)
  • #20955 Fix get_previous_releases.py for aarch64 (MarcoFalke)
  • #20969 check that getblockfilter RPC fails without block filter index (theStack)
  • #20971 Work around libFuzzer deadlock (MarcoFalke)
  • #20993 Store subversion (user agent) as string in msg_version (theStack)
  • #20995 fuzz: Avoid initializing version to less than MIN_PEER_PROTO_VERSION (MarcoFalke)
  • #20998 Fix BlockToJsonVerbose benchmark (martinus)
  • #21003 Move MakeNoLogFileContext to libtest_util, and use it in bench (MarcoFalke)
  • #21008 Fix zmq test flakiness, improve speed (theStack)
  • #21023 fuzz: Disable shuffle when merge=1 (MarcoFalke)
  • #21037 fuzz: Avoid designated initialization (C++20) in fuzz tests (practicalswift)
  • #21042 doc, test: Improve setup_clean_chain documentation (fjahr)
  • #21080 fuzz: Configure check for main function (take 2) (MarcoFalke)
  • #21084 Fix timeout decrease in feature_assumevalid (brunoerg)
  • #21096 Re-add dead code detection (flack)
  • #21100 Remove unused function xor_bytes (theStack)
  • #21115 Fix Windows cross build (hebasto)
  • #21117 Remove assert_blockchain_height (MarcoFalke)
  • #21121 Small unit test improvements, including helper to make mempool transaction (amitiuttarwar)
  • #21124 Remove unnecessary assignment in bdb (brunoerg)
  • #21125 Change BOOST_CHECK to BOOST_CHECK_EQUAL for paths (kiminuo)
  • #21142, bitcoin/bitcoin#21512 fuzz: Add tx_pool fuzz target (MarcoFalke)
  • #21165 Use mocktime in test_seed_peers (dhruv)
  • #21169 fuzz: Add RPC interface fuzzing. Increase fuzzing coverage from 65% to 70% (practicalswift)
  • #21170 bench: Add benchmark to write json into a string (martinus)
  • #21178 Run mempool_reorg.py even with wallet disabled (DariusParvin)
  • #21185 fuzz: Remove expensive and redundant muhash from crypto fuzz target (MarcoFalke)
  • #21200 Speed up rpc_blockchain.py by removing miniwallet.generate() (MarcoFalke)
  • #21211 Move P2WSH_OP_TRUE to shared test library (MarcoFalke)
  • #21228 Avoid comparision of integers with different signs (jonasschnelli)
  • #21230 Fix NODE_NETWORK_LIMITED_MIN_BLOCKS disconnection (MarcoFalke)
  • #21252 Add missing wait for sync to feature_blockfilterindex_prune (MarcoFalke)
  • #21254 Avoid connecting to real network when running tests (MarcoFalke)
  • #21264 fuzz: Two scripted diff renames (MarcoFalke)
  • #21280 Bug fix in transaction_tests (glozow)
  • #21293 Replace accidentally placed bit-OR with logical-OR (hebasto)
  • #21297 feature_blockfilterindex_prune.py improvements (jonatack)
  • #21310 zmq test: fix sync-up by matching notification to generated block (theStack)
  • #21334 Additional BIP9 tests (Sjors)
  • #21338 Add functional test for anchors.dat (brunoerg)
  • #21345 Bring p2p_leak.py up to date (mzumsande)
  • #21357 Unconditionally check for fRelay field in test framework (jarolrod)
  • #21358 fuzz: Add missing include (test/util/setup_common.h) (MarcoFalke)
  • #21371 fuzz: fix gcc Woverloaded-virtual build warnings (jonatack)
  • #21373 Generate fewer blocks in feature_nulldummy to fix timeouts, speed up (jonatack)
  • #21390 Test improvements for UTXO set hash tests (fjahr)
  • #21410 increase rpc_timeout for fundrawtx test_transaction_too_large (jonatack)
  • #21411 add logging, reduce blocks, move sync_all in wallet_ groups (jonatack)
  • #21438 Add ParseUInt8() test coverage (jonatack)
  • #21443 fuzz: Implement fuzzed_dns_lookup_function as a lambda (practicalswift)
  • #21445 cirrus: Use SSD cluster for speedup (MarcoFalke)
  • #21477 Add test for CNetAddr::ToString IPv6 address formatting (RFC 5952) (practicalswift)
  • #21487 fuzz: Use ConsumeWeakEnum in addrman for service flags (MarcoFalke)
  • #21488 Add ParseUInt16() unit test and fuzz coverage (jonatack)
  • #21491 test: remove duplicate assertions in util_tests (jonatack)
  • #21522 fuzz: Use PickValue where possible (MarcoFalke)
  • #21531 remove qt byteswap compattests (fanquake)
  • #21557 small cleanup in RPCNestedTests tests (fanquake)
  • #21586 Add missing suppression for signed-integer-overflow:txmempool.cpp (MarcoFalke)
  • #21592 Remove option to make TestChain100Setup non-deterministic (MarcoFalke)
  • #21597 Document race:validation_chainstatemanager_tests suppression (MarcoFalke)
  • #21599 Replace file level integer overflow suppression with function level suppression (practicalswift)
  • #21604 Document why no symbol names can be used for suppressions (MarcoFalke)
  • #21606 fuzz: Extend psbt fuzz target a bit (MarcoFalke)
  • #21617 fuzz: Fix uninitialized read in i2p test (MarcoFalke)
  • #21630 fuzz: split FuzzedSock interface and implementation (vasild)
  • #21634 Skip SQLite fsyncs while testing (achow101)
  • #21669 Remove spurious double lock tsan suppressions by bumping to clang-12 (MarcoFalke)
  • #21676 Use mocktime to avoid intermittent failure in rpc_tests (MarcoFalke)
  • #21677 fuzz: Avoid use of low file descriptor ids (which may be in use) in FuzzedSock (practicalswift)
  • #21678 Fix TestPotentialDeadLockDetected suppression (hebasto)
  • #21689 Remove intermittently failing and not very meaningful BOOST_CHECK in cnetaddr_basic (practicalswift)
  • #21691 Check that no versionbits are re-used (MarcoFalke)
  • #21707 Extend functional tests for addr relay (mzumsande)
  • #21712 Test default include_mempool value of gettxout (promag)
  • #21738 Use clang-12 for ASAN, Add missing suppression (MarcoFalke)
  • #21740 add new python linter to check file names and permissions (windsok)
  • #21749 Bump shellcheck version (hebasto)
  • #21754 Run feature_cltv with MiniWallet (MarcoFalke)
  • #21762 Speed up mempool_spend_coinbase.py (MarcoFalke)
  • #21773 fuzz: Ensure prevout is consensus-valid (MarcoFalke)
  • #21777 Fix feature_notifications.py intermittent issue (MarcoFalke)
  • #21785 Fix intermittent issue in p2p_addr_relay.py (MarcoFalke)
  • #21787 Fix off-by-ones in rpc_fundrawtransaction assertions (jonatack)
  • #21792 Fix intermittent issue in p2p_segwit.py (MarcoFalke)
  • #21795 fuzz: Terminate immediately if a fuzzing harness tries to perform a DNS lookup (belt and suspenders) (practicalswift)
  • #21798 fuzz: Create a block template in tx_pool targets (MarcoFalke)
  • #21804 Speed up p2p_segwit.py (jnewbery)
  • #21810 fuzz: Various RPC fuzzer follow-ups (practicalswift)
  • #21814 Fix feature_config_args.py intermittent issue (MarcoFalke)
  • #21821 Add missing test for empty P2WSH redeem (MarcoFalke)
  • #21822 Resolve bug in interface_bitcoin_cli.py (klementtan)
  • #21846 fuzz: Add -fsanitize=integer suppression needed for RPC fuzzer (generateblock) (practicalswift)
  • #21849 fuzz: Limit toxic test globals to their respective scope (MarcoFalke)
  • #21867 use MiniWallet for p2p_blocksonly.py (theStack)
  • #21873 minor fixes & improvements for files linter test (windsok)
  • #21874 fuzz: Add WRITE_ALL_FUZZ_TARGETS_AND_ABORT (MarcoFalke)
  • #21884 fuzz: Remove unused –enable-danger-fuzz-link-all option (MarcoFalke)
  • #21890 fuzz: Limit ParseISO8601DateTime fuzzing to 32-bit (MarcoFalke)
  • #21891 fuzz: Remove strprintf test cases that are known to fail (MarcoFalke)
  • #21892 fuzz: Avoid excessively large min fee rate in tx_pool (MarcoFalke)
  • #21895 Add TSA annotations to the WorkQueue class members (hebasto)
  • #21900 use MiniWallet for feature_csv_activation.py (theStack)
  • #21909 fuzz: Limit max insertions in timedata fuzz test (MarcoFalke)
  • #21922 fuzz: Avoid timeout in EncodeBase58 (MarcoFalke)
  • #21927 fuzz: Run const CScript member functions only once (MarcoFalke)
  • #21929 fuzz: Remove incorrect float round-trip serialization test (MarcoFalke)
  • #21936 fuzz: Terminate immediately if a fuzzing harness tries to create a TCP socket (belt and suspenders) (practicalswift)
  • #21941 fuzz: Call const member functions in addrman fuzz test only once (MarcoFalke)
  • #21945 add P2PK support to MiniWallet (theStack)
  • #21948 Fix off-by-one in mockscheduler test RPC (MarcoFalke)
  • #21953 fuzz: Add utxo_snapshot target (MarcoFalke)
  • #21970 fuzz: Add missing CheckTransaction before CheckTxInputs (MarcoFalke)
  • #21989 Use COINBASE_MATURITY in functional tests (kiminuo)
  • #22003 Add thread safety annotations (ajtowns)
  • #22004 fuzz: Speed up transaction fuzz target (MarcoFalke)
  • #22005 fuzz: Speed up banman fuzz target (MarcoFalke)
  • #22029 [fuzz] Improve transport deserialization fuzz test coverage (dhruv)
  • #22048 MiniWallet: introduce enum type for output mode (theStack)
  • #22057 use MiniWallet (P2PK mode) for feature_dersig.py (theStack)
  • #22065 Mark CheckTxInputs [[nodiscard]]. Avoid UUM in fuzzing harness coins_view (practicalswift)
  • #22069 fuzz: don’t try and use fopencookie() when building for Android (fanquake)
  • #22082 update nanobench from release 4.0.0 to 4.3.4 (martinus)
  • #22086 remove BasicTestingSetup from unit tests that don’t need it (fanquake)
  • #22089 MiniWallet: fix fee calculation for P2PK and check tx vsize (theStack)
  • #21107, bitcoin/bitcoin#22092 Convert documentation into type annotations (fanquake)
  • #22095 Additional BIP32 test vector for hardened derivation with leading zeros (kristapsk)
  • #22103 Fix IPv6 check on BSD systems (n-thumann)
  • #22118 check anchors.dat when node starts for the first time (brunoerg)
  • #22120 p2p_invalid_block: Check that a block rejected due to too-new tim… (willcl-ark)
  • #22153 Fix p2p_leak.py intermittent failure (mzumsande)
  • #22169 p2p, rpc, fuzz: various tiny follow-ups (jonatack)
  • #22176 Correct outstanding -Werror=sign-compare errors (Empact)
  • #22180 fuzz: Increase branch coverage of the float fuzz target (MarcoFalke)
  • #22187 Add sync_blocks in wallet_orphanedreward.py (domob1812)
  • #22201 Fix TestShell to allow running in Jupyter Notebook (josibake)
  • #22202 Add temporary coinstats suppressions (MarcoFalke)
  • #22203 Use ConnmanTestMsg from test lib in denialofservice_tests (MarcoFalke)
  • #22210 Use MiniWallet in test_no_inherited_signaling RBF test (MarcoFalke)
  • #22224 Update msvc and appveyor builds to use Qt5.12.11 binaries (sipsorcery)
  • #22249 Kill process group to avoid dangling processes when using --failfast (S3RK)
  • #22267 fuzz: Speed up crypto fuzz target (MarcoFalke)
  • #22270 Add bitcoin-util tests (+refactors) (MarcoFalke)
  • #22271 fuzz: Assert roundtrip equality for CPubKey (theStack)
  • #22279 fuzz: add missing ECCVerifyHandle to base_encode_decode (apoelstra)
  • #22292 bench, doc: benchmarking updates and fixups (jonatack)
  • #22306 Improvements to p2p_addr_relay.py (amitiuttarwar)
  • #22310 Add functional test for replacement relay fee check (ariard)
  • #22311 Add missing syncwithvalidationinterfacequeue in p2p_blockfilters (MarcoFalke)
  • #22313 Add missing sync_all to feature_coinstatsindex (MarcoFalke)
  • #22322 fuzz: Check banman roundtrip (MarcoFalke)
  • #22363 Use script_util helpers for creating P2{PKH,SH,WPKH,WSH} scripts (theStack)
  • #22399 fuzz: Rework CTxDestination fuzzing (MarcoFalke)
  • #22408 add tests for bad-txns-prevout-null reject reason (theStack)
  • #22445 fuzz: Move implementations of non-template fuzz helpers from util.h to util.cpp (sriramdvt)
  • #22446 Fix wallet_listdescriptors.py if bdb is not compiled (hebasto)
  • #22447 Whitelist rpc_rawtransaction peers to speed up tests (jonatack)
  • #22742 Use proper target in do_fund_send (S3RK)
  • Miscellaneous:
  • #19337 sync: Detect double lock from the same thread (vasild)
  • #19809 log: Prefix log messages with function name and source code location if -logsourcelocations is set (practicalswift)
  • #19866 eBPF Linux tracepoints (jb55)
  • #20024 init: Fix incorrect warning “Reducing -maxconnections from N to N-1, because of system limitations” (practicalswift)
  • #20145 contrib: Add getcoins.py script to get coins from (signet) faucet (kallewoof)
  • #20255 util: Add assume() identity function (MarcoFalke)
  • #20288 script, doc: Contrib/seeds updates (jonatack)
  • #20358 src/randomenv.cpp: Fix build on uclibc (ffontaine)
  • #20406 util: Avoid invalid integer negation in formatmoney and valuefromamount (practicalswift)
  • #20434 contrib: Parse elf directly for symbol and security checks (laanwj)
  • #20451 lint: Run mypy over contrib/devtools (fanquake)
  • #20476 contrib: Add test for elf symbol-check (laanwj)
  • #20530 lint: Update cppcheck linter to c++17 and improve explicit usage (fjahr)
  • #20589 log: Clarify that failure to read/write fee_estimates.dat is non-fatal (MarcoFalke)
  • #20602 util: Allow use of c++14 chrono literals (MarcoFalke)
  • #20605 init: Signal-safe instant shutdown (laanwj)
  • #20608 contrib: Add symbol check test for PE binaries (fanquake)
  • #20689 contrib: Replace binary verification script verify.sh with python rewrite (theStack)
  • #20715 util: Add argsmanager::getcommand() and use it in bitcoin-wallet (MarcoFalke)
  • #20735 script: Remove outdated extract-osx-sdk.sh (hebasto)
  • #20817 lint: Update list of spelling linter false positives, bump to codespell 2.0.0 (theStack)
  • #20884 script: Improve robustness of bitcoind.service on startup (hebasto)
  • #20906 contrib: Embed c++11 patch in install_db4.sh (gruve-p)
  • #21004 contrib: Fix docker args conditional in gitian-build (setpill)
  • #21007 bitcoind: Add -daemonwait option to wait for initialization (laanwj)
  • #21041 log: Move “Pre-allocating up to position 0x[…] in […].dat” log message to debug category (practicalswift)
  • #21059 Drop boost/preprocessor dependencies (hebasto)
  • #21087 guix: Passthrough BASE_CACHE into container (dongcarl)
  • #21088 guix: Jump forwards in time-machine and adapt (dongcarl)
  • #21089 guix: Add support for powerpc64{,le} (dongcarl)
  • #21110 util: Remove boost posix_time usage from gettime* (fanquake)
  • #21111 Improve OpenRC initscript (parazyd)
  • #21123 code style: Add EditorConfig file (kiminuo)
  • #21173 util: Faster hexstr => 13% faster blocktojson (martinus)
  • #21221 tools: Allow argument/parameter bin packing in clang-format (jnewbery)
  • #21244 Move GetDataDir to ArgsManager (kiminuo)
  • #21255 contrib: Run test-symbol-check for risc-v (fanquake)
  • #21271 guix: Explicitly set umask in build container (dongcarl)
  • #21300 script: Add explanatory comment to tc.sh (dscotese)
  • #21317 util: Make assume() usable as unary expression (MarcoFalke)
  • #21336 Make .gitignore ignore src/test/fuzz/fuzz.exe (hebasto)
  • #21337 guix: Update darwin native packages dependencies (hebasto)
  • #21405 compat: remove memcpy -> memmove backwards compatibility alias (fanquake)
  • #21418 contrib: Make systemd invoke dependencies only when ready (laanwj)
  • #21447 Always add -daemonwait to known command line arguments (hebasto)
  • #21471 bugfix: Fix bech32_encode calls in gen_key_io_test_vectors.py (sipa)
  • #21615 script: Add trusted key for hebasto (hebasto)
  • #21664 contrib: Use lief for macos and windows symbol & security checks (fanquake)
  • #21695 contrib: Remove no longer used contrib/bitcoin-qt.pro (hebasto)
  • #21711 guix: Add full installation and usage documentation (dongcarl)
  • #21799 guix: Use gcc-8 across the board (dongcarl)
  • #21802 Avoid UB in util/asmap (advance a dereferenceable iterator outside its valid range) (MarcoFalke)
  • #21823 script: Update reviewers (jonatack)
  • #21850 Remove GetDataDir(net_specific) function (kiminuo)
  • #21871 scripts: Add checks for minimum required os versions (fanquake)
  • #21966 Remove double serialization; use software encoder for fee estimation (sipa)
  • #22060 contrib: Add torv3 seed nodes for testnet, drop v2 ones (laanwj)
  • #22244 devtools: Correctly extract symbol versions in symbol-check (laanwj)
  • #22533 guix/build: Remove vestigial SKIPATTEST.TAG (dongcarl)
  • #22643 guix-verify: Non-zero exit code when anything fails (dongcarl)
  • #22654 guix: Don’t include directory name in SHA256SUMS (achow101)
  • Documentation:
  • #15451 clarify getdata limit after #14897 (HashUnlimited)
  • #15545 Explain why CheckBlock() is called before AcceptBlock (Sjors)
  • #17350 Add developer documentation to isminetype (HAOYUatHZ)
  • #17934 Use CONFIG_SITE variable instead of –prefix option (hebasto)
  • #18030 Coin::IsSpent() can also mean never existed (Sjors)
  • #18096 IsFinalTx comment about nSequence & OP_CLTV (nothingmuch)
  • #18568 Clarify developer notes about constant naming (ryanofsky)
  • #19961 doc: tor.md updates (jonatack)
  • #19968 Clarify CRollingBloomFilter size estimate (robot-dreams)
  • #20200 Rename CODEOWNERS to REVIEWERS (adamjonas)
  • #20329 docs/descriptors.md: Remove hardened marker in the path after xpub (dgpv)
  • #20380 Add instructions on how to fuzz the P2P layer using Honggfuzz NetDriver (practicalswift)
  • #20414 Remove generated manual pages from master branch (laanwj)
  • #20473 Document current boost dependency as 1.71.0 (laanwj)
  • #20512 Add bash as an OpenBSD dependency (emilengler)
  • #20568 Use FeeModes doc helper in estimatesmartfee (MarcoFalke)
  • #20577 libconsensus: add missing error code description, fix NBitcoin link (theStack)
  • #20587 Tidy up Tor doc (more stringent) (wodry)
  • #20592 Update wtxidrelay documentation per BIP339 (jonatack)
  • #20601 Update for FreeBSD 12.2, add GUI Build Instructions (jarolrod)
  • #20635 fix misleading comment about call to non-existing function (pox)
  • #20646 Refer to BIPs 339/155 in feature negotiation (jonatack)
  • #20653 Move addr relay comment in net to correct place (MarcoFalke)
  • #20677 Remove shouty enums in net_processing comments (sdaftuar)
  • #20741 Update ‘Secure string handling’ (prayank23)
  • #20757 tor.md and -onlynet help updates (jonatack)
  • #20829 Add -netinfo help (jonatack)
  • #20830 Update developer notes with signet (jonatack)
  • #20890 Add explicit macdeployqtplus dependencies install step (hebasto)
  • #20913 Add manual page generation for bitcoin-util (laanwj)
  • #20985 Add xorriso to macOS depends packages (fanquake)
  • #20986 Update developer notes to discourage very long lines (jnewbery)
  • #20987 Add instructions for generating RPC docs (ben-kaufman)
  • #21026 Document use of make-tag script to make tags (laanwj)
  • #21028 doc/bips: Add BIPs 43, 44, 49, and 84 (luke-jr)
  • #21049 Add release notes for listdescriptors RPC (S3RK)
  • #21060 More precise -debug and -debugexclude doc (wodry)
  • #21077 Clarify -timeout and -peertimeout config options (glozow)
  • #21105 Correctly identify script type (niftynei)
  • #21163 Guix is shipped in Debian and Ubuntu (MarcoFalke)
  • #21210 Rework internal and external links (MarcoFalke)
  • #21246 Correction for VerifyTaprootCommitment comments (roconnor-blockstream)
  • #21263 Clarify that squashing should happen before review (MarcoFalke)
  • #21323 guix, doc: Update default HOSTS value (hebasto)
  • #21324 Update build instructions for Fedora (hebasto)
  • #21343 Revamp macOS build doc (jarolrod)
  • #21346 install qt5 when building on macOS (fanquake)
  • #21384 doc: add signet to bitcoin.conf documentation (jonatack)
  • #21394 Improve comment about protected peers (amitiuttarwar)
  • #21398 Update fuzzing docs for afl-clang-lto (MarcoFalke)
  • #21444 net, doc: Doxygen updates and fixes in netbase.{h,cpp} (jonatack)
  • #21481 Tell howto install clang-format on Debian/Ubuntu (wodry)
  • #21567 Fix various misleading comments (glozow)
  • #21661 Fix name of script guix-build (Emzy)
  • #21672 Remove boostrap info from GUIX_COMMON_FLAGS doc (fanquake)
  • #21688 Note on SDK for macOS depends cross-compile (jarolrod)
  • #21709 Update reduce-memory.md and bitcoin.conf -maxconnections info (jonatack)
  • #21710 update helps for addnode rpc and -addnode/-maxconnections config options (jonatack)
  • #21752 Clarify that feerates are per virtual size (MarcoFalke)
  • #21811 Remove Visual Studio 2017 reference from readme (sipsorcery)
  • #21818 Fixup -coinstatsindex help, update bitcoin.conf and files.md (jonatack)
  • #21856 add OSS-Fuzz section to fuzzing.md doc (adamjonas)
  • #21912 Remove mention of priority estimation (MarcoFalke)
  • #21925 Update bips.md for 0.21.1 (MarcoFalke)
  • #21942 improve make with parallel jobs description (klementtan)
  • #21947 Fix OSS-Fuzz links (MarcoFalke)
  • #21988 note that brew installed qt is not supported (jarolrod)
  • #22056 describe in fuzzing.md how to reproduce a CI crash (jonatack)
  • #22080 add maxuploadtarget to bitcoin.conf example (jarolrod)
  • #22088 Improve note on choosing posix mingw32 (jarolrod)
  • #22109 Fix external links (IRC, …) (MarcoFalke)
  • #22121 Various validation doc fixups (MarcoFalke)
  • #22172 Update tor.md, release notes with removal of tor v2 support (jonatack)
  • #22204 Remove obsolete okSafeMode RPC guideline from developer notes (theStack)
  • #22208 Update REVIEWERS (practicalswift)
  • #22250 add basic I2P documentation (vasild)
  • #22296 Final merge of release notes snippets, mv to wiki (MarcoFalke)
  • #22335 recommend --disable-external-signer in OpenBSD build guide (theStack)
  • #22339 Document minimum required libc++ version (hebasto)
  • #22349 Repository IRC updates (jonatack)
  • #22360 Remove unused section from release process (MarcoFalke)
  • #22369 Add steps for Transifex to release process (jonatack)
  • #22393 Added info to bitcoin.conf doc (bliotti)
  • #22402 Install Rosetta on M1-macOS for qt in depends (hebasto)
  • #22432 Fix incorrect testmempoolaccept doc (glozow)
  • #22648 doc, test: improve i2p/tor docs and i2p reachable unit tests (jonatack)

New in Bitcoin Core 22.0.0 (Dec 12, 2022)

  • This release includes new features, various bug fixes and performance improvements, as well as updated translations.

New in Bitcoin Core 0.22.0 (Sep 14, 2021)

  • Notable changes:
  • P2P and network changes:
  • Added support for running Bitcoin Core as an I2P (Invisible Internet Project) service and connect to such services. See i2p.md for details. (#20685)
  • This release removes support for Tor version 2 hidden services in favor of Tor v3 only, as the Tor network dropped support for Tor v2 with the release of Tor version 0.4.6. Henceforth, Bitcoin Core ignores Tor v2 addresses; it neither rumors them over the network to other peers, nor stores them in memory or to peers.dat. (#22050)
  • Added NAT-PMP port mapping support via libnatpmp. (#18077)
  • New and Updated RPCs:
  • Due to BIP 350 being implemented, behavior for all RPCs that accept addresses is changed when a native witness version 1 (or higher) is passed. These now require a Bech32m encoding instead of a Bech32 one, and Bech32m encoding will be used for such addresses in RPC output as well. No version 1 addresses should be created for mainnet until consensus rules are adopted that give them meaning (as will happen through BIP 341). Once that happens, Bech32m is expected to be used for them, so this shouldn't affect any production systems, but may be observed on other networks where such addresses already have meaning (like signet). (#20861)
  • The getpeerinfo RPC returns two new boolean fields, bip152_hb_to and bip152_hb_from, that respectively indicate whether we selected a peer to be in compact blocks high-bandwidth mode or whether a peer selected us as a compact blocks high-bandwidth peer. High-bandwidth peers send new block announcements via a cmpctblock message rather than the usual inv/headers announcements. See BIP 152 for more details. (#19776)
  • getpeerinfo no longer returns the following fields: addnode, banscore, and whitelisted, which were previously deprecated in 0.21. Instead of addnode, the connection_type field returns manual. Instead of whitelisted, the permissions field indicates if the peer has special privileges. The banscore field has simply been removed. (#20755)
  • The following RPCs: gettxout, getrawtransaction, decoderawtransaction, decodescript, gettransaction, and REST endpoints: /rest/tx, /rest/getutxos, /rest/block deprecated the following fields (which are no longer returned in the responses by default): addresses, reqSigs. The -deprecatedrpc=addresses flag must be passed for these fields to be included in the RPC response. This flag/option will be available only for this major release, after which the deprecation will be removed entirely. Note that these fields are attributes of the scriptPubKey object returned in the RPC response. However, in the response of decodescript these fields are top-level attributes, and included again as attributes of the scriptPubKey object. (#20286)
  • When creating a hex-encoded bitcoin transaction using the bitcoin-tx utility with the -json option set, the following fields: addresses, reqSigs are no longer returned in the tx output of the response. (#20286)
  • The listbanned RPC now returns two new numeric fields: ban_duration and time_remaining. Respectively, these new fields indicate the duration of a ban and the time remaining until a ban expires, both in seconds. Additionally, the ban_created field is repositioned to come before banned_until. (#21602)
  • The setban RPC can ban onion addresses again. This fixes a regression introduced in version 0.21.0. (#20852)
  • The getnodeaddresses RPC now returns a "network" field indicating the network type (ipv4, ipv6, onion, or i2p) for each address. (#21594)
  • getnodeaddresses now also accepts a "network" argument (ipv4, ipv6, onion, or i2p) to return only addresses of the specified network. (#21843)
  • The testmempoolaccept RPC now accepts multiple transactions (still experimental at the moment, API may be unstable). This is intended for testing transaction packages with dependency relationships; it is not recommended for batch-validating independent transactions. In addition to mempool policy, package policies apply: the list cannot contain more than 25 transactions or have a total size exceeding 101K virtual bytes, and cannot conflict with (spend the same inputs as) each other or the mempool, even if it would be a valid BIP125 replace-by-fee. There are some known limitations to the accuracy of the test accept: it's possible for testmempoolaccept to return "allowed"=True for a group of transactions, but "too-long-mempool-chain" if they are actually submitted. (#20833)
  • addmultisigaddress and createmultisig now support up to 20 keys for Segwit addresses. (#20867)
  • Changes to Wallet or GUI related RPCs can be found in the GUI or Wallet section below.
  • Build System:
  • Release binaries are now produced using the new guix-based build system. The /doc/release-process.md document has been updated accordingly.
  • Files:
  • The list of banned hosts and networks (via setban RPC) is now saved on disk in JSON format in banlist.json instead of banlist.dat. banlist.dat is only read on startup if banlist.json is not present. Changes are only written to the new banlist.json. A future version of Bitcoin Core may completely ignore banlist.dat. (#20966)
  • New settings:
  • The -natpmp option has been added to use NAT-PMP to map the listening port. If both UPnP and NAT-PMP are enabled, a successful allocation from UPnP prevails over one from NAT-PMP. (#18077)
  • Updated settings:
  • Changes to Wallet or GUI related settings can be found in the GUI or Wallet section below.
  • Passing an invalid -rpcauth argument now cause bitcoind to fail to start. (#20461)
  • Tools and Utilities:
  • A new CLI -addrinfo command returns the number of addresses known to the node per network type (including Tor v2 versus v3) and total. This can be useful to see if the node knows enough addresses in a network to use options like -onlynet=<network> or to upgrade to this release of Bitcoin Core 22.0 that supports Tor v3 only. (#21595)
  • A new -rpcwaittimeout argument to bitcoin-cli sets the timeout in seconds to use with -rpcwait. If the timeout expires, bitcoin-cli will report a failure. (#21056)
  • Wallet:
  • External signers such as hardware wallets can now be used through the new RPC methods enumeratesigners and displayaddress. Support is also added to the send RPC call. This feature is experimental. See external-signer.md for details. (#16546)
  • A new listdescriptors RPC is available to inspect the contents of descriptor-enabled wallets. The RPC returns public versions of all imported descriptors, including their timestamp and flags. For ranged descriptors, it also returns the range boundaries and the next index to generate addresses from. (#20226)
  • The bumpfee RPC is not available with wallets that have private keys disabled. psbtbumpfee can be used instead. (#20891)
  • The fundrawtransaction, send and walletcreatefundedpsbt RPCs now support an include_unsafe option that when true allows using unsafe inputs to fund the transaction. Note that the resulting transaction may become invalid if one of the unsafe inputs disappears. If that happens, the transaction must be funded with different inputs and republished. (#21359)
  • We now support up to 20 keys in multi() and sortedmulti() descriptors under wsh(). (#20867)
  • Taproot descriptors can be imported into the wallet only after activation has occurred on the network (e.g. mainnet, testnet, signet) in use. See descriptors.md for supported descriptors.
  • GUI changes:
  • External signers such as hardware wallets can now be used. These require an external tool such as HWI to be installed and configured under Options -> Wallet. When creating a new wallet a new option "External signer" will appear in the dialog. If the device is detected, its name is suggested as the wallet name. The watch-only keys are then automatically imported. Receive addresses can be verified on the device. The send dialog will automatically use the connected device. This feature is experimental and the UI may freeze for a few seconds when performing these actions.
  • Low-level changes:
  • RPC:
  • The RPC server can process a limited number of simultaneous RPC requests. Previously, if this limit was exceeded, the RPC server would respond with status code 500 (HTTP_INTERNAL_SERVER_ERROR). Now it returns status code 503 (HTTP_SERVICE_UNAVAILABLE). (#18335)
  • Error codes have been updated to be more accurate for the following error cases (#18466):
  • signmessage now returns RPC_INVALID_ADDRESS_OR_KEY (-5) if the passed address is invalid. Previously returned RPC_TYPE_ERROR (-3).
  • verifymessage now returns RPC_INVALID_ADDRESS_OR_KEY (-5) if the passed address is invalid. Previously returned RPC_TYPE_ERROR (-3).
  • verifymessage now returns RPC_TYPE_ERROR (-3) if the passed signature is malformed. Previously returned RPC_INVALID_ADDRESS_OR_KEY (-5).

New in Bitcoin Core 0.21.1 (May 3, 2021)

  • This minor release includes various bug fixes and performance improvements, as well as updated translations.

New in Bitcoin Core 0.21.0 (Jan 16, 2021)

  • Consensus:
  • 18267 BIP-325: Signet (kallewoof)
  • 20016 uint256: 1 is a constant (ajtowns)
  • 20006 Fix misleading error message: Clean stack rule (sanket1729)
  • 19953 Implement BIP 340-342 validation (Schnorr/taproot/tapscript) (sipa)
  • 20169 Taproot follow-up: Make ComputeEntrySchnorr and ComputeEntryECDSA const to clarify contract (practicalswift)
  • Policy:
  • 18766 Disable fee estimation in blocksonly mode (darosior)
  • 19630 Cleanup fee estimation code (darosior)
  • 20165 Only relay Taproot spends if next block has it active (sipa)
  • Mining:
  • 17946 Fix GBT: Restore “!segwit” and “csv” to “rules” key (luke-jr)
  • Privacy:
  • 16432 Add privacy to the Overview page (hebasto)
  • 18861 Do not answer GETDATA for to-be-announced tx (sipa)
  • 18038 Mempool tracks locally submitted transactions to improve wallet privacy (amitiuttarwar)
  • 19109 Only allow getdata of recently announced invs (sipa)
  • Block and transaction handling:
  • 17737 Add ChainstateManager, remove BlockManager global (jamesob)
  • 18960 indexes: Add compact block filter headers cache (jnewbery)
  • 13204 Faster sigcache nonce (JeremyRubin)
  • 19088 Use std::chrono throughout some validation functions (fanquake)
  • 19142 Make VerifyDB level 4 interruptible (MarcoFalke)
  • 17994 Flush undo files after last block write (kallewoof)
  • 18990 log: Properly log txs rejected from mempool (MarcoFalke)
  • 18984 Remove unnecessary input blockfile SetPos (dgenr8)
  • 19526 log: Avoid treating remote misbehvior as local system error (MarcoFalke)
  • 18044 Use wtxid for transaction relay (sdaftuar)
  • 18637 coins: allow cache resize after init (jamesob)
  • 19854 Avoid locking CTxMemPool::cs recursively in simple cases (hebasto)
  • 19478 Remove CTxMempool::mapLinks data structure member (JeremyRubin)
  • 19927 Reduce direct g_chainman usage (dongcarl)
  • 19898 log: print unexpected version warning in validation log category (n-thumann)
  • 20036 signet: Add assumed values for default signet (MarcoFalke)
  • 20048 chainparams: do not log signet startup messages for other chains (jonatack)
  • 19339 re-delegate absurd fee checking from mempool to clients (glozow)
  • 20035 signet: Fix uninitialized read in validation (MarcoFalke)
  • 20157 Bugfix: chainparams: Add missing (always enabled) Taproot deployment for Signet (luke-jr)
  • 20263 Update assumed chain params (MarcoFalke)
  • 20372 Avoid signed integer overflow when loading a mempool.dat file with a malformed time field (practicalswift)
  • 18621 script: Disallow silent bool -> cscript conversion (MarcoFalke)
  • 18612, #18732 script: Remove undocumented and unused operator+ (MarcoFalke)
  • 19317 Add a left-justified width field to log2_work component for a uniform debug.log output (jamesgmorgan)
  • P2P protocol and network code:
  • 18544 Limit BIP37 filter lifespan (active between filterload..filterclear) (theStack)
  • 18806 Remove is{Empty,Full} flags from CBloomFilter, clarify CVE fix (theStack)
  • 18512 Improve asmap checks and add sanity check (sipa)
  • 18877 Serve cfcheckpt requests (jnewbery)
  • 18895 Unbroadcast followups: rpcs, nLastResend, mempool sanity check (gzhao408)
  • 19010 net processing: Add support for getcfheaders (jnewbery)
  • 16939 Delay querying DNS seeds (ajtowns)
  • 18807 Unbroadcast follow-ups (amitiuttarwar)
  • 19044 Add support for getcfilters (jnewbery)
  • 19084 improve code documentation for dns seed behaviour (ajtowns)
  • 19260 disconnect peers that send filterclear + update existing filter msg disconnect logic (gzhao408)
  • 19284 Add seed.bitcoin.wiz.biz to DNS seeds (wiz)
  • 19322 split PushInventory() (jnewbery)
  • 19204 Reduce inv traffic during IBD (MarcoFalke)
  • 19470 banlist: log post-swept banlist size at startup (fanquake)
  • 19191 Extract download permission from noban (MarcoFalke)
  • 14033 Drop CADDR_TIME_VERSION checks now that MIN_PEER_PROTO_VERSION is greater (Empact)
  • 19464 net, rpc: remove -banscore option, deprecate banscore in getpeerinfo (jonatack)
  • 19514 [net/net processing] check banman pointer before dereferencing (jnewbery)
  • 19512 banscore updates to gui, tests, release notes (jonatack)
  • 19360 improve encapsulation of CNetAddr (vasild)
  • 19217 disambiguate block-relay-only variable names from blocksonly variables (glowang)
  • 19473 Add -networkactive option (hebasto)
  • 19472 [net processing] Reduce cs_main scope in MaybeDiscourageAndDisconnect() (jnewbery)
  • 19583 clean up Misbehaving() (jnewbery)
  • 19534 save the network type explicitly in CNetAddr (vasild)
  • 19569 Enable fetching of orphan parents from wtxid peers (sipa)
  • 18991 Cache responses to GETADDR to prevent topology leaks (naumenkogs)
  • 19596 Deduplicate parent txid loop of requested transactions and missing parents of orphan transactions (sdaftuar)
  • 19316 Cleanup logic around connection types (amitiuttarwar)
  • 19070 Signal support for compact block filters with NODE_COMPACT_FILTERS (jnewbery)
  • 19705 Shrink CAddress from 48 to 40 bytes on x64 (vasild)
  • 19704 Move ProcessMessage() to PeerLogicValidation (jnewbery)
  • 19628 Change CNetAddr::ip to have flexible size (vasild)
  • 19797 Remove old check for 3-byte shifted IP addresses from pre-0.2.9 nodes (#19797)
  • 19607 Add Peer struct for per-peer data in net processing (jnewbery)
  • 19857 improve nLastBlockTime and nLastTXTime documentation (jonatack)
  • 19724 Cleanup connection types- followups (amitiuttarwar)
  • 19670 Protect localhost and block-relay-only peers from eviction (sdaftuar)
  • 19728 Increase the ip address relay branching factor for unreachable networks (sipa)
  • 19879 Miscellaneous wtxid followups (amitiuttarwar)
  • 19697 Improvements on ADDR caching (naumenkogs)
  • 17785 Unify Send and Receive protocol versions (hebasto)
  • 19845 CNetAddr: add support to (un)serialize as ADDRv2 (vasild)
  • 19107 Move all header verification into the network layer, extend logging (troygiorshev)
  • 20003 Exit with error message if -proxy is specified without arguments (instead of continuing without proxy server) (practicalswift)
  • 19991 Use alternative port for incoming Tor connections (hebasto)
  • 19723 Ignore unknown messages before VERACK (sdaftuar)
  • 19954 Complete the BIP155 implementation and upgrade to TORv3 (vasild)
  • 20119 BIP155 follow-ups (sipa)
  • 19988 Overhaul transaction request logic (sipa)
  • 17428 Try to preserve outbound block-relay-only connections during restart (hebasto)
  • 19911 Guard vRecvGetData with cs_vRecv and orphan_work_set with g_cs_orphans (narula)
  • 19753 Don’t add AlreadyHave transactions to recentRejects (troygiorshev)
  • 20187 Test-before-evict bugfix and improvements for block-relay-only peers (sdaftuar)
  • 20237 Hardcoded seeds update for 0.21 (laanwj)
  • 20212 Fix output of peer address in version message (vasild)
  • 20284 Ensure old versions don’t parse peers.dat (vasild)
  • 20405 Avoid calculating onion address checksum when version is not 3 (lontivero)
  • 20564 Don’t send ‘sendaddrv2’ to pre-70016 software, and send before ‘verack’ (sipa)
  • 20660 Move signet onion seed from v2 to v3 (Sjors)
  • Wallet:
  • 18262 Exit selection when best_waste is 0 (achow101)
  • 17824 Prefer full destination groups in coin selection (fjahr)
  • 17219 Allow transaction without change if keypool is empty (Sjors)
  • 15761 Replace -upgradewallet startup option with upgradewallet RPC (achow101)
  • 18671 Add BlockUntilSyncedToCurrentChain to dumpwallet (MarcoFalke)
  • 16528 Native Descriptor Wallets using DescriptorScriptPubKeyMan (achow101)
  • 18777 Recommend absolute path for dumpwallet (MarcoFalke)
  • 16426 Reverse cs_main, cs_wallet lock order and reduce cs_main locking (ariard)
  • 18699 Avoid translating RPC errors (MarcoFalke)
  • 18782 Make sure no DescriptorScriptPubKeyMan or WalletDescriptor members are left uninitialized after construction (practicalswift)
  • 9381 Remove CWalletTx merging logic from AddToWallet (ryanofsky)
  • 16946 Include a checksum of encrypted private keys (achow101)
  • 17681 Keep inactive seeds after sethdseed and derive keys from them as needed (achow101)
  • 18918 Move salvagewallet into wallettool (achow101)
  • 14988 Fix for confirmed column in csv export for payment to self transactions (benthecarman)
  • 18275 Error if an explicit fee rate was given but the needed fee rate differed (kallewoof)
  • 19054 Skip hdKeypath of ‘m’ when determining inactive hd seeds (achow101)
  • 17938 Disallow automatic conversion between disparate hash types (Empact)
  • 19237 Check size after unserializing a pubkey (elichai)
  • 11413 sendtoaddress/sendmany: Add explicit feerate option (kallewoof)
  • 18850 Fix ZapSelectTx to sync wallet spends (bvbfan)
  • 18923 Never schedule MaybeCompactWalletDB when -flushwallet is off (MarcoFalke)
  • 19441 walletdb: Don’t reinitialize desc cache with multiple cache entries (achow101)
  • 18907 walletdb: Don’t remove database transaction logs and instead error (achow101)
  • 19334 Introduce WalletDatabase abstract class (achow101)
  • 19335 Cleanup and separate BerkeleyDatabase and BerkeleyBatch (achow101)
  • 19102 Introduce and use DummyDatabase instead of dummy BerkeleyDatabase (achow101)
  • 19568 Wallet should not override signing errors (fjahr)
  • 17204 Do not turn OP_1NEGATE in scriptSig into 0x0181 in signing code (sipa) (meshcollider)
  • 19457 Cleanup wallettool salvage and walletdb extraneous declarations (achow101)
  • 15937 Add loadwallet and createwallet load_on_startup options (ryanofsky)
  • 16841 Replace GetScriptForWitness with GetScriptForDestination (meshcollider)
  • 14582 always do avoid partial spends if fees are within a specified range (kallewoof)
  • 19743 -maxapsfee follow-up (kallewoof)
  • 19289 GetWalletTx and IsMine require cs_wallet lock (promag)
  • 19671 Remove -zapwallettxes (achow101)
  • 19805 Avoid deserializing unused records when salvaging (achow101)
  • 19754 wallet, gui: Reload previously loaded wallets on startup (achow101)
  • 19738 Avoid multiple BerkeleyBatch in DelAddressBook (promag)
  • 19919 bugfix: make LoadWallet assigns status always (AkioNak)
  • 16378 The ultimate send RPC (Sjors)
  • 15454 Remove the automatic creation and loading of the default wallet (achow101)
  • 19501 send* RPCs in the wallet returns the “fee reason” (stackman27)
  • 20130 Remove db mode string (S3RK)
  • 19077 Add sqlite as an alternative wallet database and use it for new descriptor wallets (achow101)
  • 20125 Expose database format in getwalletinfo (promag)
  • 20198 Show name, format and if uses descriptors in bitcoin-wallet tool (jonasschnelli)
  • 20216 Fix buffer over-read in SQLite file magic check (theStack)
  • 20186 Make -wallet setting not create wallets (ryanofsky)
  • 20230 Fix bug when just created encrypted wallet cannot get address (hebasto)
  • 20282 Change upgradewallet return type to be an object (jnewbery)
  • 20220 Explicit fee rate follow-ups/fixes for 0.21 (jonatack)
  • 20199 Ignore (but warn) on duplicate -wallet parameters (jonasschnelli)
  • 20324 Set DatabaseStatus::SUCCESS in MakeSQLiteDatabase (MarcoFalke)
  • 20266 Fix change detection of imported internal descriptors (achow101)
  • 20153 Do not import a descriptor with hardened derivations into a watch-only wallet (S3RK)
  • 20344 Fix scanning progress calculation for single block range (theStack)
  • 19502 Bugfix: Wallet: Soft-fail exceptions within ListWalletDir file checks (luke-jr)
  • 20378 Fix potential division by 0 in WalletLogPrintf (jonasschnelli)
  • 18836 Upgradewallet fixes and additional tests (achow101)
  • 20139 Do not return warnings from UpgradeWallet() (stackman27)
  • 20305 Introduce fee_rate sat/vB param/option (jonatack)
  • 20426 Allow zero-fee fundrawtransaction/walletcreatefundedpsbt and other fixes (jonatack)
  • 20573 wallet, bugfix: allow send with string fee_rate amounts (jonatack)
  • RPC and other APIs:
  • 18574 cli: Call getbalances.ismine.trusted instead of getwalletinfo.balance (jonatack)
  • 17693 Add generateblock to mine a custom set of transactions (andrewtoth)
  • 18495 Remove deprecated migration code (vasild)
  • 18493 Remove deprecated “size” from mempool txs (vasild)
  • 18467 Improve documentation and return value of settxfee (fjahr)
  • 18607 Fix named arguments in documentation (MarcoFalke)
  • 17831 doc: Fix and extend getblockstats examples (asoltys)
  • 18785 Prevent valgrind false positive in rest_blockhash_by_height (ryanofsky)
  • 18999 log: Remove “No rpcpassword set” from logs (MarcoFalke)
  • 19006 Avoid crash when g_thread_http was never started (MarcoFalke)
  • 18594 cli: Display multiwallet balances in -getinfo (jonatack)
  • 19056 Make gettxoutsetinfo/GetUTXOStats interruptible (MarcoFalke)
  • 19112 Remove special case for unknown service flags (MarcoFalke)
  • 18826 Expose txinwitness for coinbase in JSON form from RPC (rvagg)
  • 19282 Rephrase generatetoaddress help, and use PACKAGE_NAME (luke-jr)
  • 16377 don’t automatically append inputs in walletcreatefundedpsbt (Sjors)
  • 19200 Remove deprecated getaddressinfo fields (jonatack)
  • 19133 rpc, cli, test: add bitcoin-cli -generate command (jonatack)
  • 19469 Deprecate banscore field in getpeerinfo (jonatack)
  • 16525 Dump transaction version as an unsigned integer in RPC/TxToUniv (TheBlueMatt)
  • 19555 Deduplicate WriteHDKeypath() used in decodepsbt (theStack)
  • 19589 Avoid useless mempool query in gettxoutproof (MarcoFalke)
  • 19585 RPCResult Type of MempoolEntryDescription should be OBJ (stylesuxx)
  • 19634 Document getwalletinfo’s unlocked_until field as optional (justinmoon)
  • 19658 Allow RPC to fetch all addrman records and add records to addrman (jnewbery)
  • 19696 Fix addnode remove command error (fjahr)
  • 18654 Separate bumpfee’s psbt creation function into psbtbumpfee (achow101)
  • 19655 Catch listsinceblock target_confirmations exceeding block count (adaminsky)
  • 19644 Document returned error fields as optional if applicable (theStack)
  • 19455 rpc generate: print useful help and error message (jonatack)
  • 19550 Add listindices RPC (fjahr)
  • 19169 Validate provided keys for query_options parameter in listunspent (PastaPastaPasta)
  • 18244 fundrawtransaction and walletcreatefundedpsbt also lock manually selected coins (Sjors)
  • 14687 zmq: Enable TCP keepalive (mruddy)
  • 19405 Add network in/out connections to getnetworkinfo and -getinfo (jonatack)
  • 19878 rawtransaction: Fix argument in combinerawtransaction help message (pinheadmz)
  • 19940 Return fee and vsize from testmempoolaccept (gzhao408)
  • 13686 zmq: Small cleanups in the ZMQ code (domob1812)
  • 19386, #19528, #19717, #19849, #19994 Assert that RPCArg names are equal to CRPCCommand ones (MarcoFalke)
  • 19725 Add connection type to getpeerinfo, improve logs (amitiuttarwar)
  • 19969 Send RPC bug fix and touch-ups (Sjors)
  • 18309 zmq: Add support to listen on multiple interfaces (n-thumann)
  • 20055 Set HTTP Content-Type in bitcoin-cli (laanwj)
  • 19956 Improve invalid vout value rpc error message (n1rna)
  • 20101 Change no wallet loaded message to be clearer (achow101)
  • 19998 Add via_tor to getpeerinfo output (hebasto)
  • 19770 getpeerinfo: Deprecate “whitelisted” field (replaced by “permissions”) (luke-jr)
  • 20120 net, rpc, test, bugfix: update GetNetworkName, GetNetworksInfo, regression tests (jonatack)
  • 20595 Improve heuristic hex transaction decoding (sipa)
  • 20731 Add missing description of vout in getrawtransaction help text (benthecarman)
  • 19328 Add gettxoutsetinfo hash_type option (fjahr)
  • 19731 Expose nLastBlockTime/nLastTXTime as last block/last_transaction in getpeerinfo (jonatack)
  • 19572 zmq: Create “sequence” notifier, enabling client-side mempool tracking (instagibbs)
  • 20002 Expose peer network in getpeerinfo; simplify/improve -netinfo (jonatack)
  • GUI:
  • 17905 Avoid redundant tx status updates (ryanofsky)
  • 18646 Use PACKAGE_NAME in exception message (fanquake)
  • 17509 Save and load PSBT (Sjors)
  • 18769 Remove bug fix for Qt < 5.5 (10xcryptodev)
  • 15768 Add close window shortcut (IPGlider)
  • 16224 Bilingual GUI error messages (hebasto)
  • 18922 Do not translate InitWarning messages in debug.log (hebasto)
  • 18152 Use NotificationStatus enum for signals to GUI (hebasto)
  • 18587 Avoid wallet tryGetBalances calls in WalletModel::pollBalanceChanged (ryanofsky)
  • 17597 Fix height of QR-less ReceiveRequestDialog (hebasto)
  • 17918 Hide non PKHash-Addresses in signing address book (emilengler)
  • 17956 Disable unavailable context menu items in transactions tab (kristapsk)
  • 17968 Ensure that ModalOverlay is resized properly (hebasto)
  • 17993 Balance/TxStatus polling update based on last block hash (furszy)
  • 18424 Use parent-child relation to manage lifetime of OptionsModel object (hebasto)
  • 18452 Fix shutdown when waitfor* cmds are called from RPC console (hebasto)
  • 15202 Add Close All Wallets action (promag)
  • 19132 lock cs_main, m_cached_tip_mutex in that order (vasild)
  • 18898 Display warnings as rich text (hebasto)
  • 19231 add missing translation.h include to fix build (fanquake)
  • 18027 “PSBT Operations” dialog (gwillen)
  • 19256 Change combiner for signals to optional_last_value (fanquake)
  • 18896 Reset toolbar after all wallets are closed (hebasto)
  • 18993 increase console command max length (10xcryptodev)
  • 19323 Fix regression in txoutset in GUI console (hebasto)
  • 19210 Get rid of cursor in out-of-focus labels (hebasto)
  • 19011 Reduce cs_main lock accumulation during GUI startup (jonasschnelli)
  • 19844 Remove usage of boost::bind (fanquake)
  • 20479 Fix QPainter non-determinism on macOS (0.21 backport) (laanwj)
  • gui#6 Do not truncate node flag strings in debugwindow peers details tab (Saibato)
  • gui#8 Fix regression in TransactionTableModel (hebasto)
  • gui#17 doc: Remove outdated comment in TransactionTablePriv (MarcoFalke)
  • gui#20 Wrap tooltips in the intro window (hebasto)
  • gui#30 Disable the main window toolbar when the modal overlay is shown (hebasto)
  • gui#34 Show permissions instead of whitelisted (laanwj)
  • gui#35 Parse params directly instead of through node (ryanofsky)
  • gui#39 Add visual accenting for the ‘Create new receiving address’ button (hebasto)
  • gui#40 Clarify block height label (hebasto)
  • gui#43 bugfix: Call setWalletActionsEnabled(true) only for the first wallet (hebasto)
  • gui#97 Relax GUI freezes during IBD (jonasschnelli)
  • gui#71 Fix visual quality of text in QR image (hebasto)
  • gui#96 Slight improve create wallet dialog (Sjors)
  • gui#102 Fix SplashScreen crash when run with -disablewallet (hebasto)
  • gui#116 Fix unreasonable default size of the main window without loaded wallets (hebasto)
  • gui#120 Fix multiwallet transaction notifications (promag)
  • Build system:
  • 18504 Drop bitcoin-tx and bitcoin-wallet dependencies on libevent (ryanofsky)
  • 18586 Bump gitian descriptors to 0.21 (laanwj)
  • 17595 guix: Enable building for x86_64-w64-mingw32 target (dongcarl)
  • 17929 add linker optimisation flags to gitian & guix (Linux) (fanquake)
  • 18556 Drop make dist in gitian builds (hebasto)
  • 18088 ensure we aren’t using GNU extensions (fanquake)
  • 18741 guix: Make source tarball using git-archive (dongcarl)
  • 18843 warn on potentially uninitialized reads (vasild)
  • 17874 make linker checks more robust (fanquake)
  • 18535 remove -Qunused-arguments workaround for clang + ccache (fanquake)
  • 18743 Add –sysroot option to mac os native compile flags (ryanofsky)
  • 18216 test, build: Enable -Werror=sign-compare (Empact)
  • 18928 don’t pass -w when building for Windows (fanquake)
  • 16710 Enable -Wsuggest-override if available (hebasto)
  • 18738 Suppress -Wdeprecated-copy warnings (hebasto)
  • 18862 Remove fdelt_chk back-compat code and sanity check (fanquake)
  • 18887 enable -Werror=gnu (vasild)
  • 18956 enforce minimum required Windows version (7) (fanquake)
  • 18958 guix: Make V=1 more powerful for debugging (dongcarl)
  • 18677 Multiprocess build support (ryanofsky)
  • 19094 Only allow ASCII identifiers (laanwj)
  • 18820 Propagate well-known vars into depends (dongcarl)
  • 19173 turn on –enable-c++17 by –enable-fuzz (vasild)
  • 18297 Use pkg-config in BITCOIN_QT_CONFIGURE for all hosts including Windows (hebasto)
  • 19301 don’t warn when doxygen isn’t found (fanquake)
  • 19240 macOS toolchain simplification and bump (dongcarl)
  • 19356 Fix search for brew-installed BDB 4 on OS X (gwillen)
  • 19394 Remove unused RES_IMAGES (Bushstar)
  • 19403 improve __builtin_clz* detection (fanquake)
  • 19375 target Windows 7 when building libevent and fix ipv6 usage (fanquake)
  • 19331 Do not include server symbols in wallet (MarcoFalke)
  • 19257 remove BIP70 configure option (fanquake)
  • 18288 Add MemorySanitizer (MSan) in Travis to detect use of uninitialized memory (practicalswift)
  • 18307 Require pkg-config for all of the hosts (hebasto)
  • 19445 Update msvc build to use ISO standard C++17 (sipsorcery)
  • 18882 fix -Wformat-security check when compiling with GCC (fanquake)
  • 17919 Allow building with system clang (dongcarl)
  • 19553 pass -fcommon when building genisoimage (fanquake)
  • 19565 call AC_PATH_TOOL for dsymutil in macOS cross-compile (fanquake)
  • 19530 build LTO support into Apple’s ld64 (theuni)
  • 19525 add -Wl,-z,separate-code to hardening flags (fanquake)
  • 19667 set minimum required Boost to 1.58.0 (fanquake)
  • 19672 make clean removes .gcda and .gcno files from fuzz directory (Crypt-iQ)
  • 19622 Drop ancient hack in gitian-linux descriptor (hebasto)
  • 19688 Add support for llvm-cov (hebasto)
  • 19718 Add missed gcov files to ‘make clean’ (hebasto)
  • 19719 Add Werror=range-loop-analysis (MarcoFalke)
  • 19015 Enable some commonly enabled compiler diagnostics (practicalswift)
  • 19689 build, qt: Add Qt version checking (hebasto)
  • 17396 modest Android improvements (icota)
  • 18405 Drop all of the ZeroMQ patches (hebasto)
  • 15704 Move Win32 defines to configure.ac to ensure they are globally defined (luke-jr)
  • 19761 improve sed robustness by not using sed (fanquake)
  • 19758 Drop deprecated and unused GUARDED_VAR and PT_GUARDED_VAR annotations (hebasto)
  • 18921 add stack-clash and control-flow protection options to hardening flags (fanquake)
  • 19803 Bugfix: Define and use HAVE_FDATASYNC correctly outside LevelDB (luke-jr)
  • 19685 CMake invocation cleanup (dongcarl)
  • 19861 add /usr/local/ to LCOV_FILTER_PATTERN for macOS builds (Crypt-iQ)
  • 19916 allow user to specify DIR_FUZZ_SEED_CORPUS for cov_fuzz (Crypt-iQ)
  • 19944 Update secp256k1 subtree (including BIP340 support) (sipa)
  • 19558 Split pthread flags out of ldflags and dont use when building libconsensus (fanquake)
  • 19959 patch qt libpng to fix powerpc build (fanquake)
  • 19868 Fix target name (hebasto)
  • 19960 The vcpkg tool has introduced a proper way to use manifests (sipsorcery)
  • 20065 fuzz: Configure check for main function (MarcoFalke)
  • 18750 Optionally skip external warnings (vasild)
  • 20147 Update libsecp256k1 (endomorphism, test improvements) (sipa)
  • 20156 Make sqlite support optional (compile-time) (luke-jr)
  • 20318 Ensure source tarball has leading directory name (MarcoFalke)
  • 20447 Patch qt_intersect_spans to avoid non-deterministic behavior in LLVM 8 (achow101)
  • 20505 Avoid secp256k1.h include from system (dergoegge)
  • 20527 Do not ignore Homebrew’s SQLite on macOS (hebasto)
  • 20478 Don’t set BDB flags when configuring without (jonasschnelli)
  • 20563 Check that Homebrew’s berkeley-db4 package is actually installed (hebasto)
  • 19493 Fix clang build on Mac (bvbfan)
  • Tests and QA:
  • 18593 Complete impl. of msg_merkleblock and wait_for_merkleblock (theStack)
  • 18609 Remove REJECT message code (hebasto)
  • 18584 Check that the version message does not leak the local address (MarcoFalke)
  • 18597 Extend wallet_dump test to cover comments (MarcoFalke)
  • 18596 Try once more when RPC connection fails on Windows (MarcoFalke)
  • 18451 shift coverage from getunconfirmedbalance to getbalances (jonatack)
  • 18631 appveyor: Disable functional tests for now (MarcoFalke)
  • 18628 Add various low-level p2p tests (MarcoFalke)
  • 18615 Avoid accessing free’d memory in validation_chainstatemanager_tests (MarcoFalke)
  • 18571 fuzz: Disable debug log file (MarcoFalke)
  • 18653 add coverage for bitcoin-cli -rpcwait (jonatack)
  • 18660 Verify findCommonAncestor always initializes outputs (ryanofsky)
  • 17669 Have coins simulation test also use CCoinsViewDB (jamesob)
  • 18662 Replace gArgs with local argsman in bench (MarcoFalke)
  • 18641 Create cached blocks not in the future (MarcoFalke)
  • 18682 fuzz: http_request workaround for libevent < 2.1.1 (theStack)
  • 18692 Bump timeout in wallet_import_rescan (MarcoFalke)
  • 18695 Replace boost::mutex with std::mutex (hebasto)
  • 18633 Properly raise FailedToStartError when rpc shutdown before warmup finished (MarcoFalke)
  • 18675 Don’t initialize PrecomputedTransactionData in txvalidationcache tests (jnewbery)
  • 18691 Add wait_for_cookie_credentials() to framework for rpcwait tests (jonatack)
  • 18672 Add further BIP37 size limit checks to p2p_filter.py (theStack)
  • 18721 Fix linter issue (hebasto)
  • 18384 More specific feature_segwit test error messages and fixing incorrect comments (gzhao408)
  • 18575 bench: Remove requirement that all benches use same testing setup (MarcoFalke)
  • 18690 Check object hashes in wait_for_getdata (robot-visions)
  • 18712 display command line options passed to send_cli() in debug log (jonatack)
  • 18745 Check submitblock return values (MarcoFalke)
  • 18756 Use wait_for_getdata() in p2p_compactblocks.py (theStack)
  • 18724 Add coverage for -rpcwallet cli option (jonatack)
  • 18754 bench: Add caddrman benchmarks (vasild)
  • 18585 Use zero-argument super() shortcut (Python 3.0+) (theStack)
  • 18688 fuzz: Run in parallel (MarcoFalke)
  • 18770 Remove raw-tx byte juggling in mempool_reorg (MarcoFalke)
  • 18805 Add missing sync_all to wallet_importdescriptors.py (achow101)
  • 18759 bench: Start nodes with -nodebuglogfile (MarcoFalke)
  • 18774 Added test for upgradewallet RPC (brakmic)
  • 18485 Add mempool_updatefromblock.py (hebasto)
  • 18727 Add CreateWalletFromFile test (ryanofsky)
  • 18726 Check misbehavior more independently in p2p_filter.py (robot-visions)
  • 18825 Fix message for ECC_InitSanityCheck test (fanquake)
  • 18576 Use unittest for test_framework unit testing (gzhao408)
  • 18828 Strip down previous releases boilerplate (MarcoFalke)
  • 18617 Add factor option to adjust test timeouts (brakmic)
  • 18855 feature_backwards_compatibility.py test downgrade after upgrade (achow101)
  • 18864 Add v0.16.3 backwards compatibility test, bump v0.19.0.1 to v0.19.1 (Sjors)
  • 18917 fuzz: Fix vector size problem in system fuzzer (brakmic)
  • 18901 fuzz: use std::optional for sep_pos_opt variable (brakmic)
  • 18888 Remove RPCOverloadWrapper boilerplate (MarcoFalke)
  • 18952 Avoid os-dependent path (fametrano)
  • 18938 Fill fuzzing coverage gaps for functions in consensus/validation.h, primitives/block.h and util/translation.h (practicalswift)
  • 18986 Add capability to disable RPC timeout in functional tests (rajarshimaitra)
  • 18530 Add test for -blocksonly and -whitelistforcerelay param interaction (glowang)
  • 19014 Replace TEST_PREVIOUS_RELEASES env var with test_framework option (MarcoFalke)
  • 19052 Don’t limit fuzzing inputs to 1 MB for afl-fuzz (now: 8 ? fuzzers) (practicalswift)
  • 19060 Remove global wait_until from p2p_getdata (MarcoFalke)
  • 18926 Pass ArgsManager into getarg_tests (glowang)
  • 19110 Explain that a bug should be filed when the tests fail (MarcoFalke)
  • 18965 Implement base58_decode (10xcryptodev)
  • 16564 Always define the raii_event_tests test suite (candrews)
  • 19122 Add missing sync_blocks to wallet_hd (MarcoFalke)
  • 18875 fuzz: Stop nodes in process_message* fuzzers (MarcoFalke)
  • 18974 Check that invalid witness destinations can not be imported (MarcoFalke)
  • 18210 Type hints in Python tests (kiminuo)
  • 19159 Make valgrind.supp work on aarch64 (MarcoFalke)
  • 19082 Moved the CScriptNum asserts into the unit test in script.py (gillichu)
  • 19172 Do not swallow flake8 exit code (hebasto)
  • 19188 Avoid overwriting the NodeContext member of the testing setup [-Wshadow-field] (MarcoFalke)
  • 18890 disconnect_nodes should warn if nodes were already disconnected (robot-visions)
  • 19227 change blacklist to blocklist (TrentZ)
  • 19230 Move base58 to own module to break circular dependency (sipa)
  • 19083 msg_mempool, fRelay, and other bloomfilter tests (gzhao408)
  • 16756 Connection eviction logic tests (mzumsande)
  • 19177 Fix and clean p2p_invalid_messages functional tests (troygiorshev)
  • 19264 Don’t import asyncio to test magic bytes (jnewbery)
  • 19178 Make mininode_lock non-reentrant (jnewbery)
  • 19153 Mempool compatibility test (S3RK)
  • 18434 Add a test-security target and run it in CI (fanquake)
  • 19252 Wait for disconnect in disconnect_p2ps + bloomfilter test followups (gzhao408)
  • 19298 Add missing sync_blocks (MarcoFalke)
  • 19304 Check that message sends successfully when header is split across two buffers (troygiorshev)
  • 19208 move sync_blocks and sync_mempool functions to test_framework.py (ycshao)
  • 19198 Check that peers with forcerelay permission are not asked to feefilter (MarcoFalke)
  • 19351 add two edge case tests for CSubNet (vasild)
  • 19272 net, test: invalid p2p messages and test framework improvements (jonatack)
  • 19348 Bump linter versions (duncandean)
  • 19366 Provide main(…) function in fuzzer. Allow building uninstrumented harnesses with –enable-fuzz (practicalswift)
  • 19412 move TEST_RUNNER_EXTRA into native tsan setup (fanquake)
  • 19368 Improve functional tests compatibility with BSD/macOS (S3RK)
  • 19028 Set -logthreadnames in unit tests (MarcoFalke)
  • 18649 Add std::locale::global to list of locale dependent functions (practicalswift)
  • 19140 Avoid fuzzer-specific nullptr dereference in libevent when handling PROXY requests (practicalswift)
  • 19214 Auto-detect SHA256 implementation in benchmarks (sipa)
  • 19353 Fix mistakenly swapped “previous” and “current” lock orders (hebasto)
  • 19533 Remove unnecessary cs_mains in denialofservice_tests (jnewbery)
  • 19423 add functional test for txrelay during and after IBD (gzhao408)
  • 16878 Fix non-deterministic coverage of test DoS_mapOrphans (davereikher)
  • 19548 fuzz: add missing overrides to signature_checker (jonatack)
  • 19562 Fix fuzzer compilation on macOS (freenancial)
  • 19370 Static asserts for consistency of fee defaults (domob1812)
  • 19599 clean message_count and last_message (troygiorshev)
  • 19597 test decodepsbt fee calculation (count input value only once per UTXO) (theStack)
  • 18011 Replace current benchmarking framework with nanobench (martinus)
  • 19489 Fail wait_until early if connection is lost (MarcoFalke)
  • 19340 Preserve the LockData initial state if “potential deadlock detected” exception thrown (hebasto)
  • 19632 Catch decimal.InvalidOperation from TestNodeCLI#send_cli (Empact)
  • 19098 Remove duplicate NodeContext hacks (ryanofsky)
  • 19649 Restore test case for p2p transaction blinding (instagibbs)
  • 19657 Wait until is_connected in add_p2p_connection (MarcoFalke)
  • 19631 Wait for ‘cmpctblock’ in p2p_compactblocks when it is expected (Empact)
  • 19674 use throwaway _ variable for unused loop counters (theStack)
  • 19709 Fix ‘make cov’ with clang (hebasto)
  • 19564 p2p_feefilter improvements (logging, refactoring, speedup) (theStack)
  • 19756 add sync_all to fix race condition in wallet groups test (kallewoof)
  • 19727 Removing unused classes from p2p_leak.py (dhruv)
  • 19722 Add test for getblockheader verboseness (torhte)
  • 19659 Add a seed corpus generation option to the fuzzing test_runner (darosior)
  • 19775 Activate segwit in TestChain100Setup (MarcoFalke)
  • 19760 Remove confusing mininode terminology (jnewbery)
  • 19752 Update wait_until usage in tests not to use the one from utils (slmtpz)
  • 19839 Set appveyor VM version to previous Visual Studio 2019 release (sipsorcery)
  • 19830 Add tsan supp for leveldb::DBImpl::DeleteObsoleteFiles (MarcoFalke)
  • 19710 bench: Prevent thread oversubscription and decreases the variance of result values (hebasto)
  • 19842 Update the vcpkg checkout commit ID in appveyor config (sipsorcery)
  • 19507 Expand functional zmq transaction tests (instagibbs)
  • 19816 Rename wait until helper to wait_until_helper (MarcoFalke)
  • 19859 Fixes failing functional test by changing version (n-thumann)
  • 19887 Fix flaky wallet_basic test (fjahr)
  • 19897 Change FILE_CHAR_BLOCKLIST to FILE_CHARS_DISALLOWED (verretor)
  • 19800 Mockwallet (MarcoFalke)
  • 19922 Run rpc_txoutproof.py even with wallet disabled (MarcoFalke)
  • 19936 batch rpc with params (instagibbs)
  • 19971 create default wallet in extended tests (Sjors)
  • 19781 add parameterized constructor for msg_sendcmpct() (theStack)
  • 19963 Clarify blocksonly whitelistforcerelay test (t-bast)
  • 20022 Use explicit p2p objects where available (guggero)
  • 20028 Check that invalid peer traffic is accounted for (MarcoFalke)
  • 20004 Add signet witness commitment section parse tests (MarcoFalke)
  • 20034 Get rid of default wallet hacks (ryanofsky)
  • 20069 Mention commit id in scripted diff error (laanwj)
  • 19947 Cover change_type option of “walletcreatefundedpsbt” RPC (guggero)
  • 20126 p2p_leak_tx.py improvements (use MiniWallet, add p2p_lock acquires) (theStack)
  • 20129 Don’t export in6addr_loopback (vasild)
  • 20131 Remove unused nVersion=1 in p2p tests (MarcoFalke)
  • 20161 Minor Taproot follow-ups (sipa)
  • 19401 Use GBT to get block versions correct (luke-jr)
  • 20159 mining_getblocktemplate_longpoll.py improvements (use MiniWallet, add logging) (theStack)
  • 20039 Convert amounts from float to decimal (prayank23)
  • 20112 Speed up wallet_resendwallettransactions with mockscheduler RPC (MarcoFalke)
  • 20247 fuzz: Check for addrv1 compatibility before using addrv1 serializer. Fuzz addrv2 serialization (practicalswift)
  • 20167 Add test for -blockversion (MarcoFalke)
  • 19877 Clarify rpc_net & p2p_disconnect_ban functional tests (amitiuttarwar)
  • 20258 Remove getnettotals/getpeerinfo consistency test (jnewbery)
  • 20242 fuzz: Properly initialize PrecomputedTransactionData (MarcoFalke)
  • 20262 Skip –descriptor tests if sqlite is not compiled (achow101)
  • 18788 Update more tests to work with descriptor wallets (achow101)
  • 20289 fuzz: Check for addrv1 compatibility before using addrv1 serializer/deserializer on CService (practicalswift)
  • 20290 fuzz: Fix DecodeHexTx fuzzing harness issue (practicalswift)
  • 20245 Run script_assets_test even if built –with-libs=no (MarcoFalke)
  • 20300 fuzz: Add missing ECC_Start to descriptor_parse test (S3RK)
  • 20283 Only try witness deser when checking for witness deser failure (MarcoFalke)
  • 20303 fuzz: Assert expected DecodeHexTx behaviour when using legacy decoding (practicalswift)
  • 20316 Fix wallet_multiwallet test issue on Windows (MarcoFalke)
  • 20326 Fix ecdsa_verify in test framework (stepansnigirev)
  • 20328 cirrus: Skip tasks on the gui repo main branch (MarcoFalke)
  • 20355 fuzz: Check for addrv1 compatibility before using addrv1 serializer/deserializer on CSubNet (practicalswift)
  • 20332 Mock IBD in net_processing fuzzers (MarcoFalke)
  • 20218 Suppress epoll_ctl data race (MarcoFalke)
  • 20375 fuzz: Improve coverage for CPartialMerkleTree fuzzing harness (practicalswift)
  • 19669 contrib: Fixup valgrind suppressions file (MarcoFalke)
  • 18879 valgrind: remove outdated suppressions (fanquake)
  • 19226 Add BerkeleyDatabase tsan suppression (MarcoFalke)
  • 20379 Remove no longer needed UBSan suppression (float divide-by-zero in validation.cpp) (practicalswift)
  • 18190, #18736, #18744, #18775, #18783, #18867, #18994, #19065, #19067, #19143, #19222, #19247, #19286, #19296, #19379, #19934, #20188, #20395 Add fuzzing harnessses (practicalswift)
  • 18638 Use mockable time for ping/pong, add tests (MarcoFalke)
  • 19951 CNetAddr scoped ipv6 test coverage, rename scopeId to m_scope_id (jonatack)
  • 20027 Use mockable time everywhere in net_processing (sipa)
  • 19105 Add Muhash3072 implementation in Python (fjahr)
  • 18704, #18752, #18753, #18765, #18839, #18866, #18873, #19022, #19023, #19429, #19552, #19778, #20176, #20179, #20214, #20292, #20299, #20322 Fix intermittent test issues (MarcoFalke)
  • 20390 CI/Cirrus: Skip merge_base step for non-PRs (luke-jr)
  • 18634 ci: Add fuzzbuzz integration configuration file (practicalswift)
  • 18591 Add C++17 build to Travis (sipa)
  • 18581, #18667, #18798, #19495, #19519, #19538 CI improvements (hebasto)
  • 18683, #18705, #18735, #18778, #18799, #18829, #18912, #18929, #19008, #19041, #19164, #19201, #19267, #19276, #19321, #19371, #19427, #19730, #19746, #19881, #20294, #20339, #20368 CI improvements (MarcoFalke)
  • 20489, #20506 MSVC CI improvements (sipsorcery)
  • Miscellaneous:
  • 18713 scripts: Add macho stack canary check to security-check.py (fanquake)
  • 18629 scripts: Add pe .reloc section check to security-check.py (fanquake)
  • 18437 util: Detect posix_fallocate() instead of assuming (vasild)
  • 18413 script: Prevent ub when computing abs value for num opcode serialize (pierreN)
  • 18443 lockedpool: avoid sensitive data in core files (FreeBSD) (vasild)
  • 18885 contrib: Move optimize-pngs.py script to the maintainer repo (MarcoFalke)
  • 18317 Serialization improvements step 6 (all except wallet/gui) (sipa)
  • 16127 More thread safety annotation coverage (ajtowns)
  • 19228 Update libsecp256k1 subtree (sipa)
  • 19277 util: Add assert identity function (MarcoFalke)
  • 19491 util: Make assert work with any value (MarcoFalke)
  • 19205 script: previous_release.sh rewritten in python (bliotti)
  • 15935 Add /settings.json persistent settings storage (ryanofsky)
  • 19439 script: Linter to check commit message formatting (Ghorbanian)
  • 19654 lint: Improve commit message linter in travis (fjahr)
  • 15382 util: Add runcommandparsejson (Sjors)
  • 19614 util: Use have_fdatasync to determine fdatasync() use (fanquake)
  • 19813 util, ci: Hard code previous release tarball checksums (hebasto)
  • 19841 Implement Keccak and SHA3_256 (sipa)
  • 19643 Add -netinfo peer connections dashboard (jonatack)
  • 15367 feature: Added ability for users to add a startup command (benthecarman)
  • 19984 log: Remove static log message “Initializing chainstate Chainstate [ibd] @ height -1 (null)” (practicalswift)
  • 20092 util: Do not use gargs global in argsmanager member functions (hebasto)
  • 20168 contrib: Fix gen_key_io_test_vectors.py imports (MarcoFalke)
  • 19624 Warn on unknown rw_settings (MarcoFalke)
  • 20257 Update secp256k1 subtree to latest master (sipa)
  • 20346 script: Modify security-check.py to use “==” instead of “is” for literal comparison (tylerchambers)
  • 18881 Prevent UB in DeleteLock() function (hebasto)
  • 19180, #19189, #19190, #19220, #19399 Replace RecursiveMutex with Mutex (hebasto)
  • 19347 Make cs_inventory nonrecursive (jnewbery)
  • 19773 Avoid recursive lock in IsTrusted (promag)
  • 18790 Improve thread naming (hebasto)
  • 20140 Restore compatibility with old CSubNet serialization (sipa)
  • 17775 DecodeHexTx: Try case where txn has inputs first (instagibbs)
  • Documentation:
  • 18502 Update docs for getbalance (default minconf should be 0) (uzyn)
  • 18632 Fix macos comments in release-notes (MarcoFalke)
  • 18645 Update thread information in developer docs (jnewbery)
  • 18709 Note why we can’t use thread_local with glibc back compat (fanquake)
  • 18410 Improve commenting for coins.cpp|h (jnewbery)
  • 18157 fixing init.md documentation to not require rpcpassword (jkcd)
  • 18739 Document how to fuzz Bitcoin Core using Honggfuzz (practicalswift)
  • 18779 Better explain GNU ld’s dislike of ld64’s options (fanquake)
  • 18663 Mention build docs in README.md (saahilshangle)
  • 18810 Update rest info on block size and json (chrisabrams)
  • 18939 Add c++17-enable flag to fuzzing instructions (mzumsande)
  • 18957 Add a link from ZMQ doc to ZMQ example in contrib/ (meeDamian)
  • 19058 Drop protobuf stuff (hebasto)
  • 19061 Add link to Visual Studio build readme (maitrebitcoin)
  • 19072 Expand section on Getting Started (MarcoFalke)
  • 18968 noban precludes maxuploadtarget disconnects (MarcoFalke)
  • 19005 Add documentation for ‘checklevel’ argument in ‘verifychain’ RPC… (kcalvinalvin)
  • 19192 Extract net permissions doc (MarcoFalke)
  • 19071 Separate repository for the gui (MarcoFalke)
  • 19018 fixing description of the field sequence in walletcreatefundedpsbt RPC method (limpbrains)
  • 19367 Span pitfalls (sipa)
  • 19408 Windows WSL build recommendation to temporarily disable Win32 PE support (sipsorcery)
  • 19407 explain why passing -mlinker-version is required when cross-compiling (fanquake)
  • 19452 afl fuzzing comment about afl-gcc and afl-g++ (Crypt-iQ)
  • 19258 improve subtree check instructions (Sjors)
  • 19474 Use precise permission flags where possible (MarcoFalke)
  • 19494 CONTRIBUTING.md improvements (jonatack)
  • 19268 Add non-thread-safe note to FeeFilterRounder::round() (hebasto)
  • 19547 Update macOS cross compilation dependencies for Focal (hebasto)
  • 19617 Clang 8 or later is required with FORCE_USE_SYSTEM_CLANG (fanquake)
  • 19639 Remove Reference Links #19582 (RobertHosking)
  • 19605 Set CC_FOR_BUILD when building on OpenBSD (fanquake)
  • 19765 Fix getmempoolancestors RPC result doc (MarcoFalke)
  • 19786 Remove label from good first issue template (MarcoFalke)
  • 19646 Updated outdated help command for getblocktemplate (jakeleventhal)
  • 18817 Document differences in bitcoind and bitcoin-qt locale handling (practicalswift)
  • 19870 update PyZMQ install instructions, fix zmq_sub.py file permissions (jonatack)
  • 19903 Update build-openbsd.md with GUI support (grubles)
  • 19241 help: Generate checkpoint height from chainparams (luke-jr)
  • 18949 Add CODEOWNERS file to automatically nominate PR reviewers (adamjonas)
  • 20014 Mention signet in -help output (hebasto)
  • 20015 Added default signet config for linearize script (gr0kchain)
  • 19958 Better document features of feelers (naumenkogs)
  • 19871 Clarify scope of eviction protection of outbound block-relay peers (ariard)
  • 20076 Update and improve files.md (hebasto)
  • 20107 Collect release-notes snippets (MarcoFalke)
  • 20109 Release notes and followups from 19339 (glozow)
  • 20090 Tiny followups to new getpeerinfo connection type field (amitiuttarwar)
  • 20152 Update wallet files in files.md (hebasto)
  • 19124 Document ALLOW_HOST_PACKAGES dependency option (skmcontrib)
  • 20271 Document that wallet salvage is experimental (MarcoFalke)
  • 20281 Correct getblockstats documentation for (sw)total_weight (shesek)
  • 20279 release process updates/fixups (jonatack)
  • 20238 Missing comments for signet parameters (decryp2kanon)
  • 20756 Add missing field (permissions) to the getpeerinfo help (amitiuttarwar)
  • 20668 warn that incoming conns are unlikely when not using default ports (adamjonas)
  • 19961 tor.md updates (jonatack)
  • 19050 Add warning for rest interface limitation (fjahr)
  • 19390 doc/REST-interface: Remove stale info (luke-jr)
  • 19344 docs: update testgen usage example (Bushstar)

New in Bitcoin Core 0.20.1 (Aug 2, 2020)

  • This minor release includes various bug fixes and performance improvements, as well as updated translations.

New in Bitcoin Core 0.20.0 (Jun 3, 2020)

  • Removal of BIP61 reject network messages from Bitcoin Core
  • The -enablebip61 command line option to enable BIP61 has been removed. (#17004)
  • This feature has been disabled by default since Bitcoin Core version 0.18.0. Nodes on the network can not generally be trusted to send valid messages (including reject messages), so this should only ever be used when connected to a trusted node. Please use the alternatives recommended below if you rely on this removed feature:
  • Wallets should not assume a transaction has propagated to the network just because there are no reject messages. Instead, listen for the transaction to be announced by other peers on the network. Wallets should not assume a lack of reject messages means a transaction pays an appropriate fee. Instead, set fees using fee estimation and use replace-by-fee to increase a transaction’s fee if it hasn’t confirmed within the desired amount of time.
  • Log messages that previously reported the reject code when a transaction was not accepted to the mempool now no longer report the reject code. The reason for rejection is still reported.

New in Bitcoin Core 0.19.1 (Apr 10, 2020)

  • Wallet:
  • #17643 Fix origfee return for bumpfee with feerate arg (instagibbs)
  • #16963 Fix unique_ptr usage in boost::signals2 (promag)
  • #17258 Fix issue with conflicted mempool tx in listsinceblock (adamjonas, mchrostowski)
  • #17924 Bug: IsUsedDestination shouldn’t use key id as script id for ScriptHash (instagibbs)
  • #17621 IsUsedDestination should count any known single-key address (instagibbs)
  • #17843 Reset reused transactions cache (fjahr)
  • RPC and other APIs:
  • #17687 cli: Fix fatal leveldb error when specifying -blockfilterindex=basic twice (brakmic)
  • #17728 require second argument only for scantxoutset start action (achow101)
  • #17445 zmq: Fix due to invalid argument and multiple notifiers (promag)
  • #17524 psbt: handle unspendable psbts (achow101)
  • #17156 psbt: check that various indexes and amounts are within bounds (achow101)
  • GUI:
  • #17427 Fix missing qRegisterMetaType for size_t (hebasto)
  • #17695 disable File->CreateWallet during startup (fanquake)
  • #17634 Fix comparison function signature (hebasto)
  • #18062 Fix unintialized WalletView::progressDialog (promag)
  • Tests and QA:
  • #17416 Appveyor improvement - text file for vcpkg package list (sipsorcery)
  • #17488 fix “bitcoind already running” warnings on macOS (fanquake)
  • #17980 add missing #include to fix compiler errors (kallewoof)
  • Platform support:
  • #17736 Update msvc build for Visual Studio 2019 v16.4 (sipsorcery)
  • #17364 Updates to appveyor config for VS2019 and Qt5.9.8 + msvc project fixes (sipsorcery)
  • #17887 bug-fix macos: give free bytes to F_PREALLOCATE (kallewoof)
  • Miscellaneous:
  • #17897 init: Stop indexes on shutdown after ChainStateFlushed callback (jimpo)
  • #17450 util: Add missing headers to util/fees.cpp (hebasto)
  • #17654 Unbreak build with Boost 1.72.0 (jbeich)
  • #17857 scripts: Fix symbol-check & security-check argument passing (fanquake)
  • #17762 Log to net category for exceptions in ProcessMessages (laanwj)
  • #18100 Update univalue subtree (MarcoFalke)

New in Bitcoin Core 0.18.1 (Aug 12, 2019)

  • This is a new minor version release, including new features, various bug fixes and performance improvements, as well as updated translations.

New in Bitcoin Core 0.17.1.0 (Dec 25, 2018)

  • This is a new minor version release, with various bugfixes and performance improvements, as well as updated translations.

New in Bitcoin Core 0.17.0 (Oct 4, 2018)

  • Consensus:
  • #12204 3fa24bb Fix overly eager BIP30 bypass (morcos)
  • Policy:
  • #12568 ed6ae80 Allow dustrelayfee to be set to zero (luke-jr)
  • #13120 ca2a233 Treat segwit as always active (MarcoFalke)
  • #13096 062738c Fix MAX_STANDARD_TX_WEIGHT check (jl2012)
  • Mining:
  • #12693 df529dc Remove unused variable in SortForBlock (drewx2)
  • #12448 84efa9a Interrupt block generation on shutdown request (promag)
  • Block and transaction handling:
  • #12225 67447ba Mempool cleanups (sdaftuar)
  • #12356 fd65937 Fix 'mempool min fee not met' debug output (Empact)
  • #12287 bf3353d Optimise lock behaviour for GuessVerificationProgress() (jonasschnelli)
  • #11889 47a7666 Drop extra script variable in ProduceSignature (ryanofsky)
  • #11880 d59b8d6 Stop special-casing phashBlock handling in validation for TBV (TheBlueMatt)
  • #12431 947c25e Only call NotifyBlockTip when chainActive changes (jamesob)
  • #12653 534b8fa Allow to optional specify the directory for the blocks storage (jonasschnelli)
  • #12172 3b62a91 Bugfix: RPC: savemempool: Don't save until LoadMempool() is finished (jtimon)
  • #12167 88430cb Make segwit failure due to CLEANSTACK violation return a SCRIPT_ERR_CLEANSTACK error code (maaku)
  • #12561 24133b1 Check for block corruption in ConnectBlock() (sdaftuar)
  • #11617 1b5723e Avoid lock: Call FlushStateToDisk(…) regardless of fCheckForPruning (practicalswift)
  • #11739 0a8b7b4 Enforce SCRIPT_VERIFY_P2SH and SCRIPT_VERIFY_WITNESS from genesis (sdaftuar)
  • #12885 a49381d Reduce implementation code inside CScript (sipa)
  • #13032 34dd1a6 Output values for "min relay fee not met" error (kristapsk)
  • #13033 a07e8ca Build txindex in parallel with validation (jimpo)
  • #13080 66cc47b Add compile time checking for ::mempool.cs runtime locking assertions (practicalswift)
  • #13185 08c1caf Bugfix: the end of a reorged chain is invalid when connect fails (sipa)
  • #11689 0264836 Fix missing locking in CTxMemPool::check(…) and CTxMemPool::setSanityCheck(…) (practicalswift)
  • #13011 3c2a41a Cache witness hash in CTransaction (MarcoFalke)
  • #13191 0de7cc8 Specialized double-SHA256 with 64 byte inputs with SSE4.1 and AVX2 (sipa)
  • #13243 ea263e1 Make reusable base class for auxiliary indices (jimpo)
  • #13393 a607d23 Enable double-SHA256-for-64-byte code on 32-bit x86 (sipa)
  • #13428 caabdea validation: check the specified number of blocks (off-by-one) (kallewoof)
  • #13438 450055b Improve coverage of SHA256 SelfTest code (sipa)
  • #13431 954f4a9 validation: count blocks correctly for check level < 3 (kallewoof)
  • #13386 3a3eabe SHA256 implementations based on Intel SHA Extensions (sipa)
  • #11658 9a1ad2c During IBD, when doing pruning, prune 10% extra to avoid pruning again soon after (luke-jr)
  • #13794 8ce55df chainparams: Update with data from assumed valid chain (MarcoFalke)
  • #13527 e7ea858 Remove promiscuousmempoolflags (MarcoFalke)
  • P2P protocol and network code:
  • #12342 eaeaa2d Extend #11583 ("Do not make it trivial for inbound peers to generate log entries") to include "version handshake timeout" message (clemtaylor)
  • #12218 9a32114 Move misbehaving logging to net logging category (laanwj)
  • #10387 5c2aff8 Eventually connect to NODE_NETWORK_LIMITED peers (jonasschnelli)
  • #9037 a36834f Add test-before-evict discipline to addrman (EthanHeilman)
  • #12622 e1d6e2a Correct addrman logging (laanwj)
  • #11962 0a01843 add seed.bitcoin.sprovoost.nl to DNS seeds (Sjors)
  • #12569 23e7fe8 Increase signal-to-noise ratio in debug.log by adjusting log level when logging failed non-manual connect():s (practicalswift)
  • #12855 c199869 Minor accumulated cleanups (tjps)
  • #13153 ef46c99 Add missing newlines to debug logging (laanwj)
  • #13162 a174702 Don't incorrectly log that REJECT messages are unknown (jnewbery)
  • #13151 7f4db9a Serve blocks directly from disk when possible (laanwj)
  • #13134 70d3541 Add option -enablebip61 to configure sending of BIP61 notifications (laanwj)
  • #13532 7209fec Log warning when deprecated network name 'tor' is used (wodry)
  • #13615 172f984 Remove unused interrupt from SendMessages (fanquake)
  • #13417 1e90862 Tighten scope in net_processing (skeees)
  • #13298 f8d470e Bucketing INV delays (1 bucket) for incoming connections to hide tx time (naumenkogs)
  • #13672 0d8d6be Modified in_addr6 cast in CConman class to work with msvc (sipsorcery)
  • #11637 c575260 Remove dead service bits code (MarcoFalke)
  • #13212 a6f00ce Fixed a race condition when disabling the network (lmanners)
  • #13656 1211b15 Remove the boost/algorithm/string/predicate.hpp dependency (251Labs)
  • #13423 f58674a Thread safety annotations in net_processing (skeees)
  • #13776 7d36237 Add missing verification of IPv6 address in CNetAddr::GetIn6Addr(…) (practicalswift)
  • #13907 48bf8ff Introduce a maximum size for locators (gmaxwell)
  • #13951 8a9ffec Hardcoded seeds update pre-0.17 branch (laanwj)
  • Wallet:
  • #12330 2a30e67 Reduce scope of cs_main and cs_wallet locks in listtransactions (promag)
  • #12298 a1ffddb Refactor HaveKeys to early return on false result (promag)
  • #12282 663911e Disallow abandon of conflicted txes (MarcoFalke)
  • #12333 d405bee Make CWallet::ListCoins atomic (promag)
  • #12296 8e6f9f4 Only fee-bump non-conflicted/non-confirmed txes (MarcoFalke)
  • #11866 6bb9c13 Do not un-mark fInMempool on wallet txn if ATMP fails (TheBlueMatt)
  • #11882 987a809 Disable default fallbackfee on mainnet (jonasschnelli)
  • #9991 4ca7c1e listreceivedbyaddress Filter Address (NicolasDorier)
  • #11687 98bc27f External wallet files (ryanofsky)
  • #12658 af88094 Sanitize some wallet serialization (sipa)
  • #9680 6acd870 Unify CWalletTx construction (ryanofsky)
  • #10637 e057589 Coin Selection with Murch's algorithm (achow101, Xekyo)
  • #12408 c39dd2e Change output type globals to members (MarcoFalke)
  • #12694 9552dfb Actually disable BnB when there are preset inputs (achow101)
  • #11536 cead84b Rename account to label where appropriate (ryanofsky)
  • #12709 02b7e83 shuffle sendmany recipients ordering (instagibbs)
  • #12699 c948dc8 Shuffle transaction inputs before signing (instagibbs)
  • #10762 6d53663 Remove Wallet dependencies from init.cpp (jnewbery)
  • #12857 821980c Avoid travis lint-include-guards error (ken2812221)
  • #12702 dab0d68 importprivkey: hint about importmulti (kallewoof)
  • #12836 9abdb7c Make WalletInitInterface and DummyWalletInit private, fix nullptr deref (promag)
  • #12785 215158a Initialize m_last_block_processed to nullptr (practicalswift)
  • #12932 8d651ae Remove redundant lambda function arg in handleTransactionChanged (laanwj)
  • #12749 a84b056 feebumper: discard change outputs below discard rate (instagibbs)
  • #12892 9b3370d introduce 'label' API for wallet (jnewbery)
  • #12925 6d3de17 Logprint the start of a rescan (jonasschnelli)
  • #12888 39439e5 debug log number of unknown wallet records on load (instagibbs)
  • #12977 434150a Refactor g_wallet_init_interface to const reference (promag)
  • #13017 65d7083 Add wallets management functions (promag)
  • #12953 d1d54ae Deprecate accounts (jnewbery)
  • #12909 476cb35 Make fee settings to be non-static members (MarcoFalke)
  • #13002 487dcbe Do not treat bare multisig outputs as IsMine unless watched (sipa)
  • #13028 783bb64 Make vpwallets usage thread safe (promag)
  • #12507 2afdc29 Interrupt rescan on shutdown request (promag)
  • #12729 979150b Get rid of ambiguous OutputType::NONE value (ryanofsky)
  • #13079 5778d44 Fix rescanblockchain rpc to properly report progress (Empact)
  • #12560 e03c0db Upgrade path for non-HD wallets to HD (achow101)
  • #13161 7cc1bd3 Reset BerkeleyDB handle after connection fails (real-or-random)
  • #13081 0dec5b5 Add compile time checking for cs_wallet runtime locking assertions (practicalswift)
  • #13127 19a3a9e Add Clang thread safety annotations for variables guarded by cs_db (practicalswift)
  • #10740 4cfe17c loadwallet RPC - load wallet at runtime (jnewbery)
  • #12924 6738813 Fix hdmaster-key / seed-key confusion (scripted diff) (jnewbery)
  • #13297 d82c5d1 Fix incorrect comment for DeriveNewSeed (jnewbery)
  • #13063 6378eef Use shared pointer to retain wallet instance (promag)
  • #13142 56fe3dc Separate IsMine from solvability (sipa)
  • #13194 fd96d54 Remove template matching and pseudo opcodes (sipa)
  • #13252 c4cc8d9 Refactor ReserveKeyFromKeyPool for safety (Empact)
  • #13058 343d4e4 createwallet RPC - create new wallet at runtime (jnewbery)
  • #13351 2140f6c Prevent segfault when sending to unspendable witness (MarcoFalke)
  • #13060 3f0f394 Remove getlabeladdress RPC (jnewbery)
  • #13111 000abbb Add unloadwallet RPC (promag)
  • #13160 868cf43 Unlock spent outputs (promag)
  • #13498 f54f373 Fixups from account API deprecation (jnewbery)
  • #13491 61a044a Improve handling of INVALID in IsMine (sipa)
  • #13425 028b0d9 Moving final scriptSig construction from CombineSignatures to ProduceSignature (PSBT signer logic) (achow101)
  • #13564 88a15eb loadwallet shouldn't create new wallets (jnewbery)
  • #12944 619cd29 ScanforWalletTransactions should mark input txns as dirty (instagibbs)
  • #13630 d6b2235 Drop unused pindexRet arg to CMerkleTx::GetDepthInMainChain (Empact)
  • #13566 ad552a5 Fix get balance (jnewbery)
  • #13500 4a3e8c5 Decouple wallet version from client version (achow101)
  • #13712 aba2e66 Fix non-determinism in ParseHDKeypath(…). Avoid using an uninitialized variable in path calculation (practicalswift)
  • #9662 6b6e854 Add createwallet "disableprivatekeys" option: a sane mode for watchonly-wallets (jonasschnelli)
  • #13683 e8c7434 Introduce assertion to document the assumption that cache and cache_used are always set in tandem (practicalswift)
  • #12257 5f7575e Use destination groups instead of coins in coin select (kallewoof)
  • #13773 89a116d Fix accidental use of the comma operator (practicalswift)
  • #13805 c88529a Correctly limit output group size (sdaftuar)
  • #12992 26f59f5 Add wallet name to log messages (PierreRochard)
  • #13667 b81a8a5 Fix backupwallet for multiwallets (domob1812)
  • #13657 51c693d assert to ensure accuracy of CMerkleTx::GetBlocksToMaturity (Empact)
  • #13812 9d86aad sum ancestors rather than taking max in output groups (kallewoof)
  • #13876 8eb9870 Catch filesystem_error and raise InitError (MarcoFalke)
  • #13808 13d51a2 shuffle coins before grouping, where warranted (kallewoof)
  • #13666 2115cba Always create signatures with Low R values (achow101)
  • #13917 0333914 Additional safety checks in PSBT signer (sipa)
  • #13968 65e7a8b couple of walletcreatefundedpsbt fixes (instagibbs)
  • #14055 2307a6e fix walletcreatefundedpsbt deriv paths, add test (instagibbs)
  • RPC and other APIs:
  • #12336 3843780 Remove deprecated rpc options (jnewbery)
  • #12193 5dc00f6 Consistently use UniValue.pushKV instead of push_back(Pair()) (karel-3d) (MarcoFalke)
  • #12409 0cc45ed Reject deprecated reserveChangeKey in fundrawtransaction (MarcoFalke)
  • #10583 8a98dfe Split part of validateaddress into getaddressinfo (achow101)
  • #10579 ffc6e48 Split signrawtransaction into wallet and non-wallet RPC command (achow101)
  • #12494 e4ffcac Declare CMutableTransaction a struct in rawtransaction.h (Empact)
  • #12503 0e26591 createmultisig no longer takes addresses (instagibbs)
  • #12083 228b086 Improve getchaintxstats test coverage (promag)
  • #12479 cd5e438 Add child transactions to getrawmempool verbose output (conscott)
  • #11872 702e8b7 createrawtransaction: Accept sorted outputs (MarcoFalke)
  • #12700 ebdf84c Document RPC method aliasing (ryanofsky)
  • #12727 8ee5c7b Remove unreachable help conditions in rpcwallet.cpp (lutangar)
  • #12778 b648974 Add username and ip logging for RPC method requests (GabrielDav)
  • #12717 ac898b6 rest: Handle utxo retrieval when ignoring the mempool (romanz)
  • #12787 cd99e5b Adjust ifdef to avoid unreachable code (practicalswift)
  • #11742 18815b4 Add testmempoolaccept (MarcoFalke)
  • #12942 fefb817 Drop redundant testing of signrawtransaction prevtxs args (Empact)
  • #11200 5f2a399 Allow for aborting rescans in the GUI (achow101)
  • #12791 3a8a4dc Expose a transaction's weight via RPC (TheBlueMatt)
  • #12436 6e67754 Adds a functional test to validate the transaction version number in the RPC output (251Labs)
  • #12240 6f8b345 Introduced a new fees structure that aggregates all sub-field fee types denominated in BTC (mryandao)
  • #12321 eac067a p2wsh and p2sh-p2wsh address in decodescript (fivepiece)
  • #13090 17266a1 Remove Safe mode (achow101, laanwj)
  • #12639 7eb7076 Reduce cs_main lock in listunspent (promag)
  • #10267 7b966d9 New -includeconf argument for including external configuration files (kallewoof)
  • #10757 b9551d3 Introduce getblockstats to plot things (jtimon)
  • #13288 a589f53 Remove the need to include rpc/blockchain.cpp in order to put GetDifficulty under test (Empact)
  • #13394 e1f8dce cli: Ignore libevent warnings (theuni)
  • #13439 3f398d7 Avoid "duplicate" return value for invalid submitblock (TheBlueMatt)
  • #13570 a247594 Add new "getzmqnotifications" method (domob1812)
  • #13072 b25a4c2 Update createmultisig RPC to support segwit (ajtowns)
  • #12196 8fceae0 Add scantxoutset RPC method (jonasschnelli)
  • #13557 b654723 BIP 174 PSBT Serializations and RPCs (achow101)
  • #13697 f030410 Support output descriptors in scantxoutset (sipa)
  • #13927 bced8ea Use pushKV in some new PSBT RPCs (domob1812)
  • #13918 a9c56b6 Replace median fee rate with feerate percentiles in getblockstats (marcinja)
  • #13721 9f23c16 Bugfixes for BIP 174 combining and deserialization (achow101)
  • #13960 517010e Fix PSBT deserialization of 0-input transactions (achow101)
  • GUI:
  • #12416 c997f88 Fix Windows build errors introduced in #10498 (practicalswift)
  • #11733 e782099 Remove redundant locks (practicalswift)
  • #12426 bfa3911 Initialize members in WalletModel (MarcoFalke)
  • #12489 e117cfe Bugfix: respect user defined configuration file (-conf) in QT settings (jonasschnelli)
  • #12421 be263fa navigate to transaction history page after send (Sjors)
  • #12580 ce56fdd Show a transaction's virtual size in its details dialog (dooglus)
  • #12501 c8ea91a Improved "custom fee" explanation in tooltip (randolf)
  • #12616 cff95a6 Set modal overlay hide button as default (promag)
  • #12620 8a43bdc Remove TransactionTableModel::TxIDRole (promag)
  • #12080 56cc022 Add support to search the address book (promag)
  • #12621 2bac3e4 Avoid querying unnecessary model data when filtering transactions (promag)
  • #12721 e476826 remove "new" button during receive-mode in addressbook (jonasschnelli)
  • #12723 310dc61 Qt5: Warning users about invalid-BIP21 URI bitcoin:// (krab)
  • #12610 25cf18f Multiwallet for the GUI (jonasschnelli)
  • #12779 f4353da Remove unused method setupAmountWidget(…) (practicalswift)
  • #12795 68484d6 do not truncate .dat extension for wallets in gui (instagibbs)
  • #12870 1d54004 make clean removes src/qt/moc_ files (Sjors)
  • #13055 bdda14d Don't log to console by default (laanwj)
  • #13141 57c57df fixes broken link on readme (marcoagner)
  • #12928 ef006d9 Initialize non-static class members that were previously neither initialized where defined nor in constructor (practicalswift)
  • #13158 81c533c Improve sendcoinsdialog readability (marcoagner)
  • #11491 40c34a0 Add proxy icon in statusbar (mess110)
  • #13264 2a7c53b Satoshi unit (GreatSock)
  • #13097 e545503 Support wallets loaded dynamically (promag)
  • #13284 f8be434 fix visual "overflow" of amount input (brandonrninefive)
  • #13275 a315b79 use [default wallet] as name for wallet with no name (jonasschnelli)
  • #13273 3fd0c23 Qt/Bugfix: fix handling default wallet with no name (jonasschnelli)
  • #13341 25d2df2 Stop translating command line options (laanwj)
  • #13043 6e249e4 OptionsDialog: add prune setting (Sjors)
  • #13506 6579d80 load wallet in UI after possible init aborts (jonasschnelli)
  • #13458 dc53f7f Drop qt4 support (laanwj)
  • #13528 b877c39 Move BitcoinGUI initializers to class, fix initializer order warning (laanwj)
  • #13536 baf3a3a coincontrol: Remove unused qt4 workaround (MarcoFalke)
  • #13537 10ffca7 Peer table: Visualize inbound/outbound state for every row (wodry)
  • #13791 2c14c1f Reject dialogs if key escape is pressed (promag)
  • Build system:
  • #12371 c9ca4f6 Add gitian PGP key: akx20000 (ghost)
  • #11966 f4f4f51 clientversion: Use full commit hash for commit-based version descriptions (luke-jr)
  • #12417 ae0fbf0 Upgrade mac_alias to 2.0.7 (droark)
  • #12444 1f055ef gitian: Bump descriptors for (0.)17 (theuni)
  • #12402 59e032b expat 2.2.5, ccache 3.4.1, miniupnpc 2.0.20180203 (fanquake)
  • #12029 daa84b3 Add a makefile target for Doxygen documentation (Ov3rlo4d)
  • #12466 6645eaf Only use D_DARWIN_C_SOURCE when building miniupnpc on darwin (fanquake)
  • #11986 765a3eb zeromq 4.2.3 (fanquake)
  • #12373 f13d756 Add build support for profiling (murrayn)
  • #12631 a312e20 gitian: Alphabetize signing keys & add kallewoof key (kallewoof)
  • #12607 29fad97 Remove ccache (fanquake)
  • #12625 c4219ff biplist 1.0.3 (fanquake)
  • #12666 05042d3 configure: UniValue 1.0.4 is required for pushKV(, bool) (luke-jr)
  • #12678 6324c68 Fix a few compilation issues with Clang 7 and -Werror (vasild)
  • #12692 de6bdfd Add configure options for various -fsanitize flags (eklitzke)
  • #12901 7e23972 Show enabled sanitizers in configure output (practicalswift)
  • #12899 3076993 macOS: Prevent Xcode 9.3 build warnings (AkioNak)
  • #12715 8fd6243 Add 'make clean' rule (hkjn)
  • #13133 a024a18 Remove python2 from configure.ac (ken2812221)
  • #13005 cb088b1 Make --enable-debug to pick better options (practicalswift)
  • #13254 092b366 Remove improper qt/moc_* cleaning glob from the general Makefile (Empact)
  • #13306 f5a7733 split warnings out of CXXFLAGS (theuni)
  • #13385 7c7508c Guard against accidental introduction of new Boost dependencies (practicalswift)
  • #13041 5779dc4 Add linter checking for accidental introduction of locale dependence (practicalswift)
  • #13408 70a03c6 crypto: cleanup sha256 build (theuni)
  • #13435 cf7ca60 When build fails due to lib missing, indicate which one (Empact)
  • #13445 8eb76f3 Reset default -g -O2 flags when enable debug (ken2812221)
  • #13465 81069a7 Avoid concurrency issue when make multiple target (ken2812221)
  • #13454 45c00f8 Make sure LC_ALL=C is set in all shell scripts (practicalswift)
  • #13480 31145a3 Avoid copies in range-for loops and add a warning to detect them (theuni)
  • #13486 66e1a08 Move rpc/util.cpp from libbitcoin-util to libbitcoin-server (ken2812221)
  • #13580 40334c7 Detect if char equals int8_t (ken2812221)
  • #12788 287e4ed Tune wildcards for LIBSECP256K1 target (kallewoof)
  • #13611 b55f0c3 bugfix: Use __cpuid_count for gnu C to avoid gitian build fail (ken2812221)
  • #12971 a6d14b1 Upgrade Qt to 5.9.6 (TheCharlatan)
  • #13543 6c6a300 Add RISC-V support (laanwj)
  • #13177 dcb154e GCC-7 and glibc-2.27 back compat code (ken2812221)
  • #13659 90b1c7e add missing leveldb defines (theuni)
  • #13368 c0f1569 Update gitian-build.sh for docker (achow101)
  • #13171 19d8ca5 Change gitian-descriptors to use bionic instead (ken2812221)
  • #13604 75bea05 Add depends 32-bit arm support for bitcoin-qt (TheCharlatan)
  • #13623 9cdb19f Migrate gitian-build.sh to python (ken2812221)
  • #13689 8c36432 disable Werror when building zmq (greenaddress)
  • #13617 cf7f9ae release: Require macos 10.10+ (fanquake)
  • #13750 c883653 use MacOS friendly sed syntax in qt.mk (Sjors)
  • #13095 415f2bf update ax_boost_chrono/unit_test_framework (fanquake)
  • #13732 e8ffec6 Fix Qt's rcc determinism (Fuzzbawls)
  • #13782 8284f1d Fix osslsigncode compile issue in gitian-build (ken2812221)
  • #13696 2ab7208 Add aarch64 qt depends support for cross compiling bitcoin-qt (TheCharlatan)
  • #13705 b413ba0 Add format string linter (practicalswift)
  • #14000 48c8459 fix qt determinism (theuni)
  • #14018 3e4829a Bugfix: NSIS: Exclude Makefile* from docs (luke-jr)
  • #12906 048ac83 Avoid interface keyword to fix windows gitian build (ryanofsky)
  • #13314 a9b6957 Fix FreeBSD build by including utilstrencodings.h (laanwj)
  • Tests and QA:
  • #12252 8d57319 Require all tests to follow naming convention (ajtowns)
  • #12295 935eb8d Enable flake8 warnings for all currently non-violated rules (practicalswift)
  • #11858 b4d8549 Prepare tests for Windows (MarcoFalke)
  • #11771 2dbc4a4 Change invalidtxrequest to use BitcoinTestFramework (jnewbery)
  • #12200 d09968f Bind functional test nodes to 127.0.0.1 (Sjors)
  • #12425 26dc2da Add some script tests (richardkiss)
  • #12455 23481fa Fix bip68 sequence test to reflect updated rpc error message (Empact)
  • #12477 acd1e61 Plug memory leaks and stack-use-after-scope (MarcoFalke)
  • #12443 07090c5 Move common args to bitcoin.conf (MarcoFalke)
  • #12570 39dcac2 Add test cases for HexStr (std::reverse_iterator and corner cases) (kostaz)
  • #12582 6012f1c Fix ListCoins test failure due to unset g_wallet_allow_fallback_fee (ryanofsky)
  • #12516 7f99964 Avoid unintentional unsigned integer wraparounds in tests (practicalswift)
  • #12512 955fd23 Don't test against the mempool min fee information in mempool_limit.py (Empact)
  • #12600 29088b1 Add a test for large tx output scripts with segwit input (richardkiss)
  • #12627 791c3ea Fix some tests to work on native windows (MarcoFalke)
  • #12405 0f58d7f travis: Full clone for git subtree check (MarcoFalke)
  • #11772 0630974 Change invalidblockrequest to use BitcoinTestFramework (jnewbery)
  • #12681 1846296 Fix ComputeTimeSmart test failure with -DDEBUG_LOCKORDER (ryanofsky)
  • #12682 9f04c8e travis: Clone depth 1 unless $check_doc (MarcoFalke)
  • #12710 00d1680 Append scripts to new test_list array to fix bad assignment (jeffrade)
  • #12720 872c921 Avoiding 'file' function name from python2 (jeffrade)
  • #12728 4ba3d4f rename TestNode to TestP2PConn in tests (jnewbery)
  • #12746 2405ce1 Remove unused argument max_invalid from check_estimates(…) (practicalswift)
  • #12718 185d484 Require exact match in assert_start_raises_init_eror (jnewbery, MarcoFalke)
  • #12076 6d36f59 Use node.datadir instead of tmpdir in test framework (MarcoFalke)
  • #12772 b43aba8 ci: Bump travis timeout for make check to 50m (jnewbery)
  • #12806 18606eb Fix function names in feature_blocksdir (MarcoFalke)
  • #12811 0d8fc8d Make summary row bold-red if any test failed and show failed tests at end of table (laanwj)
  • #12790 490644d Use blockmaxweight where tests previously had blockmaxsize (conscott)
  • #11773 f0f9732 Change feature_block.py to use BitcoinTestFramework (jnewbery)
  • #12839 40f4baf Remove travis checkout depth (laanwj)
  • #11817 2a09a78 Change feature_csv_activation.py to use BitcoinTestFramework (jnewbery)
  • #12284 fa5825d Remove assigned but never used local variables. Enable Travis checking for unused local variables (practicalswift)
  • #12719 9beded5 Add note about test suite naming convention in developer-notes.md (practicalswift)
  • #12861 c564424 Stop feature_block.py from blowing up memory (jnewbery)
  • #12851 648252e travis: Run verify-commits only on cron jobs (MarcoFalke)
  • #12853 2106c4c Match full plain text by default (MarcoFalke)
  • #11818 9a2db3b I accidentally (deliberately) killed it (the ComparisonTestFramework) (jnewbery)
  • #12766 69310a3 Tidy up REST interface functional tests (romanz)
  • #12849 83c7533 Add logging in loops in p2p_sendhears.py (ccdle12)
  • #12895 d6f10b2 Add note about test suite name uniqueness requirement to developer notes (practicalswift)
  • #12856 27278df Add Metaclass for BitcoinTestFramework (WillAyd)
  • #12918 6fc5a05 Assert on correct variable (kallewoof)
  • #11878 a04440f Add Travis check for duplicate includes (practicalswift)
  • #12917 cf8073f Windows fixups for functional tests (MarcoFalke)
  • #12926 dd1ca9e Run unit tests in parallel (sipa)
  • #12920 b1fdfc1 Fix sign for expected values (kallewoof)
  • #12947 979f598 Wallet hd functional test speedup and clarification (instagibbs)
  • #12993 0d69921 Remove compatibility code not needed now when we're on Python 3 (practicalswift)
  • #12996 6a278e0 Remove redundant bytes(…) calls (practicalswift)
  • #12949 6b46288 Avoid copies of CTransaction (MarcoFalke)
  • #13007 0d12570 Fix dangling wallet pointer in vpwallets (promag)
  • #13048 cac6d11 Fix feature_block flakiness (jnewbery)
  • #12510 d5b2e98 Add rpc_bind test to default-run tests (laanwj)
  • #13022 896a9d0 Attach node index to test_node AssertionError and print messages (jamesob)
  • #13024 018c7e5 Add rpcauth pair that generated by rpcauth.py (ken2812221)
  • #13013 a0079d4 bench: Amend mempool_eviction test for witness txs (MarcoFalke)
  • #13051 e074097 Normalize executable location (MarcoFalke)
  • #13056 106d929 Make rpcauth.py testable and add unit tests (nixbox)
  • #13073 a785bc3 add rpcauth-test to AC_CONFIG_LINKS to fix out-of-tree make check (laanwj)
  • #12830 25ad2f7 Clarify address book error messages, add tests (jamesob)
  • #13082 24106a8 don't test against min relay fee information in mining_prioritisetransaction.py (kristapsk)
  • #13003 8d045a0 Add test for orphan handling (MarcoFalke)
  • #13105 9e9b48d Add --failfast option to functional test runner (jamesob)
  • #13130 3186ad4 Fix race in rpc_deprecated.py (jnewbery)
  • #13136 baf6b4e Fix flake8 warnings in several wallet functional tests (jnewbery)
  • #13094 bf9b03d Add test for 64-bit Windows PE, modify 32-bit test results (ken2812221)
  • #13183 9458b05 travis: New travis job for check_docs steps (glaksmono)
  • #12265 1834d4d fundrawtransaction: lock watch-only shared address (kallewoof)
  • #13188 4a50ec0 Remove unused option --srcdir (MarcoFalke)
  • #12755 612ba35 Better stderr testing (jnewbery)
  • #13198 196c5a9 Avoid printing to console during cache creation (sdaftuar)
  • #13075 cb9bbf7 Remove 'account' API from wallet functional tests (jnewbery)
  • #13221 ffa86af travis: Rename the build stage check_doc to lint (practicalswift)
  • #13205 3cbd25f Remove spurious error log in p2p_segwit.py (jnewbery)
  • #13291 536120e Don't include torcontrol.cpp into the test file (Empact)
  • #13281 2ac6315 Move linters to test/lint, add readme (MarcoFalke)
  • #13215 f8a29ca travis: Build tests on ubuntu 18.04 with docker (ken2812221)
  • #13349 24f7011 bench: Don't return a bool from main (laanwj)
  • #13347 87a9d03 travis: Skip cache for lint stage (MarcoFalke)
  • #13355 0b1c0c4 Fix "gmake check" under OpenBSD 6.3 (probably *BSD): Avoid using GNU grep specific regexp handling (practicalswift)
  • #13353 d4f6dac Fixup setting of PATH env var (MarcoFalke)
  • #13352 e24bf1c Avoid checking reject code for now (MarcoFalke)
  • #13383 2722a1f bench: Use non-throwing parsedouble(…) instead of throwing boost::lexical_cast(…) (practicalswift)
  • #13367 264efdc Increase includeconf test coverage (MarcoFalke)
  • #13404 3d3d8ae speed up of tx_validationcache_tests by reusing of CTransaction (lucash-dev)
  • #13421 531a033 Remove portseed_offset from test runner (MarcoFalke)
  • #13440 5315660 Log as utf-8 (MarcoFalke)
  • #13066 fa4b906 Migrate verify-commits script to python, run in travis (ken2812221)
  • #13447 4b1edd3 travis: Increase travis_wait time while verifying commits (ken2812221)
  • #13350 f532d52 Add logging to provide anchor points when debugging p2p_sendheaders (lmanners)
  • #13406 4382f19 travis: Change mac goal to all deploy (ken2812221)
  • #13457 b222138 Drop variadic macro (MarcoFalke)
  • #13512 3a45493 mininode: Expose connection state through is_connected (MarcoFalke)
  • #13496 9ab4c2a Harden lint-filenames.sh (wodry)
  • #13219 08516e0 bench: Add block assemble benchmark (MarcoFalke)
  • #13530 b1dc39d bench: Add missing pow.h header (laanwj)
  • #12686 2643fa5 Add -ftrapv to CFLAGS and CXXFLAGS when --enable-debug is used. Enable -ftrapv in Travis (practicalswift)
  • #12882 d96bdd7 Make test_bitcoin pass under ThreadSanitzer (clang). Fix lock-order-inversion (potential deadlock) (practicalswift)
  • #13535 2328039 wallet_basic: Specify minimum required amount for listunspent (MarcoFalke)
  • #13551 c93c360 Fix incorrect documentation for test case cuckoocache_hit_rate_ok (practicalswift)
  • #13563 b330f3f bench: Simplify coinselection (promag)
  • #13517 a6ed99a Remove need to handle the network thread in tests (MarcoFalke)
  • #13522 686e97a Fix p2p_sendheaders race (jnewbery)
  • #13467 3dc2dcf Make p2p_segwit easier to debug (jnewbery)
  • #13598 0212187 bench: Fix incorrect behaviour in prevector.cpp (AkioNak)
  • #13565 b05ded1 Fix AreInputsStandard test to reference the proper scriptPubKey (Empact)
  • #13145 d3dae3d Use common getPath method to create temp directory in tests (winder)
  • #13645 2ea7eb6 skip rpc_zmq functional test as necessary (jamesob)
  • #13626 8f1106d Fix some TODOs in p2p_segwit (MarcoFalke)
  • #13138 8803c91 Remove accounts from wallet_importprunedfunds.py (jnewbery)
  • #13663 cbc9b50 Avoid read/write to default datadir (MarcoFalke)
  • #13682 f8a32a3 bench: Remove unused variable (practicalswift)
  • #13638 6fcdb5e Use MAX_SCRIPT_ELEMENT_SIZE from script.py (domob1812)
  • #13687 9d26b69 travis: Check that ~/.bitcoin is never created (MarcoFalke)
  • #13715 e1260a7 fixes mininode's P2PConnection sending messages on closing transport (marcoagner)
  • #13729 aa9429a travis: Avoid unnecessarily setting env variables on the lint build (Empact)
  • #13747 ab28b5b Skip P2PConnection's is_closing() check when not available (domob1812)
  • #13650 7a9bca6 travis: Don't store debug info if --enable-debug is set (ken2812221)
  • #13711 f98d1e0 bench: Add benchmark for unserialize prevector (AkioNak)
  • #13771 365384f travis: Retry to fetch docker image (MarcoFalke)
  • #13806 4d550ff Fix bench/block_assemble assert failure (jamesob)
  • #13779 d25079a travis: Improve readability of travis.yml and log outputs (scravy)
  • #13822 0fb9c87 bench: Make coinselection output groups pass eligibility filter (achow101)
  • #13247 e83d82a Add tests to SingleThreadedSchedulerClient() and document the memory model (skeees)
  • #13811 660abc1 travis: Run bench_bitcoin once (MarcoFalke)
  • #13837 990e182 Extract rpc_timewait as test param (MarcoFalke)
  • #13851 9c4324d fix locale for lint-shell (scravy)
  • #13823 489b51b quote path in authproxy for external multiwallets (MarcoFalke)
  • #13849 2b67354 travis: Use only travis jobs: instead of mix of jobs+matrix (scravy)
  • #13859 2384323 Add emojis to test_runner path and wallet filename (MarcoFalke)
  • #13916 8ac7125 wait_for_verack by default (MarcoFalke)
  • #13669 f66e1c7 Cleanup create_transaction implementations (conscott)
  • #13924 09ada21 Simplify comparison in rpc_blockchain.py (domob1812)
  • #13913 a08533c Remove redundant checkmempool/checkblockindex extra_args (MarcoFalke)
  • #13915 a04888a Add test for max number of entries in locator (MarcoFalke)
  • #13867 1b04b55 Make extended tests pass on native Windows (MarcoFalke)
  • #13944 0df7a6c Port usage of deprecated optparse module to argparse module (Kvaciral)
  • #13928 b8eb0df blocktools enforce named args for amount (MarcoFalke)
  • #13054 bffb35f Enable automatic detection of undefined names in Python tests scripts. Remove wildcard imports (practicalswift)
  • #14069 cf3d7f9 Use assert not BOOST_CHECK_* from multithreaded tests (skeees)
  • #14071 fab0fbe Stop txindex thread before calling destructor (MarcoFalke)
  • Miscellaneous:
  • #11909 8897135 contrib: Replace developer keys with list of pgp fingerprints (MarcoFalke)
  • #12394 fe53d5f gitian-builder.sh: fix --setup doc, since lxc is default (Sjors)
  • #12468 294a766 Add missing newline in init.cpp log message (Aesti)
  • #12308 dcfe218 contrib: Add support for out-of-tree builds in gen-manpages.sh (laanwj)
  • #12451 aae64a2 Bump leveldb subtree (MarcoFalke)
  • #12527 d77b4a7 gitian-build.sh: fix signProg being recognized as two parameters (ken2812221)
  • #12588 d74b01d utils: Remove deprecated pyzmq call from python zmq example (kosciej)
  • #10271 bc67982 Use std::thread::hardware_concurrency, instead of Boost, to determine available cores (fanquake)
  • #12097 14475e2 scripts: Lint-whitespace: use perl instead of grep -p (Sjors)
  • #12098 17c44b2 scripts: Lint-whitespace: add param to check last n commits (Sjors)
  • #11900 842f61a script: Simplify checkminimalpush checks, add safety assert (instagibbs)
  • #12567 bb98aec util: Print timestamp strings in logs using iso 8601 formatting (practicalswift)
  • #12572 d8d9162 script: Lint-whitespace: find errors more easily (AkioNak)
  • #10694 ae5bcc7 Remove redundant code in MutateTxSign(CMutableTransaction&, const std::string&) (practicalswift)
  • #12659 3d16f58 Improve Fatal LevelDB Log Messages (eklitzke)
  • #12643 0f0229d util: Remove unused sync_chain (MarcoFalke)
  • #12102 7fb8fb4 Apply hardening measures in bitcoind systemd service file (Flowdalic)
  • #12652 55f490a bitcoin-cli: Provide a better error message when bitcoind is not running (practicalswift)
  • #12630 c290508 Provide useful error message if datadir is not writable (murrayn)
  • #11881 624bee9 Remove Python2 support (jnewbery)
  • #12821 082e26c contrib: Remove unused import string (MarcoFalke)
  • #12829 252c1b0 Python3 fixup (jnewbery)
  • #12822 ff48f62 Revert 7deba93bdc76616011a9f493cbc203d60084416f and fix expired-key-sigs properly (TheBlueMatt)
  • #12820 5e53b80 contrib: Fix check-doc script regexes (MarcoFalke)
  • #12713 4490871 Track negated options in the option parser (eklitzke)
  • #12708 b2e5fe8 Make verify-commits.sh test that merges are clean (sipa)
  • #12891 3190785 logging: Add lint-logs.sh to check for newline termination (jnewbery)
  • #12923 a7cbe38 util: Pass pthread_self() to pthread_setschedparam instead of 0 (laanwj)
  • #12871 fb17fae Add shell script linting: Check for shellcheck warnings in shell scripts (practicalswift)
  • #12970 5df84de logging: Bypass timestamp formatting when not logging (theuni)
  • #12987 fe8fa22 tests/tools: Enable additional Python flake8 rules for automatic linting via Travis (practicalswift)
  • #12972 0782508 Add python3 script shebang lint (ken2812221)
  • #13004 58bbc55 Print to console by default when not run with -daemon (practicalswift)
  • #13039 8b4081a Add logging and error handling for file syncing (laanwj)
  • #13020 4741ca5 Consistently log CValidationState on call failure (Empact)
  • #13031 826acc9 Fix for utiltime to compile with msvc (sipsorcery)
  • #13119 81743b5 Remove script to clean up datadirs (MarcoFalke)
  • #12954 5a66642 util: Refactor logging code into a global object (jimpo)
  • #12769 35eb9d6 Add systemd service to bitcoind in debian package (ghost)
  • #13146 0bc980b rpcauth: Make it possible to provide a custom password (laanwj)
  • #13148 b62b437 logging: Fix potential use-after-free in logprintstr(…) (practicalswift)
  • #13214 0612d96 Enable Travis checking for two Python linting rules we are currently not violating (practicalswift)
  • #13197 6826989 util: Warn about ignored recursive -includeconf calls (kallewoof)
  • #13176 d9ebb63 Improve CRollingBloomFilter performance: replace modulus with FastMod (martinus)
  • #13228 d792e47 Add script to detect circular dependencies between source modules (sipa)
  • #13320 e08c130 Ensure gitian-build.sh uses bash (jhfrontz)
  • #13301 e4082d5 lint: Add linter to error on #include <*.cpp> (Empact)
  • #13374 56f6936 utils and libraries: checking for bitcoin address in translations (kaplanmaxe)
  • #13230 7c32b41 Simplify include analysis by enforcing the developer guide's include syntax (practicalswift)
  • #13450 32bf4c6 Add linter: Enforce the source code file naming convention described in the developer notes (practicalswift)
  • #13479 fa2ea37 contrib: Fix cve-2018-12356 by hardening the regex (loganaden)
  • #13448 a90ca40 Add linter: Make sure we explicitly open all text files using UTF-8 encoding in Python (practicalswift)
  • #13494 d67eff8 Follow-up to #13454: Fix broken build by exporting LC_ALL=C (practicalswift)
  • #13510 03f3925 Scripts and tools: Obsolete #!/bin/bash shebang (DesWurstes)
  • #13577 c9eb8d1 logging: Avoid nstart may be used uninitialized in appinitmain warning (mruddy)
  • #13603 453ae5e bitcoin-tx: Stricter check for valid integers (domob1812)
  • #13118 c05c93c RPCAuth Detection in Logs (Linrono)
  • #13647 4027ec1 Scripts and tools: Fix BIND_NOW check in security-check.py (conradoplg)
  • #13692 f5d166a contrib: Clone core repo in gitian-build (MarcoFalke)
  • #13699 4c6d1b9 contrib: Correct version check (kallewoof)
  • #13695 dcc0cff lint: Add linter for circular dependencies (Empact)
  • #13733 0d1ebf4 utils: Refactor argsmanager a little (AtsukiTak)
  • #13714 29b4ee6 contrib: Add lxc network setup for bionic host (ken2812221)
  • #13764 f8685f4 contrib: Fix test-security-check fail in ubuntu 18.04 (ken2812221)
  • #13809 77168f7 contrib: Remove debian and rpm subfolder (MarcoFalke)
  • #13799 230652c Ignore unknown config file options; warn instead of error (sipa)
  • #13894 df9f712 shutdown: Stop threads before resetting ptrs (MarcoFalke)
  • #13925 71dec5c Merge leveldb subtree (MarcoFalke)
  • #13939 ef86f26 lint: Make format string linter understand basic template parameter syntax (practicalswift)
  • #14105 eb202ea util: Report parse errors in configuration file (laanwj)
  • #12604 9903537 Add DynamicMemoryUsage() to CDBWrapper to estimate LevelDB memory use (eklitzke)
  • #12495 047865e Increase LevelDB max_open_files (eklitzke)
  • #12784 e80716d Fix bug in memory usage calculation (unintended integer division) (practicalswift)
  • #12618 becd8dd Set SCHED_BATCH priority on the loadblk thread (eklitzke)
  • #12854 5ca1509 Add P2P, Network, and Qt categories to the desktop icon (luke-jr)
  • #11862 4366f61 Network specific conf sections (ajtowns)
  • #13441 4a7e64f Prevent shared conf files from failing with different available options in different binaries (achow101)
  • #13471 5eca4e8 For AVX2 code, also check for AVX, XSAVE, and OS support (sipa)
  • #13503 c655b2c Document FreeBSD quirk. Fix FreeBSD build: Use std::min(…) to allow for compilation under certain FreeBSD versions (practicalswift)
  • #13725 07ce278 Fix bitcoin-cli --version (Empact)
  • Documentation:
  • #12306 216f9a4 Improvements to UNIX documentation (axvr)
  • #12309 895fbd7 Explain how to update chainTxData in release process (laanwj)
  • #12317 85123be Document method for reviewers to verify chainTxData (jnewbery)
  • #12331 d32528e Properly alphabetize output of CLI --help option (murrayn)
  • #12322 c345148 Remove step making cloned repository world-writable for Windows build (murrayn)
  • #12354 b264528 add gpg key for fivepiece (fivepiece)
  • #11761 89005dd initial QT documentation (Sjors)
  • #12232 fdc2188 Improve "Turn Windows Features On or Off" step (MCFX2)
  • #12487 4528f74 init: Remove translation for -blockmaxsize option help (laanwj)
  • #12546 a4a5fc7 Minor improvements to Compatibility Notes (randolf)
  • #12434 21e2670 dev-notes: Members should be initialized (MarcoFalke)
  • #12452 71f56da clarified systemd installation instructions in init.md for Ubuntu users (DaveFromBinary)
  • #12615 1f93491 allow for SIGNER containing spaces (ken2812221)
  • #12603 85424d7 PeerLogicValidation interface (jamesob)
  • #12581 12ac2f0 Mention configure without wallet in FreeBSD instructions (dbolser)
  • #12619 8a709fb Give hint about gitian not able to download (kallewoof)
  • #12668 de2fcaa do update before fetching packages in WSL build guide (nvercamm)
  • #12586 e7721e6 Update osx brew install instruction (fanquake)
  • #12760 7466a26 Improve documentation on standard communication channels (jimpo)
  • #12797 0415b1e init: Fix help message for checkblockindex (MarcoFalke)
  • #12800 2d97611 Add note about our preference for scoped enumerations ("enum class") (practicalswift)
  • #12798 174d016 Refer to witness reserved value as spec. in the BIP (MarcoFalke)
  • #12759 d3908e2 Improve formatting of developer notes (eklitzke)
  • #12877 2b54155 Use bitcoind in Tor documentation (knoxcard)
  • #12896 b15485e Fix conflicting statements about initialization in developer notes (practicalswift)
  • #12850 319991d add qrencode to brew install instructions (buddilla)
  • #12007 cd8e45b Clarify the meaning of fee delta not being a fee rate in prioritisetransaction RPC (honzik666)
  • #12927 06ead15 fixed link, replaced QT with Qt (trulex)
  • #12852 ebd786b devtools: Setup ots git integration (MarcoFalke)
  • #12933 3cf76c2 Refine header include policy (MarcoFalke)
  • #12951 6df0c6c Fix comment in FindForkInGlobalIndex (jamesob)
  • #12982 a63b4e3 Fix inconsistent namespace formatting guidelines (ryanofsky)
  • #13026 9b3a67e Fix include comment in src/interfaces/wallet.h (promag)
  • #13012 d1e3c5e Add comments for chainparams.h, validation.cpp (jamesob)
  • #13064 569e381 List support for BIP173 in bips.md (sipa)
  • #12997 646b7f6 build-windows: Switch to Artful, since Zesty is EOL (MarcoFalke)
  • #12384 c5f7efe Add version footnote to tor.md (Willtech)
  • #13165 627c376 Mention good first issue list in CONTRIBUTING.md (fanquake)
  • #13295 fb77310 Update OpenBSD build instructions for OpenBSD 6.3 (practicalswift)
  • #13340 3a8e3f4 remove leftover check-doc documentation (fanquake)
  • #13346 60f0358 update bitcoin-dot-org links in release-process.md (fanquake)
  • #13372 f014933 split FreeBSD build instructions out of build-unix.md (steverusso)
  • #13366 861de3b Rename “OS X” to the newer “macOS” convention (giulio92)
  • #13369 f8bcef3 update transifex doc link (mess110)
  • #13312 b22115d Add a note about the source code filename naming convention (practicalswift)
  • #13460 1939536 Remove note to install all boost dev packages (MarcoFalke)
  • #13476 9501938 Fix incorrect shell quoting in FreeBSD build instructions (murrayn)
  • #13402 43fa355 Document validationinterace callback blocking deadlock potential (TheBlueMatt)
  • #13488 d6cf4bd Improve readability of "Squashing commits" (wodry)
  • #13531 ee02deb Clarify that mempool txiter is const_iterator (MarcoFalke)
  • #13418 01f9098 More precise explanation of parameter onlynet (wodry)
  • #13592 1756cb4 Modify policy to not translate command-line help (ken2812221)
  • #13588 b77c38e Improve doc of options addnode, connect, seednode (wodry)
  • #13614 17e9106 Update command line help for -printtoconsole and -debuglogfile (satwo, fanquake)
  • #13605 8cc048e corrected text to reflect new(er) process of specifying fingerprints (jhfrontz)
  • #13481 b641f60 Rewrite some validation docs as lock annotations (MarcoFalke)
  • #13680 30640f8 Remove outdated comment about miner ignoring CPFP (jamesob)
  • #13625 7146672 Add release notes for -printtoconsole and -debuglogfile changes (satwo)
  • #13718 f7f574d Specify preferred Python string formatting technique (masonicboom)
  • #12764 10b9a81 Remove field in getblocktemplate help that has never been used (conscott)
  • #13742 d2186b3 Adjust bitcoincore.org links (MarcoFalke)
  • #13706 94dd89e Minor improvements to release-process.md (MitchellCash)
  • #13775 ef4fac0 Remove newlines from error message (practicalswift)
  • #13803 feb7dd9 add note to contributor docs about warranted PR's (kallewoof)
  • #13814 67af7ef Add BIP174 to list of implemented BIPs (sipa)
  • #13835 c1cba35 Fix memory consistency model in comment (skeees)
  • #13824 aa30e4b Remove outdated net comment (MarcoFalke)
  • #13853 317477a correct versions in dependencies.md (fanquake)
  • #13872 37ab117 Reformat -help output for help2man (real-or-random)
  • #13717 8c3c402 Link to python style guidelines from developer notes (masonicboom)
  • #13895 1cd5f2c fix GetWarnings docs to reflect behavior (Empact)
  • #13911 3e3a50a Revert translated string change, clarify wallet log messages (PierreRochard)
  • #13908 d6faea4 upgrade rescan time warning from minutes to >1 hour (masonicboom)
  • #13905 73a09b4 fixed bitcoin-cli -help output for help2man (hebasto)
  • #14100 2936dbc Change documentation for =0 for non-boolean options (laanwj)
  • #14096 465a583 Add reference documentation for descriptors language (sipa)
  • #12757 0c5f67b Clarify include guard naming convention (practicalswift)
  • #13844 d3325b0 Correct the help output for -prune (hebasto)

New in Bitcoin Core 0.16.3 (Sep 19, 2018)

  • Fix crash bug with duplicate inputs within a transaction (TheBlueMatt, sdaftuar)
  • RPC and other APIs
  • Make signrawtransaction* give an error when amount is needed but missing (ajtowns)
  • Miscellaneous
  • Bitcoinconsensus: invalid flags error should be set to bitcoinconsensus_err (afk11)
  • Documentation
  • Correct the help output for -prune (hebasto)

New in Bitcoin Core 0.16.2 (Jul 30, 2018)

  • This is a new minor version release, with various bugfixes as well as updated translations.

New in Bitcoin Core 0.16.1 (Jun 15, 2018)

  • Policy:
  • #11423 d353dd1 [Policy] Several transaction standardness rules (jl2012)
  • Mining:
  • #12756 e802c22 [config] Remove blockmaxsize option (jnewbery)
  • Block and transaction handling:
  • #13199 c71e535 Bugfix: ensure consistency of m_failed_blocks after reconsiderblock (sdaftuar)
  • #13023 bb79aaf Fix some concurrency issues in ActivateBestChain() (skeees)
  • P2P protocol and network code:
  • #12626 f60e84d Limit the number of IPs addrman learns from each DNS seeder (EthanHeilman)
  • Wallet:
  • #13265 5d8de76 Exit SyncMetaData if there are no transactions to sync (laanwj)
  • #13030 5ff571e Fix zapwallettxes/multiwallet interaction. (jnewbery)
  • GUI:
  • #12999 1720eb3 Show the Window when double clicking the taskbar icon (ken2812221)
  • #12650 f118a7a Fix issue: “default port not shown correctly in settings dialog” (251Labs)
  • #13251 ea487f9 Rephrase Bech32 checkbox texts, and enable it with legacy address default (fanquake)
  • Build system:
  • #12474 b0f692f Allow depends system to support armv7l (hkjn)
  • #12585 72a3290 depends: Switch to downloading expat from GitHub (fanquake)
  • #12648 46ca8f3 test: Update trusted git root (MarcoFalke)
  • #11995 686cb86 depends: Fix Qt build with Xcode 9 (fanquake)
  • #12636 845838c backport: #11995 Fix Qt build with Xcode 9 (fanquake)
  • #12946 e055bc0 depends: Fix Qt build with XCode 9.3 (fanquake)
  • #12998 7847b92 Default to defining endian-conversion DECLs in compat w/o config (TheBlueMatt)
  • Tests and QA:
  • #12447 01f931b Add missing signal.h header (laanwj)
  • #12545 1286f3e Use wait_until to ensure ping goes out (Empact)
  • #12804 4bdb0ce Fix intermittent rpc_net.py failure. (jnewbery)
  • #12553 0e98f96 Prefer wait_until over polling with time.sleep (Empact)
  • #12486 cfebd40 Round target fee to 8 decimals in assert_fee_amount (kallewoof)
  • #12843 df38b13 Test starting bitcoind with -h and -version (jnewbery)
  • #12475 41c29f6 Fix python TypeError in script.py (MarcoFalke)
  • #12638 0a76ed2 Cache only chain and wallet for regtest datadir (MarcoFalke)
  • #12902 7460945 Handle potential cookie race when starting node (sdaftuar)
  • #12904 6c26df0 Ensure bitcoind processes are cleaned up when tests end (sdaftuar)
  • #13049 9ea62a3 Backports (MarcoFalke)
  • #13201 b8aacd6 Handle disconnect_node race (sdaftuar)
  • Miscellaneous:
  • #12518 a17fecf Bump leveldb subtree (MarcoFalke)
  • #12442 f3b8d85 devtools: Exclude patches from lint-whitespace (MarcoFalke)
  • #12988 acdf433 Hold cs_main while calling UpdatedBlockTip() signal (skeees)
  • #12985 0684cf9 Windows: Avoid launching as admin when NSIS installer ends. (JeremyRand)
  • Documentation:
  • #12637 60086dd backport: #12556 fix version typo in getpeerinfo RPC call help (fanquake)
  • #13184 4087dd0 RPC Docs: gettxout*: clarify bestblock and unspent counts (harding)
  • #13246 6de7543 Bump to Ubuntu Bionic 18.04 in build-windows.md (ken2812221)
  • #12556 e730b82 Fix version typo in getpeerinfo RPC call help (tamasblummer)

New in Bitcoin Core 0.16.0 (Feb 26, 2018)

  • Block and transaction handling:
  • aeed345 Combine scriptPubKey and amount as CTxOut in CScriptCheck (jl2012)
  • d20a7 Minor cleanups for AcceptToMemoryPool (morcos)
  • c201f Add error string for CLEANSTACK script violation (maaku)
  • da9c Change SignatureHash input index check to an assert (jimpo)
  • e12522d Add state message print to AcceptBlock failure message (TheBlueMatt)
  • fee4f Mark mempool import fails that were found in mempool as ‘already there’ (kallewoof)
  • fb806 CTxMemPoolEntry::UpdateAncestorState: modifySiagOps param type (donaloconnor)
  • e970396 Fix: Open files read only if requested (Elbandi)
  • d1ebf Document partial validation in ConnectBlock() (sdaftuar)
  • c090262 Make all script validation flags backward compatible (sipa)
  • f Add a CChainState class to validationcpp to take another step towards clarifying internal interfaces (TheBlueMatt)
  • d9fdac1 Block ActivateBestChain to empty validationinterface queue (TheBlueMatt)
  • dc2 Remove unused mempool index (sdaftuar)
  • a9 Sort mempool by min(feerate, ancestor_feerate) (sdaftuar)
  • e3a411 Minimize the number of times it is checked that no money… (jtimon)
  • f5012b Hold mempoolcs for the duration of ATMP (TheBlueMatt)
  • d44cd7e Reset pblocktree before deleting LevelDB file (Sjors)
  • f893824 Interrupt loading thread after shutdown request (promag)
  • P2P protocol and network code:
  • b49 Add vConnect to CConnman::Options (benma)
  • d31ed2 Split resolve out of connect (theuni)
  • fef65c4 Ignore getheaders requests for very old side blocks (jimpo)
  • aeaa9c addrman: Add missing lock in Clear() (CAddrMan) (practicalswift)
  • ef3b69 De-duplicate connection eviction logic (tjps)
  • f4375f Do not send (potentially) invalid headers in response to getheaders (TheBlueMatt)
  • aca77a4 Assert statem_chain_syncm_work_header in ConsiderEviction (practicalswift)
  • ff6ff5 Add missing locks in net{cpp,h} (practicalswift)
  • d3dc8 Implement BIP159 NODE_NETWORK_LIMITED (pruned peers) signaling only (jonasschnelli)
  • ffa16 Do not make it trivial for inbound peers to generate log entries (TheBlueMatt)
  • ba2f195 Split socket create/connect (theuni)
  • bc66765 Add testnet DNS seed: seedtestnetbitcoinsprovoostnl (Sjors)
  • e89de5 Use GetDesireableServiceFlags in seeds, dnsseeds, fixing static seed adding (TheBlueMatt)
  • bac24 Hardcoded seed update (laanwj)
  • cf6393 Update chainTxData for 016 (laanwj)
  • f61651 Fix ignoring tx data requests when fPauseSend is set on a peer (TheBlueMatt)
  • Wallet:
  • fc51565 Avoid second mapWallet lookup (promag)
  • Remove vchDefaultKey and have better first run detection (achow101)
  • fc5c237 Fix potential memory leak when loading a corrupted wallet file (practicalswift)
  • c92b9 Move some static functions out of walleth/cpp (ryanofsky)
  • f Prepare for non-Base58 addresses (sipa)
  • e6ab88a add missing lock to crypter GetKeys() (benma)
  • a0e6 Clarify wallet initialization / destruction interface (jnewbery)
  • c22a53c Bump wallet version to 159900 and remove the usehd option (achow101)
  • f7e37e Display non-HD error on first run (MarcoFalke)
  • c7ece Fix parameter name typo in ErasePurpose walletdb method (PierreRochard)
  • aa624b6 Full BIP173 (Bech32) support (sipa)
  • ecc630 Improve -disablewallet parameter interaction (promag)
  • ba4bf Remove helper conversion operator from wallet (kallewoof)
  • ec126 Assert that CWallet::SyncMetaData finds oldest transaction (BitonicEelis)
  • e6e3fc3 CKeystore/CCrypter: move relevant implementation out of the header (jonasschnelli)
  • a1d7 Call wallet notify callbacks in scheduler thread (without cs_main) (TheBlueMatt)
  • ed8180 Make feebumper class stateless (ryanofsky)
  • d080a7d Specify custom wallet directory with -walletdir param (MeshCollider)
  • ab6c0b Don’t attempt mempool entry for wallet transactions on startup (instagibbs)
  • Split up key and script metadata for better type safety (ryanofsky)
  • ef8ba7d Remove unnecessary mempool lock in ReacceptWalletTransactions (promag)
  • ae58d5 Make CWallet::FundTransaction atomic (promag)
  • df71819 Clarify getbalance meaning a tiny bit in response to questions (TheBlueMatt)
  • c89e9 Remove unused fNoncriticalErrors variable from CWalletDB::FindWalletTx (PierreRochard)
  • e08c Cleanups + nit fixes for walletdir PR (MeshCollider)
  • d889c03 Segwit wallet support (sipa)
  • b7450cd Add test coverage for bitcoin-cli multiwallet calls (ryanofsky)
  • e3af7 Add a lock to the wallet directory (MeshCollider)
  • c7978be Clamp walletpassphrase timeout to 2^30 seconds and check its bounds (achow101)
  • fa Deprecate addwitnessaddress (laanwj)
  • f4c942e Error if relative -walletdir is specified (ryanofsky)
  • e64 Avoid permanent cs_main/cs_wallet lock during RescanFromTime (jonasschnelli)
  • Use P2WPKH change output if any destination is P2WPKH or P2WSH (Sjors)
  • eadb2da Add address type option to addmultisigaddress (promag)
  • Remove duplicate mapWallet lookups (promag)
  • RPC and other APIs:
  • aaf Enable disablesafemode by default (gmaxwell)
  • ed57d3 Avoid treating null RPC arguments different from missing arguments (ryanofsky)
  • affe927 Add option -stdinrpcpass to bitcoin-cli to allow RPC password to be read from standard input (jharvell)
  • e0e3cbb Push down safe mode checks (laanwj)
  • d745b4c add wtxid to mempool entry output (sdaftuar)
  • bc561b4 Add savemempool RPC (greenaddress)
  • a5b41 (finally) remove getinfo (TheBlueMatt)
  • fcd61b test: Check RPC argument mapping (laanwj)
  • f8e095 More user-friendly error message when partially signing (MeshCollider)
  • ef8340d deprecate estimatefee (jnewbery)
  • a8e916 Add “errors” field to getblockchaininfo and unify “errors” field in get*info RPCs (achow101)
  • db Fix getchaintxstats() (AkioNak)
  • a93270 getblockchaininfo: Add disk_size, prune_target_size (esotericnonsense)
  • a1d78b5 Improve shutdown process (promag)
  • ff92fbf Avoid slow transaction search with txindex enabled (promag)
  • d90ef Lock cs_main in blockToJSON/blockheaderToJSON (practicalswift)
  • c304 Make logging RPC public (laanwj)
  • c786 Add initialblockdownload to getblockchaininfo (jnewbery)
  • bc0b4 Diagnose unsuitable outputs in lockunspent() (BitonicEelis)
  • cli: Reject arguments to -getinfo (laanwj)
  • d4267a3 Fix sendrawtransaction hang when sending a tx already in mempool (TheBlueMatt)
  • c9b57 clarify abortrescan rpc use (instagibbs)
  • ef14f2e Improve help text and behavior of RPC-logging (AkioNak)
  • e38d35 getblockchaininfo: Loop through the bip9 soft fork deployments instead of hard coding (achow101)
  • d0e0 Allow fetching tx directly from specified block in getrawtransaction (kallewoof)
  • fee0370 Add iswitness parameter to decode- and fundrawtransaction RPCs (MeshCollider)
  • d16c Add scripts to dumpwallet RPC (MeshCollider)
  • bad8d6 mempoolinfo should take ::minRelayTxFee into account (mess110)
  • a9a49e6 Adding ::minRelayTxFee amount to getmempoolinfo and updating help (jeffrade)
  • adce1de Add deprecation error for getinfo (laanwj)
  • ec021 Disallow using addresses in createmultisig (achow101)
  • deac Add special error for genesis coinbase to getrawtransaction (MeshCollider)
  • c6223b3 Remove nBlockMaxSize from miner opt struct as it is no longer used (gmaxwell)
  • c7 Set regtest JSON-RPC port to 18443 to avoid conflict with testnet 18332 (fametrano)
  • e542728 Fix estimatesmartfee rounding display issue (TheBlueMatt)
  • c2de82 Add RPC call rescanblockchain <startheight> <stopheight> (jonasschnelli)
  • e14dc RPC getreceivedbyaddress should return error if called with address not owned by the wallet (jnewbery)
  • de37a http: Join worker threads before deleting work queue (laanwj)
  • a41e Bech32 addresses in dumpwallet (fivepiece)
  • ac1 Make signrawtransaction accept P2SH-P2WSH redeemscripts (sipa)
  • GUI:
  • e66bb Pass SendCoinsRecipient (208 bytes) by reference (practicalswift)
  • b8af7b Make tabs toolbar no longer have a context menu (achow101)
  • c8f365 Fix typo and access key in optionsdialogui (keystrike)
  • ea729d5 Drop upgrade-cancel callback registration for a generic “cancelable” (TheBlueMatt)
  • a3624dd Fix memory leaks in qt/guiutilcpp (danra)
  • e72b2 [macOS] remove Growl support, remove unused code (jonasschnelli)
  • c5c77bd Terminate string *pszExePath after readlink and without using memset (practicalswift)
  • ffa5159 Fix crash via division by zero assertion (jonasschnelli)
  • e8c Add upload and download info to the peerlist (debug menu) (aarongolliver)
  • ffc0b11 Add toggle for unblinding password fields (tjps)
  • cdf93 Add use available balance in send coins dialog (CryptAxe, promag)
  • e352d Receive: Remove option to reuse a previous address (luke-jr)
  • f0c1f8a Fix the StartupWMClass for bitoin-qt, so gnome-shell can recognize it (eklitzke)
  • f6f8d54 Fix potential memory leak in newPossibleKey(ChangeCWallet *wallet) (practicalswift)
  • d06 RPC-Console nested commands documentation (lmlsna)
  • d31f9 Enable searching by transaction id (luke-jr)
  • eeaa0 Improved copy for RBF checkbox and tooltip (Sjors)
  • f9dad Fix proxy setting options dialog crash (laanwj)
  • bb8 Update ban-state in case of dirty-state during periodic sweep (jonasschnelli)
  • f19ca12 Enable RBF by default in QT (Sjors)
  • a1136f0 Optimizes boolean expression model && model->haveWatchOnly() (251Labs)
  • eeb6d52 Change µBTC to bits (jb55)
  • fd4ca17 Replaces numbered place marker %2 with %1 (251Labs)
  • bbc91b7 Use flexible font size for QRCode image address (jonasschnelli)
  • d10d7 Avoid potential null dereference in ReceiveCoinsDialog constructor (ryanofsky)
  • f359afc Bump BLOCK_CHAIN_SIZE to 200GB (laanwj)
  • c8b6 Receive: checkbox for bech32 address (Sjors)
  • a809 Fix qt build broken by 5a5e4e9 (TheBlueMatt)
  • d473e6d reset addrProxy/addrSeparateProxyTor if colon char missing (mess110)
  • f289 qt: Poll ShutdownTimer after init is done (MarcoFalke)
  • daaae36 qt: Make sure splash screen is freed on AppInitMain fail (laanwj)
  • ad10b90 shutdown: fix crash on shutdown with reindex-chainstate (theuni)
  • Build system:
  • c9f5ec travis: Build with –enable-werror under OS X (practicalswift)
  • df8c722 build: Rename –enable-experimental-asm to –enable-asm and enable by default (laanwj)
  • dacc6 [depends] Don’t build libevent sample code (fanquake)
  • dd40 Travis: Test build against system libs (& Qt4) (luke-jr)
  • b Remove outdated share/certs/ directory (MeshCollider)
  • Remove lxcbr0 lines from gitian-buildsh (MeshCollider)
  • cef8 build: Make “make clean” remove all files created when running “make check” (practicalswift)
  • e022463 [depends] mac_alias 206, ds_store 112 (fanquake)
  • bb9ab0f Build: Fix Automake warnings when running autogensh (fanquake)
  • e70791 [build] Don’t fail when passed –disable-lcov and lcov isn’t available (fanquake)
  • c098a8 refactor: Make all #includes relative to project root (laanwj, MeshCollider, ryanofsky)
  • f7695b [build] Add temp_bitcoin_locale_qrc to CLEAN_QT to fix make distcheck (fanquake)
  • fa645 [Docs] Bump minimum required version of GCC to 48 (fanquake)
  • d3dc52 [depends] ZeroMQ 422 (fanquake)
  • c8f0a3 [build] Add missing stuff to clean-local (kallewoof)
  • bb67 [build] Warn that only libconsensus can be built without Boost (fanquake)
  • a11ba7 Improve BSD compatibility of contrib/install_db4sh (laanwj)
  • a255 Fix gitian build after libzmq bump (theuni)
  • f68fd2 [trivial] Add required package dependencies for depends cross compilation (jonasschnelli)
  • cf8a0 #include sys/fcntlh to just fcntlh (without sys/) (jsarenik)
  • fa1ab4 Use BDB_LIBS/CFLAGS and pass –disable-replication (fanquake)
  • e5c bitcoin_qtm4: Minor fixes and clean-ups (fanquake)
  • d4104 gitignore: add QT Creator artifacts (Sjors)
  • c0ae864 Fix warnings (-Wsign-compare) when building with DEBUG_ADDRMAN (practicalswift)
  • Tests and QA:
  • e55f13 Remove OldSetKeyFromPassphrase/OldEncrypt/OldDecrypt (practicalswift)
  • b2612 Document the non-DER-conformance of one test in tx_validjson (schildbach)
  • ede386c Improve versionbits_computeblockversion test code consistency (danra)
  • f088a1b Include ms/blk stats in Connect* benchmarks (kallewoof)
  • d81dccf Avoid redundant assignments Remove unused variables (practicalswift)
  • f8877 travis: Assert default datadir isn’t created, Run scripted diff only once (MarcoFalke)
  • e6c5 travis: filter out pyenv (theuni)
  • d63 Add -usehd to excluded args in check-docpy (MeshCollider)
  • e4184 Make sure ~/bitcoin doesn’t exist before build (MeshCollider)
  • cce94c5 travis: Revert default datadir check (MarcoFalke)
  • f4ed44a Add a lint check for trailing whitespace (MeshCollider)
  • ce2f3d mininode: add an optimistic write and disable nagle (theuni)
  • d85899 Add getblockchaininfo functional test (promag)
  • f199b8a Add Qt GUI tests to Overview and ReceiveCoin Page (anditto)
  • dbc4ae0 Deduplicate CMerkleBlock construction code, add test coverage (jamesob)
  • e8ef9d Add libFuzzer support (practicalswift)
  • da2c Add blocknotify and walletnotify functional tests (promag)
  • Bump univalue subtree and fix json formatting in tests (MarcoFalke)
  • be03 Slightly Improve Unit Tests for Checkqueue (JeremyRubin)
  • b860b A few Python3 tidy ups (jnewbery)
  • ca518d Add uacomment tests (mess110)
  • ac8c8 Improve ZMQ functional test (promag)
  • b5545d8 Add fuzz testing for BlockTransactions and BlockTransactionsRequest (practicalswift)
  • dd56166 Support having segwit always active in regtest (sipa, ajtowns, jnewbery)
  • bench: use std::chrono rather than gettimeofday (theuni)
  • f7388e9 Add P2P interface to TestNode (jnewbery)
  • b5f9f02 Improve wallet-accounts test (ryanofsky)
  • e3f5e4 Dead mininode code (jnewbery)
  • fe503e1 Require a steady clock for bench with at least micro precision (TheBlueMatt)
  • b3349 Make comp test framework more debuggable (jnewbery)
  • ee92243 Add missing locks to tests (practicalswift)
  • e528 [contrib] Add Valgrind suppressions file (practicalswift)
  • adeea3 Only allow disconnecting all NodeConns (MarcoFalke)
  • bdf242 Remove unused NodeConn members (MarcoFalke)
  • d46c7 [travis-ci] Only run linters on Pull Requests (jnewbery)
  • f52f Initialize recently introduced non-static class member lastCycles to zero in constructor (practicalswift)
  • ccc70a2 Add messagespy (jnewbery)
  • a7 Fix for mismatched extern definition in wallet tests (sipsorcery)
  • d89fa0 Fix sendheaders (jnewbery)
  • cdd2bc Move pwalletMain to wallet test fixture (laanwj)
  • ba3e Test that mempool rejects coinbase transactions (jamesob)
  • d6ad40 Add multiwallet prefix test (MarcoFalke)
  • a892218 Remove unused mininode functions {ser,deser}_int_vector(…) Remove unused imports (practicalswift)
  • f2c2db Split NodeConn from NodeConnCB (jnewbery)
  • e31dd Rename NodeConn and NodeConnCB (jnewbery)
  • f60b4ad Add Travis check for unused Python imports (practicalswift)
  • ad1820c Assert that only one NetworkThread exists (jnewbery)
  • d4991c0 Improve createrawtransaction functional tests (promag)
  • fd0 Check specific validation error in miner tests (Sjors)
  • e Fix rawtransactions test (laanwj)
  • Remove unused variable (firstAddrnServices) (practicalswift)
  • a1bba Improve node network test (jnewbery)
  • cfd99dd Add configuration file/argument testing (MeshCollider)
  • d4e404a Remove redundant univalue_testscpp (jnewbery)
  • f8 Adding unit tests for GetDifficulty in blockchaincpp (merehap)
  • a86 Improve benchmark precision (martinus)
  • a332a7d Fix string concatenation to ospathjoin and add exception case (dongsam)
  • d38d1a3 Note on test order in test_runner (MarcoFalke)
  • ddff344 util_testscpp: actually check ignored args (ajtowns)
  • fa Improve prioritisetransaction test coverage (promag)
  • a810d Fix ListCoins test failure due to unset g_address_type, g_change_type (ryanofsky)
  • d2eaba Fix rare failure in p2p-segwitpy (sdaftuar)
  • cbe Adding test case for SINGLE ANYONECANPAY hash type in tx_validjson (Christewart)
  • db16ec Functional test naming convention (ajtowns)
  • b987ca4 test_runner: Readable output if create_cachepy fails (ryanofsky)
  • b Make TestNodeCLI command optional in send_cli (MarcoFalke)
  • b30 Rename functional tests (ajtowns)
  • a9c4 Fix versionbits warning test (jnewbery)
  • be6 Add missing syncwithvalidationinterfacequeue to tests (MarcoFalke)
  • eebe458 Fix names of excluded extended tests for travis (ajtowns)
  • d739e [travis-ci] Combine logs on failure (jnewbery)
  • e50024 Add getrawtransaction in_active_chain=False test (MarcoFalke)
  • f560 Sync with validationinterface queue in sync_mempools (MarcoFalke)
  • ff44101 Fix rescan test failure due to unset g_address_type, g_change_type (ryanofsky)
  • e2431d1 travis: Full clone for git subtree check (MarcoFalke)

New in Bitcoin Core 0.15.1 (Nov 13, 2017)

  • This is a new minor version release, including various bugfixes and performance improvements, as well as updated translations.
  • Network fork safety enhancements:
  • A number of changes to the way Bitcoin Core deals with peer connections and invalid blocks have been made, as a safety precaution against blockchain forks and misbehaving peers.
  • Unrequested blocks with less work than the minimum-chain-work are now no longer processed even if they have more work than the tip (a potential issue during IBD where the tip may have low-work). This prevents peers wasting the resources of a node.
  • Peers which provide a chain with less work than the minimum-chain-work during IBD will now be disconnected.
  • For a given outbound peer, we now check whether their best known block has at least as much work as our tip. If it doesn’t, and if we still haven’t heard about a block with sufficient work after a 20 minute timeout, then we send a single getheaders message, and wait 2 more minutes. If after two minutes their best known block has insufficient work, we disconnect that peer. We protect 4 of our outbound peers from being disconnected by this logic to prevent excessive network topology changes as a result of this algorithm, while still ensuring that we have a reasonable number of nodes not known to be on bogus chains.
  • Outbound (non-manual) peers that serve us block headers that are already known to be invalid (other than compact block announcements, because BIP 152 explicitly permits nodes to relay compact blocks before fully validating them) will now be disconnected.
  • If the chain tip has not been advanced for over 30 minutes, we now assume the tip may be stale and will try to connect to an additional outbound peer. A periodic check ensures that if this extra peer connection is in use, we will disconnect the peer that least recently announced a new block.
  • The set of all known invalid-themselves blocks (i.e. blocks which we attempted to connect but which were found to be invalid) are now tracked and used to check if new headers build on an invalid chain. This ensures that everything that descends from an invalid block is marked as such.
  • Miner block size limiting deprecated:
  • Though blockmaxweight has been preferred for limiting the size of blocks returned by getblocktemplate since 0.13.0, blockmaxsize remained as an option for those who wished to limit their block size directly. Using this option resulted in a few UI issues as well as non-optimal fee selection and ever-so-slightly worse performance, and has thus now been deprecated. Further, the blockmaxsize option is now used only to calculate an implied blockmaxweight, instead of limiting block size directly. Any miners who wish to limit their blocks by size, instead of by weight, will have to do so manually by removing transactions from their block template directly.
  • GUI settings backed up on reset:
  • The GUI settings will now be written to guisettings.ini.bak in the data directory before wiping them when the -resetguisettings argument is used. This can be used to retroactively troubleshoot issues due to the GUI settings.
  • Duplicate wallets disallowed:
  • Previously, it was possible to open the same wallet twice by manually copying the wallet file, causing issues when both were opened simultaneously. It is no longer possible to open copies of the same wallet.
  • Debug -minimumchainwork argument added:
  • A hidden debug argument -minimumchainwork has been added to allow a custom minimum work value to be used when validating a chain.
  • Low-level RPC changes:
  • The “currentblocksize” value in getmininginfo has been removed.
  • dumpwallet no longer allows overwriting files. This is a security measure as well as prevents dangerous user mistakes.
  • backupwallet will now fail when attempting to backup to source file, rather than destroying the wallet.
  • listsinceblock will now throw an error if an unknown blockhash argument value is passed, instead of returning a list of all wallet transactions since the genesis block. The behaviour is unchanged when an empty string is provided.
  • CHANGELOG:
  • Mining:
  • #11100 7871a7d Fix confusing blockmax{size,weight} options, dont default to throwing away money (TheBlueMatt)
  • RPC and other APIs:
  • #10859 2a5d099 gettxout: Slightly improve doc and tests (jtimon)
  • #11267 b1a6c94 update cli for estimate*fee argument rename (laanwj)
  • #11483 20cdc2b Fix importmulti bug when importing an already imported key (pedrobranco)
  • #9937 a43be5b Prevent dumpwallet from overwriting files (laanwj)
  • #11465 405e069 Update named args documentation for importprivkey (dusty-wil)
  • #11131 b278a43 Write authcookie atomically (laanwj)
  • #11565 7d4546f Make listsinceblock refuse unknown block hash (ryanofsky)
  • #11593 8195cb0 Work-around an upstream libevent bug (theuni)
  • P2P protocol and network code:
  • #11397 27e861a Improve and document SOCKS code (laanwj)
  • #11252 0fe2a9a When clearing addrman clear mapInfo and mapAddr (instagibbs)
  • #11527 a2bd86a Remove my testnet DNS seed (schildbach)
  • #10756 0a5477c net processing: swap out signals for an interface class (theuni)
  • #11531 55b7abf Check that new headers are not a descendant of an invalid block (more effeciently) (TheBlueMatt)
  • #11560 49bf090 Connect to a new outbound peer if our tip is stale (sdaftuar)
  • #11568 fc966bb Disconnect outbound peers on invalid chains (sdaftuar)
  • #11578 ec8dedf Add missing lock in ProcessHeadersMessage(…) (practicalswift)
  • #11456 6f27965 Replace relevant services logic with a function suite (TheBlueMatt)
  • #11490 bf191a7 Disconnect from outbound peers with bad headers chains (sdaftuar)
  • Validation:
  • #10357 da4908c Allow setting nMinimumChainWork on command line (sdaftuar)
  • #11458 2df65ee Don’t process unrequested, low-work blocks (sdaftuar)
  • Build system:
  • #11440 b6c0209 Fix validationinterface build on super old boost/clang (TheBlueMatt)
  • #11530 265bb21 Add share/rpcuser to dist. source code archive (MarcoFalke)
  • GUI:
  • #11334 19d63e8 Remove custom fee radio group and remove nCustomFeeRadio setting (achow101)
  • #11198 7310f1f Fix display of package name on ‘open config file’ tooltip (esotericnonsense)
  • #11015 6642558 Add delay before filtering transactions (lclc)
  • #11338 6a62c74 Backup former GUI settings on -resetguisettings (laanwj)
  • #11335 8d13b42 Replace save restoreWindowGeometry with Qt functions (MeshCollider)
  • #11237 2e31b1d Fixing division by zero in time remaining (MeshCollider)
  • #11247 47c02a8 Use IsMine to validate custom change address (MarcoFalke)
  • Wallet:
  • #11017 9e8aae3 Close DB on error (kallewoof)
  • #11225 6b4d9f2 Update stored witness in AddToWallet (sdaftuar)
  • #11126 2cb720a Acquire cs_main lock before cs_wallet during wallet initialization (ryanofsky)
  • #11476 9c8006d Avoid opening copied wallet databases simultaneously (ryanofsky)
  • #11492 de7053f Fix leak in CDB constructor (promag)
  • #11376 fd79ed6 Ensure backupwallet fails when attempting to backup to source file (tomasvdw)
  • #11326 d570aa4 Fix crash on shutdown with invalid wallet (MeshCollider)
  • Tests and QA:
  • #11399 a825d4a Fix bip68-sequence rpc test (jl2012)
  • #11150 847c75e Add getmininginfo test (mess110)
  • #11407 806c78f add functional test for mempoolreplacement command line arg (instagibbs)
  • #11433 e169349 Restore bitcoin-util-test py2 compatibility (MarcoFalke)
  • #11308 2e1ac70 zapwallettxes: Wait up to 3s for mempool reload (MarcoFalke)
  • #10798 716066d test bitcoin-cli (jnewbery)
  • #11443 019c492 Allow “make cov” out-of-tree; Fix rpc mapping check (MarcoFalke)
  • #11445 51bad91 0.15.1 Backports (MarcoFalke)
  • #11319 2f0b30a Fix error introduced into p2p-segwit.py, and prevent future similar errors (sdaftuar)
  • #10552 e4605d9 Tests for zmqpubrawtx and zmqpubrawblock (achow101)
  • #11067 eeb24a3 TestNode: Add wait_until_stopped helper method (MarcoFalke)
  • #11068 5398f20 Move wait_until to util (MarcoFalke)
  • #11125 812c870 Add bitcoin-cli -stdin and -stdinrpcpass functional tests (promag)
  • #11077 1d80d1e fix timeout issues from TestNode (jnewbery)
  • #11078 f1ced0d Make p2p-leaktests.py more robust (jnewbery)
  • #11210 f3f7891 Stop test_bitcoin-qt touching ~/.bitcoin (MeshCollider)
  • #11234 f0b6795 Remove redundant testutil.cpp h files (MeshCollider)
  • #11215 cef0319 fixups from set_test_params() (jnewbery)
  • #11345 f9cf7b5 Check connectivity before sending in assumevalid.py (jnewbery)
  • #11091 c276c1e Increase initial RPC timeout to 60 seconds (laanwj)
  • #10711 fc2aa09 Introduce TestNode (jnewbery)
  • #11230 d8dd8e7 Fixup dbcrash interaction with add_nodes() (jnewbery)
  • #11241 4424176 Improve signmessages functional test (mess110)
  • #11116 2c4ff35 Unit tests for script/standard and IsMine functions (jimpo)
  • #11422 a36f332 Verify DBWrapper iterators are taking snapshots (TheBlueMatt)
  • #11121 bb5e7cb TestNode tidyups (jnewbery)
  • #11521 ca0f3f7 travis: move back to the minimal image (theuni)
  • #11538 adbc9d1 Fix race condition failures in replace-by-fee.py, sendheaders.py (sdaftuar)
  • #11472 4108879 Make tmpdir option an absolute path, misc cleanup (MarcoFalke)
  • #10853 5b728c8 Fix RPC failure testing (again) (jnewbery)
  • #11310 b6468d3 Test listwallets RPC (mess110)
  • Miscellaneous:
  • #11377 75997c3 Disallow uncompressed pubkeys in bitcoin-tx [multisig] output adds (TheBlueMatt)
  • #11437 dea3b87 [Docs] Update Windows build instructions for using WSL and Ubuntu 17.04 (fanquake)
  • #11318 8b61aee Put back inadvertently removed copyright notices (gmaxwell)
  • #11442 cf18f42 [Docs] Update OpenBSD Build Instructions for OpenBSD 6.2 (fanquake)
  • #10957 50bd3f6 Avoid returning a BIP9Stats object with uninitialized values (practicalswift)
  • #11539 01223a0 [verify-commits] Allow revoked keys to expire (TheBlueMatt)

New in Bitcoin Core 0.15.0.1 (Sep 20, 2017)

  • This is a new major version release, including new features, various bugfixes and performance improvements, as well as updated translations.

New in Bitcoin Core 0.15.0 (Sep 18, 2017)

  • This is a new major version release, including new features, various bugfixes and performance improvements, as well as updated translations.

New in Bitcoin Core 0.14.2 (Jul 26, 2017)

  • Compatibility:
  • Bitcoin Core is extensively tested on multiple operating systems using the Linux kernel, macOS 10.8+, and Windows Vista and later.
  • Microsoft ended support for Windows XP on April 8th, 2014, No attempt is made to prevent installing or running the software on Windows XP, you can still do so at your own risk but be aware that there are known instabilities and issues. Please do not report issues about Windows XP to the issue tracker.
  • Bitcoin Core should also work on most other Unix-like systems but is not frequently tested on them.
  • Notable changes:
  • miniupnp CVE-2017-8798
  • Bundled miniupnpc was updated to 2.0.20170509. This fixes an integer signedness error (present in MiniUPnPc v1.4.20101221 through v2.0) that allows remote attackers (within the LAN) to cause a denial of service or possibly have unspecified other impact.
  • This only affects users that have explicitly enabled UPnP through the GUI setting or through the -upnp option, as since the last UPnP vulnerability (in Bitcoin Core 0.10.3) it has been disabled by default.
  • If you use this option, it is recommended to upgrade to this version as soon as possible.
  • Known Bugs:
  • Since 0.14.0 the approximate transaction fee shown in Bitcoin-Qt when using coin control and smart fee estimation does not reflect any change in target from the smart fee slider. It will only present an approximate fee calculated using the default target. The fee calculated using the correct target is still applied to the transaction and shown in the final send confirmation dialog.

New in Bitcoin Core 0.12.1 (Apr 18, 2016)

  • RPC and other APIs:
  • 7739 7ffc2bd Add abandoned status to listtransactions
  • Block and transaction handling:
  • 7543 834aaef Backport BIP9, BIP68 and BIP112 with softfork
  • P2P protocol and network code:
  • 7804 90f1d24 Track block download times per individual block
  • 7832 4c3a00d Reduce block timeout to 10 minutes
  • Validation:
  • 7821 4226aac init: allow shutdown during ‘Activating best chain…’
  • 7835 46898e7 Version 2 transactions remain non-standard until CSV activates
  • Build system:
  • 7487 00d57b4 Workaround Travis-side CI issues
  • 7606 a10da9a No need to set -L and –location for curl
  • 7614 ca8f160 Add curl to packages (now needed for depends)
  • 7776 a784675 Remove unnecessary executables from gitian release
  • Wallet:
  • 7715 19866c1 Fix calculation of balances and available coins.
  • Miscellaneous:
  • 7617 f04f4fd Fix markdown syntax and line terminate LogPrint
  • 7747 4d035bc added depends cross compile info
  • 7741 a0cea89 Mark p2p alert system as deprecated
  • 7780 c5f94f6 Disable bad-chain alert

New in Bitcoin Core 0.12.0 (Apr 18, 2016)

  • Signature validation using libsecp256k1:
  • ECDSA signatures inside Bitcoin transactions now use validation using libsecp256k1 instead of OpenSSL.
  • Depending on the platform, this means a significant speedup for raw signature validation speed. The advantage is largest on x86_64, where validation is over five times faster. In practice, this translates to a raw reindexing and new block validation times that are less than half of what it was before.
  • Libsecp256k1 has undergone very extensive testing and validation.
  • A side effect of this change is that libconsensus no longer depends on OpenSSL.
  • Reduce upload traffic:
  • A major part of the outbound traffic is caused by serving historic blocks to other nodes in initial block download state
  • It is now possible to reduce the total upload traffic via the -maxuploadtarget parameter. This is not a hard limit but a threshold to minimize the outbound traffic. When the limit is about to be reached, the uploaded data is cut by not serving historic blocks (blocks older than one week). Moreover, any SPV peer is disconnected when they request a filtered block
  • This option can be specified in MiB per day and is turned off by default (-maxuploadtarget=0). The recommended minimum is 144 * MAX_BLOCK_SIZE (currently 144MB) per day
  • Whitelisted peers will never be disconnected, although their traffic counts for calculating the target
  • A more detailed documentation about keeping traffic low can be found in /doc/reduce-traffic.md
  • Direct headers announcement (BIP 130):
  • Between compatible peers, [BIP 130] direct headers announcement is used. This means that blocks are advertized by announcing their headers directly, instead of just announcing the hash. In a reorganization, all new headers are sent, instead of just the new tip. This can often prevent an extra roundtrip before the actual block is downloaded.
  • With this change, pruning nodes are now able to relay new blocks to compatible peers.
  • Memory pool limiting:
  • Previous versions of Bitcoin Core had their mempool limited by checking a transaction’s fees against the node’s minimum relay fee. There was no upper bound on the size of the mempool and attackers could send a large number of transactions paying just slighly more than the default minimum relay fee to crash nodes with relatively low RAM. A temporary workaround for previous versions of Bitcoin Core was to raise the default minimum relay fee.
  • Bitcoin Core 0.12 will have a strict maximum size on the mempool. The default value is 300 MB and can be configured with the -maxmempool parameter. Whenever a transaction would cause the mempool to exceed its maximum size, the transaction that (along with in-mempool descendants) has the lowest total feerate (as a package) will be evicted and the node’s effective minimum relay feerate will be increased to match this feerate plus the initial minimum relay feerate. The initial minimum relay feerate is set to 1000 satoshis per kB.
  • Bitcoin Core 0.12 also introduces new default policy limits on the length and size of unconfirmed transaction chains that are allowed in the mempool (generally limiting the length of unconfirmed chains to 25 transactions, with a total size of 101 KB). These limits can be overriden using command line arguments; see the extended help (--help -help-debug) for more information.
  • Opt-in Replace-by-fee transactions:
  • It is now possible to replace transactions in the transaction memory pool of Bitcoin Core 0.12 nodes. Bitcoin Core will only allow replacement of transactions which have any of their inputs’ nSequence number set to less than 0xffffffff - 1. Moreover, a replacement transaction may only be accepted when it pays sufficient fee, as described in [BIP 125]
  • Transaction replacement can be disabled with a new command line option, -mempoolreplacement=0. Transactions signaling replacement under BIP125 will still be allowed into the mempool in this configuration, but replacements will be rejected. This option is intended for miners who want to continue the transaction selection behavior of previous releases
  • The -mempoolreplacement option is not recommended for wallet users seeking to avoid receipt of unconfirmed opt-in transactions, because this option does not prevent transactions which are replaceable under BIP 125 from being accepted (only subsequent replacements, which other nodes on the network that implement BIP 125 are likely to relay and mine). Wallet users wishing to detect whether a transaction is subject to replacement under BIP 125 should instead use the updated RPC calls gettransaction and listtransactions, which now have an additional field in the output indicating if a transaction is replaceable under BIP125 (“bip125-replaceable”)
  • Note that the wallet in Bitcoin Core 0.12 does not yet have support for creating transactions that would be replaceable under BIP 125
  • RPC: Random-cookie RPC authentication:
  • When no -rpcpassword is specified, the daemon now uses a special ‘cookie’ file for authentication. This file is generated with random content when the daemon starts, and deleted when it exits. Its contents are used as authentication token. Read access to this file controls who can access through RPC. By default it is stored in the data directory but its location can be overridden with the option -rpccookiefile
  • This is similar to Tor’s CookieAuthentication
  • This allows running bitcoind without having to do any manual configuration
  • Relay: Any sequence of pushdatas in OP_RETURN outputs now allowed:
  • Previously OP_RETURN outputs with a payload were only relayed and mined if they had a single pushdata. This restriction has been lifted to allow any combination of data pushes and numeric constant opcodes (OP_1 to OP_16) after the OP_RETURN. The limit on OP_RETURN output size is now applied to the entire serialized scriptPubKey, 83 bytes by default. (the previous 80 byte default plus three bytes overhead)
  • Relay and Mining: Priority transactions:
  • Bitcoin Core has a heuristic ‘priority’ based on coin value and age. This calculation is used for relaying of transactions which do not pay the minimum relay fee, and can be used as an alternative way of sorting transactions for mined blocks. Bitcoin Core will relay transactions with insufficient fees depending on the setting of -limitfreerelay= (default: r=15 kB per minute) and -blockprioritysize=
  • In Bitcoin Core 0.12, when mempool limit has been reached a higher minimum relay fee takes effect to limit memory usage. Transactions which do not meet this higher effective minimum relay fee will not be relayed or mined even if they rank highly according to the priority heuristic
  • The mining of transactions based on their priority is also now disabled by default. To re-enable it, simply set -blockprioritysize= where is the size in bytes of your blocks to reserve for these transactions. The old default was 50k, so to retain approximately the same policy, you would set -blockprioritysize=50000
  • Additionally, as a result of computational simplifications, the priority value used for transactions received with unconfirmed inputs is lower than in prior versions due to avoiding recomputing the amounts as input transactions confirm
  • External miner policy set via the prioritisetransaction RPC to rank transactions already in the mempool continues to work as it has previously. Note, however, that if mining priority transactions is left disabled, the priority delta will be ignored and only the fee metric will be effective
  • This internal automatic prioritization handling is being considered for removal entirely in Bitcoin Core 0.13, and it is at this time undecided whether the more accurate priority calculation for chained unconfirmed transactions will be restored. Community direction on this topic is particularly requested to help set project priorities
  • Automatically use Tor hidden services:
  • Starting with Tor version 0.2.7.1 it is possible, through Tor’s control socket API, to create and destroy ‘ephemeral’ hidden services programmatically. Bitcoin Core has been updated to make use of this.
  • This means that if Tor is running (and proper authorization is available), Bitcoin Core automatically creates a hidden service to listen on, without manual configuration. Bitcoin Core will also use Tor automatically to connect to other .onion nodes if the control socket can be successfully opened. This will positively affect the number of available .onion nodes and their usage.
  • This new feature is enabled by default if Bitcoin Core is listening, and a connection to Tor can be made. It can be configured with the -listenonion, -torcontrol and -torpassword settings. To show verbose debugging information, pass -debug=tor.
  • Notifications through ZMQ:
  • Bitcoind can now (optionally) asynchronously notify clients through a ZMQ-based PUB socket of the arrival of new transactions and blocks. This feature requires installation of the ZMQ C API library 4.x and configuring its use through the command line or configuration file. Please see docs/zmq.md for details of operation
  • Wallet: Transaction fees:
  • Various improvements have been made to how the wallet calculates transaction fees.
  • Users can decide to pay a predefined fee rate by setting -paytxfee= (or settxfee rpc during runtime). A value of n=0 signals Bitcoin Core to use floating fees. By default, Bitcoin Core will use floating fees.
  • Based on past transaction data, floating fees approximate the fees required to get into the mth block from now. This is configurable with -txconfirmtarget= (default: 2).
  • Sometimes, it is not possible to give good estimates, or an estimate at all. Therefore, a fallback value can be set with -fallbackfee= (default: 0.0002 BTC/kB).
  • At all times, Bitcoin Core will cap fees at -maxtxfee= (default: 0.10) BTC. Furthermore, Bitcoin Core will never create transactions smaller than the current minimum relay fee. Finally, a user can set the minimum fee rate for all transactions with -mintxfee=, which defaults to 1000 satoshis per kB.
  • Wallet: Negative confirmations and conflict detection:
  • The wallet will now report a negative number for confirmations that indicates how deep in the block chain the conflict is found. For example, if a transaction A has 5 confirmations and spends the same input as a wallet transaction B, B will be reported as having -5 confirmations. If another wallet transaction C spends an output from B, it will also be reported as having -5 confirmations. To detect conflicts with historical transactions in the chain a one-time -rescan may be needed.
  • Unlike earlier versions, unconfirmed but non-conflicting transactions will never get a negative confirmation count. They are not treated as spendable unless they’re coming from ourself (change) and accepted into our local mempool, however. The new “trusted” field in the listtransactions RPC output indicates whether outputs of an unconfirmed transaction are considered spendable.
  • Wallet: Merkle branches removed:
  • Previously, every wallet transaction stored a Merkle branch to prove its presence in blocks. This wasn’t being used for more than an expensive sanity check. Since 0.12, these are no longer stored. When loading a 0.12 wallet into an older version, it will automatically rescan to avoid failed checks.
  • Wallet: Pruning:
  • With 0.12 it is possible to use wallet functionality in pruned mode. This can reduce the disk usage from currently around 60 GB to around 2 GB
  • However, rescans as well as the RPCs importwallet, importaddress, importprivkey are disabled
  • To enable block pruning set prune= on the command line or in bitcoin.conf, where N is the number of MiB to allot for raw block & undo data
  • A value of 0 disables pruning. The minimal value above 0 is 550. Your wallet is as secure with high values as it is with low ones. Higher values merely ensure that your node will not shut down upon blockchain reorganizations of more than 2 days - which are unlikely to happen in practice. In future releases, a higher value may also help the network as a whole: stored blocks could be served to other nodes
  • NODE_BLOOM service bit:
  • Support for the NODE_BLOOM service bit, as described in BIP 111, has been added to the P2P protocol code.
  • Option parsing behavior:
  • Command line options are now parsed strictly in the order in which they are specified. It used to be the case that -X -noX ends up, unintuitively, with X set, as -X had precedence over -noX. This is no longer the case. Like for other software, the last specified value for an option will hold
  • RPC: Low-level API changes:
  • Monetary amounts can be provided as strings. This means that for example the argument to sendtoaddress can be “0.0001” instead of 0.0001. This can be an advantage if a JSON library insists on using a lossy floating point type for numbers, which would be dangerous for monetary amounts
  • The asm property of each scriptSig now contains the decoded signature hash type for each signature that provides a valid defined hash type
  • OP_NOP2 has been renamed to OP_CHECKLOCKTIMEVERIFY by BIP 65
  • RPC: SSL support dropped:
  • SSL support for RPC, previously enabled by the option rpcssl has been dropped from both the client and the server. This was done in preparation for removing the dependency on OpenSSL for the daemon completely
  • Mining Code Changes:
  • The mining code in 0.12 has been optimized to be significantly faster and use less memory. As part of these changes, consensus critical calculations are cached on a transaction’s acceptance into the mempool and the mining code now relies on the consistency of the mempool to assemble blocks. However all blocks are still tested for validity after assembly.
  • Other P2P Changes:
  • The list of banned peers is now stored on disk rather than in memory. Restarting bitcoind will no longer clear out the list of banned peers; instead a new RPC call (clearbanned) can be used to manually clear the list. The new setban RPC call can also be used to manually ban or unban a peer

New in Bitcoin Core 0.11.2 (Nov 13, 2015)

  • #6124 684636b Make CScriptNum() take nMaxNumSize as an argument
  • #6124 4fa7a04 Replace NOP2 with CHECKLOCKTIMEVERIFY (BIP65)
  • #6124 6ea5ca4 Enable CHECKLOCKTIMEVERIFY as a standard script verify flag
  • #6351 5e82e1c Add CHECKLOCKTIMEVERIFY (BIP65) soft-fork logic
  • #6353 ba1da90 Show softfork status in getblockchaininfo
  • #6351 6af25b0 Add BIP65 to getblockchaininfo softforks list
  • #6688 01878c9 Fix locking in GetTransaction
  • #6653 b3eaa30 [Qt] Raise debug window when requested
  • #6600 1e672ae Debian/Ubuntu: Include bitcoin-tx binary
  • #6600 2394f4d Debian/Ubuntu: Split bitcoin-tx into its own package
  • #5987 33d6825 Bugfix: Allow mining on top of old tip blocks for testnet
  • #6852 21e58b8 build: make sure OpenSSL heeds noexecstack
  • #6846 af6edac alias -h for --help
  • #6867 95a5039 Set TCP_NODELAY on P2P sockets.
  • #6856 dfe55bd Do not allow blockfile pruning during reindex.
  • #6566 a1d3c6f Add rules–presently disabled–for using GetMedianTimePast as end point for lock-time calculations
  • #6566 f720c5f Enable policy enforcing GetMedianTimePast as the end point of lock-time constraints
  • #6917 0af5b8e leveldb: Win32WritableFile without memory mapping
  • #6948 4e895b0 Always flush block and undo when switching to new file

New in Bitcoin Core 0.11.1 (Oct 16, 2015)

  • Fixes:
  • openssl: avoid config file load/race
  • Updated URL location of netinstall for Debian
  • qt: Force TLS1.0+ for SSL connections
  • Depends: bump to qt 5.5
  • Be even stricter in processing unrequested blocks
  • libbitcoinconsensus: avoid a crash in multi-threaded environments
  • Do not store more than 200 timedata samples.
  • [QT] fix thin space word wrap line break issue
  • Backport bugfixes to 0.11
  • Recent rejects backport to v0.11
  • Test LowS in standardness, removes nuisance malleability vector.
  • Update miniupnpc to 1.9.20151008
  • Backport to v0.11: In (strCommand == “tx”), return if AlreadyHave()
  • Test whether created sockets are select()able

New in Bitcoin Core 0.11.0 (Jul 30, 2015)

  • Includes changes from the previous RC edition

New in Bitcoin Core 0.11.0 RC 1 (Jun 15, 2015)

  • RPC and REST:
  • #5461 `5f7279a` signrawtransaction: validate private key
  • #5444 `103f66b` Add /rest/headers//.
  • #4964 `95ecc0a` Add scriptPubKey field to validateaddress RPC call
  • #5476 `c986972` Add time offset into getpeerinfo output
  • #5540 `84eba47` Add unconfirmed and immature balances to getwalletinfo
  • #5599 `40e96a3` Get rid of the internal miner's hashmeter
  • #5711 `87ecfb0` Push down RPC locks
  • #5754 `1c4e3f9` fix getblocktemplate lock issue
  • #5756 `5d901d8` Fix getblocktemplate_proposals test by mining one block
  • #5548 `d48ce48` Add /rest/chaininfos
  • #5992 `4c4f1b4` Push down RPC reqWallet flag
  • #6036 `585b5db` Show zero value txouts in listunspent
  • #5199 `6364408` Add RPC call `gettxoutproof` to generate and verify merkle blocks
  • #5418 `16341cc` Report missing inputs in sendrawtransaction
  • #5937 `40f5e8d` show script verification errors in signrawtransaction result
  • #5420 `1fd2d39` getutxos REST command (based on Bip64)
  • #6193 `42746b0` [REST] remove json input for getutxos, limit to query max. 15 outpoints
  • #6226 `5901596` json: fail read_string if string contains trailing garbage
  • Configuration and command-line options:
  • #5636 `a353ad4` Add option `-allowselfsignedrootcertificate` to allow self signed root certs (for testing payment requests)
  • #5900 `3e8a1f2` Add a consistency check `-checkblockindex` for the block chain data structures
  • #5951 `7efc9cf` Make it possible to disable wallet transaction broadcast (using `-walletbroadcast=0`)
  • #5911 `b6ea3bc` privacy: Stream isolation for Tor (on by default, use `-proxyrandomize=0` to disable)
  • #5863 `c271304` Add autoprune functionality (`-prune=`)
  • #6153 `0bcf04f` Parameter interaction: disable upnp if -proxy set
  • Block and transaction handling:
  • #5367 `dcc1304` Do all block index writes in a batch
  • #5253 `203632d` Check against MANDATORY flags prior to accepting to mempool
  • #5459 `4406c3e` Reject headers that build on an invalid parent
  • #5481 `055f3ae` Apply AreSane() checks to the fees from the network
  • #5580 `40d65eb` Preemptively catch a few potential bugs
  • #5349 `f55c5e9` Implement test for merkle tree malleability in CPartialMerkleTree
  • #5564 `a89b837` clarify obscure uses of EvalScript()
  • #5521 `8e4578a` Reject non-final txs even in testnet/regtest
  • #5707 `6af674e` Change hardcoded character constants to descriptive named constants for db keys
  • #5286 `fcf646c` Change the default maximum OP_RETURN size to 80 bytes
  • #5710 `175d86e` Add more information to errors in ReadBlockFromDisk
  • #5948 `b36f1ce` Use GetAncestor to compute new target
  • #5959 `a0bfc69` Add additional block index consistency checks
  • #6058 `7e0e7f8` autoprune minor post-merge improvements
  • #5159 `2cc1372` New fee estimation code
  • #6102 `6fb90d8` Implement accurate UTXO cache size accounting
  • #6129 `2a82298` Bug fix for clearing fCheckForPruning
  • #5947 `e9af4e6` Alert if it is very likely we are getting a bad chain
  • #6203 `c00ae64` Remove P2SH coinbase flag, no longer interesting
  • P2P protocol and network code:
  • #5507 `844ace9` Prevent DOS attacks on in-flight data structures
  • #5770 `32a8b6a` Sanitize command strings before logging them
  • #5859 `dd4ffce` Add correct bool combiner for net signals
  • #5876 `8e4fd0c` Add a NODE_GETUTXO service bit and document NODE_NETWORK
  • #6028 `b9311fb` Move nLastTry from CAddress to CAddrInfo
  • #5662 `5048465` Change download logic to allow calling getdata on inbound peers
  • #5971 `18d2832` replace absolute sleep with conditional wait
  • #5918 `7bf5d5e` Use equivalent PoW for non-main-chain requests
  • #6059 `f026ab6` chainparams: use SeedSpec6's rather than CAddress's for fixed seeds
  • #6080 `31c0bf1` Add jonasschnellis dns seeder
  • #5976 `9f7809f` Reduce download timeouts as blocks arrive
  • #6172 `b4bbad1` Ignore getheaders requests when not synced
  • #5875 `304892f` Be stricter in processing unrequested blocks
  • Validation:
  • #5143 `48e1765` Implement BIP62 rule 6
  • #5713 `41e6e4c` Implement BIP66
  • Build system:
  • #5501 `c76c9d2` Add mips, mipsel and aarch64 to depends platforms
  • #5334 `cf87536` libbitcoinconsensus: Add pkg-config support
  • #5514 `ed11d53` Fix 'make distcheck'
  • #5505 `a99ef7d` Build winshutdownmonitor.cpp on Windows only
  • #5582 `e8a6639` Osx toolchain update
  • #5684 `ab64022` osx: bump build sdk to 10.9
  • #5695 `23ef5b7` depends: latest config.guess and config.sub
  • #5509 `31dedb4` Fixes when compiling in c++11 mode
  • #5819 `f8e68f7` release: use static libstdc++ and disable reduced exports by default
  • #5510 `7c3fbc3` Big endian support
  • #5149 `c7abfa5` Add script to verify all merge commits are signed
  • #6082 `7abbb7e` qt: disable qt tests when one of the checks for the gui fails
  • Wallet:
  • #2340 `811c71d` Discourage fee sniping with nLockTime
  • #5485 `d01bcc4` Enforce minRelayTxFee on wallet created tx and add a maxtxfee option
  • #5508 `9a5cabf` Add RandAddSeedPerfmon to MakeNewKey
  • #4805 `8204e19` Do not flush the wallet in AddToWalletIfInvolvingMe(..)
  • #5319 `93b7544` Clean up wallet encryption code
  • #5831 `df5c246` Subtract fee from amount
  • #6076 `6c97fd1` wallet: fix boost::get usage with boost 1.58
  • #5511 `23c998d` Sort pending wallet transactions before reaccepting
  • #6126 `26e08a1` Change default nTxConfirmTarget to 2
  • #6183 `75a4d51` Fix off-by-one error w/ nLockTime in the wallet
  • GUI:
  • #5219 `f3af0c8` New icons
  • #5228 `bb3c75b` HiDPI (retina) support for splash screen
  • #5258 `73cbf0a` The RPC Console should be a QWidget to make window more independent
  • #5488 `851dfc7` Light blue icon color for regtest
  • #5547 `a39aa74` New icon for the debug window
  • #5493 `e515309` Adopt style colour for button icons
  • #5557 `70477a0` On close of splashscreen interrupt verifyDB
  • #5559 `83be8fd` Make the command-line-args dialog better
  • #5144 `c5380a9` Elaborate on signverify message dialog warning
  • #5489 `d1aa3c6` Optimize PNG files
  • #5649 `e0cd2f5` Use text-color icons for system tray Send/Receive menu entries
  • #5651 `848f55d` Coin Control: Use U+2248 "ALMOST EQUAL TO" rather than a simple tilde
  • #5626 `ab0d798` Fix icon sizes and column width
  • #5683 `c7b22aa` add new osx dmg background picture
  • #5620 `7823598` Payment request expiration bug fix
  • #5729 `9c4a5a5` Allow unit changes for read-only BitcoinAmountField
  • #5753 `0f44672` Add bitcoin logo to about screen
  • #5629 `a956586` Prevent amount overflow problem with payment requests
  • #5830 `215475a` Don't save geometry for options and about/help window
  • #5793 `d26f0b2` Honor current network when creating autostart link
  • #5847 `f238add` Startup script for centos, with documentation
  • #5915 `5bd3a92` Fix a static qt5 crash when using certain versions of libxcb
  • #5898 `bb56781` Fix rpc console font size to flexible metrics
  • #5467 `bc8535b` Payment request / server work part 2
  • #6161 `180c164` Remove movable option for toolbar
  • #6160 `0d862c2` Overviewpage: make sure warning icons gets colored
  • Tests:
  • #5453 `2f2d337` Add ability to run single test manually to RPC tests
  • #5421 `886eb57` Test unexecuted OP_CODESEPARATOR
  • #5530 `565b300` Additional rpc tests
  • #5611 `37b185c` Fix spurious windows test failures after 012598880c
  • #5613 `2eda47b` Fix smartfees test for change to relay policy
  • #5612 `e3f5727` Fix zapwallettxes test
  • #5642 `30a5b5f` Prepare paymentservertests for new unit tests
  • #5784 `e3a3cd7` Fix usage of NegateSignatureS in script_tests
  • #5813 `ee9f2bf` Add unit tests for next difficulty calculations
  • #5855 `d7989c0` Travis: run unit tests in different orders
  • #5852 `cdae53e` Reinitialize state in between individual unit tests.
  • #5883 `164d7b6` tests: add a BasicTestingSetup and apply to all tests
  • #5940 `446bb70` Regression test for ResendWalletTransactions
  • #6052 `cf7adad` fix and enable bip32 unit test
  • #6039 `734f80a` tests: Error when setgenerate is used on regtest
  • #6074 `948beaf` Correct the PUSHDATA4 minimal encoding test in script_invalid.json
  • #6032 `e08886d` Stop nodes after RPC tests, even with --nocleanup
  • #6075 `df1609f` Add additional script edge condition tests
  • #5981 `da38dc6` Python P2P testing
  • #5958 `9ef00c3` Add multisig rpc tests
  • #6112 `fec5c0e` Add more script edge condition tests
  • Miscellaneous:
  • #5457, #5506, #5952, #6047 Update libsecp256k1
  • #5437 `84857e8` Add missing CAutoFile::IsNull() check in main
  • #5490 `ec20fd7` Replace uint256/uint160 with opaque blobs where possible
  • #5654, #5764 Adding jonasschnelli's GPG key
  • #5477 `5f04d1d` OS X 10.10: LSSharedFileListItemResolve() is deprecated
  • #5679 `beff11a` Get rid of DetectShutdownThread
  • #5787 `9bd8c9b` Add fanquake PGP key
  • #5366 `47a79bb` No longer check osx compatibility in RenameThread
  • #5689 `07f4386` openssl: abstract out OPENSSL_cleanse
  • #5708 `8b298ca` Add list of implemented BIPs
  • #5809 `46bfbe7` Add bitcoin-cli man page
  • #5839 `86eb461` keys: remove libsecp256k1 verification until it's actually supported
  • #5749 `d734d87` Help messages correctly formatted (79 chars)
  • #5884 `7077fe6` BUGFIX: Stack around the variable 'rv' was corrupted
  • #5849 `41259ca` contrib/init/bitcoind.openrc: Compatibility with previous OpenRC init script variables
  • #5950 `41113e3` Fix locale fallback and guard tests against invalid locale settings
  • #5965 `7c6bfb1` Add git-subtree-check.sh script
  • #6033 `1623f6e` FreeBSD, OpenBSD thread renaming
  • #6064 `b46e7c2` Several changes to mruset
  • #6104 `3e2559c` Show an init message while activating best chain
  • #6125 `351f73e` Clean up parsing of bool command line args
  • #5964 `b4c219b` Lightweight task scheduler
  • #6116 `30dc3c1` [OSX] rename Bitcoin-Qt.app to Bitcoin-Core.app
  • #6168 `b3024f0` contrib/linearize: Support linearization of testnet blocks
  • #6098 `7708fcd` Update Windows resource files (and add one for bitcoin-tx)
  • #6159 `e1412d3` Catch errors on datadir lock and pidfile delete
  • #6186 `182686c` Fix two problems in CSubnet parsing
  • #6174 `df992b9` doc: add translation strings policy
  • #6210 `dfdb6dd` build: disable optional use of gmp in internal secp256k1 build

New in Bitcoin Core 0.10.2 (May 19, 2015)

  • Includes changes in the previous RC version.

New in Bitcoin Core 0.10.2 RC 1 (May 14, 2015)

  • Wallet:
  • `824c011` fix boost::get usage with boost 1.58
  • Miscellaneous:
  • `da65606` Avoid crash on start in TestBlockValidity with gen=1.
  • `424ae66` don't imbue boost::filesystem::path with locale "C" on windows (fixes #6078)

New in Bitcoin Core 0.10.1 (Apr 27, 2015)

  • RPC:
  • 7f502be fix crash: createmultisig and addmultisigaddress
  • eae305f Fix missing lock in submitblock
  • Block (database) and transaction handling:
  • 1d2cdd2 Fix InvalidateBlock to add chainActive.Tip to setBlockIndexCandidates
  • c91c660 fix InvalidateBlock to repopulate setBlockIndexCandidates
  • 002c8a2 fix possible block db breakage during re-index
  • a1f425b Add (optional) consistency check for the block chain data structures
  • 1c62e84 Keep mempool consistent during block-reorgs
  • 57d1f46 Fix CheckBlockIndex for reindex
  • bac6fca Set nSequenceId when a block is fully linked
  • P2P protocol and network code:
  • 78f64ef don’t trickle for whitelisted nodes
  • ca301bf Reduce fingerprinting through timestamps in ‘addr’ messages.
  • 200f293 Ignore getaddr messages on Outbound connections.
  • d5d8998 Limit message sizes before transfer
  • aeb9279 Better fingerprinting protection for non-main-chain getdatas.
  • cf0218f Make addrman’s bucket placement deterministic (countermeasure 1 against eclipse attacks, see http://cs-people.bu.edu/heilman/eclipse/)
  • 0c6f334 Always use a 50% chance to choose between tried and new entries (countermeasure 2 against eclipse attacks)
  • 214154e Do not bias outgoing connections towards fresh addresses (countermeasure 2 against eclipse attacks)
  • aa587d4 Scale up addrman (countermeasure 6 against eclipse attacks)
  • 139cd81 Cap nAttempts penalty at 8 and switch to pow instead of a division loop
  • Validation:
  • d148f62 Acquire CCheckQueue’s lock to avoid race condition
  • GUI:
  • 2c08406 some mac specifiy cleanup (memory handling, unnecessary code)
  • 81145a6 fix OSX dock icon window reopening
  • 786cf72 fix a issue where “command line options”-action overwrite “Preference”-action (on OSX)
  • Tests:
  • 1117378 add RPC test for InvalidateBlock
  • Miscellaneous:
  • c9e022b Initialization: set Boost path locale in main thread
  • 23126a0 Sanitize command strings before logging them.
  • 323de27 Initialization: setup environment before starting QT tests
  • 7494e09 Initialization: setup environment before starting tests
  • df45564 Initialization: set fallback locale as environment variable

New in Bitcoin Core 0.10.0 (Feb 16, 2015)

  • RPC:
  • f923c07 Support IPv6 lookup in bitcoin-cli even when IPv6 only bound on localhost
  • b641c9c Fix addnode “onetry”: Connect with OpenNetworkConnection
  • 171ca77 estimatefee / estimatepriority RPC methods
  • b750cf1 Remove cli functionality from bitcoind
  • f6984e8 Add “chain” to getmininginfo, improve help in getblockchaininfo
  • 99ddc6c Add nLocalServices info to RPC getinfo
  • cf0c47b Remove getwork() RPC call
  • 2a72d45 prioritisetransaction
  • e44fea5 Add an option -datacarrier to allow users to disable relaying/mining data carrier transactions
  • 2ec5a3d Prevent easy RPC memory exhaustion attack
  • d4640d7 Added argument to getbalance to include watchonly addresses and fixed errors in balance calculation
  • 83f3543 Added argument to listaccounts to include watchonly addresses
  • 952877e Showing ‘involvesWatchonly’ property for transactions returned by ‘listtransactions’ and ‘listsinceblock’. It is only appended when the transaction involves a watchonly address
  • d7d5d23 Added argument to listtransactions and listsinceblock to include watchonly addresses
  • f87ba3d added includeWatchonly argument to ‘gettransaction’ because it affects balance calculation
  • 0fa2f88 added includedWatchonly argument to listreceivedbyaddress/…account
  • 6c37f7f getrawchangeaddress: fail when keypool exhausted and wallet locked
  • ff6a7af getblocktemplate: longpolling support
  • c4a321f Add peerid to getpeerinfo to allow correlation with the logs
  • 1b4568c Add vout to ListTransactions output
  • b33bd7a Implement “getchaintips” RPC command to monitor blockchain forks
  • 733177e Remove size limit in RPC client, keep it in server
  • 6b5b7cb Categorize rpc help overview
  • 6f2c26a Closely track mempool byte total. Add “getmempoolinfo” RPC
  • aa82795 Add detailed network info to getnetworkinfo RPC
  • 01094bd Don’t reveal whether password is 20 characters in RPC
  • 57153d4 rpc: Compute number of confirmations of a block from block height
  • ff36cbe getnetworkinfo: export local node’s client sub-version string
  • d14d7de SanitizeString: allow ‘(‘ and ‘)’
  • 31d6390 Fixed setaccount accepting foreign address
  • b5ec5fe update getnetworkinfo help with subversion
  • ad6e601 RPC additions after headers-first
  • 33dfbf5 rpc: Fix leveldb iterator leak, and flush before gettxoutsetinfo
  • 2aa6329 Enable customising node policy for datacarrier data size with a -datacarriersize option
  • f877aaa submitblock: Use a temporary CValidationState to determine accurately the outcome of ProcessBlock
  • e69a587 submitblock: Support for returning specific rejection reasons
  • af82884 Add “warmup mode” for RPC server
  • e2655e0 Add unauthenticated HTTP REST interface to public blockchain data
  • 683dc40 Disable SSLv3 (in favor of TLS) for the RPC client and server
  • 44b4c0d signrawtransaction: validate private key
  • 9765a50 Implement BIP 23 Block Proposal
  • f9de17e Add warning comment to getinfo
  • Command-line options:
  • ee21912 Use netmasks instead of wildcards for IP address matching
  • deb3572 Add -rpcbind option to allow binding RPC port on a specific interface
  • 96b733e Add -version option to get just the version
  • 1569353 Add -stopafterblockimport option
  • 77cbd46 Let -zapwallettxes recover transaction meta data
  • 1c750db remove -tor compatibility code (only allow -onion)
  • 4aaa017 rework help messages for fee-related options
  • 4278b1d Clarify error message when invalid -rpcallowip
  • 6b407e4 -datadir is now allowed in config files
  • bdd5b58 Add option -sysperms to disable 077 umask (create new files with system default umask)
  • cbe39a3 Add “bitcoin-tx” command line utility and supporting modules
  • dbca89b Trigger -alertnotify if network is upgrading without you
  • ad96e7c Make -reindex cope with out-of-order blocks
  • 16d5194 Skip reindexed blocks individually
  • ec01243 –tracerpc option for regression tests
  • f654f00 Change -genproclimit default to 1
  • 3c77714 Make -proxy set all network types, avoiding a connect leak
  • 57be955 Remove -printblock, -printblocktree, and -printblockindex
  • ad3d208 remove -maxorphanblocks config parameter since it is no longer functional
  • Block and transaction handling:
  • 7a0e84d ProcessGetData(): abort if a block file is missing from disk
  • 8c93bf4 LoadBlockIndexDB(): Require block db reindex if any blk*.dat files are missing
  • 77339e5 Get rid of the static chainMostWork (optimization)
  • 4e0eed8 Allow ActivateBestChain to release its lock on cs_main
  • 18e7216 Push cs_mains down in ProcessBlock
  • fa126ef Avoid undefined behavior using CFlatData in CScript serialization
  • 7f3b4e9 Relax IsStandard rules for pay-to-script-hash transactions
  • c9a0918 Add a skiplist to the CBlockIndex structure
  • bc42503 Use unordered_map for CCoinsViewCache with salted hash (optimization)
  • d4d3fbd Do not flush the cache after every block outside of IBD (optimization)
  • ad08d0b Bugfix: make CCoinsViewMemPool support pruned entries in underlying cache
  • 5734d4d Only remove actualy failed blocks from setBlockIndexValid
  • d70bc52 Rework block processing benchmark code
  • 714a3e6 Only keep setBlockIndexValid entries that are possible improvements
  • ea100c7 Reduce maximum coinscache size during verification (reduce memory usage)
  • 4fad8e6 Reject transactions with excessive numbers of sigops
  • b0875eb Allow BatchWrite to destroy its input, reducing copying (optimization)
  • 92bb6f2 Bypass reloading blocks from disk (optimization)
  • 2e28031 Perform CVerifyDB on pcoinsdbview instead of pcoinsTip (reduce memory usage)
  • ab15b2e Avoid copying undo data (optimization)
  • 341735e Headers-first synchronization
  • afc32c5 Fix rebuild-chainstate feature and improve its performance
  • e11b2ce Fix large reorgs
  • ed6d1a2 Keep information about all block files in memory
  • a48f2d6 Abstract context-dependent block checking from acceptance
  • 7e615f5 Fixed mempool sync after sending a transaction
  • 51ce901 Improve chainstate/blockindex disk writing policy
  • a206950 Introduce separate flushing modes
  • 9ec75c5 Add a locking mechanism to IsInitialBlockDownload to ensure it never goes from false to true
  • 868d041 Remove coinbase-dependant transactions during reorg
  • 723d12c Remove txn which are invalidated by coinbase maturity during reorg
  • 0cb8763 Check against MANDATORY flags prior to accepting to mempool
  • 8446262 Reject headers that build on an invalid parent
  • 008138c Bugfix: only track UTXO modification after lookup
  • P2P protocol and network code:
  • f80cffa Do not trigger a DoS ban if SCRIPT_VERIFY_NULLDUMMY fails
  • c30329a Add testnet DNS seed of Alex Kotenko
  • 45a4baf Add testnet DNS seed of Andreas Schildbach
  • f1920e8 Ping automatically every 2 minutes (unconditionally)
  • 806fd19 Allocate receive buffers in on the fly
  • 6ecf3ed Display unknown commands received
  • aa81564 Track peers’ available blocks
  • caf6150 Use async name resolving to improve net thread responsiveness
  • 9f4da19 Use pong receive time rather than processing time
  • 0127a9b remove SOCKS4 support from core and GUI, use SOCKS5
  • 40f5cb8 Send rejects and apply DoS scoring for errors in direct block validation
  • dc942e6 Introduce whitelisted peers
  • c994d2e prevent SOCKET leak in BindListenPort()
  • a60120e Add built-in seeds for .onion
  • 60dc8e4 Allow -onlynet=onion to be used
  • 3a56de7 addrman: Do not propagate obviously poor addresses onto the network
  • 6050ab6 netbase: Make SOCKS5 negotiation interruptible
  • 604ee2a Remove tx from AlreadyAskedFor list once we receive it, not when we process it
  • efad808 Avoid reject message feedback loops
  • 71697f9 Separate protocol versioning from clientversion
  • 20a5f61 Don’t relay alerts to peers before version negotiation
  • b4ee0bd Introduce preferred download peers
  • 845c86d Do not use third party services for IP detection
  • 12a49ca Limit the number of new addressses to accumulate
  • 35e408f Regard connection failures as attempt for addrman
  • a3a7317 Introduce 10 minute block download timeout
  • 3022e7d Require sufficent priority for relay of free transactions
  • 58fda4d Update seed IPs, based on bitcoin.sipa.be crawler data
  • 18021d0 Remove bitnodes.io from dnsseeds.
  • Validation:
  • 6fd7ef2 Also switch the (unused) verification code to low-s instead of even-s
  • 584a358 Do merkle root and txid duplicates check simultaneously
  • 217a5c9 When transaction outputs exceed inputs, show the offending amounts so as to aid debugging
  • f74fc9b Print input index when signature validation fails, to aid debugging
  • 6fd59ee script.h: set_vch() should shift a >32 bit value
  • d752ba8 Add SCRIPT_VERIFY_SIGPUSHONLY (BIP62 rule 2) (test only)
  • 698c6ab Add SCRIPT_VERIFY_MINIMALDATA (BIP62 rules 3 and 4) (test only)
  • ab9edbd script: create sane error return codes for script validation and remove logging
  • 219a147 script: check ScriptError values in script tests
  • 0391423 Discourage NOPs reserved for soft-fork upgrades
  • 98b135f Make STRICTENC invalid pubkeys fail the script rather than the opcode
  • 307f7d4 Report script evaluation failures in log and reject messages
  • ace39db consensus: guard against openssl’s new strict DER checks
  • 12b7c44 Improve robustness of DER recoding code
  • 76ce5c8 fail immediately on an empty signature
  • Build system:
  • f25e3ad Fix build in OS X 10.9
  • 65e8ba4 build: Switch to non-recursive make
  • 460b32d build: fix broken boost chrono check on some platforms
  • 9ce0774 build: Fix windows configure when using –with-qt-libdir
  • ea96475 build: Add mention of –disable-wallet to bdb48 error messages
  • 1dec09b depends: add shared dependency builder
  • c101c76 build: Add –with-utils (bitcoin-cli and bitcoin-tx, default=yes). Help string consistency tweaks. Target sanity check fix
  • e432a5f build: add option for reducing exports (v2)
  • 6134b43 Fixing condition ‘sabotaging’ MSVC build
  • af0bd5e osx: fix signing to make Gatekeeper happy (again)
  • a7d1f03 build: fix dynamic boost check when –with-boost= is used
  • d5fd094 build: fix qt test build when libprotobuf is in a non-standard path
  • 2cf5f16 Add libbitcoinconsensus library
  • 914868a build: add a deterministic dmg signer
  • 2d375fe depends: bump openssl to 1.0.1k
  • b7a4ecc Build: Only check for boost when building code that requires it
  • Wallet:
  • b33d1f5 Use fee/priority estimates in wallet CreateTransaction
  • 4b7b1bb Sanity checks for estimates
  • c898846 Add support for watch-only addresses
  • d5087d1 Use script matching rather than destination matching for watch-only
  • d88af56 Fee fixes
  • a35b55b Dont run full check every time we decrypt wallet
  • 3a7c348 Fix make_change to not create half-satoshis
  • f606bb9 fix a possible memory leak in CWalletDB::Recover
  • 870da77 fix possible memory leaks in CWallet::EncryptWallet
  • ccca27a Watch-only fixes
  • 9b1627d [Wallet] Reduce minTxFee for transaction creation to 1000 satoshis
  • a53fd41 Deterministic signing
  • 15ad0b5 Apply AreSane() checks to the fees from the network
  • 11855c1 Enforce minRelayTxFee on wallet created tx and add a maxtxfee option
  • GUI:
  • c21c74b osx: Fix missing dock menu with qt5
  • b90711c Fix Transaction details shows wrong To:
  • 516053c Make links in ‘About Bitcoin Core’ clickable
  • bdc83e8 Ensure payment request network matches client network
  • 65f78a1 Add GUI view of peer information
  • 06a91d9 VerifyDB progress reporting
  • fe6bff2 Add BerkeleyDB version info to RPCConsole
  • b917555 PeerTableModel: Fix potential deadlock. #4296
  • dff0e3b Improve rpc console history behavior
  • 95a9383 Remove CENT-fee-rule from coin control completely
  • 56b07d2 Allow setting listen via GUI
  • d95ba75 Log messages with type>QtDebugMsg as non-debug
  • 8969828 New status bar Unit Display Control and related changes
  • 674c070 seed OpenSSL PNRG with Windows event data
  • 509f926 Payment request parsing on startup now only changes network if a valid network name is specified
  • acd432b Prevent balloon-spam after rescan
  • 7007402 Implement SI-style (thin space) thoudands separator
  • 91cce17 Use fixed-point arithmetic in amount spinbox
  • bdba2dd Remove an obscure option no-one cares about
  • bd0aa10 Replace the temporary file hack currently used to change Bitcoin-Qt’s dock icon (OS X) with a buffer-based solution
  • 94e1b9e Re-work overviewpage UI
  • 8bfdc9a Better looking trayicon
  • b197bf3 disable tray interactions when client model set to 0
  • 1c5f0af Add column Watch-only to transactions list
  • 21f139b Fix tablet crash. closes #4854
  • e84843c Broken addresses on command line no longer trigger testnet
  • a49f11d Change splash screen to normal window
  • 1f9be98 Disable App Nap on OSX 10.9+
  • 27c3e91 Add proxy to options overridden if necessary
  • 4bd1185 Allow “emergency” shutdown during startup
  • d52f072 Don’t show wallet options in the preferences menu when running with -disablewallet
  • 6093aa1 Qt: QProgressBar CPU-Issue workaround
  • 0ed9675 [Wallet] Add global boolean whether to send free transactions (default=true)
  • ed3e5e4 [Wallet] Add global boolean whether to pay at least the custom fee (default=true)
  • e7876b2 [Wallet] Prevent user from paying a non-sense fee
  • c1c9d5b Add Smartfee to GUI
  • e0a25c5 Make askpassphrase dialog behave more sanely
  • 94b362d On close of splashscreen interrupt verifyDB
  • b790d13 English translation update
  • 8543b0d Correct tooltip on address book page
  • Tests:
  • b41e594 Fix script test handling of empty scripts
  • d3a33fc Test CHECKMULTISIG with m == 0 and n == 0
  • 29c1749 Let tx (in)valid tests use any SCRIPT_VERIFY flag
  • 6380180 Add rejection of non-null CHECKMULTISIG dummy values
  • 21bf3d2 Add tests for BoostAsioToCNetAddr
  • b5ad5e7 Add Python test for -rpcbind and -rpcallowip
  • 9ec0306 Add CODESEPARATOR/FindAndDelete() tests
  • 75ebced Added many rpc wallet tests
  • 0193fb8 Allow multiple regression tests to run at once
  • 92a6220 Hook up sanity checks
  • 3820e01 Extend and move all crypto tests to crypto_tests.cpp
  • 3f9a019 added list/get received by address/ account tests
  • a90689f Remove timing-based signature cache unit test
  • 236982c Add skiplist unit tests
  • f4b00be Add CChain::GetLocator() unit test
  • b45a6e8 Add test for getblocktemplate longpolling
  • cdf305e Set -discover=0 in regtest framework
  • ed02282 additional test for OP_SIZE in script_valid.json
  • 0072d98 script tests: BOOLAND, BOOLOR decode to integer
  • 833ff16 script tests: values that overflow to 0 are true
  • 4cac5db script tests: value with trailing 0x00 is true
  • 89101c6 script test: test case for 5-byte bools
  • d2d9dc0 script tests: add tests for CHECKMULTISIG limits
  • d789386 Add “it works” test for bitcoin-tx
  • df4d61e Add bitcoin-tx tests
  • aa41ac2 Test IsPushOnly() with invalid push
  • 6022b5d Make script_{valid,invalid}.json validation flags configurable
  • 8138cbe Add automatic script test generation, and actual checksig tests
  • ed27e53 Add coins_tests with a large randomized CCoinViewCache test
  • 9df9cf5 Make SCRIPT_VERIFY_STRICTENC compatible with BIP62
  • dcb9846 Extend getchaintips RPC test
  • 554147a Ensure MINIMALDATA invalid tests can only fail one way
  • dfeec18 Test every numeric-accepting opcode for correct handling of the numeric minimal encoding rule
  • 2b62e17 Clearly separate PUSHDATA and numeric argument MINIMALDATA tests
  • 16d78bd Add valid invert of invalid every numeric opcode tests
  • f635269 tests: enable alertnotify test for Windows
  • 7a41614 tests: allow rpc-tests to get filenames for bitcoind and bitcoin-cli from the environment
  • 5122ea7 tests: fix forknotify.py on windows
  • fa7f8cd tests: remove old pull-tester scripts
  • 7667850 tests: replace the old (unused since Travis) tests with new rpc test scripts
  • f4e0aef Do signature-s negation inside the tests
  • 1837987 Optimize -regtest setgenerate block generation
  • 2db4c8a Fix node ranges in the test framework
  • a8b2ce5 regression test only setmocktime RPC call
  • daf03e7 RPC tests: create initial chain with specific timestamps
  • 8656dbb Port/fix txnmall.sh regression test
  • ca81587 Test the exact order of CHECKMULTISIG sig/pubkey evaluation
  • 7357893 Prioritize and display -testsafemode status in UI
  • f321d6b Add key generation/verification to ECC sanity check
  • 132ea9b miner_tests: Disable checkpoints so they don’t fail the subsidy-change test
  • bc6cb41 QA RPC tests: Add tests block block proposals
  • f67a9ce Use deterministically generated script tests
  • 11d7a7d [RPC] add rpc-test for http keep-alive (persistent connections)
  • 34318d7 RPC-test based on invalidateblock for mempool coinbase spends
  • 76ec867 Use actually valid transactions for script tests
  • c8589bf Add actual signature tests
  • e2677d7 Fix smartfees test for change to relay policy
  • 263b65e tests: run sanity checks in tests too
  • Miscellaneous:
  • 122549f Fix incorrect checkpoint data for testnet3
  • 5bd02cf Log used config file to debug.log on startup
  • 68ba85f Updated Debian example bitcoin.conf with config from wiki + removed some cruft and updated comments
  • e5ee8f0 Remove -beta suffix
  • 38405ac Add comment regarding experimental-use service bits
  • be873f6 Issue warning if collecting RandSeed data failed
  • 8ae973c Allocate more space if necessary in RandSeedAddPerfMon
  • 675bcd5 Correct comment for 15-of-15 p2sh script size
  • fda3fed libsecp256k1 integration
  • 2e36866 Show nodeid instead of addresses in log (for anonymity) unless otherwise requested
  • cd01a5e Enable paranoid corruption checks in LevelDB >= 1.16
  • 9365937 Add comment about never updating nTimeOffset past 199 samples
  • 403c1bf contrib: remove getwork-based pyminer (as getwork API call has been removed)
  • 0c3e101 contrib: Added systemd .service file in order to help distributions integrate bitcoind
  • 0a0878d doc: Add new DNSseed policy
  • 2887bff Update coding style and add .clang-format
  • 5cbda4f Changed LevelDB cursors to use scoped pointers to ensure destruction when going out of scope
  • b4a72a7 contrib/linearize: split output files based on new-timestamp-year or max-file-size
  • e982b57 Use explicit fflush() instead of setvbuf()
  • 234bfbf contrib: Add init scripts and docs for Upstart and OpenRC
  • 01c2807 Add warning about the merkle-tree algorithm duplicate txid flaw
  • d6712db Also create pid file in non-daemon mode
  • 772ab0e contrib: use batched JSON-RPC in linarize-hashes (optimization)
  • 7ab4358 Update bash-completion for v0.10
  • 6e6a36c contrib: show pull # in prompt for github-merge script
  • 5b9f842 Upgrade leveldb to 1.18, make chainstate databases compatible between ARM and x86 (issue #2293)
  • 4e7c219 Catch UTXO set read errors and shutdown
  • 867c600 Catch LevelDB errors during flush
  • 06ca065 Fix CScriptID(const CScript& in) in empty script case

New in Bitcoin Core 0.9.3 (Sep 29, 2014)

  • Protocol and network code:
  • Remove a useless millisleep in socket handler
  • Stricter memory limits on CNode
  • Better orphan transaction handling
  • Add -maxorphantx= and -maxorphanblocks= options for control over the maximum orphan transactions and blocks
  • Includes changes from the previous RC version

New in Bitcoin Core 0.9.3 RC 1 (Sep 1, 2014)

  • RPC:
  • Avoid a segfault on getblock if it can't read a block from disk
  • Add paranoid return value checks in base58
  • Protocol and network code:
  • Don't poll showmyip.com, it doesn't exist anymore
  • Add a way to limit deserialized string lengths and use it
  • Add a new checkpoint at block 295,000
  • Increase IsStandard() scriptSig length
  • Avoid querying DNS seeds, if we have open connections
  • Wallet:
  • Check redeemScript size does not exceed 520 byte limit
  • Ignore (and warn about) too-long redeemScripts while loading wallet
  • GUI:
  • fix 'opens in testnet mode when presented with a BIP-72 link with no fallback'
  • AvailableCoins: acquire cs_main mutex
  • Fix unicode character display on MacOSX
  • Miscellaneous:
  • key.cpp: fail with a friendlier message on missing ssl EC support
  • Remove bignum dependency for scripts
  • Upgrade OpenSSL to 1.0.1i
  • Upgrade miniupnpc to 1.9.20140701
  • Fix boost detection in build system on some platforms

New in Bitcoin Core 0.9.2.1 (Jul 2, 2014)

  • The OpenSSL dependency in the gitian builds has been upgraded to 1.0.1h because of CVE-2014-0224.
  • RPC:
  • Add getwalletinfo, getblockchaininfo and getnetworkinfo calls (will replace hodge-podge getinfo at some point)
  • Add a relayfee field to getnetworkinfo
  • Fix RPC related shutdown hangs and leaks
  • Always show syncnode in getpeerinfo
  • sendrawtransaction: report the reject code and reason, and make it possible to re-send transactions that are already in the mempool
  • getmininginfo show right genproclimit
  • Command-line options:
  • Fix -printblocktree output
  • Show error message if ReadConfigFile fails
  • Block-chain handling and storage:
  • Fix for GetBlockValue() after block 13,440,000 (BIP42)
  • Upgrade leveldb to 1.17
  • Protocol and network code:
  • Per-peer block download tracking and stalled download detection
  • Add new DNS seed from bitnodes.io
  • Prevent socket leak in ThreadSocketHandler and correct some proxy related socket leaks
  • Use pnode->nLastRecv as sync score (was the wrong way around)
  • Wallet:
  • Make GetAvailableCredit run GetHash() only once per transaction (performance improvement)
  • Lower paytxfee warning threshold from 0.25 BTC to 0.01 BTC
  • Fix importwallet nTimeFirstKey (trigger necessary rescans)
  • Log BerkeleyDB version at startup
  • CWallet init fix
  • Build system:
  • Add OSX build descriptors to gitian
  • Fix explicit –disable-qt-dbus
  • Don’t require db_cxx.h when compiling with wallet disabled and GUI enabled
  • Improve missing boost error reporting
  • Upgrade miniupnpc version to 1.9
  • gitian-linux: –enable-glibc-back-compat for binary compatibility with old distributions
  • gitian: don’t export any symbols from executable
  • gitian: build against Qt 4.6
  • devtools: add script to check symbols from Linux gitian executables
  • Remove build-time no-IPv6 setting
  • GUI:
  • Fix various coin control visual issues
  • Show number of in/out connections in debug console
  • Show weeks as well as years behind for long timespans behind
  • Enable and disable the Show and Remove buttons for requested payments history based on whether any entry is selected.
  • Show also value for options overridden on command line in options dialog
  • Fill in label from address book also for URIs
  • Fixes feel when resizing the last column on tables (issue #2862)
  • Fix ESC in disablewallet mode
  • Add expert section to wallet tab in optionsdialog
  • Do proper boost::path conversion (fixes unicode in datadir)
  • Only override -datadir if different from the default (fixes -datadir in config file)
  • Show rescan progress at start-up
  • Show importwallet progress
  • Get required locks upfront in polling functions (avoids hanging on locks)
  • Catch Windows shutdown events while client is running
  • Optionally add third party links to transaction context menu
  • Check for !pixmap() before trying to export QR code (avoids crashes when no QR code could be generated)
  • Fix “Start bitcoin on system login”
  • Miscellaneous:
  • Replace non-threadsafe C functions (gmtime, strerror and setlocale)
  • Add missing cs_main and wallet locks
  • Avoid exception at startup when system locale not recognized
  • Changed bitrpc.py’s raw_input to getpass for passwords to conceal characters during command line input
  • devtools: add a script to fetch and postprocess translations

New in Bitcoin Core 0.9.2 (Jun 17, 2014)

  • This is a new minor version release, bringing mostly bug fixes and some minor improvements. OpenSSL has been updated because of a security issue (CVE-2014-0224). Upgrading to this release is recommended.

New in Bitcoin Core 0.9.2 RC 1 (Jun 4, 2014)

  • RPC:
  • Add `getwalletinfo`, `getblockchaininfo` and `getnetworkinfo` calls (will replace hodge-podge `getinfo` at some point)
  • Add a `relayfee` field to `getnetworkinfo`
  • Fix RPC related shutdown hangs and leaks
  • Always show syncnode in `getpeerinfo`
  • `sendrawtransaction`: report the reject code and reason, and make it possible to re-send transactions that are already in the mempool
  • `getmininginfo` show right genproclimit
  • Command-line options:
  • Fix `-printblocktree` output
  • Show error message if ReadConfigFile fails
  • Block-chain handling and storage:
  • Fix for GetBlockValue() after block 13,440,000 (BIP42)
  • Upgrade leveldb to 1.17
  • Protocol and network code:
  • Per-peer block download tracking and stalled download detection
  • Add new DNS seed from bitnodes.io
  • Prevent socket leak in ThreadSocketHandler and correct some proxy related socket leaks
  • Wallet:
  • Make GetAvailableCredit run GetHash() only once per transaction (performance improvement)
  • Lower paytxfee warning threshold from 0.25 BTC to 0.01 BTC
  • Fix importwallet nTimeFirstKey (trigger necessary rescans)
  • Log BerkeleyDB version at startup
  • Build system:
  • Add OSX build descriptors to gitian
  • Fix explicit --disable-qt-dbus
  • Don't require db_cxx.h when compiling with wallet disabled and GUI enabled
  • Improve missing boost error reporting
  • Upgrade miniupnpc version to 1.9
  • gitian-linux: --enable-glibc-back-compat for binary compatibility with old distributions
  • gitian: don't export any symbols from executable
  • gitian: build against Qt 4.6
  • devtools: add script to check symbols from Linux gitian executables
  • Remove build-time no-IPv6 setting
  • GUI:
  • Fix various coin control visual issues
  • Show number of in/out connections in debug console
  • Show weeks as well as years behind for long timespans behind
  • Enable and disable the Show and Remove buttons for requested payments history based on whether any entry is selected.
  • Show also value for options overridden on command line in options dialog
  • Fill in label from address book also for URIs
  • Fixes feel when resizing the last column on tables (issue #2862)
  • Fix ESC in disablewallet mode
  • Add expert section to wallet tab in optionsdialog
  • Do proper boost::path conversion (fixes unicode in datadir)
  • Only override -datadir if different from the default (fixes -datadir in config file)
  • Show rescan progress at start-up
  • Show importwallet progress
  • Get required locks upfront in polling functions (avoids hanging on locks)
  • Catch Windows shutdown events while client is running
  • Optionally add third party links to transaction context menu
  • Check for !pixmap() before trying to export QR code (avoids crashes when no QR code could be generated)
  • Fix "Start bitcoin on system login"
  • Miscellaneous:
  • Replace non-threadsafe C functions (gmtime, strerror and setlocale)
  • Add missing cs_main and wallet locks
  • Avoid exception at startup when system locale not recognized
  • Changed bitrpc.py's raw_input to getpass for passwords to conceal characters during command line input
  • devtools: add a script to fetch and postprocess translations

New in Bitcoin Core 0.9.1 (Apr 9, 2014)

  • Upgrade OpenSSL to 1.0.1g.
  • This release fixes the following vulnerabilities which can affect the Bitcoin Core software:
  • A missing bounds check in the handling of the TLS heartbeat extension can be used to reveal up to 64k of memory to a connected client or server.
  • The Montgomery ladder implementation in OpenSSL does not ensure that certain swap operations have a constant-time behavior, which makes it easier for local users to obtain ECDSA nonces via a FLUSH+RELOAD cache side-channel attack.

New in Bitcoin Core 0.9.0.0 Beta (Mar 14, 2014)

  • RPC:
  • New notion of 'conflicted' transactions, reported as confirmations: -1
  • listreceivedbyaddress' now provides tx ids
  • Add raw transaction hex to 'gettransaction' output
  • Updated help and tests for 'getreceivedby(account|address)'
  • In 'getblock', accept 2nd 'verbose' parameter, similar to getrawtransaction,
  • but defaulting to 1 for backward compatibility
  • Add 'verifychain', to verify chain database at runtime
  • Add 'dumpwallet' and 'importwallet' RPCs
  • keypoolrefill' gains optional size parameter
  • Add 'getbestblockhash', to return tip of best chain
  • Add 'chainwork' (the total work done by all blocks since the genesis block)
  • to 'getblock' output
  • Make RPC password resistant to timing attacks
  • Clarify help messages and add examples
  • Add 'getrawchangeaddress' call for raw transaction change destinations
  • Reject insanely high fees by default in 'sendrawtransaction'
  • Add RPC call 'decodescript' to decode a hex-encoded transaction script
  • Make 'validateaddress' provide redeemScript
  • Add 'getnetworkhashps' to get the calculated network hashrate
  • New RPC 'ping' command to request ping, new 'pingtime' and 'pingwait' fields
  • in 'getpeerinfo' output
  • Adding new 'addrlocal' field to 'getpeerinfo' output
  • Add verbose boolean to 'getrawmempool'
  • Add rpc command 'getunconfirmedbalance' to obtain total unconfirmed balance
  • Explicitly ensure that wallet is unlocked in `importprivkey`
  • Add check for valid keys in `importprivkey`
  • Command-line options:
  • New option: -nospendzeroconfchange to never spend unconfirmed change outputs
  • New option: -zapwallettxes to rebuild the wallet's transaction information
  • Rename option '-tor' to '-onion' to better reflect what it does
  • Add '-disablewallet' mode to let bitcoind run entirely without wallet (when
  • built with wallet)
  • Update default '-rpcsslciphers' to include TLSv1.2
  • make '-logtimestamps' default on and rework help-message
  • RPC client option: '-rpcwait', to wait for server start
  • Remove '-logtodebugger'
  • Allow `-noserver` with bitcoind
  • Block-chain handling and storage:
  • Update leveldb to 1.15
  • Check for correct genesis (prevent cases where a datadir from the wrong
  • network is accidentally loaded)
  • Allow txindex to be removed and add a reindex dialog
  • Log aborted block database rebuilds
  • Store orphan blocks in serialized form, to save memory
  • Limit the number of orphan blocks in memory to 750
  • Fix non-standard disconnected transactions causing mempool orphans
  • Add a new checkpoint at block 279,000
  • Wallet:
  • Bug fixes and new regression tests to correctly compute
  • the balance of wallets containing double-spent (or mutated) transactions
  • Store key creation time. Calculate whole-wallet birthday.
  • Optimize rescan to skip blocks prior to birthday
  • Let user select wallet file with -wallet=foo.dat
  • Consider generated coins mature at 101 instead of 120 blocks
  • Improve wallet load time
  • Don't count txins for priority to encourage sweeping
  • Don't create empty transactions when reading a corrupted wallet
  • Fix rescan to start from beginning after importprivkey
  • Only create signatures with low S values
  • Mining:
  • Increase default -blockmaxsize/prioritysize to 750K/50K
  • getblocktemplate' does not require a key to create a block template
  • Mining code fee policy now matches relay fee policy
  • Protocol and network:
  • Drop the fee required to relay a transaction to 0.01mBTC per kilobyte
  • Send tx relay flag with version
  • New 'reject' P2P message (BIP 0061, see
  • https://gist.github.com/gavinandresen/7079034 for draft)
  • Dump addresses every 15 minutes instead of 10 seconds
  • Relay OP_RETURN data TxOut as standard transaction type
  • Remove CENT-output free transaction rule when relaying
  • Lower maximum size for free transaction creation
  • Send multiple inv messages if mempool.size > MAX_INV_SZ
  • Split MIN_PROTO_VERSION into INIT_PROTO_VERSION and MIN_PEER_PROTO_VERSION
  • Do not treat fFromMe transaction differently when broadcasting
  • Process received messages one at a time without sleeping between messages
  • Improve logging of failed connections
  • Bump protocol version to 70002
  • Add some additional logging to give extra network insight
  • Added new DNS seed from bitcoinstats.com
  • Validation:
  • Log reason for non-standard transaction rejection
  • Prune provably-unspendable outputs, and adapt consistency check for it.
  • Detect any sufficiently long fork and add a warning
  • Call the -alertnotify script when we see a long or invalid fork
  • Fix multi-block reorg transaction resurrection
  • Reject non-canonically-encoded serialization sizes
  • Reject dust amounts during validation
  • Accept nLockTime transactions that finalize in the next block
  • Build system:
  • Switch to autotools-based build system
  • Build without wallet by passing `--disable-wallet` to configure, this
  • removes the BerkeleyDB dependency
  • Upgrade gitian dependencies (libpng, libz, libupnpc, boost, openssl) to more
  • recent versions
  • Windows 64-bit build support
  • Solaris compatibility fixes
  • Check integrity of gitian input source tarballs
  • Enable full GCC Stack-smashing protection for all OSes
  • GUI:
  • Switch to Qt 5.2.0 for Windows build
  • Add payment request (BIP 0070) support
  • Improve options dialog
  • Show transaction fee in new send confirmation dialog
  • Add total balance in overview page
  • Allow user to choose data directory on first start, when data directory is
  • missing, or when the -choosedatadir option is passed
  • Save and restore window positions
  • Add vout index to transaction id in transactions details dialog
  • Add network traffic graph in debug window
  • Add open URI dialog
  • Add Coin Control Features
  • Improve receive coins workflow: make the 'Receive' tab into a form to request
  • payments, and move historical address list functionality to File menu.
  • Rebrand to `Bitcoin Core`
  • Move initialization/shutdown to a thread. This prevents "Not responding"
  • messages during startup. Also show a window during shutdown.
  • Don't regenerate autostart link on every client startup
  • Show and store message of normal bitcoin:URI
  • Fix richtext detection hang issue on very old Qt versions
  • Miscellaneous:
  • Add Linux script (contrib/qos/tc.sh) to limit outgoing bandwidth
  • Add '-regtest' mode, similar to testnet but private with instant block
  • generation with 'setgenerate' RPC.
  • Add 'linearize.py' script to contrib, for creating bootstrap.dat
  • Add separate bitcoin-cli client

New in Bitcoin Core 0.8.6 Beta (Dec 11, 2013)

  • Default block size increase for miners.
  • Remove the all-outputs-must-be-greater-than-CENT-to-qualify-as-free rule for relaying
  • Lower maximum size for free transaction creation
  • Update leveldb to 1.13
  • Use native Darwin memory barriers
  • Fix nodes forwarding transactions with empty vins and getting banned
  • Network code performance and robustness improvements
  • Additional debug.log logging for diagnosis of network problems, log timestamps by default
  • Fix memory leaks in CKey::SetCompactSignature() and Key::SignCompact()
  • Fix rare GUI crash on send
  • Various small GUI, documentation and build fixes

New in Bitcoin Core 0.8.5 Beta (Oct 16, 2013)

  • Bugs fixed:
  • Transactions with version numbers larger than 0x7fffffff were incorrectly being relayed and included in blocks.
  • Blocks containing transactions with version numbers larger than 0x7fffffff caused the code that checks for LevelDB database inconsistencies at startup to erroneously report database corruption and suggest that you reindex your database.
  • This release also contains a non-critical fix to the code that enforces BIP 34 (block height in the coinbase transaction).

New in Bitcoin Core 0.8.4 Beta (Oct 14, 2013)

  • Security issues:
  • An attacker could send a series of messages that resulted in an integer division-by-zero error in the Bloom Filter handling code, causing the Bitcoin-Qt or bitcoind process to crash. Bloom filters were introduced with version 0.8, so versions 0.8.0 through 0.8.3 are vulnerable to this critical denial-of-service attack.
  • A constant-time algorithm is now used to check RPC password
  • guess attempts;
  • Implement a better fix for the fill-memory-with-orphan-transactions
  • attack that was fixed in 0.8.3.
  • Bugs fixed:
  • Fix multi-block reorg transaction resurrection.
  • Fix non-standard disconnected transactions causing mempool orphans.
  • This bug could cause nodes running with the -debug flag to crash.
  • Fix a hang-at-shutdown bug that only affects users that compile their own version of Bitcoin against Boost versions 1.50-1.52.
  • Other changes:
  • Checkpoint at block 250,000 to speed up initial block downloads
  • and make the progress indicator when downloading more accurate.

New in Bitcoin Core 0.8.3 Beta (Jun 26, 2013)

  • Truncate over-size messages to prevent a memory exhaustion attack.
  • Fix a regression that causes excessive re-writing of the 'peers.dat' file.

New in Bitcoin Core 0.8.2 Beta (Jun 5, 2013)

  • Fee Policy changes:
  • The default fee for low-priority transactions is lowered from 0.0005 BTC (for each 1,000 bytes in the transaction; an average transaction is about 500 bytes) to 0.0001 BTC.
  • Payments (transaction outputs) of 0.543 times the minimum relay fee (0.00005430 BTC) are now considered 'non-standard', because storing them costs the network more than they are worth and spending them will usually cost their owner more in transaction fees than they are worth.
  • Non-standard transactions are not relayed across the network, are not included in blocks by most miners, and will not show up in your wallet until they are included in a block.
  • The default fee policy can be overridden using the -mintxfee and -minrelaytxfee command-line options, but note that we intend to replace the hard-coded fees with code that automatically calculates and suggests appropriate fees in the 0.9 release and note that if you set a fee policy significantly different from the rest of the network your transactions may never confirm.
  • Changes:
  • New icon and splash screen
  • Improve reporting of synchronization process
  • Remove hardcoded fee recommendations
  • Move export button to individual tabs instead of toolbar
  • Add "send coins" command to context menu in address book
  • Add "copy txid" command to copy transaction IDs from transaction overview
  • Save & restore window size and position when showing & hiding window
  • New translations: Arabic (ar), Bosnian (bs), Catalan (ca), Welsh (cy), Esperanto (eo), Interlingua (la), Latvian (lv) and many improvements to current translations
  • Command-line options:
  • walletnotify will call a command on receiving transactions that affect the wallet.
  • alertnotify will call a command on receiving an alert from the network.
  • par now takes a negative number, to leave a certain amount of cores free.
  • JSON-RPC API changes:
  • fixed a getblocktemplate bug that caused excessive CPU creating blocks.
  • listunspent now lists account and address infromation.
  • getinfo now also returns the time adjustment estimated from your peers.
  • getpeerinfo now returns bytessent, bytesrecv and syncnode.
  • gettxoutsetinfo returns statistics about the unspent transaction output database.
  • gettxout returns information about a specific unspent transaction output.
  • Networking changes:
  • Significant changes to the networking code, reducing latency and memory consumption.
  • Avoid initial block download stalling.
  • Remove IRC seeding support.
  • Performance tweaks.
  • Added testnet DNS seeds.
  • Wallet compatibility/rescuing:
  • Cases where wallets cannot be opened in another version/installation should be reduced.
  • salvagewallet now works for encrypted wallets.
  • Known Bugs:
  • Entering the 'getblocktemplate' or 'getwork' RPC commands into the Bitcoin-Qt debug console will cause Bitcoin-Qt to crash. Run Bitcoin-Qt with the -server command-line option to workaround.

New in Bitcoin Core 0.8.2 RC 1 (May 11, 2013)

  • Fee Policy changes:
  • The default fee for low-priority transactions is lowered from 0.0005 BTC (for each 1,000 bytes in the transaction; an average transaction is about 500 bytes) to 0.0001 BTC.
  • Payments (transaction outputs) of 0.543 times the minimum relay fee (0.00005430 BTC) are now considered 'non-standard', because storing them costs the network more than they are worth and spending them will usually cost their owner more in transaction fees than they are worth.
  • Non-standard transactions are not relayed across the network, are not included in blocks by most miners, and will not show up in your wallet until they are included in a block.
  • The default fee policy can be overridden using the -mintxfee and -minrelaytxfee command-line options, but note that we intend to replace the hard-coded fees with code that automatically calculates and suggests appropriate fees in the 0.9 release and note that if you set a fee policy significantly different from the rest of the network your transactions may never confirm.
  • Bitcoin-Qt changes:
  • New icon and splash screen
  • Improve reporting of synchronization process
  • Remove hardcoded fee recommendations
  • Improve metadata of executable on MacOSX and Windows
  • Move export button to individual tabs instead of toolbar
  • Add "send coins" command to context menu in address book
  • Add "copy txid" command to copy transaction IDs from transaction overview
  • Save & restore window size and position when showing & hiding window
  • New translations: Arabic (ar), Bosnian (bs), Catalan (ca), Welsh (cy), Esperanto (eo), Interlingua (la), Latvian (lv) and many improvements to current translations
  • Command-line options:
  • walletnotify will call a command on receiving transactions that affect the wallet.
  • lertnotify will call a command on receiving an alert from the network.
  • ar now takes a negative number, to leave a certain amount of cores free.
  • JSON-RPC API changes:
  • listunspent now lists account and address information.
  • getinfo now also returns the time adjustment estimated from your peers.
  • getpeerinfo now returns bytessent, bytesrecv and syncnode.
  • gettxoutsetinfo returns statistics about the unspent transaction output database.
  • gettxout returns information about a specific unspent transaction output.
  • Networking changes:
  • Significant changes to the networking code, reducing latency and memory consumption.
  • Avoid initial block download stalling.
  • Remove IRC seeding support.
  • Performance tweaks.
  • Added testnet DNS seeds.
  • Wallet compatibility/rescuing:
  • Cases where wallets cannot be opened in another version/installation should be reduced.
  • -salvagewallet now works for encrypted wallets.

New in Bitcoin Core 0.8.1 (Mar 18, 2013)

  • A new block-acceptance rule that will be enforced from 21 March 2013 until 15 May 2013 to prevent accepting blocks that fail to validate on pre-0.8 peers.
  • A new compiled-in checkpoint at block number 225,430 -- the first block of the 11 March 2013 chain fork.

New in Bitcoin Core 0.8.0 (Feb 20, 2013)

  • Incompatible Changes:
  • This release no longer maintains a full index of historical transaction ids by default, so looking up an arbitrary transaction using the getrawtransaction RPC call will not work. If you need that functionality, you must run once with -txindex=1 -reindex=1 to rebuild block-chain indices (see below for more details).
  • Improvements:
  • Mac and Windows binaries are signed with certificates owned by the Bitcoin Foundation, to be compatible with the new security features in OSX 10.8 and Windows 8.
  • LevelDB, a fast, open-source, non-relational database from Google, is now used to store transaction and block indices. LevelDB works much better on machines with slow I/O and is faster in general. Berkeley DB is now only used for the wallet.dat file (public and private wallet keys and transactions relevant to you).
  • Implemented many optimizations to the way transactions are verified, so a running, synchronized node uses much less memory and does much less I/O. He also implemented parallel signature checking, so if you have a multi-CPU machine all CPUs will be used to verify transactions.
  • New Features:
  • "Bloom filter" support in the network protocol for sending only relevant transactions to lightweight clients.
  • contrib/verifysfbinaries is a shell-script to verify that the binary downloads at sourceforge have not been tampered with. If you are able, you can help make everybody's downloads more secure by running this occasionally to check PGP signatures against download file checksums. contrib/spendfrom is a python-language command-line utility that demonstrates how to use the "raw transactions" JSON-RPC api to send coins received from particular addresses (also known as "coin control").
  • New/changed settings (command-line or bitcoin.conf file):
  • dbcache : now controls LevelDB memory usage. Running with (for example) -dbcache=1000 will use a gigabyte of memory and might make the initial blockchain download faster.
  • par : controls how many threads to use to validate transactions. Defaults to the number of CPUs on your machine, use -par=1 to limit to a single CPU.
  • txindex : maintains an extra index of old, spent transaction ids so they will be found by the getrawtransaction JSON-RPC method.
  • reindex : rebuild block and transaction indices from the downloaded block data.
  • New JSON-RPC API Features:
  • lockunspent / listlockunspent allow locking transaction outputs for a period of time so they will not be spent by other processes that might be accessing the same wallet.
  • addnode / getaddednodeinfo methods, to connect to specific peers without restarting.
  • importprivkey now takes an optional boolean parameter (default true) to control whether or not to rescan the blockchain for transactions after importing a new private key.
  • Important Bug Fixes:
  • Privacy leak: the position of the "change" output in most transactions was not being properly randomized, making network analysis of the transaction graph to identify users' wallets easier.
  • Zero-confirmation transaction vulnerability: accepting zero-confirmation transactions (transactions that have not yet been included in a block) from somebody you do not trust is still not recommended, because there will always be ways for attackers to double-spend zero-confirmation transactions. However, this release includes a bug fix that makes it a little bit more difficult for attackers to double-spend a certain type ("lockTime in the future") of zero-confirmation transaction.

New in Bitcoin Core 0.7.2 (Dec 14, 2012)

  • Prevent RPC 'move' from deadlocking. This was caused by trying to lock the database twice.
  • Fix use-after-free problems in initialization and shutdown, the latter of which caused Bitcoin-Qt to crash on Windows when exiting.
  • Correct library linking so building on Windows natively works.
  • Avoid a race condition and out-of-bounds read in block creation/mining code.
  • Improve platform compatibility quirks, including fix for 100% CPU utilization on FreeBSD 9.
  • A few minor corrections to error handling, and updated translations.

New in Bitcoin Core 0.7.1 (Oct 18, 2012)

  • New features:
  • Added a boolean argument to the RPC 'stop' command, if true sets -detachdb to create standalone database .dat files before shutting down.
  • -salvagewallet command-line option, which moves any existing wallet.dat to wallet.{timestamp}.dat and then attempts to salvage public/private keys and master encryption keys (if the wallet is encrypted) into a new wallet.dat. This should only be used if your wallet becomes corrupted, and is not intended to replace regular wallet backups.
  • Import $DataDir/bootstrap.dat automatically, if it exists.
  • Dependency changes:
  • Qt 4.8.2 for Windows builds
  • openssl 1.0.1c
  • Bug fixes:
  • When running -testnet, use RPC port 18332 by default.
  • Better detection and handling of corrupt wallet.dat and blkindex.dat files. Previous versions would crash with a DB_RUNRECOVERY exception, this version detects most problems and tells you how to recover if it cannot recover itself.
  • Fixed an uninitialized variable bug that could cause transactions to be reported out of order.
  • Fixed a bug that could cause occasional crashes on exit.
  • Warn the user that they need to create fresh wallet backups after they encrypt their wallet.

New in Bitcoin Core 0.7.0 (Sep 18, 2012)

  • Incompatible Changes:
  • Replaced the 'getmemorypool' RPC command with 'getblocktemplate/submitblock' and 'getrawmempool' commands.
  • Remove deprecated RPC 'getblocknumber'
  • Bitcoin Improvement Proposals implemented:
  • BIP 22 - 'getblocktemplate', 'submitblock' RPCs
  • BIP 34 - block version 2, height in coinbase
  • BIP 35 - 'mempool' message, extended 'getdata' message behavior
  • Core bitcoin handling and blockchain database:
  • Reduced CPU usage, by eliminating some redundant hash calculations
  • Cache signature verifications, to eliminate redundant signature checks
  • Transactions with zero-value outputs are considered non-standard
  • Mining: when creating new blocks, sort 'paid' area by fee-per-kb
  • Database: better validation of on-disk stored data
  • Database: minor optimizations and reliability improvements
  • -loadblock=FILE will import an external block file
  • Additional DoS (denial-of-service) prevention measures
  • New blockchain checkpoint at block 193,000
  • JSON-RPC API:
  • Internal HTTP server is now thread-per-connection, rather than a single-threaded queue that would stall on network I/O.
  • Internal HTTP server supports HTTP/1.1, pipelined requests and connection keep-alive.
  • Support JSON-RPC 2.0 batches, to encapsulate multiple JSON-RPC requests within a single HTTP request.
  • IPv6 support
  • Added raw transaction API.
  • Added 'getrawmempool', to list contents of TX memory pool
  • Added 'getpeerinfo', to list data about each connected network peer
  • Added 'listaddressgroupings' for better coin control
  • Rework getblock call.
  • Remove deprecated RPC 'getblocknumber'
  • Remove superceded RPC 'getmemorypool' (see BIP 22, above)
  • listtransactions output now displays "smart" times for transactions, and 'blocktime' and 'timereceived' fields were added
  • P2P networking:
  • IPv6 support
  • Tor hidden service support (see doc/Tor.txt)
  • Attempts to fix "stuck blockchain download" problems
  • Replace BDB database "addr.dat" with internally-managed "peers.dat" file containing peer address data.
  • Lower default send buffer from 10MB to 1MB
  • proxy: SOCKS5 by default
  • Support connecting by hostnames passed to proxy
  • Add -seednode connections, and use this instead of DNS seeds when proxied
  • Added -externalip and -discover
  • Add -onlynet to connect only to a given network (IPv4, IPv6, or Tor)
  • Separate listening sockets, -bind=
  • Qt GUI:
  • Add UI RPC console / debug window
  • Re-Enable URI handling on Windows, add safety checks and tray-notifications
  • Harmonize the use of ellipsis ("...") to be used in menus, but not on buttons
  • Add 2 labels to the overviewpage that display Wallet and Transaction status (obsolete or current)
  • Extend the optionsdialog (e.g. language selection) and re-work it to a tabbed UI
  • Merge sign/verify message into a single window with tabbed UI
  • Ensure a changed bitcoin unit immediately updates all GUI elements that use units
  • Update QR Code dialog
  • Improve error reporting at startup
  • Fine-grained UI updates for a much smoother UI during block downloads
  • Remove autocorrection of 0/i in addresses in UI
  • Reorganize tray icon menu into more logical order
  • Persistently poll for balance change when number of blocks changed
  • Much better translations
  • Override progress bar design on platforms with segmented progress bars to assist with readability
  • Added 'immature balance' display on the overview page
  • (Windows only): enable ASLR and DEP for bitcoin-qt.exe
  • (Windows only): add meta-data to bitcoin-qt.exe (e.g. description)
  • Internal codebase:
  • Additional unit tests
  • Compile warning fixes
  • Miscellaneous:
  • Reopen debug.log upon SIGHUP
  • Bash programmable completion for bitcoind(1)
  • On supported OS's, each thread is given a useful name

New in Bitcoin Core 0.6.3 (Jul 2, 2012)

  • Fixed a serious denial-of-service attack that could cause the bitcoin process to become unresponsive.
  • (CVE-2012-3789) Optimized the process of checking transaction signatures, to speed up processing of new block messages and make propagating blocks across the network faster.
  • Fixed an obscure bug that could cause the bitcoin process to get stuck on an invalid block-chain, if the invalid chain was hundreds of blocks long. Bitcoin-Qt no longer automatically selects the first address in the address book (Issue #1384).
  • Fixed minimize-to-dock behavior of Bitcon-Qt on the Mac.
  • Added a block checkpoint at block 185,333 to speed up initial blockchain download.

New in Bitcoin Core 0.6.2 (May 9, 2012)

  • Source codebase changes:
  • Many source code cleanups and warnings fixes. Close to building with -Wall Locking overhaul, and several minor locking fixes
  • Several source code portability fixes, e.g. FreeBSD
  • JSON-RPC interface changes:
  • add multisigaddress enabled for mainnet (previously only enabled for testnet)
  • Network protocol changes:
  • protocol version 60001
  • added nonce value to "ping" message (BIP 31)
  • added new "pong" message (BIP 31)
  • Backend storage changes:
  • Less redundant database flushing, especially during initial block download Shutdown improvements (see above)
  • Qt user interface:
  • minor URI handling improvements
  • progress bar improvements
  • error handling improvements (show message box rather than console exception, etc.)
  • by popular request, make 4th bar of connection icon green

New in Bitcoin Core 0.6.0 (Mar 31, 2012)

  • Initial network synchronization should be much faster (one or two hours on a typical machine instead of ten or more hours).
  • Backup Wallet menu option. Bitcoin-Qt can display and save QR codes for sending and receiving addresses.
  • New context menu on addresses to copy/edit/delete them.
  • New Sign Message dialog that allows you to prove that you own a bitcoin address by creating a digital signature.
  • New wallets created with this version will use 33-byte 'compressed' public keys instead of 65-byte public keys, resulting in smaller transactions and less traffic on the bitcoin network.
  • The shorter keys are already supported by the network but wallet.dat files containing short keys are not compatible with earlier versions of Bitcoin-Qt/bitcoind.
  • New command-line argument -blocknotify= that will spawn a shell process to run when a new block is accepted.
  • New command-line argument -splash=0 to disable Bitcoin-Qt's initial splash screen validateaddress JSON-RPC api command output includes two new fields for addresses in the wallet: pubkey : hexadecimal public key iscompressed : true if pubkey is a short 33-byte key New JSON-RPC api commands for dumping/importing private keys from the wallet (dumprivkey, importprivkey).
  • New JSON-RPC api command for getting information about blocks (getblock, getblockhash).
  • New JSON-RPC api command (getmininginfo) for getting extra information related to mining. The getinfo JSON-RPC command no longer includes mining-related information (generate/genproclimit/hashespersec).
  • NOTABLE CHANGES:
  • BIP30 implemented (security fix for an attack involving duplicate "coinbase transactions"). The -nolisten, -noupnp and -nodnsseed command-line options were renamed to -listen, -upnp and -dnsseed, with a default value of 1.
  • The old names are still supported for compatibility (so specifying -nolisten is automatically interpreted as -listen=0; every boolean argument can now be specified as either -foo or -nofoo).
  • The -noirc command-line options was renamed to -irc, with a default value of 0. Run -irc=1 to get the old behavior. Three fill-up-available-memory denial-of-service attacks were fixed.

New in Bitcoin Core 0.5.3 (Mar 15, 2012)

  • PROTOCOL UPDATES:
  • BIP 30: Introduce a new network rule: "a block is not valid if it contains a transaction whose hash already exists in the block chain, unless all that transaction's outputs were already spent before said block" beginning on March 15, 2012, 00:00 UTC.
  • On testnet, allow mining of min-difficulty blocks if 20 minutes have gone by without mining a regular-difficulty block. This is to make testing Bitcoin easier, and will not affect normal mode.
  • BUG FIXES:
  • Limit the number of orphan transactions stored in memory, to prevent a potential denial-of-service attack by flooding orphan transactions. Also never store invalid transactions at all.
  • Fix possible buffer overflow on systems with very long application data paths. This is not exploitable.
  • Resolved multiple bugs preventing long-term unlocking of encrypted wallets (issue #922).
  • Only send local IP in "version" messages if it is globally routable (ie, not private), and try to get such an IP from UPnP if applicable.
  • Announce UPnP port forwards every 20 minutes, to workaround routers expiring old entries, and allow the -upnp option to override any stored setting.
  • Skip splash screen when -min is used, and fix Minimize to Tray function.
  • Do not blank "label" in Bitcoin-Qt "Send" tab, if the user has already entered something.
  • Correct various labels and messages.
  • Various memory leaks and potential null pointer diferences have been fixed. Handle invalid Bitcoin URIs using "bitcoin://" instead of "bitcoin:".
  • Several shutdown issues have been fixed.
  • Revert to "global progress indication", as starting from zero every time was considered too confusing for many users.
  • Check that keys stored in the wallet are valid at startup, and if not, report corruption.
  • Enable accessible widgets on Windows, so that people with screen readers such as NVDA can make sense of it.
  • Various build fixes.
  • If no password is specified to bitcoind, recommend a secure password. Automatically focus and scroll to new "Send coins" entries in Bitcoin-Qt.
  • Show a message box for --help on Windows, for Bitcoin-Qt.
  • Add missing "About Qt" menu option to show built-in Qt About dialog.
  • Don't show "-daemon" as an option for Bitcoin-Qt, since it isn't available. Update hard-coded fallback seed nodes, choosing recent ones with long uptime and versions at least 0.4.0.
  • Add checkpoint at block 168,000.

New in Bitcoin Core 0.6.0 RC 3 (Mar 14, 2012)

  • BIP30 implemented (security fix for an attack involving duplicate "coinbase transactions").
  • The -nolisten, -noupnp and -nodnsseed command-line options were renamed to -listen, -upnp and -dnsseed, with a default value of 1.
  • The old names are still supported for compatibility (so specifying -nolisten is automatically interpreted as -listen=0; every boolean argument can now be specified as either -foo or -nofoo).
  • The -noirc command-line options was renamed to -irc, with a default value of 0. Run -irc=1 to get the old behavior.

New in Bitcoin Core 0.5.3 RC 4 (Mar 12, 2012)

  • Limit the number of orphan transactions stored in memory, to prevent a potential denial-of-service attack by flooding orphan transactions. Also never store invalid transactions at all.
  • Fix possible buffer overflow on systems with very long application data paths. This is not exploitable.
  • Resolved multiple bugs preventing long-term unlocking of encrypted wallets (issue #922). * Only send local IP in "version" messages if it is globally routable (ie, not private), and try to get such an IP from UPnP if applicable. Reannounce UPnP port forwards every 20 minutes, to workaround routers expiring old entries, and allow the -upnp option to override any stored setting.
  • Skip splash screen when -min is used, and fix Minimize to Tray function.
  • Do not blank "label" in Bitcoin-Qt "Send" tab, if the user has already entered something.
  • Correct various labels and messages.
  • Various memory leaks and potential null pointer deferences have been fixed.
  • Handle invalid Bitcoin URIs using "bitcoin://" instead of "bitcoin:".
  • Several shutdown issues have been fixed.
  • Revert to "global progress indication", as starting from zero every time was considered too confusing for many users.
  • Check that keys stored in the wallet are valid at startup, and if not, report corruption.
  • Enable accessible widgets on Windows, so that people with screen readers such as NVDA can make sense of it.
  • Various build fixes.
  • If no password is specified to bitcoind, recommend a secure password. Automatically focus and scroll to new "Send coins" entries in Bitcoin-Qt.
  • Show a message box for --help on Windows, for Bitcoin-Qt.
  • Add missing "About Qt" menu option to show built-in Qt About dialog.
  • Don't show "-daemon" as an option for Bitcoin-Qt, since it isn't available. Update hard-coded fallback seed nodes, choosing recent ones with long uptime and versions at least 0.4.0.
  • Add checkpoint at block 168,000.

New in Bitcoin Core 0.6.0 RC 1 (Feb 8, 2012)

  • Bitcoin-Qt can display and save QR codes for sending and receiving addresses. New context menu on addresses to copy/edit/delete them.
  • Wallets created with this version of bitcoin will use 33-byte 'compressed' public keys instead of 65-byte public keys, resulting in smaller transactions and less traffic on the bitcoin network.
  • The shorter keys are completely compatible with older versions.
  • New command-line argument -blocknotify= that will spawn a shell process to run when a new block is accepted. validateaddress JSON-RPC api command output includes two new fields for addresses in the wallet: pubkey : hexadecimal public key iscompressed : true if pubkey is a short 33-byte key
  • New JSON-RPC api commands for dumping/importing private keys from the wallet (dumprivkey, importprivkey).
  • New JSON-RPC api command for getting information about blocks (getblock, getblockhash).
  • New JSON-RPC api command for getting extra information related to mining (getmininginfo).

New in Bitcoin Core 0.5.2 (Jan 19, 2012)

  • Check all transactions in blocks after the last checkpoint (0.5.0 and 0.5.1 skipped checking ECDSA signatures during initial blockchain download).
  • Cease locking memory used by non-sensitive information (this caused a huge performance hit on some platforms, especially noticable during initial blockchain download).
  • Fixed some address-handling deadlocks (client freezes).
  • No longer accept inbound connections over the internet when Bitcoin is being used with Tor (identity leak).
  • Re-enable SSL support for the JSON-RPC interface (it was unintentionally disabled for the 0.5.0 and 0.5.1 release Linux binaries).
  • Use the correct base transaction fee of 0.0005 BTC for accepting transactions into mined blocks (since 0.4.0, it was incorrectly accepting 0.0001 BTC which was only meant to be relayed).
  • Don't show "IP" for transactions which are not necessarily IP transactions.
  • Add new DNS seeds

New in Bitcoin Core 0.5.1 RC 2 (Dec 15, 2011)

  • This release includes 13 translations, including 5 new translations:
  • Italian, Hungarian, Ukranian, Portuguese (Brazilian) and Simplified Chinese.
  • BUG FIXES:
  • Re-enable SSL support for the JSON-RPC interface (it was unintentionally
  • disabled for the 0.5.0 release binaries).
  • The code that finds peers via "dns seeds" no longer stops bitcoin startup
  • if one of the dns seed machines is down.
  • Tooltips on the transaction list view were rendering incorrectly (as black boxes
  • or with a transparent background).
  • Prevent a denial-of-service attack involving flooding a bitcoin node with
  • orphan blocks.
  • The wallet passphrase dialog now warns you if the caps lock key was pressed.
  • Improved searching in addresses and labels in bitcoin-qt.

New in Bitcoin Core 0.5.1 RC 1 (Dec 13, 2011)

  • Re-enable SSL support for the JSON-RPC interface (it was unintentionally disabled for the 0.5.0 release binaries). The code that finds peers via "dns seeds" no longer stops bitcoin startup if one of the dns seed machines is down. Tooltips on the transaction list view were rendering incorrectly (as black boxes or with a transparent background). Prevent a denial-of-service attack involving flooding a bitcoin node with orphan blocks. The wallet passphrase dialog now warns you if the caps lock key was pressed. Improved searching in addresses and labels in bitcoin-qt.