From 0db0fdde667a8546516a5fd4ab3bbff1dc8de19a Mon Sep 17 00:00:00 2001 From: Jonathan Chappelow Date: Tue, 22 Mar 2022 19:36:01 -0500 Subject: [PATCH] dex/networks/btc: ExtractScriptAddrs never errors The updated txscript.ExtractPkScriptAddrs always returns a nil error. Keep the error return on ExtractScriptAddrs for now since it was not removed from ExtractPkScriptAddrs and it could have meaning again. --- client/asset/btc/btc.go | 3 +++ dex/networks/btc/script.go | 2 +- dex/networks/btc/script_test.go | 14 +++++++------- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/client/asset/btc/btc.go b/client/asset/btc/btc.go index f9d59c11ea..dbb41c3129 100644 --- a/client/asset/btc/btc.go +++ b/client/asset/btc/btc.go @@ -3355,6 +3355,9 @@ func convertUnspent(confs uint32, unspents []*ListUnspentResult, chainParams *ch if err != nil { return nil, nil, 0, fmt.Errorf("error reading asset info: %w", err) } + if nfo.NonStandardScript { + continue // "spendable" or not, don't use these for funding + } utxo := &compositeUTXO{ utxo: &utxo{ diff --git a/dex/networks/btc/script.go b/dex/networks/btc/script.go index 275fb5e839..b57131645f 100644 --- a/dex/networks/btc/script.go +++ b/dex/networks/btc/script.go @@ -417,7 +417,7 @@ func ExtractScriptAddrs(script []byte, chainParams *chaincfg.Params) (*BtcScript // For P2SH and non-P2SH multi-sig, pull the addresses from the pubkey script. class, addrs, numRequired, err := txscript.ExtractPkScriptAddrs(script, chainParams) nonStandard := class == txscript.NonStandardTy - if err != nil { + if err != nil { // txscript.ExtractPkScriptAddrs always returns a nil error now, so this should not happen return nil, nonStandard, fmt.Errorf("ExtractScriptAddrs: %w", err) } if nonStandard { diff --git a/dex/networks/btc/script_test.go b/dex/networks/btc/script_test.go index e6b3071454..e14a6f11e4 100644 --- a/dex/networks/btc/script_test.go +++ b/dex/networks/btc/script_test.go @@ -251,10 +251,7 @@ func TestIsDust(t *testing.T) { func TestExtractScriptAddrs(t *testing.T) { // Invalid script - _, nonStd, err := ExtractScriptAddrs(invalidScript, tParams) - if err == nil { - t.Fatalf("no error for bad script") - } + _, nonStd, _ := ExtractScriptAddrs(invalidScript, tParams) if !nonStd { t.Errorf("expected non-standard script") } @@ -415,9 +412,12 @@ func TestInputInfo(t *testing.T) { t.Fatalf("no error for missing redeem script") } // Redeem script must be parseable. - _, err = InputInfo(script, invalidScript, tParams) - if err == nil { - t.Fatalf("no error for unparseable redeem script") + spendInfo, err = InputInfo(script, invalidScript, tParams) + if err != nil { + t.Fatalf("failed to parse non-standard script") + } + if !spendInfo.NonStandardScript { + t.Errorf("non-standard script was not detected as such") } }