2222import bisq .common .util .OptionalUtils ;
2323import bisq .common .validation .NetworkDataValidation ;
2424import bisq .network .p2p .message .ExternalNetworkMessage ;
25+ import bisq .network .p2p .message .SenderPublicKeyProvidingPayload ;
2526import bisq .network .p2p .services .data .storage .MetaData ;
2627import bisq .network .p2p .services .data .storage .mailbox .MailboxMessage ;
2728import bisq .support .arbitration .ArbitrationCaseState ;
29+ import bisq .user .profile .UserProfile ;
2830import com .google .protobuf .ByteString ;
2931import com .google .protobuf .InvalidProtocolBufferException ;
3032import lombok .Getter ;
3133import lombok .ToString ;
3234import lombok .extern .slf4j .Slf4j ;
3335
36+ import java .security .PublicKey ;
3437import java .util .Arrays ;
3538import java .util .Objects ;
3639import java .util .Optional ;
4144@ Slf4j
4245@ Getter
4346@ ToString
44- public final class MuSigArbitrationStateChangeMessage implements MailboxMessage , ExternalNetworkMessage {
47+ public final class MuSigArbitrationStateChangeMessage implements MailboxMessage , ExternalNetworkMessage , SenderPublicKeyProvidingPayload {
4548 private transient final MetaData metaData = new MetaData (TTL_10_DAYS , HIGH_PRIORITY , getClass ().getSimpleName ());
4649 private final String id ;
4750 private final String tradeId ;
51+ private final UserProfile senderUserProfile ;
4852 private final ArbitrationCaseState arbitrationCaseState ;
4953 private final Optional <MuSigArbitrationResult > muSigArbitrationResult ;
5054 private final Optional <byte []> arbitrationResultSignature ;
5155
5256 public MuSigArbitrationStateChangeMessage (String id ,
5357 String tradeId ,
58+ UserProfile senderUserProfile ,
5459 ArbitrationCaseState arbitrationCaseState ,
5560 Optional <MuSigArbitrationResult > muSigArbitrationResult ,
5661 Optional <byte []> arbitrationResultSignature ) {
5762 this .id = id ;
5863 this .tradeId = tradeId ;
64+ this .senderUserProfile = senderUserProfile ;
5965 this .arbitrationCaseState = arbitrationCaseState ;
6066 this .muSigArbitrationResult = muSigArbitrationResult ;
6167 this .arbitrationResultSignature = arbitrationResultSignature .map (byte []::clone );
@@ -74,6 +80,7 @@ public bisq.support.protobuf.MuSigArbitrationStateChangeMessage.Builder getValue
7480 bisq .support .protobuf .MuSigArbitrationStateChangeMessage .Builder builder = bisq .support .protobuf .MuSigArbitrationStateChangeMessage .newBuilder ()
7581 .setId (id )
7682 .setTradeId (tradeId )
83+ .setSenderUserProfile (senderUserProfile .toProto (serializeForHash ))
7784 .setArbitrationCaseState (arbitrationCaseState .toProtoEnum ());
7885 muSigArbitrationResult .ifPresent (result -> builder .setMuSigArbitrationResult (result .toProto (serializeForHash )));
7986 arbitrationResultSignature .ifPresent (signature -> builder .setArbitrationResultSignature (ByteString .copyFrom (signature )));
@@ -84,6 +91,7 @@ public static MuSigArbitrationStateChangeMessage fromProto(bisq.support.protobuf
8491 return new MuSigArbitrationStateChangeMessage (
8592 proto .getId (),
8693 proto .getTradeId (),
94+ UserProfile .fromProto (proto .getSenderUserProfile ()),
8795 ArbitrationCaseState .fromProto (proto .getArbitrationCaseState ()),
8896 proto .hasMuSigArbitrationResult ()
8997 ? Optional .of (MuSigArbitrationResult .fromProto (proto .getMuSigArbitrationResult ()))
@@ -110,6 +118,11 @@ public double getCostFactor() {
110118 return getCostFactor (0.1 , 0.2 );
111119 }
112120
121+ @ Override
122+ public PublicKey getSenderPublicKey () {
123+ return senderUserProfile .getPublicKey ();
124+ }
125+
113126 public Optional <byte []> getArbitrationResultSignature () {
114127 return arbitrationResultSignature .map (byte []::clone );
115128 }
@@ -121,14 +134,15 @@ public boolean equals(Object o) {
121134 }
122135 return Objects .equals (id , that .id ) &&
123136 Objects .equals (tradeId , that .tradeId ) &&
137+ Objects .equals (senderUserProfile , that .senderUserProfile ) &&
124138 arbitrationCaseState == that .arbitrationCaseState &&
125139 Objects .equals (muSigArbitrationResult , that .muSigArbitrationResult ) &&
126140 OptionalUtils .optionalByteArrayEquals (arbitrationResultSignature , that .arbitrationResultSignature );
127141 }
128142
129143 @ Override
130144 public int hashCode () {
131- int result = Objects .hash (id , tradeId , arbitrationCaseState , muSigArbitrationResult );
145+ int result = Objects .hash (id , tradeId , senderUserProfile , arbitrationCaseState , muSigArbitrationResult );
132146 result = 31 * result + arbitrationResultSignature .map (Arrays ::hashCode ).orElse (0 );
133147 return result ;
134148 }
0 commit comments