0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-09 10:43:19 -05:00

Make IsSegWitOutput return true for taproot outputs

This commit is contained in:
Pieter Wuille 2021-07-09 09:58:34 -07:00
parent a88fa1a555
commit 8465978f23

View file

@ -612,15 +612,18 @@ bool IsSolvable(const SigningProvider& provider, const CScript& script)
bool IsSegWitOutput(const SigningProvider& provider, const CScript& script) bool IsSegWitOutput(const SigningProvider& provider, const CScript& script)
{ {
int version;
valtype program;
if (script.IsWitnessProgram(version, program)) return true;
if (script.IsPayToScriptHash()) {
std::vector<valtype> solutions; std::vector<valtype> solutions;
auto whichtype = Solver(script, solutions); auto whichtype = Solver(script, solutions);
if (whichtype == TxoutType::WITNESS_V0_SCRIPTHASH || whichtype == TxoutType::WITNESS_V0_KEYHASH || whichtype == TxoutType::WITNESS_UNKNOWN) return true;
if (whichtype == TxoutType::SCRIPTHASH) { if (whichtype == TxoutType::SCRIPTHASH) {
auto h160 = uint160(solutions[0]); auto h160 = uint160(solutions[0]);
CScript subscript; CScript subscript;
if (provider.GetCScript(CScriptID{h160}, subscript)) { if (provider.GetCScript(CScriptID{h160}, subscript)) {
whichtype = Solver(subscript, solutions); if (subscript.IsWitnessProgram(version, program)) return true;
if (whichtype == TxoutType::WITNESS_V0_SCRIPTHASH || whichtype == TxoutType::WITNESS_V0_KEYHASH || whichtype == TxoutType::WITNESS_UNKNOWN) return true; }
} }
} }
return false; return false;