From d64adf9e75a441cb1194c0691745b435746e2054 Mon Sep 17 00:00:00 2001
From: woodser <13068859+woodser@users.noreply.github.com>
Date: Sat, 15 Mar 2025 06:45:40 -0400
Subject: [PATCH] share dispute opener's updated multisig info on dispute
 opened

---
 .../haveno/core/support/dispute/DisputeManager.java    |  7 ++++---
 .../support/dispute/messages/DisputeOpenedMessage.java | 10 +++++-----
 proto/src/main/proto/pb.proto                          |  2 +-
 3 files changed, 10 insertions(+), 9 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 64de6b3f2d..92512b56a8 100644
--- a/core/src/main/java/haveno/core/support/dispute/DisputeManager.java
+++ b/core/src/main/java/haveno/core/support/dispute/DisputeManager.java
@@ -578,8 +578,9 @@ public abstract class DisputeManager<T extends DisputeList<Dispute>> extends Sup
                         trade.advanceState(Trade.State.BUYER_SENT_PAYMENT_SENT_MSG);
                     }
 
-                    // update multisig hex
-                    if (message.getUpdatedMultisigHex() != null) sender.setUpdatedMultisigHex(message.getUpdatedMultisigHex());
+                    // update opener's multisig hex
+                    TradePeer opener = sender == trade.getArbitrator() ? trade.getTradePeer() : sender;
+                    if (message.getOpenerUpdatedMultisigHex() != null) opener.setUpdatedMultisigHex(message.getOpenerUpdatedMultisigHex());
 
                     // add chat message with price info
                     if (trade instanceof ArbitratorTrade) addPriceInfoMessage(dispute, 0);
@@ -605,7 +606,7 @@ public abstract class DisputeManager<T extends DisputeList<Dispute>> extends Sup
                                 if (trade.isArbitrator()) {
                                     TradePeer senderPeer = sender == trade.getMaker() ? trade.getTaker() : trade.getMaker();
                                     if (senderPeer != trade.getMaker() && senderPeer != trade.getTaker()) throw new RuntimeException("Sender peer is not maker or taker, address=" + senderPeer.getNodeAddress());
-                                    sendDisputeOpenedMessageToPeer(dispute, contract, senderPeer.getPubKeyRing(), trade.getSelf().getUpdatedMultisigHex());
+                                    sendDisputeOpenedMessageToPeer(dispute, contract, senderPeer.getPubKeyRing(), opener.getUpdatedMultisigHex());
                                 }
                                 tradeManager.requestPersistence();
                                 errorMessage = null;
diff --git a/core/src/main/java/haveno/core/support/dispute/messages/DisputeOpenedMessage.java b/core/src/main/java/haveno/core/support/dispute/messages/DisputeOpenedMessage.java
index fb6fb2fc19..a11c6b1175 100644
--- a/core/src/main/java/haveno/core/support/dispute/messages/DisputeOpenedMessage.java
+++ b/core/src/main/java/haveno/core/support/dispute/messages/DisputeOpenedMessage.java
@@ -34,7 +34,7 @@ import java.util.Optional;
 public final class DisputeOpenedMessage extends DisputeMessage {
     private final Dispute dispute;
     private final NodeAddress senderNodeAddress;
-    private final String updatedMultisigHex;
+    private final String openerUpdatedMultisigHex;
     private final PaymentSentMessage paymentSentMessage;
 
     public DisputeOpenedMessage(Dispute dispute,
@@ -67,7 +67,7 @@ public final class DisputeOpenedMessage extends DisputeMessage {
         super(messageVersion, uid, supportType);
         this.dispute = dispute;
         this.senderNodeAddress = senderNodeAddress;
-        this.updatedMultisigHex = updatedMultisigHex;
+        this.openerUpdatedMultisigHex = updatedMultisigHex;
         this.paymentSentMessage = paymentSentMessage;
     }
 
@@ -78,7 +78,7 @@ public final class DisputeOpenedMessage extends DisputeMessage {
                 .setDispute(dispute.toProtoMessage())
                 .setSenderNodeAddress(senderNodeAddress.toProtoMessage())
                 .setType(SupportType.toProtoMessage(supportType))
-                .setUpdatedMultisigHex(updatedMultisigHex);
+                .setOpenerUpdatedMultisigHex(openerUpdatedMultisigHex);
         Optional.ofNullable(paymentSentMessage).ifPresent(e -> builder.setPaymentSentMessage(paymentSentMessage.toProtoNetworkEnvelope().getPaymentSentMessage()));
         return getNetworkEnvelopeBuilder().setDisputeOpenedMessage(builder).build();
     }
@@ -91,7 +91,7 @@ public final class DisputeOpenedMessage extends DisputeMessage {
                 proto.getUid(),
                 messageVersion,
                 SupportType.fromProto(proto.getType()),
-                ProtoUtil.stringOrNullFromProto(proto.getUpdatedMultisigHex()),
+                ProtoUtil.stringOrNullFromProto(proto.getOpenerUpdatedMultisigHex()),
                 proto.hasPaymentSentMessage() ? PaymentSentMessage.fromProto(proto.getPaymentSentMessage(), messageVersion) : null);
     }
 
@@ -108,7 +108,7 @@ public final class DisputeOpenedMessage extends DisputeMessage {
                 ",\n     DisputeOpenedMessage.uid='" + uid + '\'' +
                 ",\n     messageVersion=" + messageVersion +
                 ",\n     supportType=" + supportType +
-                ",\n     updatedMultisigHex=" + updatedMultisigHex +
+                ",\n     openerUpdatedMultisigHex=" + openerUpdatedMultisigHex +
                 ",\n     paymentSentMessage=" + paymentSentMessage +
                 "\n} " + super.toString();
     }
diff --git a/proto/src/main/proto/pb.proto b/proto/src/main/proto/pb.proto
index a814f71e4a..f919f4f1e7 100644
--- a/proto/src/main/proto/pb.proto
+++ b/proto/src/main/proto/pb.proto
@@ -385,7 +385,7 @@ message DisputeOpenedMessage {
     NodeAddress sender_node_address = 2;
     string uid = 3;
     SupportType type = 4;
-    string updated_multisig_hex = 5;
+    string opener_updated_multisig_hex = 5;
     PaymentSentMessage payment_sent_message = 6;
 }