Remove usage of deprecated address encode/decode API.

This commit is contained in:
Josh Rickmar 2014-01-03 13:22:28 -05:00
parent 082ad7caf2
commit 405eca4a44
2 changed files with 30 additions and 25 deletions

View file

@ -528,31 +528,29 @@ func createVoutList(mtx *btcwire.MsgTx, net btcwire.BitcoinNet) ([]btcjson.Vout,
voutList[i].ScriptPubKey.Asm = disbuf voutList[i].ScriptPubKey.Asm = disbuf
voutList[i].ScriptPubKey.Hex = hex.EncodeToString(v.PkScript) voutList[i].ScriptPubKey.Hex = hex.EncodeToString(v.PkScript)
scriptType, reqSigs, addrHashes := btcscript.CalcPkScriptAddrHashes(v.PkScript) scriptType, reqSigs, hashes := btcscript.CalcPkScriptAddrHashes(v.PkScript)
voutList[i].ScriptPubKey.Type = scriptType.String() voutList[i].ScriptPubKey.Type = scriptType.String()
voutList[i].ScriptPubKey.ReqSigs = reqSigs voutList[i].ScriptPubKey.ReqSigs = reqSigs
if addrHashes == nil { if hashes == nil {
voutList[i].ScriptPubKey.Addresses = nil voutList[i].ScriptPubKey.Addresses = nil
} else { } else {
voutList[i].ScriptPubKey.Addresses = make([]string, len(addrHashes)) voutList[i].ScriptPubKey.Addresses = make([]string, len(hashes))
for j := 0; j < len(addrHashes); j++ { for j := 0; j < len(hashes); j++ {
var addr string var addr btcutil.Address
if scriptType == btcscript.ScriptHashTy { if scriptType == btcscript.ScriptHashTy {
addr, err = btcutil.EncodeScriptHash(addrHashes[j], net) addr, err = btcutil.NewAddressScriptHash(hashes[j], net)
if err != nil {
continue
}
} else { } else {
addr, err = btcutil.EncodeAddress(addrHashes[j], net) addr, err = btcutil.NewAddressPubKeyHash(hashes[j], net)
if err != nil {
continue
}
} }
voutList[i].ScriptPubKey.Addresses[j] = addr if err != nil {
// hash will always be 20 bytes, so the only
// possible error is from an invalid network.
return nil, errors.New("Cannot create address with invalid network.")
}
voutList[i].ScriptPubKey.Addresses[j] = addr.EncodeAddress()
} }
} }
} }
return voutList, nil return voutList, nil

View file

@ -340,12 +340,19 @@ func handleNotifyNewTXs(s *rpcServer, cmd btcjson.Cmd,
} }
for _, addr := range notifyCmd.Addresses { for _, addr := range notifyCmd.Addresses {
hash, _, err := btcutil.DecodeAddress(addr) addr, err := btcutil.DecodeAddr(addr)
if err != nil { if err != nil {
return fmt.Errorf("cannot decode address: %v", err) return fmt.Errorf("cannot decode address: %v", err)
} }
s.ws.AddTxRequest(walletNotification, rc, string(hash),
cmd.Id()) // TODO(jrick) Notifing for non-P2PKH addresses is currently
// unsuported.
if _, ok := addr.(*btcutil.AddressPubKeyHash); !ok {
return fmt.Errorf("address is not P2PKH: %v", addr.EncodeAddress())
}
s.ws.AddTxRequest(walletNotification, rc,
string(addr.ScriptAddress()), cmd.Id())
} }
mreply, _ := json.Marshal(reply) mreply, _ := json.Marshal(reply)
@ -423,13 +430,13 @@ func handleRescan(s *rpcServer, cmd btcjson.Cmd,
if st != btcscript.ScriptAddr || err != nil { if st != btcscript.ScriptAddr || err != nil {
continue continue
} }
txaddr, err := btcutil.EncodeAddress(txaddrhash, s.server.btcnet) txaddr, err := btcutil.NewAddressPubKeyHash(txaddrhash, s.server.btcnet)
if err != nil { if err != nil {
rpcsLog.Errorf("Error encoding address: %v", err) rpcsLog.Errorf("Error creating address: %v", err)
return err return err
} }
if _, ok := rescanCmd.Addresses[txaddr]; ok { if _, ok := rescanCmd.Addresses[txaddr.EncodeAddress()]; ok {
// TODO(jrick): This lookup is expensive and can be avoided // TODO(jrick): This lookup is expensive and can be avoided
// if the wallet is sent the previous outpoints for all inputs // if the wallet is sent the previous outpoints for all inputs
// of the tx, so any can removed from the utxo set (since // of the tx, so any can removed from the utxo set (since
@ -460,7 +467,7 @@ func handleRescan(s *rpcServer, cmd btcjson.Cmd,
PkScript string `json:"pkscript"` PkScript string `json:"pkscript"`
Spent bool `json:"spent"` Spent bool `json:"spent"`
}{ }{
Receiver: txaddr, Receiver: txaddr.EncodeAddress(),
Height: blk.Height(), Height: blk.Height(),
BlockHash: blkshalist[i].String(), BlockHash: blkshalist[i].String(),
BlockIndex: tx.Index(), BlockIndex: tx.Index(),
@ -784,9 +791,9 @@ func (s *rpcServer) NotifyForTxOuts(tx *btcutil.Tx, block *btcutil.Block) {
for e := idlist.Front(); e != nil; e = e.Next() { for e := idlist.Front(); e != nil; e = e.Next() {
ctx := e.Value.(*notificationCtx) ctx := e.Value.(*notificationCtx)
txaddr, err := btcutil.EncodeAddress(txaddrhash, s.server.btcnet) txaddr, err := btcutil.NewAddressPubKeyHash(txaddrhash, s.server.btcnet)
if err != nil { if err != nil {
rpcsLog.Error("Error encoding address; dropping Tx notification.") rpcsLog.Debugf("Error creating address; dropping Tx notification.")
break break
} }
@ -802,7 +809,7 @@ func (s *rpcServer) NotifyForTxOuts(tx *btcutil.Tx, block *btcutil.Block) {
Amount int64 `json:"amount"` Amount int64 `json:"amount"`
PkScript string `json:"pkscript"` PkScript string `json:"pkscript"`
}{ }{
Receiver: txaddr, Receiver: txaddr.EncodeAddress(),
TxID: tx.Sha().String(), TxID: tx.Sha().String(),
TxOutIndex: uint32(i), TxOutIndex: uint32(i),
Amount: txout.Value, Amount: txout.Value,