Skip to content

Commit b05e99b

Browse files
committed
legacy spkm: Make IsMine() and CanProvide() private and migration only
1 parent 214ae21 commit b05e99b

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

src/wallet/scriptpubkeyman.cpp

+8-6
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ namespace wallet {
2828

2929
typedef std::vector<unsigned char> valtype;
3030

31+
// Legacy wallet IsMine(). Used only in migration
32+
// DO NOT USE ANYTHING IN THIS NAMESPACE OUTSIDE OF MIGRATION
3133
namespace {
3234

3335
/**
@@ -79,7 +81,7 @@ bool HaveKeys(const std::vector<valtype>& pubkeys, const LegacyDataSPKM& keystor
7981
//! scripts or simply treat any script that has been
8082
//! stored in the keystore as spendable
8183
// NOLINTNEXTLINE(misc-no-recursion)
82-
IsMineResult IsMineInner(const LegacyDataSPKM& keystore, const CScript& scriptPubKey, IsMineSigVersion sigversion, bool recurse_scripthash=true)
84+
IsMineResult LegacyWalletIsMineInnerDONOTUSE(const LegacyDataSPKM& keystore, const CScript& scriptPubKey, IsMineSigVersion sigversion, bool recurse_scripthash=true)
8385
{
8486
IsMineResult ret = IsMineResult::NO;
8587

@@ -115,7 +117,7 @@ IsMineResult IsMineInner(const LegacyDataSPKM& keystore, const CScript& scriptPu
115117
// This also applies to the P2WSH case.
116118
break;
117119
}
118-
ret = std::max(ret, IsMineInner(keystore, GetScriptForDestination(PKHash(uint160(vSolutions[0]))), IsMineSigVersion::WITNESS_V0));
120+
ret = std::max(ret, LegacyWalletIsMineInnerDONOTUSE(keystore, GetScriptForDestination(PKHash(uint160(vSolutions[0]))), IsMineSigVersion::WITNESS_V0));
119121
break;
120122
}
121123
case TxoutType::PUBKEYHASH:
@@ -139,7 +141,7 @@ IsMineResult IsMineInner(const LegacyDataSPKM& keystore, const CScript& scriptPu
139141
CScriptID scriptID = CScriptID(uint160(vSolutions[0]));
140142
CScript subscript;
141143
if (keystore.GetCScript(scriptID, subscript)) {
142-
ret = std::max(ret, recurse_scripthash ? IsMineInner(keystore, subscript, IsMineSigVersion::P2SH) : IsMineResult::SPENDABLE);
144+
ret = std::max(ret, recurse_scripthash ? LegacyWalletIsMineInnerDONOTUSE(keystore, subscript, IsMineSigVersion::P2SH) : IsMineResult::SPENDABLE);
143145
}
144146
break;
145147
}
@@ -155,7 +157,7 @@ IsMineResult IsMineInner(const LegacyDataSPKM& keystore, const CScript& scriptPu
155157
CScriptID scriptID{RIPEMD160(vSolutions[0])};
156158
CScript subscript;
157159
if (keystore.GetCScript(scriptID, subscript)) {
158-
ret = std::max(ret, recurse_scripthash ? IsMineInner(keystore, subscript, IsMineSigVersion::WITNESS_V0) : IsMineResult::SPENDABLE);
160+
ret = std::max(ret, recurse_scripthash ? LegacyWalletIsMineInnerDONOTUSE(keystore, subscript, IsMineSigVersion::WITNESS_V0) : IsMineResult::SPENDABLE);
159161
}
160162
break;
161163
}
@@ -197,7 +199,7 @@ IsMineResult IsMineInner(const LegacyDataSPKM& keystore, const CScript& scriptPu
197199

198200
isminetype LegacyDataSPKM::IsMine(const CScript& script) const
199201
{
200-
switch (IsMineInner(*this, script, IsMineSigVersion::TOP)) {
202+
switch (LegacyWalletIsMineInnerDONOTUSE(*this, script, IsMineSigVersion::TOP)) {
201203
case IsMineResult::INVALID:
202204
case IsMineResult::NO:
203205
return ISMINE_NO;
@@ -256,7 +258,7 @@ std::unique_ptr<SigningProvider> LegacyDataSPKM::GetSolvingProvider(const CScrip
256258

257259
bool LegacyDataSPKM::CanProvide(const CScript& script, SignatureData& sigdata)
258260
{
259-
IsMineResult ismine = IsMineInner(*this, script, IsMineSigVersion::TOP, /* recurse_scripthash= */ false);
261+
IsMineResult ismine = LegacyWalletIsMineInnerDONOTUSE(*this, script, IsMineSigVersion::TOP, /* recurse_scripthash= */ false);
260262
if (ismine == IsMineResult::SPENDABLE || ismine == IsMineResult::WATCH_ONLY) {
261263
// If ismine, it means we recognize keys or script ids in the script, or
262264
// are watching the script itself, and we can at least provide metadata

src/wallet/scriptpubkeyman.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ static const std::unordered_set<OutputType> LEGACY_OUTPUT_TYPES {
188188
// This is the minimum necessary to load a legacy wallet so that it can be migrated.
189189
class LegacyDataSPKM : public ScriptPubKeyMan, public FillableSigningProvider
190190
{
191-
protected:
191+
private:
192192
using WatchOnlySet = std::set<CScript>;
193193
using WatchKeyMap = std::map<CKeyID, CPubKey>;
194194
using CryptedKeyMap = std::map<CKeyID, std::pair<CPubKey, std::vector<unsigned char>>>;
@@ -212,6 +212,9 @@ class LegacyDataSPKM : public ScriptPubKeyMan, public FillableSigningProvider
212212
// It may include scripts that are invalid or not actually watched by this LegacyDataSPKM.
213213
// Used only in migration.
214214
std::unordered_set<CScript, SaltedSipHasher> GetCandidateScriptPubKeys() const;
215+
216+
isminetype IsMine(const CScript& script) const override;
217+
bool CanProvide(const CScript& script, SignatureData& sigdata) override;
215218
public:
216219
using ScriptPubKeyMan::ScriptPubKeyMan;
217220

@@ -226,9 +229,6 @@ class LegacyDataSPKM : public ScriptPubKeyMan, public FillableSigningProvider
226229
std::unordered_set<CScript, SaltedSipHasher> GetScriptPubKeys() const override;
227230
std::unique_ptr<SigningProvider> GetSolvingProvider(const CScript& script) const override;
228231
uint256 GetID() const override { return uint256::ONE; }
229-
// TODO: Remove IsMine when deleting LegacyScriptPubKeyMan
230-
isminetype IsMine(const CScript& script) const override;
231-
bool CanProvide(const CScript& script, SignatureData& sigdata) override;
232232

233233
// FillableSigningProvider overrides
234234
bool HaveKey(const CKeyID &address) const override;

0 commit comments

Comments
 (0)