| 323 | } |
| 324 | |
| 325 | CScript GetScriptForWitness(const CScript& redeemscript) |
| 326 | { |
| 327 | txnouttype typ; |
| 328 | std::vector<std::vector<unsigned char> > vSolutions; |
| 329 | if (Solver(redeemscript, typ, vSolutions)) { |
| 330 | if (typ == TX_PUBKEY) { |
| 331 | return GetScriptForDestination(WitnessV0KeyHash(Hash160(vSolutions[0].begin(), vSolutions[0].end()))); |
| 332 | } else if (typ == TX_PUBKEYHASH) { |
| 333 | return GetScriptForDestination(WitnessV0KeyHash(vSolutions[0])); |
| 334 | } |
| 335 | } |
| 336 | return GetScriptForDestination(WitnessV0ScriptHash(redeemscript)); |
| 337 | } |
| 338 | |
| 339 | bool IsValidDestination(const CTxDestination& dest) { |
| 340 | return dest.which() != 0; |