diff --git a/core/src/main/java/haveno/core/trade/Trade.java b/core/src/main/java/haveno/core/trade/Trade.java index 83002928bb..63ca7a6e8a 100644 --- a/core/src/main/java/haveno/core/trade/Trade.java +++ b/core/src/main/java/haveno/core/trade/Trade.java @@ -1578,6 +1578,8 @@ public abstract class Trade extends XmrWalletBase implements Tradable, Model { peer.setUpdatedMultisigHex(null); peer.setDisputeClosedMessage(null); peer.setPaymentSentMessage(null); + peer.setDepositTxHex(null); + peer.setDepositTxKey(null); if (peer.isPaymentReceivedMessageReceived()) peer.setPaymentReceivedMessage(null); } } diff --git a/core/src/main/java/haveno/core/trade/protocol/tasks/MaybeSendSignContractRequest.java b/core/src/main/java/haveno/core/trade/protocol/tasks/MaybeSendSignContractRequest.java index 6f10625e35..b9138fdbc2 100644 --- a/core/src/main/java/haveno/core/trade/protocol/tasks/MaybeSendSignContractRequest.java +++ b/core/src/main/java/haveno/core/trade/protocol/tasks/MaybeSendSignContractRequest.java @@ -156,6 +156,8 @@ public class MaybeSendSignContractRequest extends TradeTask { trade.getSelf().setDepositTx(depositTx); trade.getSelf().setDepositTxHash(depositTx.getHash()); trade.getSelf().setDepositTxFee(depositTx.getFee()); + trade.getSelf().setDepositTxHex(depositTx.getFullHex()); + trade.getSelf().setDepositTxKey(depositTx.getKey()); trade.getSelf().setReserveTxKeyImages(HavenoUtils.getInputKeyImages(depositTx)); } } diff --git a/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessDepositResponse.java b/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessDepositResponse.java index 454763e15b..387da42b82 100644 --- a/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessDepositResponse.java +++ b/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessDepositResponse.java @@ -48,6 +48,13 @@ public class ProcessDepositResponse extends TradeTask { return; } + // publish deposit transaction for redundancy + try { + model.getXmrWalletService().getDaemon().submitTxHex(trade.getSelf().getDepositTxHex()); + } catch (Exception e) { + log.error("Failed to redundantly publish deposit transaction for {} {}", trade.getClass().getSimpleName(), trade.getShortId(), e); + } + // record security deposits trade.getBuyer().setSecurityDeposit(BigInteger.valueOf(message.getBuyerSecurityDeposit())); trade.getSeller().setSecurityDeposit(BigInteger.valueOf(message.getSellerSecurityDeposit())); diff --git a/core/src/main/java/haveno/core/trade/protocol/tasks/SendDepositRequest.java b/core/src/main/java/haveno/core/trade/protocol/tasks/SendDepositRequest.java index 7101c488a5..74153a8dbc 100644 --- a/core/src/main/java/haveno/core/trade/protocol/tasks/SendDepositRequest.java +++ b/core/src/main/java/haveno/core/trade/protocol/tasks/SendDepositRequest.java @@ -82,8 +82,8 @@ public class SendDepositRequest extends TradeTask { Version.getP2PMessageVersion(), new Date().getTime(), trade.getSelf().getContractSignature(), - trade.getSelf().getDepositTx() == null ? null : trade.getSelf().getDepositTx().getFullHex(), - trade.getSelf().getDepositTx() == null ? null : trade.getSelf().getDepositTx().getKey(), + trade.getSelf().getDepositTxHex(), + trade.getSelf().getDepositTxKey(), trade.getSelf().getPaymentAccountKey()); // update trade state