Skip to content

Commit 19fc973

Browse files
committed
Do not expose SigVersion argument to IsMine
Only IsMine's internal code needs this, as part of a recursion into P2SH and P2WSH scripts. The exposed functions always operate on actual scriptPubKeys and not on redeemScripts or witness scripts.
1 parent fb1dfbb commit 19fc973

File tree

2 files changed

+24
-19
lines changed

2 files changed

+24
-19
lines changed

src/script/ismine.cpp

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,7 @@ static bool HaveKeys(const std::vector<valtype>& pubkeys, const CKeyStore& keyst
2222
return true;
2323
}
2424

25-
isminetype IsMine(const CKeyStore& keystore, const CScript& scriptPubKey, SigVersion sigversion)
26-
{
27-
bool isInvalid = false;
28-
return IsMine(keystore, scriptPubKey, isInvalid, sigversion);
29-
}
30-
31-
isminetype IsMine(const CKeyStore& keystore, const CTxDestination& dest, SigVersion sigversion)
32-
{
33-
CScript script = GetScriptForDestination(dest);
34-
return IsMine(keystore, script, sigversion);
35-
}
36-
37-
isminetype IsMine(const CKeyStore &keystore, const CScript& scriptPubKey, bool& isInvalid, SigVersion sigversion)
25+
static isminetype IsMineInner(const CKeyStore& keystore, const CScript& scriptPubKey, bool& isInvalid, SigVersion sigversion)
3826
{
3927
isInvalid = false;
4028

@@ -70,7 +58,7 @@ isminetype IsMine(const CKeyStore &keystore, const CScript& scriptPubKey, bool&
7058
// This also applies to the P2WSH case.
7159
break;
7260
}
73-
isminetype ret = ::IsMine(keystore, GetScriptForDestination(CKeyID(uint160(vSolutions[0]))), isInvalid, SigVersion::WITNESS_V0);
61+
isminetype ret = IsMineInner(keystore, GetScriptForDestination(CKeyID(uint160(vSolutions[0]))), isInvalid, SigVersion::WITNESS_V0);
7462
if (ret == ISMINE_SPENDABLE || ret == ISMINE_WATCH_SOLVABLE || (ret == ISMINE_NO && isInvalid))
7563
return ret;
7664
break;
@@ -92,7 +80,7 @@ isminetype IsMine(const CKeyStore &keystore, const CScript& scriptPubKey, bool&
9280
CScriptID scriptID = CScriptID(uint160(vSolutions[0]));
9381
CScript subscript;
9482
if (keystore.GetCScript(scriptID, subscript)) {
95-
isminetype ret = IsMine(keystore, subscript, isInvalid);
83+
isminetype ret = IsMineInner(keystore, subscript, isInvalid, SigVersion::BASE);
9684
if (ret == ISMINE_SPENDABLE || ret == ISMINE_WATCH_SOLVABLE || (ret == ISMINE_NO && isInvalid))
9785
return ret;
9886
}
@@ -108,7 +96,7 @@ isminetype IsMine(const CKeyStore &keystore, const CScript& scriptPubKey, bool&
10896
CScriptID scriptID = CScriptID(hash);
10997
CScript subscript;
11098
if (keystore.GetCScript(scriptID, subscript)) {
111-
isminetype ret = IsMine(keystore, subscript, isInvalid, SigVersion::WITNESS_V0);
99+
isminetype ret = IsMineInner(keystore, subscript, isInvalid, SigVersion::WITNESS_V0);
112100
if (ret == ISMINE_SPENDABLE || ret == ISMINE_WATCH_SOLVABLE || (ret == ISMINE_NO && isInvalid))
113101
return ret;
114102
}
@@ -144,3 +132,20 @@ isminetype IsMine(const CKeyStore &keystore, const CScript& scriptPubKey, bool&
144132
}
145133
return ISMINE_NO;
146134
}
135+
136+
isminetype IsMine(const CKeyStore& keystore, const CScript& scriptPubKey, bool& isInvalid)
137+
{
138+
return IsMineInner(keystore, scriptPubKey, isInvalid, SigVersion::BASE);
139+
}
140+
141+
isminetype IsMine(const CKeyStore& keystore, const CScript& scriptPubKey)
142+
{
143+
bool isInvalid = false;
144+
return IsMine(keystore, scriptPubKey, isInvalid);
145+
}
146+
147+
isminetype IsMine(const CKeyStore& keystore, const CTxDestination& dest)
148+
{
149+
CScript script = GetScriptForDestination(dest);
150+
return IsMine(keystore, script);
151+
}

src/script/ismine.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ typedef uint8_t isminefilter;
3333
* different SIGVERSION may have different network rules. Currently the only use of isInvalid is indicate uncompressed
3434
* keys in SigVersion::WITNESS_V0 script, but could also be used in similar cases in the future
3535
*/
36-
isminetype IsMine(const CKeyStore& keystore, const CScript& scriptPubKey, bool& isInvalid, SigVersion = SigVersion::BASE);
37-
isminetype IsMine(const CKeyStore& keystore, const CScript& scriptPubKey, SigVersion = SigVersion::BASE);
38-
isminetype IsMine(const CKeyStore& keystore, const CTxDestination& dest, SigVersion = SigVersion::BASE);
36+
isminetype IsMine(const CKeyStore& keystore, const CScript& scriptPubKey, bool& isInvalid);
37+
isminetype IsMine(const CKeyStore& keystore, const CScript& scriptPubKey);
38+
isminetype IsMine(const CKeyStore& keystore, const CTxDestination& dest);
3939

4040
#endif // BITCOIN_SCRIPT_ISMINE_H

0 commit comments

Comments
 (0)