diff --git a/domain/miningmanager/mempool/transactions_pool.go b/domain/miningmanager/mempool/transactions_pool.go index 8fccc223f..5b58ee9c3 100644 --- a/domain/miningmanager/mempool/transactions_pool.go +++ b/domain/miningmanager/mempool/transactions_pool.go @@ -146,17 +146,18 @@ func (tp *transactionsPool) getParentTransactionsInPool( } func (tp *transactionsPool) getRedeemers(transaction *model.MempoolTransaction) []*model.MempoolTransaction { - queue := []*model.MempoolTransaction{transaction} + stack := []*model.MempoolTransaction{transaction} redeemers := []*model.MempoolTransaction{} - for len(queue) > 0 { + for len(stack) > 0 { var current *model.MempoolTransaction - current, queue = queue[0], queue[1:] + last := len(stack) - 1 + current, stack = stack[last], stack[:last] outpoint := externalapi.DomainOutpoint{TransactionID: *current.TransactionID()} for i := range current.Transaction().Outputs { outpoint.Index = uint32(i) if redeemerTransaction, ok := tp.chainedTransactionsByPreviousOutpoint[outpoint]; ok { - queue = append(queue, redeemerTransaction) + stack = append(stack, redeemerTransaction) redeemers = append(redeemers, redeemerTransaction) } }