From ae8058f26944d15db069ed8b9fc6993575fd8957 Mon Sep 17 00:00:00 2001 From: Jakub Matys Date: Wed, 20 Jun 2018 19:45:41 +0200 Subject: [PATCH] Fixed different behaviour between transaction parsing from wire or JSON JSON version sometimes returned nil Address field in ScriptPubKey (if it was omitted in input JSON) but wire version always returned allocated empty slice. --- bchain/coins/btc/bitcoinparser.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bchain/coins/btc/bitcoinparser.go b/bchain/coins/btc/bitcoinparser.go index 41c52759..ec0fc687 100644 --- a/bchain/coins/btc/bitcoinparser.go +++ b/bchain/coins/btc/bitcoinparser.go @@ -113,9 +113,11 @@ func (p *BitcoinParser) TxFromMsgTx(t *wire.MsgTx, parseAddresses bool) bchain.T } vout := make([]bchain.Vout, len(t.TxOut)) for i, out := range t.TxOut { - addrs := []string{} + var addrs []string if parseAddresses { - addrs, _ = p.OutputScriptToAddresses(out.PkScript) + if tmp, _ := p.OutputScriptToAddresses(out.PkScript); len(tmp) > 0 { + addrs = tmp + } } s := bchain.ScriptPubKey{ Hex: hex.EncodeToString(out.PkScript),