mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-08-13 17:05:40 -04:00
add date and key images to SignedOffer
arbitrator retains failed trades after reserve tx received legacy ui shows trade details including reserve tx, with or w/o contract fix npe searching arbitrator tickets due to null payment accounts synchronize offer book list items fix npe before key image poller initialized
This commit is contained in:
parent
882f1c070a
commit
a0235c8ebd
8 changed files with 194 additions and 153 deletions
|
@ -100,6 +100,7 @@ public class OfferBookService {
|
|||
connectionsService.addListener(new MoneroConnectionManagerListener() {
|
||||
@Override
|
||||
public void onConnectionChanged(MoneroRpcConnection connection) {
|
||||
if (keyImagePoller == null) return;
|
||||
keyImagePoller.setDaemon(connectionsService.getDaemon());
|
||||
keyImagePoller.setRefreshPeriodMs(getKeyImageRefreshPeriodMs());
|
||||
}
|
||||
|
|
|
@ -925,7 +925,13 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe
|
|||
signedOfferPayload.setArbitratorSignature(signature);
|
||||
|
||||
// create record of signed offer
|
||||
SignedOffer signedOffer = new SignedOffer(signedOfferPayload.getId(), request.getReserveTxHash(), request.getReserveTxHex(), signature); // TODO (woodser): no need for signature to be part of SignedOffer?
|
||||
SignedOffer signedOffer = new SignedOffer(
|
||||
System.currentTimeMillis(),
|
||||
signedOfferPayload.getId(),
|
||||
request.getReserveTxHash(),
|
||||
request.getReserveTxHex(),
|
||||
request.getReserveTxKeyImages(),
|
||||
signature); // TODO (woodser): no need for signature to be part of SignedOffer?
|
||||
addSignedOffer(signedOffer);
|
||||
requestPersistence();
|
||||
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
|
||||
package bisq.core.offer;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import bisq.common.proto.persistable.PersistablePayload;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
|
@ -26,6 +28,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||
@Slf4j
|
||||
public final class SignedOffer implements PersistablePayload {
|
||||
|
||||
@Getter
|
||||
private final long timeStamp;
|
||||
@Getter
|
||||
private final String offerId;
|
||||
@Getter
|
||||
|
@ -33,12 +37,16 @@ public final class SignedOffer implements PersistablePayload {
|
|||
@Getter
|
||||
private final String reserveTxHex;
|
||||
@Getter
|
||||
private final List<String> reserveTxKeyImages;
|
||||
@Getter
|
||||
private final String arbitratorSignature;
|
||||
|
||||
public SignedOffer(String offerId, String reserveTxHash, String reserveTxHex, String arbitratorSignature) {
|
||||
public SignedOffer(long timeStamp, String offerId, String reserveTxHash, String reserveTxHex, List<String> reserveTxKeyImages, String arbitratorSignature) {
|
||||
this.timeStamp = timeStamp;
|
||||
this.offerId = offerId;
|
||||
this.reserveTxHash = reserveTxHash;
|
||||
this.reserveTxHex = reserveTxHex;
|
||||
this.reserveTxKeyImages = reserveTxKeyImages;
|
||||
this.arbitratorSignature = arbitratorSignature;
|
||||
}
|
||||
|
||||
|
@ -49,16 +57,17 @@ public final class SignedOffer implements PersistablePayload {
|
|||
@Override
|
||||
public protobuf.SignedOffer toProtoMessage() {
|
||||
protobuf.SignedOffer.Builder builder = protobuf.SignedOffer.newBuilder()
|
||||
.setTimeStamp(timeStamp)
|
||||
.setOfferId(offerId)
|
||||
.setReserveTxHash(reserveTxHash)
|
||||
.setReserveTxHex(reserveTxHex)
|
||||
.addAllReserveTxKeyImages(reserveTxKeyImages)
|
||||
.setArbitratorSignature(arbitratorSignature);
|
||||
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
public static SignedOffer fromProto(protobuf.SignedOffer proto) {
|
||||
return new SignedOffer(proto.getOfferId(), proto.getReserveTxHash(), proto.getReserveTxHex(), proto.getArbitratorSignature());
|
||||
return new SignedOffer(proto.getTimeStamp(), proto.getOfferId(), proto.getReserveTxHash(), proto.getReserveTxHex(), proto.getReserveTxKeyImagesList(), proto.getArbitratorSignature());
|
||||
}
|
||||
|
||||
|
||||
|
@ -69,9 +78,11 @@ public final class SignedOffer implements PersistablePayload {
|
|||
@Override
|
||||
public String toString() {
|
||||
return "SignedOffer{" +
|
||||
",\n timeStamp=" + timeStamp +
|
||||
",\n offerId=" + offerId +
|
||||
",\n reserveTxHash=" + reserveTxHash +
|
||||
",\n reserveTxHex=" + reserveTxHex +
|
||||
",\n reserveTxKeyImages=" + reserveTxKeyImages +
|
||||
",\n arbitratorSignature=" + arbitratorSignature +
|
||||
"\n}";
|
||||
}
|
||||
|
|
|
@ -487,7 +487,11 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
|
|||
|
||||
((ArbitratorProtocol) getTradeProtocol(trade)).handleInitTradeRequest(request, sender, errorMessage -> {
|
||||
log.warn("Arbitrator error during trade initialization for trade {}: {}", trade.getId(), errorMessage);
|
||||
removeTradeOnError(trade);
|
||||
if (trade.getMaker().getReserveTxHash() != null || trade.getTaker().getReserveTxHash() != null) {
|
||||
onMoveInvalidTradeToFailedTrades(trade); // arbitrator retains failed trades for analysis and penalty
|
||||
} else {
|
||||
removeTradeOnError(trade);
|
||||
}
|
||||
if (takeOfferRequestErrorMessageHandler != null) takeOfferRequestErrorMessageHandler.handleErrorMessage(errorMessage);
|
||||
});
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue