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