From 588374d92caccf1dc97e6cd4d513f3a6d5f3233a Mon Sep 17 00:00:00 2001 From: Chengcheng Zhang <943420582@qq.com> Date: Fri, 28 Jun 2019 15:17:47 +0800 Subject: [PATCH] update GetStandardUTXO --- database/wallet_store.go | 12 ++++++++++-- wallet/indexer.go | 8 +++++++- wallet/store.go | 2 +- wallet/unconfirmed.go | 7 ++++++- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/database/wallet_store.go b/database/wallet_store.go index dc2af92f..1c3f9d72 100644 --- a/database/wallet_store.go +++ b/database/wallet_store.go @@ -306,8 +306,16 @@ func (store *WalletStore) SetGlobalTransactionIndex(globalTxID string, blockHash } // GetStandardUTXO get standard utxo by id -func (store *WalletStore) GetStandardUTXO(outid bc.Hash) []byte { - return store.walletDB.Get(StandardUTXOKey(outid)) +func (store *WalletStore) GetStandardUTXO(outid bc.Hash) (*acc.UTXO, error) { + rawUTXO := store.walletDB.Get(StandardUTXOKey(outid)) + if rawUTXO == nil { + return nil, fmt.Errorf("failed get standard UTXO, outputID: %s ", outid.String()) + } + UTXO := new(acc.UTXO) + if err := json.Unmarshal(rawUTXO, UTXO); err != nil { + return nil, err + } + return UTXO, nil } // GetTransaction get tx by tx index diff --git a/wallet/indexer.go b/wallet/indexer.go index 37a578c3..e86dbf94 100644 --- a/wallet/indexer.go +++ b/wallet/indexer.go @@ -115,9 +115,15 @@ transactionLoop: for _, v := range tx.Inputs { outid, err := v.SpentOutputID() if err != nil { + log.WithFields(log.Fields{"module": logModule, "err": err, "outputID": outid.String()}).Error("filterAccountTxs fail.") continue } - if bytes := w.store.GetStandardUTXO(outid); bytes != nil { + utxo, err := w.store.GetStandardUTXO(outid) + if err != nil { + log.WithFields(log.Fields{"module": logModule, "err": err, "outputID": outid.String()}).Error("filterAccountTxs fail.") + continue + } + if utxo != nil { annotatedTxs = append(annotatedTxs, w.buildAnnotatedTransaction(tx, b, statusFail, pos)) continue transactionLoop } diff --git a/wallet/store.go b/wallet/store.go index 33bd6761..f222ccef 100644 --- a/wallet/store.go +++ b/wallet/store.go @@ -20,7 +20,7 @@ type WalletStorer interface { SetTransaction(uint64, *query.AnnotatedTx) error DeleteUnconfirmedTransaction(string) SetGlobalTransactionIndex(string, *bc.Hash, uint64) - GetStandardUTXO(bc.Hash) []byte + GetStandardUTXO(bc.Hash) (*acc.UTXO, error) GetTransaction(string) ([]byte, error) GetGlobalTransaction(string) []byte GetTransactions() ([]*query.AnnotatedTx, error) diff --git a/wallet/unconfirmed.go b/wallet/unconfirmed.go index 72b1dd28..aacb1819 100644 --- a/wallet/unconfirmed.go +++ b/wallet/unconfirmed.go @@ -122,7 +122,12 @@ func (w *Wallet) checkRelatedTransaction(tx *types.Tx) bool { if err != nil { continue } - if bytes := w.store.GetStandardUTXO(outid); bytes != nil { + utxo, err := w.store.GetStandardUTXO(outid) + if err != nil { + log.WithFields(log.Fields{"module": logModule, "err": err, "outputID": outid.String()}).Error("checkRelatedTransaction fail.") + continue + } + if utxo != nil { return true } } -- 2.11.0