Replace queue by stack in GetRedeemer (#1802)

This commit is contained in:
Constantine Bitensky 2021-07-15 15:02:06 +03:00 committed by GitHub
parent 60e7a8ebed
commit c731d74bc0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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