bootstrap mode: ensure we bootstrap with a compatible daemon - #355
Draft
j-berman wants to merge 9 commits into
Draft
bootstrap mode: ensure we bootstrap with a compatible daemon#355j-berman wants to merge 9 commits into
j-berman wants to merge 9 commits into
Conversation
j-berman
force-pushed
the
bootstrap-check-hf
branch
from
May 5, 2026 18:59
a448555 to
f6ebd47
Compare
j-berman
commented
May 6, 2026
|
|
||
| const boost::lock_guard<boost::recursive_mutex> lock{m_daemon_rpc_mutex}; | ||
| bool r = net_utils::invoke_http_json_rpc("/json_rpc", "on_get_block_hash", req, res, error, *m_http_client, rpc_timeout); | ||
| bool r = net_utils::invoke_http_json_rpc("/json_rpc", "getblockheaderbyheight", req, res, error, *m_http_client, rpc_timeout); |
Collaborator
Author
There was a problem hiding this comment.
Note we cannot use the on_get_block_hash RPC here because it doesn't support bootstrap daemons (the request/response structure isn't compatible)
selsta
reviewed
May 6, 2026
Implement new relay logic with threshold-based peer dropping, single-peer
tx hash requests, per-connection in-flight limits with queuing, and
multiindex-based request tracking. Consolidate add/remove request paths,
pass tx hashes directly into send_txs/relay_txs, and add unit tests for
the request manager.
Co-authored-by: j-berman <justinberman@protonmail.com>
Co-authored-by: Boog900 <boog900@tutanota.com>
Co-authored-by: jeffro256 <jeffro256@tutanota.com> Co-authored-by: Luke Parker <lukeparker5132@gmail.com> Co-authored-by: Lee *!* Clagett <code@leeclagett.com> Co-authored-by: SyntheticBird45 <someoneelse.is_on.github.rio7x@simplelogin.com> Co-authored-by: jeetrex17 <jeetrex@tutamail.com> Co-authored-by: UkoeHB <ukoehb@users.noreply.github.com>
* wallet: saner hf version validity check for FCMP++ * Revert optional args RPC * Update src/wallet/wallet2.cpp Co-authored-by: Jeffro <jeffro256@tutanota.com> --------- Co-authored-by: Jeffro <jeffro256@tutanota.com>
j-berman
marked this pull request as draft
May 8, 2026 20:01
Co-authored-by: selsta <selsta@users.noreply.github.com>
j-berman
force-pushed
the
bootstrap-check-hf
branch
from
May 8, 2026 22:24
0cb27e3 to
cbdaa0f
Compare
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.
Builds on #363
I also think this PR would be a good logic change to get included upstream sooner rather than later to maximize its benefit for all GUI users.
Context
Both the GUI's
Simple modeandSimple mode (bootstrapped)can serve RPC requests via a bootstrap daemon connection. The GUI spins up a live local daemon in the background, and then that local daemon connects to a bootstrap daemon to serve RPC requests.The problem
It's possible (pretty likely) that the local daemon loses its connection to a bootsrap daemon at some point, and then the local daemon silently attempts to switch bootstrap connections in the background (via the
switch_server_if_neededfunction). The follow-up bootstrap daemon connections may not be compatible with the GUI, but the end client (the GUI) ultimately won't know this. Once the fork passes, I expect this could cause some more annoying headaches from version compatibility issues.The solution
When the local daemon makes a new bootstrap daemon connection, check that the bootstrap connection is compatible with the local daemon.
This assumes the local daemon the user is running is the same version as the one included with the GUI release, which I think is a fair assumption for the vast majority of noob default users.