diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2018-04-16 17:18:34 -0700 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2018-04-19 21:05:14 -0700 |
commit | 9c2a8b8d34c2ff6bd8611587ae883c1dc0091a45 (patch) | |
tree | 354039b23d039f90934aadad515a692f647b7767 /src | |
parent | 08f322865429c307ea620a1e349855f9eee3af7e (diff) |
Do not treat bare multisig as IsMine
Such outputs can still be watched, and signed for, but they aren't treated as valid payments.
That means they won't cause transactions to appear in listtransactions, their outputs to be
shown under listunspent, or affect balances.
Diffstat (limited to 'src')
-rw-r--r-- | src/script/ismine.cpp | 3 | ||||
-rw-r--r-- | src/test/script_standard_tests.cpp | 9 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/script/ismine.cpp b/src/script/ismine.cpp index eb3847d8e2..a987944f5b 100644 --- a/src/script/ismine.cpp +++ b/src/script/ismine.cpp @@ -123,6 +123,9 @@ static isminetype IsMineInner(const CKeyStore& keystore, const CScript& scriptPu case TX_MULTISIG: { + // Never treat bare multisig outputs as ours (they can still be made watchonly-though) + if (sigversion == IsMineSigVersion::TOP) break; + // Only consider transactions "mine" if we own ALL the // keys involved. Multi-signature transactions that are // partially owned (somebody else has a key that can spend diff --git a/src/test/script_standard_tests.cpp b/src/test/script_standard_tests.cpp index 767c5fdbd2..ff0bf6c66d 100644 --- a/src/test/script_standard_tests.cpp +++ b/src/test/script_standard_tests.cpp @@ -561,7 +561,14 @@ BOOST_AUTO_TEST_CASE(script_standard_IsMine) keystore.AddKey(keys[1]); result = IsMine(keystore, scriptPubKey, isInvalid); - BOOST_CHECK_EQUAL(result, ISMINE_SPENDABLE); + BOOST_CHECK_EQUAL(result, ISMINE_NO); + BOOST_CHECK(!isInvalid); + + // Keystore has 2/2 keys and the script + keystore.AddCScript(scriptPubKey); + + result = IsMine(keystore, scriptPubKey, isInvalid); + BOOST_CHECK_EQUAL(result, ISMINE_NO); BOOST_CHECK(!isInvalid); } |