From faa83a67f086dca386c32deeb4fd64d79dc92bf5 Mon Sep 17 00:00:00 2001 From: woodser <13068859+woodser@users.noreply.github.com> Date: Wed, 9 Jul 2025 17:48:48 -0400 Subject: [PATCH] peers publish deposit tx for redundancy --- 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 29df35e45f6..c54d384e26c 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 @@ private void clearProcessData() { 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 6f10625e357..b9138fdbc2e 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 @@ protected void run() { 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 454763e15b3..387da42b827 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 @@ protected void run() { 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 7101c488a51..74153a8dbc1 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 @@ protected void run() { 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