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 d6b2469744..64de6b3f2d 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 4591a6fbc2..0905af4a1d 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 {