OSDN Git Service

update GetUnconfirmedTransaction
authorChengcheng Zhang <943420582@qq.com>
Fri, 28 Jun 2019 08:15:03 +0000 (16:15 +0800)
committerChengcheng Zhang <943420582@qq.com>
Fri, 28 Jun 2019 08:15:03 +0000 (16:15 +0800)
database/wallet_store.go
wallet/store.go
wallet/unconfirmed.go

index 3d3c3bb..f21d067 100644 (file)
@@ -371,8 +371,16 @@ func (store *WalletStore) GetUnconfirmedTransactions() ([]*query.AnnotatedTx, er
 }
 
 // GetUnconfirmedTransaction get unconfirmed tx by txID
-func (store *WalletStore) GetUnconfirmedTransaction(txID string) []byte {
-       return store.walletDB.Get(calcUnconfirmedTxKey(txID))
+func (store *WalletStore) GetUnconfirmedTransaction(txID string) (*query.AnnotatedTx, error) {
+       rawUnconfirmedTx := store.walletDB.Get(calcUnconfirmedTxKey(txID))
+       if rawUnconfirmedTx == nil {
+               return nil, fmt.Errorf("failed get unconfirmed tx, txID: %s ", txID)
+       }
+       tx := new(query.AnnotatedTx)
+       if err := json.Unmarshal(rawUnconfirmedTx, tx); err != nil {
+               return nil, err
+       }
+       return tx, nil
 }
 
 // SetUnconfirmedTransaction set unconfirmed tx by txID
index e654e73..13b2963 100644 (file)
@@ -25,7 +25,7 @@ type WalletStorer interface {
        GetGlobalTransactionIndex(string) []byte
        GetTransactions() ([]*query.AnnotatedTx, error)
        GetUnconfirmedTransactions() ([]*query.AnnotatedTx, error)
-       GetUnconfirmedTransaction(string) []byte
+       GetUnconfirmedTransaction(string) (*query.AnnotatedTx, error)
        SetUnconfirmedTransaction(string, []byte)
        DeleteStardardUTXO(bc.Hash)
        DeleteContractUTXO(bc.Hash)
index aacb181..5942965 100644 (file)
@@ -61,16 +61,13 @@ func (w *Wallet) GetUnconfirmedTxs(accountID string) ([]*query.AnnotatedTx, erro
 
 // GetUnconfirmedTxByTxID get unconfirmed transaction by txID
 func (w *Wallet) GetUnconfirmedTxByTxID(txID string) (*query.AnnotatedTx, error) {
-       annotatedTx := &query.AnnotatedTx{}
-       txInfo := w.store.GetUnconfirmedTransaction(txID)
-       if txInfo == nil {
-               return nil, fmt.Errorf("No transaction(tx_id=%s) from txpool", txID)
-       }
-
-       if err := json.Unmarshal(txInfo, annotatedTx); err != nil {
+       annotatedTx, err := w.store.GetUnconfirmedTransaction(txID)
+       if err != nil {
                return nil, err
        }
-
+       if annotatedTx == nil {
+               return nil, fmt.Errorf("No transaction(tx_id=%s) from txpool", txID)
+       }
        annotateTxsAsset(w, []*query.AnnotatedTx{annotatedTx})
        return annotatedTx, nil
 }