// AddUnconfirmedTx handle wallet status update when tx add into txpool
func (w *Wallet) AddUnconfirmedTx(txD *protocol.TxDesc) {
if err := w.saveUnconfirmedTx(txD.Tx); err != nil {
- log.WithField("err", err).Error("wallet fail on saveUnconfirmedTx")
+ log.WithFields(log.Fields{"module": logModule, "err": err}).Error("wallet fail on saveUnconfirmedTx")
}
utxos := txOutToUtxos(txD.Tx, txD.StatusFail, 0)
// RemoveUnconfirmedTx handle wallet status update when tx removed from txpool
func (w *Wallet) RemoveUnconfirmedTx(txD *protocol.TxDesc) {
+ if !w.checkRelatedTransaction(txD.Tx) {
+ return
+ }
+ w.DB.Delete(calcUnconfirmedTxKey(txD.Tx.ID.String()))
w.AccountMgr.RemoveUnconfirmedUtxo(txD.Tx.ResultIds)
}
func (w *Wallet) buildAnnotatedUnconfirmedTx(tx *types.Tx) *query.AnnotatedTx {
annotatedTx := &query.AnnotatedTx{
ID: tx.ID,
- Timestamp: uint64(time.Now().Unix()),
+ Timestamp: uint64(time.Now().UnixNano() / int64(time.Millisecond)),
Inputs: make([]*query.AnnotatedInput, 0, len(tx.Inputs)),
Outputs: make([]*query.AnnotatedOutput, 0, len(tx.Outputs)),
Size: tx.SerializedSize,
func (w *Wallet) checkRelatedTransaction(tx *types.Tx) bool {
for _, v := range tx.Outputs {
var hash [32]byte
- sha3pool.Sum256(hash[:], v.ControlProgram)
+ sha3pool.Sum256(hash[:], v.ControlProgram())
if bytes := w.DB.Get(account.ContractKey(hash)); bytes != nil {
return true
}
//delUnconfirmedTx periodically delete locally stored timeout did not confirm txs
func (w *Wallet) delUnconfirmedTx() {
if err := w.delExpiredTxs(); err != nil {
- log.WithField("err", err).Error("wallet fail on delUnconfirmedTx")
+ log.WithFields(log.Fields{"module": logModule, "err": err}).Error("wallet fail on delUnconfirmedTx")
return
}
ticker := time.NewTicker(UnconfirmedTxCheckPeriod)
for {
<-ticker.C
if err := w.delExpiredTxs(); err != nil {
- log.WithField("err", err).Error("wallet fail on delUnconfirmedTx")
+ log.WithFields(log.Fields{"module": logModule, "err": err}).Error("wallet fail on delUnconfirmedTx")
}
}
}