From 030e173d98dff13f92a374bc2d5c3be60275777f Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Mon, 16 Apr 2018 16:10:21 -0700 Subject: [PATCH] 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. Zcash: Rewrote this commit so that it instead adds an internal SigVersion argument (which we didn't have because it was added to support SegWit logic). Co-authored-by: Jack Grigg --- src/script/ismine.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/script/ismine.cpp b/src/script/ismine.cpp index b0d452cb1..677d1d44f 100644 --- a/src/script/ismine.cpp +++ b/src/script/ismine.cpp @@ -29,13 +29,7 @@ unsigned int HaveKeys(const vector& pubkeys, const CKeyStore& keystore) return nResult; } -isminetype IsMine(const CKeyStore &keystore, const CTxDestination& dest) -{ - CScript script = GetScriptForDestination(dest); - return IsMine(keystore, script); -} - -isminetype IsMine(const CKeyStore &keystore, const CScript& scriptPubKey) +static isminetype IsMineInner(const CKeyStore& keystore, const CScript& scriptPubKey, SigVersion sigversion) { vector vSolutions; txnouttype whichType; @@ -66,7 +60,7 @@ isminetype IsMine(const CKeyStore &keystore, const CScript& scriptPubKey) CScriptID scriptID = CScriptID(uint160(vSolutions[0])); CScript subscript; if (keystore.GetCScript(scriptID, subscript)) { - isminetype ret = IsMine(keystore, subscript); + isminetype ret = IsMineInner(keystore, subscript, SigVersion::SIGVERSION_SPROUT); if (ret == ISMINE_SPENDABLE) return ret; } @@ -94,3 +88,14 @@ isminetype IsMine(const CKeyStore &keystore, const CScript& scriptPubKey) } return ISMINE_NO; } + +isminetype IsMine(const CKeyStore& keystore, const CScript& scriptPubKey) +{ + return IsMineInner(keystore, scriptPubKey, SigVersion::SIGVERSION_SPROUT); +} + +isminetype IsMine(const CKeyStore& keystore, const CTxDestination& dest) +{ + CScript script = GetScriptForDestination(dest); + return IsMine(keystore, script); +}