diff --git a/src/main/java/org/qortal/api/resource/CrossChainResource.java b/src/main/java/org/qortal/api/resource/CrossChainResource.java index 44c1ee6a..ef2c72ed 100644 --- a/src/main/java/org/qortal/api/resource/CrossChainResource.java +++ b/src/main/java/org/qortal/api/resource/CrossChainResource.java @@ -50,6 +50,7 @@ import org.qortal.crosschain.BTCACCT; import org.qortal.crypto.Crypto; import org.qortal.data.at.ATData; import org.qortal.data.crosschain.CrossChainTradeData; +import org.qortal.data.crosschain.CrossChainTradeData.Mode; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.DeployAtTransactionData; import org.qortal.data.transaction.MessageTransactionData; @@ -447,6 +448,9 @@ public class CrossChainResource { ATData atData = fetchAtDataWithChecking(repository, null, templateRequest.atAddress); // null to skip creator check CrossChainTradeData crossChainTradeData = BTCACCT.populateTradeData(repository, atData); + if (crossChainTradeData.mode == Mode.OFFER) + throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.INVALID_CRITERIA); + byte[] redeemScriptBytes = BTCACCT.buildScript(refundBitcoinAddress.getHash(), crossChainTradeData.lockTime, redeemBitcoinAddress.getHash(), crossChainTradeData.secretHash); byte[] redeemScriptHash = BTC.hash160(redeemScriptBytes); @@ -514,6 +518,9 @@ public class CrossChainResource { ATData atData = fetchAtDataWithChecking(repository, null, templateRequest.atAddress); // null to skip creator check CrossChainTradeData crossChainTradeData = BTCACCT.populateTradeData(repository, atData); + if (crossChainTradeData.mode == Mode.OFFER) + throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.INVALID_CRITERIA); + byte[] redeemScriptBytes = BTCACCT.buildScript(refundBitcoinAddress.getHash(), crossChainTradeData.lockTime, redeemBitcoinAddress.getHash(), crossChainTradeData.secretHash); byte[] redeemScriptHash = BTC.hash160(redeemScriptBytes); @@ -616,6 +623,9 @@ public class CrossChainResource { ATData atData = fetchAtDataWithChecking(repository, null, refundRequest.atAddress); // null to skip creator check CrossChainTradeData crossChainTradeData = BTCACCT.populateTradeData(repository, atData); + if (crossChainTradeData.mode == Mode.OFFER) + throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.INVALID_CRITERIA); + byte[] redeemScriptBytes = BTCACCT.buildScript(refundAddress.getHash(), crossChainTradeData.lockTime, redeemBitcoinAddress.getHash(), crossChainTradeData.secretHash); byte[] redeemScriptHash = BTC.hash160(redeemScriptBytes); @@ -724,6 +734,9 @@ public class CrossChainResource { ATData atData = fetchAtDataWithChecking(repository, null, redeemRequest.atAddress); // null to skip creator check CrossChainTradeData crossChainTradeData = BTCACCT.populateTradeData(repository, atData); + if (crossChainTradeData.mode == Mode.OFFER) + throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.INVALID_CRITERIA); + byte[] redeemScriptBytes = BTCACCT.buildScript(refundBitcoinAddress.getHash(), crossChainTradeData.lockTime, redeemAddress.getHash(), crossChainTradeData.secretHash); byte[] redeemScriptHash = BTC.hash160(redeemScriptBytes);