From b963fd501f9e976c07011691e9191df410b2ba20 Mon Sep 17 00:00:00 2001 From: woodser Date: Mon, 3 Jun 2024 07:45:08 -0400 Subject: [PATCH] fix contract mismatch taking sepa offer with sepa instant account #981 --- core/src/main/java/haveno/core/trade/Contract.java | 8 +++++++- core/src/main/java/haveno/core/trade/TradeManager.java | 2 +- .../tasks/TakerSendInitTradeRequestToArbitrator.java | 2 +- .../protocol/tasks/TakerSendInitTradeRequestToMaker.java | 4 +--- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/haveno/core/trade/Contract.java b/core/src/main/java/haveno/core/trade/Contract.java index fd4bcb0d81..b0950c552f 100644 --- a/core/src/main/java/haveno/core/trade/Contract.java +++ b/core/src/main/java/haveno/core/trade/Contract.java @@ -263,7 +263,13 @@ public final class Contract implements NetworkPayload { // edits a contract json string public static String sanitizeContractAsJson(String contractAsJson) { - return contractAsJson; // TODO: anything to sanitize? + return contractAsJson + .replaceAll( + "\"takerPaymentAccountPayload\": \\{[^}]*}", + "\"takerPaymentAccountPayload\": null") + .replaceAll( + "\"makerPaymentAccountPayload\": \\{[^}]*}", + "\"makerPaymentAccountPayload\": null"); } public void printDiff(@Nullable String peersContractAsJson) { diff --git a/core/src/main/java/haveno/core/trade/TradeManager.java b/core/src/main/java/haveno/core/trade/TradeManager.java index 2dc15165f7..14f85318fb 100644 --- a/core/src/main/java/haveno/core/trade/TradeManager.java +++ b/core/src/main/java/haveno/core/trade/TradeManager.java @@ -888,13 +888,13 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi P2PService.getMyNodeAddress(), null); } - trade.getProcessModel().setUseSavingsWallet(useSavingsWallet); trade.getProcessModel().setFundsNeededForTrade(fundsNeededForTrade.longValueExact()); trade.getMaker().setPaymentAccountId(offer.getOfferPayload().getMakerPaymentAccountId()); trade.getMaker().setPubKeyRing(offer.getPubKeyRing()); trade.getSelf().setPubKeyRing(keyRing.getPubKeyRing()); trade.getSelf().setPaymentAccountId(paymentAccountId); + trade.getSelf().setPaymentMethodId(user.getPaymentAccount(paymentAccountId).getPaymentAccountPayload().getPaymentMethodId()); // initialize trade protocol TradeProtocol tradeProtocol = createTradeProtocol(trade); diff --git a/core/src/main/java/haveno/core/trade/protocol/tasks/TakerSendInitTradeRequestToArbitrator.java b/core/src/main/java/haveno/core/trade/protocol/tasks/TakerSendInitTradeRequestToArbitrator.java index 76c0ab90af..b5a6e3624c 100644 --- a/core/src/main/java/haveno/core/trade/protocol/tasks/TakerSendInitTradeRequestToArbitrator.java +++ b/core/src/main/java/haveno/core/trade/protocol/tasks/TakerSendInitTradeRequestToArbitrator.java @@ -57,7 +57,7 @@ public class TakerSendInitTradeRequestToArbitrator extends TradeTask { offer.getId(), trade.getAmount().longValueExact(), trade.getPrice().getValue(), - offer.getOfferPayload().getPaymentMethodId(), + trade.getSelf().getPaymentMethodId(), trade.getMaker().getAccountId(), trade.getTaker().getAccountId(), trade.getMaker().getPaymentAccountId(), diff --git a/core/src/main/java/haveno/core/trade/protocol/tasks/TakerSendInitTradeRequestToMaker.java b/core/src/main/java/haveno/core/trade/protocol/tasks/TakerSendInitTradeRequestToMaker.java index 8f2957ea53..c6315eb174 100644 --- a/core/src/main/java/haveno/core/trade/protocol/tasks/TakerSendInitTradeRequestToMaker.java +++ b/core/src/main/java/haveno/core/trade/protocol/tasks/TakerSendInitTradeRequestToMaker.java @@ -54,8 +54,6 @@ public class TakerSendInitTradeRequestToMaker extends TradeTask { User user = processModel.getUser(); P2PService p2PService = processModel.getP2PService(); XmrWalletService walletService = model.getXmrWalletService(); - String paymentAccountId = trade.getSelf().getPaymentAccountId(); - String paymentMethodId = user.getPaymentAccount(paymentAccountId).getPaymentAccountPayload().getPaymentMethodId(); String payoutAddress = walletService.getOrCreateAddressEntry(offer.getId(), XmrAddressEntry.Context.TRADE_PAYOUT).getAddressString(); // taker signs offer using offer id as nonce to avoid challenge protocol @@ -67,7 +65,7 @@ public class TakerSendInitTradeRequestToMaker extends TradeTask { offer.getId(), trade.getAmount().longValueExact(), trade.getPrice().getValue(), - paymentMethodId, + trade.getSelf().getPaymentMethodId(), null, user.getAccountId(), trade.getMaker().getPaymentAccountId(),