Merge pull request #7397 from alvasw/fix_trade_protocol_filter_version_enforcement

Fix trade protocol filter version enforcement
This commit is contained in:
Alejandro García 2025-02-25 12:54:08 +00:00 committed by GitHub
commit 79017de8d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 49 additions and 1 deletions

View file

@ -266,7 +266,15 @@ public class TradeUtil {
} else if (paymentAccountPayload != null && filterManager.arePeersPaymentAccountDataBanned(paymentAccountPayload)) { } else if (paymentAccountPayload != null && filterManager.arePeersPaymentAccountDataBanned(paymentAccountPayload)) {
failed.handleErrorMessage("Other trader is banned by their trading account data.\n" + failed.handleErrorMessage("Other trader is banned by their trading account data.\n" +
"paymentAccountPayload=" + paymentAccountPayload.getPaymentDetails()); "paymentAccountPayload=" + paymentAccountPayload.getPaymentDetails());
} else if (filterManager.requireUpdateToNewVersionForTrading()) { } else {
complete.handleResult();
}
}
public static void enforceFilterVersion(FilterManager filterManager,
ResultHandler complete,
ErrorMessageHandler failed) {
if (filterManager.requireUpdateToNewVersionForTrading()) {
failed.handleErrorMessage("Your version of Bisq is not compatible for trading anymore. " + failed.handleErrorMessage("Your version of Bisq is not compatible for trading anymore. " +
"Please update to the latest Bisq version at https://bisq.network/downloads."); "Please update to the latest Bisq version at https://bisq.network/downloads.");
} else { } else {

View file

@ -27,6 +27,7 @@ import bisq.core.trade.protocol.bisq_v1.messages.PayoutTxPublishedMessage;
import bisq.core.trade.protocol.bisq_v1.tasks.ApplyFilter; import bisq.core.trade.protocol.bisq_v1.tasks.ApplyFilter;
import bisq.core.trade.protocol.bisq_v1.tasks.CheckIfDaoStateIsInSync; import bisq.core.trade.protocol.bisq_v1.tasks.CheckIfDaoStateIsInSync;
import bisq.core.trade.protocol.bisq_v1.tasks.CheckRestrictions; import bisq.core.trade.protocol.bisq_v1.tasks.CheckRestrictions;
import bisq.core.trade.protocol.bisq_v1.tasks.EnforceFilterVersion;
import bisq.core.trade.protocol.bisq_v1.tasks.TradeTask; import bisq.core.trade.protocol.bisq_v1.tasks.TradeTask;
import bisq.core.trade.protocol.bisq_v1.tasks.buyer.BuyerFinalizesDelayedPayoutTx; import bisq.core.trade.protocol.bisq_v1.tasks.buyer.BuyerFinalizesDelayedPayoutTx;
import bisq.core.trade.protocol.bisq_v1.tasks.buyer.BuyerProcessDelayedPayoutTxSignatureRequest; import bisq.core.trade.protocol.bisq_v1.tasks.buyer.BuyerProcessDelayedPayoutTxSignatureRequest;
@ -73,6 +74,7 @@ public class BuyerAsMakerProtocol extends BuyerProtocol implements MakerProtocol
.with(message) .with(message)
.from(peer)) .from(peer))
.setup(tasks( .setup(tasks(
EnforceFilterVersion.class,
CheckIfDaoStateIsInSync.class, CheckIfDaoStateIsInSync.class,
MakerProcessesInputsForDepositTxRequest.class, MakerProcessesInputsForDepositTxRequest.class,
ApplyFilter.class, ApplyFilter.class,

View file

@ -29,6 +29,7 @@ import bisq.core.trade.protocol.bisq_v1.messages.PayoutTxPublishedMessage;
import bisq.core.trade.protocol.bisq_v1.tasks.ApplyFilter; import bisq.core.trade.protocol.bisq_v1.tasks.ApplyFilter;
import bisq.core.trade.protocol.bisq_v1.tasks.CheckIfDaoStateIsInSync; import bisq.core.trade.protocol.bisq_v1.tasks.CheckIfDaoStateIsInSync;
import bisq.core.trade.protocol.bisq_v1.tasks.CheckRestrictions; import bisq.core.trade.protocol.bisq_v1.tasks.CheckRestrictions;
import bisq.core.trade.protocol.bisq_v1.tasks.EnforceFilterVersion;
import bisq.core.trade.protocol.bisq_v1.tasks.TradeTask; import bisq.core.trade.protocol.bisq_v1.tasks.TradeTask;
import bisq.core.trade.protocol.bisq_v1.tasks.buyer.BuyerFinalizesDelayedPayoutTx; import bisq.core.trade.protocol.bisq_v1.tasks.buyer.BuyerFinalizesDelayedPayoutTx;
import bisq.core.trade.protocol.bisq_v1.tasks.buyer.BuyerProcessDelayedPayoutTxSignatureRequest; import bisq.core.trade.protocol.bisq_v1.tasks.buyer.BuyerProcessDelayedPayoutTxSignatureRequest;
@ -79,6 +80,7 @@ public class BuyerAsTakerProtocol extends BuyerProtocol implements TakerProtocol
expect(phase(Trade.Phase.INIT) expect(phase(Trade.Phase.INIT)
.with(TakerEvent.TAKE_OFFER)) .with(TakerEvent.TAKE_OFFER))
.setup(tasks( .setup(tasks(
EnforceFilterVersion.class,
CheckIfDaoStateIsInSync.class, CheckIfDaoStateIsInSync.class,
ApplyFilter.class, ApplyFilter.class,
CheckRestrictions.class, CheckRestrictions.class,

View file

@ -29,6 +29,7 @@ import bisq.core.trade.protocol.bisq_v1.messages.InputsForDepositTxRequest;
import bisq.core.trade.protocol.bisq_v1.tasks.ApplyFilter; import bisq.core.trade.protocol.bisq_v1.tasks.ApplyFilter;
import bisq.core.trade.protocol.bisq_v1.tasks.CheckIfDaoStateIsInSync; import bisq.core.trade.protocol.bisq_v1.tasks.CheckIfDaoStateIsInSync;
import bisq.core.trade.protocol.bisq_v1.tasks.CheckRestrictions; import bisq.core.trade.protocol.bisq_v1.tasks.CheckRestrictions;
import bisq.core.trade.protocol.bisq_v1.tasks.EnforceFilterVersion;
import bisq.core.trade.protocol.bisq_v1.tasks.TradeTask; import bisq.core.trade.protocol.bisq_v1.tasks.TradeTask;
import bisq.core.trade.protocol.bisq_v1.tasks.maker.MakerCreateAndSignContract; import bisq.core.trade.protocol.bisq_v1.tasks.maker.MakerCreateAndSignContract;
import bisq.core.trade.protocol.bisq_v1.tasks.maker.MakerProcessesInputsForDepositTxRequest; import bisq.core.trade.protocol.bisq_v1.tasks.maker.MakerProcessesInputsForDepositTxRequest;
@ -75,6 +76,7 @@ public class SellerAsMakerProtocol extends SellerProtocol implements MakerProtoc
.with(message) .with(message)
.from(peer)) .from(peer))
.setup(tasks( .setup(tasks(
EnforceFilterVersion.class,
CheckIfDaoStateIsInSync.class, CheckIfDaoStateIsInSync.class,
MaybeCreateSubAccount.class, MaybeCreateSubAccount.class,
MakerProcessesInputsForDepositTxRequest.class, MakerProcessesInputsForDepositTxRequest.class,

View file

@ -28,6 +28,7 @@ import bisq.core.trade.protocol.bisq_v1.messages.InputsForDepositTxResponse;
import bisq.core.trade.protocol.bisq_v1.tasks.ApplyFilter; import bisq.core.trade.protocol.bisq_v1.tasks.ApplyFilter;
import bisq.core.trade.protocol.bisq_v1.tasks.CheckIfDaoStateIsInSync; import bisq.core.trade.protocol.bisq_v1.tasks.CheckIfDaoStateIsInSync;
import bisq.core.trade.protocol.bisq_v1.tasks.CheckRestrictions; import bisq.core.trade.protocol.bisq_v1.tasks.CheckRestrictions;
import bisq.core.trade.protocol.bisq_v1.tasks.EnforceFilterVersion;
import bisq.core.trade.protocol.bisq_v1.tasks.TradeTask; import bisq.core.trade.protocol.bisq_v1.tasks.TradeTask;
import bisq.core.trade.protocol.bisq_v1.tasks.seller.MaybeCreateSubAccount; import bisq.core.trade.protocol.bisq_v1.tasks.seller.MaybeCreateSubAccount;
import bisq.core.trade.protocol.bisq_v1.tasks.seller.SellerCreatesDelayedPayoutTx; import bisq.core.trade.protocol.bisq_v1.tasks.seller.SellerCreatesDelayedPayoutTx;
@ -75,6 +76,7 @@ public class SellerAsTakerProtocol extends SellerProtocol implements TakerProtoc
.with(TakerEvent.TAKE_OFFER) .with(TakerEvent.TAKE_OFFER)
.from(trade.getTradingPeerNodeAddress())) .from(trade.getTradingPeerNodeAddress()))
.setup(tasks( .setup(tasks(
EnforceFilterVersion.class,
CheckIfDaoStateIsInSync.class, CheckIfDaoStateIsInSync.class,
MaybeCreateSubAccount.class, MaybeCreateSubAccount.class,
ApplyFilter.class, ApplyFilter.class,

View file

@ -0,0 +1,24 @@
package bisq.core.trade.protocol.bisq_v1.tasks;
import bisq.core.filter.FilterManager;
import bisq.core.trade.bisq_v1.TradeUtil;
import bisq.core.trade.model.bisq_v1.Trade;
import bisq.common.taskrunner.TaskRunner;
public class EnforceFilterVersion extends TradeTask {
public EnforceFilterVersion(TaskRunner<Trade> taskHandler, Trade trade) {
super(taskHandler, trade);
}
@Override
protected void run() {
try {
runInterceptHook();
FilterManager filterManager = processModel.getFilterManager();
TradeUtil.enforceFilterVersion(filterManager, this::complete, this::failed);
} catch (Throwable t) {
failed(t);
}
}
}

View file

@ -21,6 +21,7 @@ package bisq.core.trade.protocol.bsq_swap;
import bisq.core.trade.model.bsq_swap.BsqSwapBuyerAsMakerTrade; import bisq.core.trade.model.bsq_swap.BsqSwapBuyerAsMakerTrade;
import bisq.core.trade.protocol.TradeMessage; import bisq.core.trade.protocol.TradeMessage;
import bisq.core.trade.protocol.TradeTaskRunner; import bisq.core.trade.protocol.TradeTaskRunner;
import bisq.core.trade.protocol.bisq_v1.tasks.EnforceFilterVersion;
import bisq.core.trade.protocol.bsq_swap.messages.BsqSwapFinalizeTxRequest; import bisq.core.trade.protocol.bsq_swap.messages.BsqSwapFinalizeTxRequest;
import bisq.core.trade.protocol.bsq_swap.messages.BsqSwapRequest; import bisq.core.trade.protocol.bsq_swap.messages.BsqSwapRequest;
import bisq.core.trade.protocol.bsq_swap.messages.SellersBsqSwapRequest; import bisq.core.trade.protocol.bsq_swap.messages.SellersBsqSwapRequest;
@ -59,6 +60,7 @@ public class BsqSwapBuyerAsMakerProtocol extends BsqSwapBuyerProtocol implements
.with(request) .with(request)
.from(sender)) .from(sender))
.setup(tasks( .setup(tasks(
EnforceFilterVersion.class,
ApplyFilter.class, ApplyFilter.class,
ProcessSellersBsqSwapRequest.class, ProcessSellersBsqSwapRequest.class,
BuyerAsMakerCreatesBsqInputsAndChange.class, BuyerAsMakerCreatesBsqInputsAndChange.class,

View file

@ -22,6 +22,7 @@ import bisq.core.offer.Offer;
import bisq.core.trade.model.bsq_swap.BsqSwapBuyerAsTakerTrade; import bisq.core.trade.model.bsq_swap.BsqSwapBuyerAsTakerTrade;
import bisq.core.trade.protocol.TradeMessage; import bisq.core.trade.protocol.TradeMessage;
import bisq.core.trade.protocol.TradeTaskRunner; import bisq.core.trade.protocol.TradeTaskRunner;
import bisq.core.trade.protocol.bisq_v1.tasks.EnforceFilterVersion;
import bisq.core.trade.protocol.bsq_swap.messages.BsqSwapFinalizeTxRequest; import bisq.core.trade.protocol.bsq_swap.messages.BsqSwapFinalizeTxRequest;
import bisq.core.trade.protocol.bsq_swap.tasks.ApplyFilter; import bisq.core.trade.protocol.bsq_swap.tasks.ApplyFilter;
import bisq.core.trade.protocol.bsq_swap.tasks.buyer.BuyerPublishesTx; import bisq.core.trade.protocol.bsq_swap.tasks.buyer.BuyerPublishesTx;
@ -56,6 +57,7 @@ public class BsqSwapBuyerAsTakerProtocol extends BsqSwapBuyerProtocol implements
.with(TAKE_OFFER) .with(TAKE_OFFER)
.from(trade.getTradingPeerNodeAddress())) .from(trade.getTradingPeerNodeAddress()))
.setup(tasks( .setup(tasks(
EnforceFilterVersion.class,
ApplyFilter.class, ApplyFilter.class,
BuyerAsTakerCreatesBsqInputsAndChange.class, BuyerAsTakerCreatesBsqInputsAndChange.class,
SendBuyersBsqSwapRequest.class) SendBuyersBsqSwapRequest.class)

View file

@ -21,6 +21,7 @@ package bisq.core.trade.protocol.bsq_swap;
import bisq.core.trade.model.bsq_swap.BsqSwapSellerAsMakerTrade; import bisq.core.trade.model.bsq_swap.BsqSwapSellerAsMakerTrade;
import bisq.core.trade.protocol.TradeMessage; import bisq.core.trade.protocol.TradeMessage;
import bisq.core.trade.protocol.TradeTaskRunner; import bisq.core.trade.protocol.TradeTaskRunner;
import bisq.core.trade.protocol.bisq_v1.tasks.EnforceFilterVersion;
import bisq.core.trade.protocol.bsq_swap.messages.BsqSwapFinalizedTxMessage; import bisq.core.trade.protocol.bsq_swap.messages.BsqSwapFinalizedTxMessage;
import bisq.core.trade.protocol.bsq_swap.messages.BsqSwapRequest; import bisq.core.trade.protocol.bsq_swap.messages.BsqSwapRequest;
import bisq.core.trade.protocol.bsq_swap.messages.BuyersBsqSwapRequest; import bisq.core.trade.protocol.bsq_swap.messages.BuyersBsqSwapRequest;
@ -57,6 +58,7 @@ public class BsqSwapSellerAsMakerProtocol extends BsqSwapSellerProtocol implemen
.with(request) .with(request)
.from(sender)) .from(sender))
.setup(tasks( .setup(tasks(
EnforceFilterVersion.class,
ApplyFilter.class, ApplyFilter.class,
ProcessBuyersBsqSwapRequest.class, ProcessBuyersBsqSwapRequest.class,
SellerAsMakerCreatesAndSignsTx.class, SellerAsMakerCreatesAndSignsTx.class,

View file

@ -22,6 +22,7 @@ import bisq.core.offer.Offer;
import bisq.core.trade.model.bsq_swap.BsqSwapSellerAsTakerTrade; import bisq.core.trade.model.bsq_swap.BsqSwapSellerAsTakerTrade;
import bisq.core.trade.protocol.TradeMessage; import bisq.core.trade.protocol.TradeMessage;
import bisq.core.trade.protocol.TradeTaskRunner; import bisq.core.trade.protocol.TradeTaskRunner;
import bisq.core.trade.protocol.bisq_v1.tasks.EnforceFilterVersion;
import bisq.core.trade.protocol.bsq_swap.messages.BsqSwapFinalizedTxMessage; import bisq.core.trade.protocol.bsq_swap.messages.BsqSwapFinalizedTxMessage;
import bisq.core.trade.protocol.bsq_swap.messages.BsqSwapTxInputsMessage; import bisq.core.trade.protocol.bsq_swap.messages.BsqSwapTxInputsMessage;
import bisq.core.trade.protocol.bsq_swap.tasks.ApplyFilter; import bisq.core.trade.protocol.bsq_swap.tasks.ApplyFilter;
@ -57,6 +58,7 @@ public class BsqSwapSellerAsTakerProtocol extends BsqSwapSellerProtocol implemen
.with(TAKE_OFFER) .with(TAKE_OFFER)
.from(trade.getTradingPeerNodeAddress())) .from(trade.getTradingPeerNodeAddress()))
.setup(tasks( .setup(tasks(
EnforceFilterVersion.class,
ApplyFilter.class, ApplyFilter.class,
SendSellersBsqSwapRequest.class) SendSellersBsqSwapRequest.class)
.withTimeout(40)) .withTimeout(40))