Skip to content

Commit

Permalink
txscript: Optimize ExtractPkScriptAddrs pubkey.
Browse files Browse the repository at this point in the history
This continues the process of converting the ExtractPkScriptAddrs
function to use the optimized extraction functions recently introduced
as part of the typeOfScript conversion.

In particular, this converts the detection for pay-to-pubkey scripts.
  • Loading branch information
davecgh authored and cfromknecht committed Feb 5, 2021
1 parent 7aaa28a commit 76a2d2b
Showing 1 changed file with 10 additions and 11 deletions.
21 changes: 10 additions & 11 deletions txscript/standard.go
Original file line number Diff line number Diff line change
Expand Up @@ -850,6 +850,16 @@ func ExtractPkScriptAddrs(pkScript []byte, chainParams *chaincfg.Params) (Script
return ScriptHashTy, scriptHashToAddrs(hash, chainParams), 1, nil
}

// Check for pay-to-pubkey script.
if data := extractPubKey(pkScript); data != nil {
var addrs []btcutil.Address
addr, err := btcutil.NewAddressPubKey(data, chainParams)
if err == nil {
addrs = append(addrs, addr)
}
return PubKeyTy, addrs, 1, nil
}

// Fall back to slow path. Ultimately these are intended to be replaced by
// faster variants based on the unparsed raw scripts.

Expand Down Expand Up @@ -879,17 +889,6 @@ func ExtractPkScriptAddrs(pkScript []byte, chainParams *chaincfg.Params) (Script
addrs = append(addrs, addr)
}

case PubKeyTy:
// A pay-to-pubkey script is of the form:
// <pubkey> OP_CHECKSIG
// Therefore the pubkey is the first item on the stack.
// Skip the pubkey if it's invalid for some reason.
requiredSigs = 1
addr, err := btcutil.NewAddressPubKey(pops[0].data, chainParams)
if err == nil {
addrs = append(addrs, addr)
}

case WitnessV0ScriptHashTy:
// A pay-to-witness-script-hash script is of the form:
// OP_0 <32-byte hash>
Expand Down

0 comments on commit 76a2d2b

Please sign in to comment.