diff --git a/bchain/coins/bch/bcashparser.go b/bchain/coins/bch/bcashparser.go
index 428e80b4..3aae771b 100644
--- a/bchain/coins/bch/bcashparser.go
+++ b/bchain/coins/bch/bcashparser.go
@@ -128,14 +128,28 @@ func (p *BCashParser) outputScriptToAddresses(script []byte) ([]string, bool, er
if err != nil {
// do not return unknown script type error as error
if err.Error() == "unknown script type" {
- // try OP_RETURN script
- or := btc.TryParseOPReturn(script)
- if or != "" {
- return []string{or}, false, nil
+ // try bitcoin parser to parse P2PK scripts - kind of hack as bchutil does not support pay-to-pubkey
+ _, addresses, _, err := txscript.ExtractPkScriptAddrs(script, p.Params)
+ if err == nil && len(addresses) == 1 {
+ // convert the address back to output script and back to get from bitcoin to bcash
+ s, err := p.addressToOutputScript(addresses[0].EncodeAddress())
+ if err == nil {
+ a, err = bchutil.ExtractPkScriptAddrs(s, p.Params)
+ if err != nil {
+ return []string{}, false, nil
+ }
+ }
+ } else {
+ // try OP_RETURN script
+ or := btc.TryParseOPReturn(script)
+ if or != "" {
+ return []string{or}, false, nil
+ }
+ return []string{}, false, nil
}
- return []string{}, false, nil
+ } else {
+ return nil, false, err
}
- return nil, false, err
}
// EncodeAddress returns CashAddr address
addr := a.EncodeAddress()
diff --git a/bchain/coins/bch/bcashparser_test.go b/bchain/coins/bch/bcashparser_test.go
index 7d98cea6..d9e38ac7 100644
--- a/bchain/coins/bch/bcashparser_test.go
+++ b/bchain/coins/bch/bcashparser_test.go
@@ -138,6 +138,14 @@ func Test_GetAddressesFromAddrDesc(t *testing.T) {
hex: "a91488f772450c830a30eddfdc08a93d5f2ae1a30e1787",
wantErr: false,
},
+ {
+ name: "main-P2PK",
+ parser: mainParserCashAddr,
+ addresses: []string{"bitcoincash:qqr95pwp0w5jqnh9vcjl4qm4x45atr0er57n49pq75"},
+ searchable: true,
+ hex: "2103db3c3977c5165058bf38c46f72d32f4e872112dbafc13083a948676165cd1603ac",
+ wantErr: false,
+ },
{
name: "OP_RETURN ascii",
parser: mainParserCashAddr,
diff --git a/static/templates/txdetail.html b/static/templates/txdetail.html
index f352700c..ac22828b 100644
--- a/static/templates/txdetail.html
+++ b/static/templates/txdetail.html
@@ -51,7 +51,14 @@
{{else}}
Unparsed address
{{end}}
- {{formatAmount $vout.Value}} {{$cs}}
+
+ {{formatAmount $vout.Value}} {{$cs}}
+ {{if $vout.Spent}}
+ (S)
+ {{else}}
+ (U)
+ {{end}}
+
{{end}}