From a6af1550a4874bb779da08318177231fc39518b9 Mon Sep 17 00:00:00 2001 From: woodser Date: Fri, 24 Jan 2025 09:31:19 -0500 Subject: [PATCH] set arbitrator payment account payloads on dispute opened --- .../haveno/core/support/dispute/DisputeManager.java | 10 ++++++++-- .../haveno/core/support/dispute/DisputeValidation.java | 7 +++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/haveno/core/support/dispute/DisputeManager.java b/core/src/main/java/haveno/core/support/dispute/DisputeManager.java index d6b24697..64de6b3f 100644 --- a/core/src/main/java/haveno/core/support/dispute/DisputeManager.java +++ b/core/src/main/java/haveno/core/support/dispute/DisputeManager.java @@ -537,15 +537,21 @@ public abstract class DisputeManager> extends Sup throw e; } - // try to validate payment account + // try to validate payment accounts try { - DisputeValidation.validatePaymentAccountPayload(dispute); // TODO: add field to dispute details: valid, invalid, missing + DisputeValidation.validatePaymentAccountPayloads(dispute); // TODO: add field to dispute details: valid, invalid, missing } catch (Exception e) { log.error(ExceptionUtils.getStackTrace(e)); trade.prependErrorMessage(e.getMessage()); throw e; } + // set arbitrator's payment account payloads + if (trade.isArbitrator()) { + if (trade.getBuyer().getPaymentAccountPayload() == null) trade.getBuyer().setPaymentAccountPayload(dispute.getBuyerPaymentAccountPayload()); + if (trade.getSeller().getPaymentAccountPayload() == null) trade.getSeller().setPaymentAccountPayload(dispute.getSellerPaymentAccountPayload()); + } + // get sender TradePeer sender; if (reOpen) { // re-open can come from either peer diff --git a/core/src/main/java/haveno/core/support/dispute/DisputeValidation.java b/core/src/main/java/haveno/core/support/dispute/DisputeValidation.java index 4591a6fb..0905af4a 100644 --- a/core/src/main/java/haveno/core/support/dispute/DisputeValidation.java +++ b/core/src/main/java/haveno/core/support/dispute/DisputeValidation.java @@ -41,9 +41,12 @@ import static com.google.common.base.Preconditions.checkNotNull; @Slf4j public class DisputeValidation { - public static void validatePaymentAccountPayload(Dispute dispute) throws ValidationException { + public static void validatePaymentAccountPayloads(Dispute dispute) throws ValidationException { if (dispute.getSellerPaymentAccountPayload() == null) throw new ValidationException(dispute, "Seller's payment account payload is null in dispute opened for trade " + dispute.getTradeId()); - if (!Arrays.equals(dispute.getSellerPaymentAccountPayload().getHash(), dispute.getContract().getSellerPaymentAccountPayloadHash())) throw new ValidationException(dispute, "Hash of maker's payment account payload does not match contract"); + if (!Arrays.equals(dispute.getSellerPaymentAccountPayload().getHash(), dispute.getContract().getSellerPaymentAccountPayloadHash())) throw new ValidationException(dispute, "Hash of seller's payment account payload does not match contract"); + if (dispute.getBuyerPaymentAccountPayload() != null) { + if (!Arrays.equals(dispute.getBuyerPaymentAccountPayload().getHash(), dispute.getContract().getBuyerPaymentAccountPayloadHash())) throw new ValidationException(dispute, "Hash of buyer's payment account payload does not match contract"); + } } public static void validateDisputeData(Dispute dispute) throws ValidationException {