diff --git a/core/src/main/java/bisq/core/btc/wallet/Restrictions.java b/core/src/main/java/bisq/core/btc/wallet/Restrictions.java index 9394fa283f..5c875278b9 100644 --- a/core/src/main/java/bisq/core/btc/wallet/Restrictions.java +++ b/core/src/main/java/bisq/core/btc/wallet/Restrictions.java @@ -18,15 +18,21 @@ package bisq.core.btc.wallet; import bisq.common.config.Config; +import bisq.common.util.Utilities; import org.bitcoinj.core.Coin; +import java.util.Date; +import java.util.GregorianCalendar; + public class Restrictions { + private static final Date MIN_SECURITY_DEPOSIT_CHANGE_ACTIVATION_DATE = Utilities.getUTCDate(2025, GregorianCalendar.MARCH, 1); + private static Coin MIN_TRADE_AMOUNT; private static Coin MIN_BUYER_SECURITY_DEPOSIT; // For the seller we use a fixed one as there is no way the seller can cancel the trade // To make it editable would just increase complexity. - private static Coin SELLER_SECURITY_DEPOSIT; + private static Coin MIN_SELLER_SECURITY_DEPOSIT; // At mediation we require a min. payout to the losing party to keep incentive for the trader to accept the // mediated payout. For Refund agent cases we do not have that restriction. private static Coin MIN_REFUND_AT_MEDIATED_DISPUTE; @@ -66,10 +72,17 @@ public static double getMaxBuyerSecurityDepositAsPercent() { } // We use MIN_BUYER_SECURITY_DEPOSIT as well as lower bound in case of small trade amounts. - // So 0.0005 BTC is the min. buyer security deposit even with amount of 0.0001 BTC and 0.05% percentage value. public static Coin getMinBuyerSecurityDepositAsCoin() { - if (MIN_BUYER_SECURITY_DEPOSIT == null) - MIN_BUYER_SECURITY_DEPOSIT = Coin.parseCoin("0.001"); // 0.001 BTC is 60 USD @ 60000 USD/BTC + Date now = new Date(); + if (now.after(MIN_SECURITY_DEPOSIT_CHANGE_ACTIVATION_DATE)) { + if (MIN_BUYER_SECURITY_DEPOSIT == null || MIN_BUYER_SECURITY_DEPOSIT.equals(Coin.parseCoin("0.001"))) { + MIN_BUYER_SECURITY_DEPOSIT = Coin.parseCoin("0.0003"); // 0.0003 BTC is 27 USD @ 90000 USD/BTC + } + } else { + if (MIN_BUYER_SECURITY_DEPOSIT == null) { + MIN_BUYER_SECURITY_DEPOSIT = Coin.parseCoin("0.001"); // 0.001 BTC is 60 USD @ 60000 USD/BTC + } + } return MIN_BUYER_SECURITY_DEPOSIT; } @@ -83,9 +96,18 @@ public static double getMinSellerSecurityDepositAsPercent() { } public static Coin getMinSellerSecurityDepositAsCoin() { - if (SELLER_SECURITY_DEPOSIT == null) - SELLER_SECURITY_DEPOSIT = Coin.parseCoin("0.001"); // 0.001 BTC is 60 USD @ 60000 USD/BTC - return SELLER_SECURITY_DEPOSIT; + Date now = new Date(); + if (now.after(MIN_SECURITY_DEPOSIT_CHANGE_ACTIVATION_DATE)) { + if (MIN_SELLER_SECURITY_DEPOSIT == null || MIN_SELLER_SECURITY_DEPOSIT.equals(Coin.parseCoin("0.001"))) { + MIN_SELLER_SECURITY_DEPOSIT = Coin.parseCoin("0.0003"); // 0.0003 BTC is 27 USD @ 90000 USD/BTC + } + return MIN_SELLER_SECURITY_DEPOSIT; + } else { + if (MIN_SELLER_SECURITY_DEPOSIT == null) { + MIN_SELLER_SECURITY_DEPOSIT = Coin.parseCoin("0.001"); // 0.001 BTC is 60 USD @ 60000 USD/BTC + } + return MIN_SELLER_SECURITY_DEPOSIT; + } } // This value must be lower than MIN_BUYER_SECURITY_DEPOSIT and SELLER_SECURITY_DEPOSIT