From ca1dde03f573141232fff98ee0b5832bb09efa90 Mon Sep 17 00:00:00 2001 From: woodser Date: Tue, 15 Jul 2025 06:35:37 -0400 Subject: [PATCH] peers publish deposit tx for redundancy (#1839) --- core/src/main/java/haveno/core/trade/Trade.java | 2 ++ .../trade/protocol/tasks/MaybeSendSignContractRequest.java | 2 ++ .../core/trade/protocol/tasks/ProcessDepositResponse.java | 7 +++++++ .../core/trade/protocol/tasks/SendDepositRequest.java | 4 ++-- 4 files changed, 13 insertions(+), 2 deletions(-) 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