Add support for lnd client compatibility - #952
Merged
evoskuil merged 6 commits intoSep 19, 2026
Merged
Conversation
evoskuil
reviewed
Sep 19, 2026
lnd's bitcoind+ZMQ backend cannot bootstrap without these: it calls getrawmempool unconditionally to seed its ZMQ-fed mempool cache, and checks getblockchaininfo's bip9_softforks for taproot activation. Since v4 has no real mempool, respond honestly with empty results (client_mempool_disabled for the entry-lookup methods that need one) rather than erroring on calls a real node never rejects. Moves bip9_softforks into the shared chain_info serializer since lnd's taproot check is backend-agnostic, applying to btcd as well.
forks.bip341/bip342 mean the rules are enabled, not that taproot has activated -- activation is a height (bip9_bit2_active_checkpoint), per chain_state's own bip9_bit2_height gate. The previous chain_info reported taproot "active" purely because the ruleset was configured, which is wrong for any chain below its activation height (e.g. a mainnet node still syncing past height 9 in these tests, or below 709632 in general).
…nts. The node sends max_money as the feefilter when it is not pooling txs, and does not accept unconfirmed conflicts.
The context flags record activation, so neither config nor height is checked.
eynhaender
force-pushed
the
fix/bitcoind_lnd_bootstrap
branch
from
September 19, 2026 14:02
0b96912 to
1735d1a
Compare
evoskuil
reviewed
Sep 19, 2026
|
|
||
| const auto& settings = node_settings(); | ||
| const auto minimum = to_floating(minimum_fee_rate()) / | ||
| chain::satoshi_per_bitcoin; |
Member
There was a problem hiding this comment.
I led you astray on this one, should be the config setting - regardless of currency. But the protocol update was still useful.
Member
There was a problem hiding this comment.
I pushed the recorrection into the PR.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
lnd's bitcoind+ZMQ backend fails at wallet startup: it calls getrawmempool unconditionally, needs bip9_softforks in getblockchaininfo, and calls getmempoolinfo.
Implement getrawmempool and getmempoolinfo as empty results, since there is no v4 mempool and bitcoind never errors on these.
getmempoolinfo reports a max_money minimum fee when not pooling txs, matching the feefilter sent to peers. It also reports fullrbf as false.
Report bip9_softforks (taproot) from the shared getblockchaininfo serializer, once the confirmed height reaches the activation checkpoint.
lnd now reaches a full chain sync and can generate addresses against this node.