forked from Qortal/qortal
Change Transaction.countUnconfirmedByCreator() to disregard CHAT transactions.
This is because CHAT transactions have intrinsic anti-spam/DoS prevention by requiring proof of work.
This commit is contained in:
parent
e2916b130b
commit
e9f29767c8
@ -67,7 +67,7 @@ public class Settings {
|
||||
// Specific to this node
|
||||
private boolean wipeUnconfirmedOnStart = false;
|
||||
/** Maximum number of unconfirmed transactions allowed per account */
|
||||
private int maxUnconfirmedPerAccount = 100;
|
||||
private int maxUnconfirmedPerAccount = 25;
|
||||
/** Max milliseconds into future for accepting new, unconfirmed transactions */
|
||||
private int maxTransactionTimestampFuture = 24 * 60 * 60 * 1000; // milliseconds
|
||||
/** Whether we check, fetch and install auto-updates */
|
||||
|
@ -8,6 +8,7 @@ import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@ -578,16 +579,16 @@ public abstract class Transaction {
|
||||
private int countUnconfirmedByCreator(PublicKeyAccount creator) throws DataException {
|
||||
List<TransactionData> unconfirmedTransactions = repository.getTransactionRepository().getUnconfirmedTransactions();
|
||||
|
||||
int count = 0;
|
||||
for (TransactionData unconfirmedTransactionData : unconfirmedTransactions) {
|
||||
Transaction transaction = Transaction.fromData(repository, unconfirmedTransactionData);
|
||||
PublicKeyAccount otherCreator = transaction.getCreator();
|
||||
// We exclude CHAT transactions as they never get included into blocks and
|
||||
// have spam/DoS prevention by requiring proof of work
|
||||
Predicate<TransactionData> hasSameCreatorButNotChat = transactionData -> {
|
||||
if (transactionData.getType() == TransactionType.CHAT)
|
||||
return false;
|
||||
|
||||
if (Arrays.equals(creator.getPublicKey(), otherCreator.getPublicKey()))
|
||||
++count;
|
||||
}
|
||||
return Arrays.equals(creator.getPublicKey(), transactionData.getCreatorPublicKey());
|
||||
};
|
||||
|
||||
return count;
|
||||
return (int) unconfirmedTransactions.stream().filter(hasSameCreatorButNotChat).count();
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user