wallet: unfriend LegacyDataSPKM and DescriptorScriptPubKeyMan classes #35192

pull rkrux wants to merge 1 commits into bitcoin:master from rkrux:spkms-unfriend changing 1 files +0 −1
  1. rkrux commented at 10:39 AM on May 1, 2026: contributor

    After #28333, LegacyDataSPKM doesn't need to use the private or protected members of DescriptorScriptPubKeyMan class such as AddDescriptorKeyWithDB and TopUpWithDB. Moreover, these two SPKMs are siblings that inherit from the common ScriptPubKeyMan.

    It seems reasonable to me that they are unfriended so that private members of one are not exposed to another unnecessarily.

    <!-- *** Please remove the following help text before submitting: *** Pull requests without a rationale and clear improvement may be closed immediately. GUI-related pull requests should be opened against https://github.com/bitcoin-core/gui first. See CONTRIBUTING.md -->

    <!-- Please provide clear motivation for your patch and explain how it improves Bitcoin Core user experience or Bitcoin Core developer experience significantly: * Any test improvements or new tests that improve coverage are always welcome. * All other changes should have accompanying unit tests (see `src/test/`) or functional tests (see `test/`). Contributors should note which tests cover modified code. If no tests exist for a region of modified code, new tests should accompany the change. * Bug fixes are most welcome when they come with steps to reproduce or an explanation of the potential issue as well as reasoning for the way the bug was fixed. * Features are welcome, but might be rejected due to design or scope issues. If a feature is based on a lot of dependencies, contributors should first consider building the system outside of Bitcoin Core, if possible. * Refactoring changes are only accepted if they are required for a feature or bug fix or otherwise improve developer experience significantly. For example, most "code style" refactoring changes require a thorough explanation why they are useful, what downsides they have and why they *significantly* improve developer experience or avoid serious programming bugs. Note that code style is often a subjective matter. Unless they are explicitly mentioned to be preferred in the [developer notes](/doc/developer-notes.md), stylistic code changes are usually rejected. -->

    <!-- Bitcoin Core has a thorough review process and even the most trivial change needs to pass a lot of eyes and requires non-zero or even substantial time effort to review. There is a huge lack of active reviewers on the project, so patches often sit for a long time. -->

  2. wallet: unfriend LegacyDataSPKM and DescriptorScriptPubKeyMan classes
    After PR 28333, `LegacyDataSPKM` doesn't need to use the private or
    protected members of `DescriptorScriptPubKeyMan` class such as
    `AddDescriptorKeyWithDB` and `TopUpWithDB`. Moreover, these two SPKMs
    are siblings that inherit from the common `ScriptPubKeyMan`.
    
    It seems reasonable to me that they are unfriended so that private
    members of one are not exposed to another unnecessarily.
    0e84365148
  3. DrahtBot added the label Wallet on May 1, 2026
  4. DrahtBot commented at 10:39 AM on May 1, 2026: contributor

    <!--e57a25ab6845829454e8d69fc972939a-->

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

    <!--021abf342d371248e50ceaed478a90ca-->

    Reviews

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

    <!--5faf32d7da4f0f540f40219e4f7537a3-->

  5. rkrux commented at 10:40 AM on May 1, 2026: contributor

    The CI should pass after #28333 is merged, will rebase and undraft then.

  6. DrahtBot added the label CI failed on May 1, 2026
  7. DrahtBot commented at 11:15 AM on May 1, 2026: contributor

    <!--85328a0da195eb286784d51f73fa0af9-->

    🚧 At least one of the CI tasks failed. <sub>Task macOS-cross to arm64: https://github.com/bitcoin/bitcoin/actions/runs/25211457547/job/73922821804</sub> <sub>LLM reason (✨ experimental): CI failed because the build didn’t compile: scriptpubkeyman.cpp tried to call DescriptorScriptPubKeyMan’s private/protected methods (AddDescriptorKeyWithDB, TopUpWithDB).</sub>

    <details><summary>Hints</summary>

    Try to run the tests locally, according to the documentation. However, a CI failure may still happen due to a number of reasons, for example:

    • Possibly due to a silent merge conflict (the changes in this pull request being incompatible with the current code in the target branch). If so, make sure to rebase on the latest commit of the target branch.

    • A sanitizer issue, which can only be found by compiling with the sanitizer and running the affected test.

    • An intermittent issue.

    Leave a comment here, if you need help tracking down a confusing failure.

    </details>


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-05-09 15:12 UTC

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