change to btc.TryParseOPReturn

pull/68/head
wakiyamap 2018-09-29 07:02:12 -04:00 committed by Martin
parent 207a6b36e8
commit 43e61253ee
1 changed files with 2 additions and 43 deletions

View File

@ -3,7 +3,6 @@ package monacoin
import (
"blockbook/bchain"
"blockbook/bchain/coins/btc"
"encoding/hex"
"github.com/btcsuite/btcd/wire"
"github.com/jakm/btcutil/chaincfg"
@ -137,7 +136,7 @@ func (p *MonacoinParser) outputScriptToAddresses(script []byte) ([]string, bool,
if sc != txscript.NonStandardTy && sc != txscript.NullDataTy {
s = true
} else if len(rv) == 0 {
or := TryParseOPReturn(script)
or := btc.TryParseOPReturn(script)
if or != "" {
rv = []string{or}
}
@ -156,7 +155,7 @@ func (p *MonacoinParser) outputScriptToAddresses(script []byte) ([]string, bool,
if sc != txscript.NonStandardTy && sc != txscript.NullDataTy {
s = true
} else if len(rv) == 0 {
or := TryParseOPReturn(script)
or := btc.TryParseOPReturn(script)
if or != "" {
rv = []string{or}
}
@ -164,43 +163,3 @@ func (p *MonacoinParser) outputScriptToAddresses(script []byte) ([]string, bool,
return rv, s, nil
}
}
// TryParseOPReturn tries to process OP_RETURN script and return its string representation
func TryParseOPReturn(script []byte) string {
if len(script) > 1 && script[0] == txscript.OP_RETURN {
// trying 2 variants of OP_RETURN data
// 1) OP_RETURN OP_PUSHDATA1 <datalen> <data>
// 2) OP_RETURN <datalen> <data>
var data []byte
var l int
if script[1] == txscript.OP_PUSHDATA1 && len(script) > 2 {
l = int(script[2])
data = script[3:]
if l != len(data) {
l = int(script[1])
data = script[2:]
}
} else {
l = int(script[1])
data = script[2:]
}
if l == len(data) {
isASCII := true
for _, c := range data {
if c < 32 || c > 127 {
isASCII = false
break
}
}
var ed string
if isASCII {
ed = "(" + string(data) + ")"
} else {
ed = hex.EncodeToString(data)
}
return "OP_RETURN " + ed
}
}
return ""
}