From 9502444bbca982fbe89100003a4f7d1c3981cda7 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Fri, 5 Nov 2021 16:31:54 +0000 Subject: [PATCH] Prevent any kind of trading unless the blockchain is fully synced --- .../qortal/api/resource/CrossChainTradeBotResource.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/org/qortal/api/resource/CrossChainTradeBotResource.java b/src/main/java/org/qortal/api/resource/CrossChainTradeBotResource.java index c3d7e397..73becab9 100644 --- a/src/main/java/org/qortal/api/resource/CrossChainTradeBotResource.java +++ b/src/main/java/org/qortal/api/resource/CrossChainTradeBotResource.java @@ -30,6 +30,7 @@ import org.qortal.api.Security; import org.qortal.api.model.crosschain.TradeBotCreateRequest; import org.qortal.api.model.crosschain.TradeBotRespondRequest; import org.qortal.asset.Asset; +import org.qortal.controller.Controller; import org.qortal.controller.tradebot.AcctTradeBot; import org.qortal.controller.tradebot.TradeBot; import org.qortal.crosschain.ForeignBlockchain; @@ -136,6 +137,9 @@ public class CrossChainTradeBotResource { if (tradeBotCreateRequest.qortAmount <= 0 || tradeBotCreateRequest.fundingQortAmount <= 0) throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.ORDER_SIZE_TOO_SMALL); + if (!Controller.getInstance().isUpToDate()) + throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.BLOCKCHAIN_NEEDS_SYNC); + try (final Repository repository = RepositoryManager.getRepository()) { // Do some simple checking first Account creator = new PublicKeyAccount(repository, tradeBotCreateRequest.creatorPublicKey); @@ -193,6 +197,9 @@ public class CrossChainTradeBotResource { if (tradeBotRespondRequest.receivingAddress == null || !Crypto.isValidAddress(tradeBotRespondRequest.receivingAddress)) throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.INVALID_ADDRESS); + if (!Controller.getInstance().isUpToDate()) + throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.BLOCKCHAIN_NEEDS_SYNC); + // Extract data from cross-chain trading AT try (final Repository repository = RepositoryManager.getRepository()) { ATData atData = fetchAtDataWithChecking(repository, atAddress);