diff --git a/domain/miningmanager/mempool/transactions_pool.go b/domain/miningmanager/mempool/transactions_pool.go index 63908ee77..1c995d5f5 100644 --- a/domain/miningmanager/mempool/transactions_pool.go +++ b/domain/miningmanager/mempool/transactions_pool.go @@ -138,6 +138,11 @@ func (tp *transactionsPool) allReadyTransactions() []*externalapi.DomainTransact if len(mempoolTransaction.ParentTransactionsInPool()) == 0 { result = append(result, mempoolTransaction.Transaction().Clone()) //this pointer leaves the mempool, and gets its utxo set to nil, hence we clone. } + + if numOutsLessThanOneKas, isSpamming := isTXSpamming(mempoolTransaction.Transaction()); isSpamming { + log.Warnf("Filtered from allReadyTransactions transaction %s with %d outputs with less than 1 KAS", mempoolTransaction.TransactionID(), numOutsLessThanOneKas) + continue + } } return result diff --git a/domain/miningmanager/mempool/validate_and_insert_transaction.go b/domain/miningmanager/mempool/validate_and_insert_transaction.go index e561f0fb9..7c21491bd 100644 --- a/domain/miningmanager/mempool/validate_and_insert_transaction.go +++ b/domain/miningmanager/mempool/validate_and_insert_transaction.go @@ -17,15 +17,8 @@ func (mp *mempool) validateAndInsertTransaction(transaction *externalapi.DomainT fmt.Sprintf("validateAndInsertTransaction %s", consensushashing.TransactionID(transaction))) defer onEnd() - numOutsLessThanOneKas := 0 - for _, output := range transaction.Outputs { - if output.Value < constants.SompiPerKaspa { - numOutsLessThanOneKas += 1 - } - } - - if numOutsLessThanOneKas > len(transaction.Inputs) { - log.Warnf("Rejected transaction with %d outputs with less than 1 KAS") + if numOutsLessThanOneKas, isSpamming := isTXSpamming(transaction); isSpamming { + log.Warnf("Rejected from mempool transaction %s with %d outputs with less than 1 KAS", consensushashing.TransactionID(transaction), numOutsLessThanOneKas) return nil, nil } @@ -76,3 +69,14 @@ func (mp *mempool) validateAndInsertTransaction(transaction *externalapi.DomainT return acceptedTransactions, nil } + +func isTXSpamming(transaction *externalapi.DomainTransaction) (int, bool) { + numOutsLessThanOneKas := 0 + for _, output := range transaction.Outputs { + if output.Value < constants.SompiPerKaspa { + numOutsLessThanOneKas += 1 + } + } + + return numOutsLessThanOneKas, numOutsLessThanOneKas > len(transaction.Inputs) +}