This week’s newsletter summarizes a vulnerability affecting old versions of Eclair and summarizes research into full node feerate settings. Also included are our regular sections summarizing popular questions and answers on the Bitcoin Stack Exchange, announcing new releases and release candidates, and describing notable changes to popular Bitcoin infrastructure software.

News

  • Eclair vulnerability: Matt Morehouse posted to Delving Bitcoin to announce the responsible disclosure of a vulnerability affecting older versions of Eclair. All Eclair users are recommended to upgrade to version 0.12 or greater. The vulnerability allowed an attacker to broadcast an old commitment transaction to steal all current funds from a channel. In addition to fixing the vulnerability, Eclair developers added a comprehensive testing suite designed to catch similar problems.

  • Research into feerate settings: Daniela Brozzoni posted to Delving Bitcoin the results of a scan of almost 30,000 full nodes that were accepting incoming connections. Each node was queried for its BIP133 fee filter, which indicates the lowest feerate at which it will currently accept relayed unconfirmed transactions. When node mempools aren’t full, this is the node’s default minimum transaction relay feerate. Her results indicate most nodes used the default of 1 sat/vbyte (s/v), which has long been the default in Bitcoin Core. About 4% of nodes used 0.1 s/v, the default for the upcoming 30.0 version of Bitcoin Core, and about 8% of nodes didn’t respond to the query—indicating that they might be spy nodes.

    A small percentage of the nodes used a feefilter value of 9,170,997 (10,000 s/v), which developer 0xB10C noted is the value Bitcoin Core sets, through rounding, when the node is more than 100 blocks behind the tip of the chain and is focused on receiving block data rather than transactions that might be confirmed in later blocks.

Selected Q&A from Bitcoin Stack Exchange

Bitcoin Stack Exchange is one of the first places Optech contributors look for answers to their questions—or when we have a few spare moments to help curious or confused users. In this monthly feature, we highlight some of the top-voted questions and answers posted since our last update.

Releases and release candidates

New releases and release candidates for popular Bitcoin infrastructure projects. Please consider upgrading to new releases or helping to test release candidates.

Notable code and documentation changes

Notable recent changes in Bitcoin Core, Core Lightning, Eclair, LDK, LND, libsecp256k1, Hardware Wallet Interface (HWI), Rust Bitcoin, BTCPay Server, BDK, Bitcoin Improvement Proposals (BIPs), Lightning BOLTs, Lightning BLIPs, Bitcoin Inquisition, and BINANAs.

  • Bitcoin Core #33333 emits a startup warning message if a node’s dbcache setting exceeds a cap derived from the node’s system RAM, to prevent out-of-memory errors or heavy swapping. For systems with less than 2GB of RAM, the dbcache warning threshold is 450MB; otherwise, the threshold is 75% of the total RAM. The dbcache 16GB limit was removed in September 2024 (see Newsletter #321).

  • Bitcoin Core #28592 increases the per-peer transaction relay rate from 7 to 14 for inbound peers due to an increased presence of smaller transactions on the network. The rate for outbound peers is 2.5 times higher, increasing to 35 transactions per second. The transaction relay rate limits the number of transactions a node sends to its peers.

  • Eclair #3171 removes PaymentWeightRatios, a pathfinding method that assumed uniformity in channel balances, and replaces it with a newly introduced probabilistic approach based on past payment attempt history (see Newsletter #371).

  • Eclair #3175 starts rejecting unpayable BOLT12 offers where the fields offer_chains, offer_paths, invoice_paths, and invoice_blindedpay are present but empty.

  • LDK #4064 updates its signature verification logic to ensure that if the n field (payee’s pubkey) is present, the signature is verified against it. Otherwise, the payee’s pubkey is extracted from the BOLT11 invoice with either a high-S or low-S signature. This PR aligns signature checks with the proposed BOLTs #1284 and with other implementations such as Eclair (See Newsletter #371).

  • LDK #4067 adds support for spending P2A ephemeral anchor outputs from zero-fee commitment transactions, ensuring that channel peers can claim their funds back on-chain. See Newsletter #371 for LDK’s implementation of zero-fee commitment channels.

  • LDK #4046 enables an often-offline sender to send async payments to an often-offline recipient. The sender sets a flag in the update_add_htlc message to indicate that the HTLC should be held by the LSP until the recipient comes back online and sends a release_held_htlc onion message to claim the payment.

  • LDK #4083 deprecates the pay_for_offer_from_human_readable_name endpoint to remove duplicate BIP353 HRN payment APIs. Wallets are encouraged to use the bitcoin-payment-instructions crate to parse and resolve payment instructions before calling pay_for_offer_from_hrn to pay an offer from a BIP353 HRN (e.g. satoshi@nakamoto.com).

  • LND #10189 updates its sweeper system (see Newsletter #346) to properly recognize the ErrMinRelayFeeNotMet error code and retry failed transactions by fee bumping until the broadcast is successful. Previously, the error would be mismatched, and the transaction wouldn’t be retried. This PR also improves weight estimation by accounting for a possible extra change output, which is relevant in taproot overlay channels used to enhance LND’s Taproot Assets.

  • BIPs #1963 updates the status of the BIPs that specify compact block filters, BIP157 and BIP158, from Draft to Final as they’ve been deployed in Bitcoin Core and other software since 2020.

Want more?

For more discussion about the topics mentioned in this newsletter, join us for the weekly Bitcoin Optech Recap on Riverside.fm at 16:30 UTC on September 30. The discussion is also recorded and will be available from our podcasts page.