private broadcast: show finished transactions in getprivatebroadcastinfo #36477

pull vasild wants to merge 1 commits into bitcoin:master from vasild:pb_show_concluded changing 8 files +191 −69
  1. vasild commented at 3:16 PM on October 8, 2026: contributor

    For finished transactions, this allows the inspection of when and to whom the transaction was sent as well as when/if it was echoed from the network.

  2. DrahtBot added the label Private Broadcast on Oct 8, 2026
  3. DrahtBot commented at 3:16 PM on October 8, 2026: contributor

    <!--e57a25ab6845829454e8d69fc972939a-->

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    <!--006a51241073e994b41acfe9ec718e94-->

    External sites

    <!--021abf342d371248e50ceaed478a90ca-->

    Reviews

    See the guideline and AI policy for information on the review process. A summary of reviews will appear here.

    <!--174a7506f384e20aa4161008e828411d-->

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #36429 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/36429.svg"></sub> ([RFC] Delayed transaction broadcast, minimal by optout21)

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

    <!--5faf32d7da4f0f540f40219e4f7537a3-->

  4. private broadcast: show finished transactions in getprivatebroadcastinfo
    For finished transactions, this allows the inspection of when and to
    whom the transaction was sent as well as when/if it was echoed from
    the network.
    
    Co-authored-by: Vasil Dimov <vd@FreeBSD.org>
    bce73a17fd
  5. vasild force-pushed on Oct 8, 2026
  6. DrahtBot added the label CI failed on Oct 8, 2026
  7. DrahtBot removed the label CI failed on Oct 8, 2026
  8. in src/private_broadcast.cpp:27 in bce73a17fd
      29 |  
      30 |      if (const auto it{m_transactions.find(tx)}; it != m_transactions.end()) {
      31 | -        if (it->second.send_statuses.size() < m_max_send_attempts) return AddResult::AlreadyPresent;
      32 | +        auto& state{it->second};
      33 | +
      34 | +        if (!IsFinished(state)) { // We are still trying
    


    frankomosh commented at 6:42 PM on October 19, 2026:

    A tx that used all its send attempts, but never came back from the network, can no longer be sent again. Now Add() can only restarts a tx that is resolved. But GetStale() skips such a tx, so nothing marks it resolved.

    Are we getting rid of the 'retry' feature..?

  9. in src/private_broadcast.cpp:80 in bce73a17fd
      77 |      if (it == m_transactions.end()) return false;
      78 | -    it->second.resolved = true;
      79 | +    auto& state{it->second};
      80 | +    state.resolved = true;
      81 | +    if (received_from.has_value()) {
      82 | +        state.received_by_us.emplace(received_from.value(), NodeClock::now());
    


    frankomosh commented at 6:44 PM on October 19, 2026:

    If another peer sends us the same tx later, this line replaces the saved peer and time. So received_by_us may not show the first peer that sent it back.

    Should we keep the first one?

  10. frankomosh commented at 6:48 PM on October 19, 2026: contributor

    I guess this is a continuation of #34707. Could you share what was added or left out compared to it?


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-10-21 18:51 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me