Make LegacyScriptPubKeyMan::CanProvide
method able to recognize p2sh scripts when the redeem script is present in the mapScripts
map without the p2sh script also having to be added to the mapScripts
map. This restores behavior prior to #17261, which I think broke backwards compatibility with old wallet files by no longer treating addresses created by addmultisigaddress
calls before #17261 as solvable.
The reason why tests didn’t fail with the CanProvide implementation in #17261 is because of a workaround added in 4a7e43e8460127a40a7895519587399feff3b682 “Store p2sh scripts in AddAndGetDestinationForScript”, which masked the problem for new addmultisigaddress
RPC calls without fixing it for multisig addresses already created in old wallet files.
This change adds a lot of comments and allows reverting commit 4a7e43e8460127a40a7895519587399feff3b682 “Store p2sh scripts in AddAndGetDestinationForScript”, so the AddAndGetDestinationForScript()
function, CanProvide()
method, and mapScripts
map should all be more comprehensible