From 586b1c0fe48f6fa6484ad5fcd9cbd031125aaca5 Mon Sep 17 00:00:00 2001 From: Mike Greenberg Date: Wed, 7 Aug 2019 21:37:27 -0400 Subject: [PATCH] Update latest fixes from multiwallet dep --- Godeps/Godeps.json | 38 +++++++------- .../OpenBazaar/multiwallet/.golangci.yml | 52 +++++++++++++++++++ .../OpenBazaar/multiwallet/.travis.yml | 10 ++-- .../OpenBazaar/multiwallet/Gopkg.lock | 48 ++++++++++++++++- .../OpenBazaar/multiwallet/Gopkg.toml | 4 -- .../OpenBazaar/multiwallet/bitcoin/wallet.go | 34 ++++++++---- .../multiwallet/bitcoincash/sign.go | 2 +- .../multiwallet/bitcoincash/wallet.go | 1 + .../OpenBazaar/multiwallet/litecoin/wallet.go | 39 ++++++++------ .../OpenBazaar/multiwallet/multiwallet.go | 2 +- .../multiwallet/service/wallet_service.go | 4 +- .../OpenBazaar/multiwallet/zcash/wallet.go | 43 +++++++++++---- 12 files changed, 208 insertions(+), 69 deletions(-) create mode 100644 vendor/github.com/OpenBazaar/multiwallet/.golangci.yml diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index a96c425cfb..ee3557633d 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -50,75 +50,75 @@ }, { "ImportPath": "github.com/OpenBazaar/multiwallet", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/bitcoin", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/bitcoincash", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/cache", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/client", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/client/blockbook", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/client/transport", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/config", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/datastore", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/keys", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/litecoin", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/litecoin/address", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/litecoin/params", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/model", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/service", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/util", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/zcash", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/multiwallet/zcash/address", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" }, { "ImportPath": "github.com/OpenBazaar/spvwallet", @@ -2523,7 +2523,7 @@ }, { "ImportPath": "github.com/OpenBazaar/multiwallet/client/errors", - "Rev": "5d687b8c67d127035479739cbf2258f7b275f3e7" + "Rev": "1502de26127aef5680ece9892095080f5c285677" } ] } diff --git a/vendor/github.com/OpenBazaar/multiwallet/.golangci.yml b/vendor/github.com/OpenBazaar/multiwallet/.golangci.yml new file mode 100644 index 0000000000..e386637b73 --- /dev/null +++ b/vendor/github.com/OpenBazaar/multiwallet/.golangci.yml @@ -0,0 +1,52 @@ +run: + skip-dirs: + - vendor + +issues: + max-per-linter: 99999 + max-same: 99999 + exclude: + - composite literal uses unkeyed fields + +linters-settings: + errcheck: + check-type-assertions: false + check-blank: false + unparam: + algo: cha + check-exported: false + nakedret: + max-func-lines: 0 + misspell: + locale: US + dupl: + threshold: 600 + gocyclo: + min-complexity: 180 + lll: + line-length: 750 + +linters: + enable: + - unconvert + - gofmt + - ineffassign + - staticcheck + - structcheck + - unused + - varcheck + - deadcode + - gosimple + - gocyclo + - lll + - goconst + - govet + - megacheck + disable: + - dupl + - nakedret + - unparam + - goimports + - errcheck + - golint + - prealloc diff --git a/vendor/github.com/OpenBazaar/multiwallet/.travis.yml b/vendor/github.com/OpenBazaar/multiwallet/.travis.yml index 37e4f20d25..cf81ad5677 100644 --- a/vendor/github.com/OpenBazaar/multiwallet/.travis.yml +++ b/vendor/github.com/OpenBazaar/multiwallet/.travis.yml @@ -1,16 +1,20 @@ language: go go: - - 1.11 + - "1.11" sudo: required services: - docker env: - "PATH=/home/travis/gopath/bin:$PATH" before_install: + - curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh - go get github.com/tcnksm/ghr - go get github.com/axw/gocov/gocov - go get github.com/mattn/goveralls + - curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | bash -s -- -b $GOPATH/bin v1.15.0 +install: + - dep ensure script: - - diff -u <(echo -n) <(gofmt -d -s $(find . -type f -name '*.go' -not -path "./cmd/*" -not -path "./cli/*" -not -path "./api/*")) + - $GOPATH/bin/golangci-lint run --deadline 10m --new - cd $TRAVIS_BUILD_DIR && chmod a+x test_compile.sh && ./test_compile.sh - - goveralls -coverprofile=coverage.out -service travis-ci \ No newline at end of file + - goveralls -coverprofile=coverage.out -service travis-ci diff --git a/vendor/github.com/OpenBazaar/multiwallet/Gopkg.lock b/vendor/github.com/OpenBazaar/multiwallet/Gopkg.lock index c0f4338b2e..4d2683b2f5 100644 --- a/vendor/github.com/OpenBazaar/multiwallet/Gopkg.lock +++ b/vendor/github.com/OpenBazaar/multiwallet/Gopkg.lock @@ -26,11 +26,11 @@ [[projects]] branch = "master" - digest = "1:0efd5e1f5ad2283a539357586532519154e3b9894ad611a896069c8c46e86874" + digest = "1:cdb20ba34409b4eb78ff013e71eafce40e49b42485dafcfb675b64c5cb3cdaca" name = "github.com/OpenBazaar/wallet-interface" packages = ["."] pruneopts = "UT" - revision = "90321224966c0c88e02e99f1f9d3cef18a77f399" + revision = "aa8e214acd9b86f0c7a190d2eaf269070f5b5f3c" [[projects]] digest = "1:0f98f59e9a2f4070d66f0c9c39561f68fcd1dc837b22a852d28d0003aebd1b1e" @@ -159,6 +159,47 @@ revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73" version = "v1.1.1" +[[projects]] + digest = "1:1e9a0ec4f7e852123fefad9aadd7647eed1e9fd3716118e99a4b3dc463705c82" + name = "github.com/dchest/siphash" + packages = ["."] + pruneopts = "UT" + revision = "34f201214d993633bb24f418ba11736ab8b55aa7" + version = "v1.2.1" + +[[projects]] + digest = "1:700f82416846a964010b86fddeada0e1ceb1c96fa65acc4f234811a7d3e4fded" + name = "github.com/gcash/bchd" + packages = [ + "bchec", + "chaincfg", + "chaincfg/chainhash", + "txscript", + "wire", + ] + pruneopts = "UT" + revision = "34d8b67e58c8487e08cc2b8130398ec4f4bc6df5" + version = "v0.14.6" + +[[projects]] + branch = "master" + digest = "1:b1053b781e9090dab5d3e916eb04c8d85b63a7f6911007c2cd1dd82fb22f7f6a" + name = "github.com/gcash/bchlog" + packages = ["."] + pruneopts = "UT" + revision = "b4f036f92fa66c88eec458f4531ff14ff87704d6" + +[[projects]] + branch = "master" + digest = "1:2538b5efd7d3d7ac9efdfef955f5bcda82cbec4d6f8aef4d388f1c70e6318fc5" + name = "github.com/gcash/bchutil" + packages = [ + ".", + "base58", + ] + pruneopts = "UT" + revision = "800e62fe9aff291db8909a5dbf35c23cff8d1a62" + [[projects]] branch = "master" digest = "1:a54f931f516df9f3b2401e3cfa47482be79397d20fcbe838b7da6c63d5b8e615" @@ -406,6 +447,9 @@ "github.com/cpacia/BitcoinCash-Wallet", "github.com/cpacia/BitcoinCash-Wallet/exchangerates", "github.com/cpacia/bchutil", + "github.com/gcash/bchd/chaincfg/chainhash", + "github.com/gcash/bchd/txscript", + "github.com/gcash/bchd/wire", "github.com/golang/protobuf/proto", "github.com/golang/protobuf/ptypes/timestamp", "github.com/gorilla/websocket", diff --git a/vendor/github.com/OpenBazaar/multiwallet/Gopkg.toml b/vendor/github.com/OpenBazaar/multiwallet/Gopkg.toml index b212f04636..5f64b6d8fa 100644 --- a/vendor/github.com/OpenBazaar/multiwallet/Gopkg.toml +++ b/vendor/github.com/OpenBazaar/multiwallet/Gopkg.toml @@ -25,10 +25,6 @@ # unused-packages = true -[[constraint]] - branch = "master" - name = "github.com/OpenBazaar/go-ethwallet" - [[constraint]] branch = "master" name = "github.com/OpenBazaar/golang-socketio" diff --git a/vendor/github.com/OpenBazaar/multiwallet/bitcoin/wallet.go b/vendor/github.com/OpenBazaar/multiwallet/bitcoin/wallet.go index b485301204..2e022f8bc1 100644 --- a/vendor/github.com/OpenBazaar/multiwallet/bitcoin/wallet.go +++ b/vendor/github.com/OpenBazaar/multiwallet/bitcoin/wallet.go @@ -8,6 +8,13 @@ import ( "io" "time" + "github.com/OpenBazaar/multiwallet/cache" + "github.com/OpenBazaar/multiwallet/client" + "github.com/OpenBazaar/multiwallet/config" + "github.com/OpenBazaar/multiwallet/keys" + "github.com/OpenBazaar/multiwallet/model" + "github.com/OpenBazaar/multiwallet/service" + "github.com/OpenBazaar/multiwallet/util" "github.com/OpenBazaar/spvwallet" "github.com/OpenBazaar/spvwallet/exchangerates" wi "github.com/OpenBazaar/wallet-interface" @@ -18,16 +25,9 @@ import ( btc "github.com/btcsuite/btcutil" hd "github.com/btcsuite/btcutil/hdkeychain" "github.com/btcsuite/btcwallet/wallet/txrules" + logging "github.com/op/go-logging" bip39 "github.com/tyler-smith/go-bip39" "golang.org/x/net/proxy" - - "github.com/OpenBazaar/multiwallet/cache" - "github.com/OpenBazaar/multiwallet/client" - "github.com/OpenBazaar/multiwallet/config" - "github.com/OpenBazaar/multiwallet/keys" - "github.com/OpenBazaar/multiwallet/model" - "github.com/OpenBazaar/multiwallet/service" - "github.com/OpenBazaar/multiwallet/util" ) type BitcoinWallet struct { @@ -42,6 +42,7 @@ type BitcoinWallet struct { mPubKey *hd.ExtendedKey exchangeRates wi.ExchangeRates + log *logging.Logger } func NewBitcoinWallet(cfg config.CoinConfig, mnemonic string, params *chaincfg.Params, proxy proxy.Dialer, cache cache.Cacher, disableExchangeRates bool) (*BitcoinWallet, error) { @@ -76,7 +77,18 @@ func NewBitcoinWallet(cfg config.CoinConfig, mnemonic string, params *chaincfg.P fp := spvwallet.NewFeeProvider(cfg.MaxFee, cfg.HighFee, cfg.MediumFee, cfg.LowFee, cfg.FeeAPI, proxy) - return &BitcoinWallet{cfg.DB, km, params, c, wm, fp, mPrivKey, mPubKey, er}, nil + return &BitcoinWallet{ + db: cfg.DB, + km: km, + params: params, + client: c, + ws: wm, + fp: fp, + mPrivKey: mPrivKey, + mPubKey: mPubKey, + exchangeRates: er, + log: logging.MustGetLogger("bitcoin-wallet"), + }, nil } func keyToAddress(key *hd.ExtendedKey, params *chaincfg.Params) (btc.Address, error) { @@ -223,10 +235,10 @@ func (w *BitcoinWallet) GetTransaction(txid chainhash.Hash) (wi.Txn, error) { } outs := []wi.TransactionOutput{} for i, out := range tx.TxOut { - var addr btcutil.Address + var addr btc.Address _, addrs, _, err := txscript.ExtractPkScriptAddrs(out.PkScript, w.params) if err != nil { - log.Printf("error extracting address from txn pkscript: %v\n", err) + w.log.Errorf("error extracting address from txn pkscript: %v\n", err) } if len(addrs) == 0 { addr = nil diff --git a/vendor/github.com/OpenBazaar/multiwallet/bitcoincash/sign.go b/vendor/github.com/OpenBazaar/multiwallet/bitcoincash/sign.go index 5f182b2808..dd3dc5bd19 100644 --- a/vendor/github.com/OpenBazaar/multiwallet/bitcoincash/sign.go +++ b/vendor/github.com/OpenBazaar/multiwallet/bitcoincash/sign.go @@ -288,7 +288,7 @@ func (w *BitcoinCashWallet) bumpFee(txid chainhash.Hash) (*chainhash.Hash, error LinkedAddress: addr, OutpointIndex: u.Op.Index, OutpointHash: h, - Value: int64(u.Value), + Value: u.Value, } transactionID, err := w.sweepAddress([]wi.TransactionInput{in}, nil, key, nil, wi.FEE_BUMP) if err != nil { diff --git a/vendor/github.com/OpenBazaar/multiwallet/bitcoincash/wallet.go b/vendor/github.com/OpenBazaar/multiwallet/bitcoincash/wallet.go index cc2600521d..650bd83136 100644 --- a/vendor/github.com/OpenBazaar/multiwallet/bitcoincash/wallet.go +++ b/vendor/github.com/OpenBazaar/multiwallet/bitcoincash/wallet.go @@ -5,6 +5,7 @@ import ( "encoding/hex" "fmt" "io" + "log" "time" wi "github.com/OpenBazaar/wallet-interface" diff --git a/vendor/github.com/OpenBazaar/multiwallet/litecoin/wallet.go b/vendor/github.com/OpenBazaar/multiwallet/litecoin/wallet.go index 4099c07fc3..74c8fdd75f 100644 --- a/vendor/github.com/OpenBazaar/multiwallet/litecoin/wallet.go +++ b/vendor/github.com/OpenBazaar/multiwallet/litecoin/wallet.go @@ -7,6 +7,14 @@ import ( "io" "time" + "github.com/OpenBazaar/multiwallet/cache" + "github.com/OpenBazaar/multiwallet/client" + "github.com/OpenBazaar/multiwallet/config" + "github.com/OpenBazaar/multiwallet/keys" + laddr "github.com/OpenBazaar/multiwallet/litecoin/address" + "github.com/OpenBazaar/multiwallet/model" + "github.com/OpenBazaar/multiwallet/service" + "github.com/OpenBazaar/multiwallet/util" wi "github.com/OpenBazaar/wallet-interface" "github.com/btcsuite/btcd/chaincfg" "github.com/btcsuite/btcd/chaincfg/chainhash" @@ -15,17 +23,9 @@ import ( hd "github.com/btcsuite/btcutil/hdkeychain" "github.com/ltcsuite/ltcutil" "github.com/ltcsuite/ltcwallet/wallet/txrules" + logging "github.com/op/go-logging" "github.com/tyler-smith/go-bip39" "golang.org/x/net/proxy" - - "github.com/OpenBazaar/multiwallet/cache" - "github.com/OpenBazaar/multiwallet/client" - "github.com/OpenBazaar/multiwallet/config" - "github.com/OpenBazaar/multiwallet/keys" - laddr "github.com/OpenBazaar/multiwallet/litecoin/address" - "github.com/OpenBazaar/multiwallet/model" - "github.com/OpenBazaar/multiwallet/service" - "github.com/OpenBazaar/multiwallet/util" ) type LitecoinWallet struct { @@ -40,6 +40,7 @@ type LitecoinWallet struct { mPubKey *hd.ExtendedKey exchangeRates wi.ExchangeRates + log *logging.Logger } func NewLitecoinWallet(cfg config.CoinConfig, mnemonic string, params *chaincfg.Params, proxy proxy.Dialer, cache cache.Cacher, disableExchangeRates bool) (*LitecoinWallet, error) { @@ -74,7 +75,18 @@ func NewLitecoinWallet(cfg config.CoinConfig, mnemonic string, params *chaincfg. fp := util.NewFeeDefaultProvider(cfg.MaxFee, cfg.HighFee, cfg.MediumFee, cfg.LowFee) - return &LitecoinWallet{cfg.DB, km, params, c, wm, fp, mPrivKey, mPubKey, er}, nil + return &LitecoinWallet{ + db: cfg.DB, + km: km, + params: params, + client: c, + ws: wm, + fp: fp, + mPrivKey: mPrivKey, + mPubKey: mPubKey, + exchangeRates: er, + log: logging.MustGetLogger("litecoin-wallet"), + }, nil } func litecoinAddress(key *hd.ExtendedKey, params *chaincfg.Params) (btcutil.Address, error) { @@ -160,10 +172,7 @@ func (w *LitecoinWallet) AddressToScript(addr btcutil.Address) ([]byte, error) { func (w *LitecoinWallet) HasKey(addr btcutil.Address) bool { _, err := w.km.GetKeyForScript(addr.ScriptAddress()) - if err != nil { - return false - } - return true + return err == nil } func (w *LitecoinWallet) Balance() (confirmed, unconfirmed int64) { @@ -219,7 +228,7 @@ func (w *LitecoinWallet) GetTransaction(txid chainhash.Hash) (wi.Txn, error) { for i, out := range tx.TxOut { addr, err := laddr.ExtractPkScriptAddrs(out.PkScript, w.params) if err != nil { - log.Printf("error extracting address from txn pkscript: %v\n", err) + w.log.Errorf("error extracting address from txn pkscript: %v\n", err) } tout := wi.TransactionOutput{ Address: addr, diff --git a/vendor/github.com/OpenBazaar/multiwallet/multiwallet.go b/vendor/github.com/OpenBazaar/multiwallet/multiwallet.go index 5bb297479f..e9e10cedc9 100644 --- a/vendor/github.com/OpenBazaar/multiwallet/multiwallet.go +++ b/vendor/github.com/OpenBazaar/multiwallet/multiwallet.go @@ -112,7 +112,7 @@ func (w *MultiWallet) Close() { func (w *MultiWallet) WalletForCurrencyCode(currencyCode string) (wallet.Wallet, error) { for _, wl := range *w { - if strings.ToUpper(wl.CurrencyCode()) == strings.ToUpper(currencyCode) || strings.ToUpper(wl.CurrencyCode()) == "T"+strings.ToUpper(currencyCode) { + if strings.EqualFold(wl.CurrencyCode(), currencyCode) || strings.EqualFold(wl.CurrencyCode(), "T"+currencyCode) { return wl, nil } } diff --git a/vendor/github.com/OpenBazaar/multiwallet/service/wallet_service.go b/vendor/github.com/OpenBazaar/multiwallet/service/wallet_service.go index 9d3b53caef..c26d12e755 100644 --- a/vendor/github.com/OpenBazaar/multiwallet/service/wallet_service.go +++ b/vendor/github.com/OpenBazaar/multiwallet/service/wallet_service.go @@ -104,7 +104,7 @@ func (ws *WalletService) ChainTip() (uint32, chainhash.Hash) { if err != nil { Log.Errorf("producing BestBlock hash: %s", err.Error()) } - return uint32(ws.chainHeight), *ch + return ws.chainHeight, *ch } func (ws *WalletService) AddTransactionListener(callback func(callback wallet.TransactionCallback)) { @@ -160,7 +160,7 @@ func (ws *WalletService) ProcessIncomingTransaction(tx model.Transaction) { utxo := model.Utxo{ Txid: tx.Txid, ScriptPubKey: out.ScriptPubKey.Hex, - Satoshis: int64(math.Round(out.Value * float64(util.SatoshisPerCoin(ws.coinType)))), + Satoshis: int64(math.Round(out.Value * util.SatoshisPerCoin(ws.coinType))), Vout: out.N, Address: addr, Confirmations: 0, diff --git a/vendor/github.com/OpenBazaar/multiwallet/zcash/wallet.go b/vendor/github.com/OpenBazaar/multiwallet/zcash/wallet.go index bca2cabb6f..32b738e053 100644 --- a/vendor/github.com/OpenBazaar/multiwallet/zcash/wallet.go +++ b/vendor/github.com/OpenBazaar/multiwallet/zcash/wallet.go @@ -1,11 +1,20 @@ package zcash import ( + "bytes" "encoding/hex" "fmt" "io" "time" + "github.com/OpenBazaar/multiwallet/cache" + "github.com/OpenBazaar/multiwallet/client" + "github.com/OpenBazaar/multiwallet/config" + "github.com/OpenBazaar/multiwallet/keys" + "github.com/OpenBazaar/multiwallet/model" + "github.com/OpenBazaar/multiwallet/service" + "github.com/OpenBazaar/multiwallet/util" + zaddr "github.com/OpenBazaar/multiwallet/zcash/address" wi "github.com/OpenBazaar/wallet-interface" "github.com/btcsuite/btcd/chaincfg" "github.com/btcsuite/btcd/chaincfg/chainhash" @@ -13,17 +22,9 @@ import ( "github.com/btcsuite/btcutil" hd "github.com/btcsuite/btcutil/hdkeychain" "github.com/btcsuite/btcwallet/wallet/txrules" + logging "github.com/op/go-logging" "github.com/tyler-smith/go-bip39" "golang.org/x/net/proxy" - - "github.com/OpenBazaar/multiwallet/cache" - "github.com/OpenBazaar/multiwallet/client" - "github.com/OpenBazaar/multiwallet/config" - "github.com/OpenBazaar/multiwallet/keys" - "github.com/OpenBazaar/multiwallet/model" - "github.com/OpenBazaar/multiwallet/service" - "github.com/OpenBazaar/multiwallet/util" - zaddr "github.com/OpenBazaar/multiwallet/zcash/address" ) type ZCashWallet struct { @@ -38,6 +39,7 @@ type ZCashWallet struct { mPubKey *hd.ExtendedKey exchangeRates wi.ExchangeRates + log *logging.Logger } func NewZCashWallet(cfg config.CoinConfig, mnemonic string, params *chaincfg.Params, proxy proxy.Dialer, cache cache.Cacher, disableExchangeRates bool) (*ZCashWallet, error) { @@ -73,7 +75,18 @@ func NewZCashWallet(cfg config.CoinConfig, mnemonic string, params *chaincfg.Par fp := util.NewFeeDefaultProvider(cfg.MaxFee, cfg.HighFee, cfg.MediumFee, cfg.LowFee) - return &ZCashWallet{cfg.DB, km, params, c, wm, fp, mPrivKey, mPubKey, er}, nil + return &ZCashWallet{ + db: cfg.DB, + km: km, + params: params, + client: c, + ws: wm, + fp: fp, + mPrivKey: mPrivKey, + mPubKey: mPubKey, + exchangeRates: er, + log: logging.MustGetLogger("zcash-wallet"), + }, nil } func zcashCashAddress(key *hd.ExtendedKey, params *chaincfg.Params) (btcutil.Address, error) { @@ -173,6 +186,14 @@ func (w *ZCashWallet) HasKey(addr btcutil.Address) bool { func (w *ZCashWallet) Balance() (confirmed, unconfirmed int64) { utxos, _ := w.db.Utxos().GetAll() txns, _ := w.db.Txns().GetAll(false) + // Zcash transactions have additional data embedded in them + // that is not expected by the BtcDecode deserialize function. + // We strip off the extra data here so the derserialize function + // does not error. This will have no affect on the balance calculation + // as the metadata is not used in the calculation. + for i, tx := range txns { + txns[i].Bytes = tx.Bytes[4 : len(tx.Bytes)-15] + } return util.CalcBalance(utxos, txns) } @@ -223,7 +244,7 @@ func (w *ZCashWallet) GetTransaction(txid chainhash.Hash) (wi.Txn, error) { for i, out := range tx.TxOut { addr, err := zaddr.ExtractPkScriptAddrs(out.PkScript, w.params) if err != nil { - log.Printf("error extracting address from txn pkscript: %v\n", err) + w.log.Errorf("error extracting address from txn pkscript: %v\n", err) } tout := wi.TransactionOutput{ Address: addr,