WIP: next hard fork #5

Draft
BrannonKing wants to merge 178 commits from WIP-HF-2022 into master
2 changed files with 22 additions and 5 deletions
Showing only changes of commit 54d08ebd5f - Show all commits

View file

@ -110,11 +110,7 @@ func IsPayToWitnessScriptHash(script []byte) bool {
// IsPayToWitnessPubKeyHash returns true if the is in the standard
// pay-to-witness-pubkey-hash (P2WKH) format, false otherwise.
func IsPayToWitnessPubKeyHash(script []byte) bool {
pops, err := parseScript(script)
if err != nil {
return false
}
return isWitnessPubKeyHash(pops)
return isWitnessPubKeyHashScript(script)
}
// isWitnessPubKeyHash returns true if the passed script is a

View file

@ -400,6 +400,27 @@ func IsMultisigSigScript(script []byte) bool {
return isMultisigScript(scriptVersion, possibleRedeemScript)
}
// extractWitnessPubKeyHash extracts the witness public key hash from the passed
// script if it is a standard pay-to-witness-pubkey-hash script. It will return
// nil otherwise.
func extractWitnessPubKeyHash(script []byte) []byte {
// A pay-to-witness-pubkey-hash script is of the form:
// OP_0 OP_DATA_20 <20-byte-hash>
if len(script) == 22 &&
script[0] == OP_0 &&
script[1] == OP_DATA_20 {
return script[2:22]
}
return nil
}
// isWitnessPubKeyHashScript returns whether or not the passed script is a
// standard pay-to-witness-pubkey-hash script.
func isWitnessPubKeyHashScript(script []byte) bool {
return extractWitnessPubKeyHash(script) != nil
}
// isNullData returns true if the passed script is a null data transaction,
// false otherwise.
func isNullData(pops []parsedOpcode) bool {