From f834fbdda66a1a1e9260620ca93e6223ca71cac1 Mon Sep 17 00:00:00 2001 From: HenrikJannsen Date: Sat, 17 Dec 2022 20:15:28 -0500 Subject: [PATCH] Add sanity check that max share of a non-legacy BM is 20% over MAX_BURN_SHARE (taking into account potential increase due adjustment) Signed-off-by: HenrikJannsen --- .../core/dao/burningman/DelayedPayoutTxReceiverService.java | 3 +++ .../bisq_v1/tasks/seller/SellerCreatesDelayedPayoutTx.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/bisq/core/dao/burningman/DelayedPayoutTxReceiverService.java b/core/src/main/java/bisq/core/dao/burningman/DelayedPayoutTxReceiverService.java index 288b8f5bb6..50cce60f19 100644 --- a/core/src/main/java/bisq/core/dao/burningman/DelayedPayoutTxReceiverService.java +++ b/core/src/main/java/bisq/core/dao/burningman/DelayedPayoutTxReceiverService.java @@ -130,6 +130,8 @@ public class DelayedPayoutTxReceiverService implements DaoStateListener { // We only use outputs > 1000 sat or at least 2 times the cost for the output (32 bytes). // If we remove outputs it will be spent as miner fee. long minOutputAmount = Math.max(DPT_MIN_OUTPUT_AMOUNT, txFeePerVbyte * 32 * 2); + // Sanity check that max share of a non-legacy BM is 20% over MAX_BURN_SHARE (taking into account potential increase due adjustment) + long maxOutputAmount = Math.round(inputAmount * (BurningManService.MAX_BURN_SHARE * 1.2)); // We accumulate small amounts which gets filtered out and subtract it from 1 to get an adjustment factor // used later to be applied to the remaining burningmen share. double adjustment = 1 - burningManCandidates.stream() @@ -149,6 +151,7 @@ public class DelayedPayoutTxReceiverService implements DaoStateListener { candidate.getMostRecentAddress().get()); }) .filter(tuple -> tuple.first >= minOutputAmount) + .filter(tuple -> tuple.first <= maxOutputAmount) .sorted(Comparator., Long>comparing(tuple -> tuple.first) .thenComparing(tuple -> tuple.second)) .collect(Collectors.toList()); diff --git a/core/src/main/java/bisq/core/trade/protocol/bisq_v1/tasks/seller/SellerCreatesDelayedPayoutTx.java b/core/src/main/java/bisq/core/trade/protocol/bisq_v1/tasks/seller/SellerCreatesDelayedPayoutTx.java index 9a0346fab1..e8d73c365d 100644 --- a/core/src/main/java/bisq/core/trade/protocol/bisq_v1/tasks/seller/SellerCreatesDelayedPayoutTx.java +++ b/core/src/main/java/bisq/core/trade/protocol/bisq_v1/tasks/seller/SellerCreatesDelayedPayoutTx.java @@ -59,7 +59,7 @@ public class SellerCreatesDelayedPayoutTx extends TradeTask { selectionHeight, inputAmount, tradeTxFeeAsLong); - log.info("Verify delayedPayoutTx using selectionHeight {} and receivers {}", selectionHeight, delayedPayoutTxReceivers); + log.info("Create delayedPayoutTx using selectionHeight {} and receivers {}", selectionHeight, delayedPayoutTxReceivers); long lockTime = trade.getLockTime(); preparedDelayedPayoutTx = tradeWalletService.createDelayedUnsignedPayoutTx( depositTx,