diff --git a/src/main/java/org/qortal/api/resource/CrossChainResource.java b/src/main/java/org/qortal/api/resource/CrossChainResource.java index 7a6c2c96..d1692b71 100644 --- a/src/main/java/org/qortal/api/resource/CrossChainResource.java +++ b/src/main/java/org/qortal/api/resource/CrossChainResource.java @@ -262,6 +262,7 @@ public class CrossChainResource { // We want both a minimum of 5 trades and enough trades to span at least 4 hours int minimumCount = 5; + int maximumCount = 10; long minimumPeriod = 4 * 60 * 60 * 1000L; // ms Boolean isFinished = Boolean.TRUE; @@ -276,7 +277,7 @@ public class CrossChainResource { ACCT acct = acctInfo.getValue().get(); List atStates = repository.getATRepository().getMatchingFinalATStatesQuorum(codeHash, - isFinished, acct.getModeByteOffset(), (long) AcctMode.REDEEMED.value, minimumCount, minimumPeriod); + isFinished, acct.getModeByteOffset(), (long) AcctMode.REDEEMED.value, minimumCount, maximumCount, minimumPeriod); for (ATStateData atState : atStates) { CrossChainTradeData crossChainTradeData = acct.populateTradeData(repository, atState); diff --git a/src/main/java/org/qortal/repository/ATRepository.java b/src/main/java/org/qortal/repository/ATRepository.java index 0854a21c..5516ac28 100644 --- a/src/main/java/org/qortal/repository/ATRepository.java +++ b/src/main/java/org/qortal/repository/ATRepository.java @@ -98,7 +98,7 @@ public interface ATRepository { */ public List getMatchingFinalATStatesQuorum(byte[] codeHash, Boolean isFinished, Integer dataByteOffset, Long expectedValue, - int minimumCount, long minimumPeriod) throws DataException; + int minimumCount, int maximumCount, long minimumPeriod) throws DataException; /** * Returns all ATStateData for a given block height. diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBATRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBATRepository.java index f82e4e62..8193c5d2 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBATRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBATRepository.java @@ -454,7 +454,7 @@ public class HSQLDBATRepository implements ATRepository { @Override public List getMatchingFinalATStatesQuorum(byte[] codeHash, Boolean isFinished, Integer dataByteOffset, Long expectedValue, - int minimumCount, long minimumPeriod) throws DataException { + int minimumCount, int maximumCount, long minimumPeriod) throws DataException { // We need most recent entry first so we can use its timestamp to slice further results List mostRecentStates = this.getMatchingFinalATStates(codeHash, isFinished, dataByteOffset, expectedValue, null, @@ -510,7 +510,8 @@ public class HSQLDBATRepository implements ATRepository { bindParams.add(minimumHeight); bindParams.add(minimumCount); - sql.append("ORDER BY FinalATStates.height DESC"); + sql.append("ORDER BY FinalATStates.height DESC LIMIT ?"); + bindParams.add(maximumCount); List atStates = new ArrayList<>();