}
// 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
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
}
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)
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
}
}