From cb4f6abd06e6bedea20abf8d2154b44cb73e4005 Mon Sep 17 00:00:00 2001 From: selsta Date: Sat, 5 Sep 2026 21:06:15 +0200 Subject: [PATCH] wallet_api: preserve output metadata in view-only wallet exports (cherry picked from commit c5160732570cb4e07be29de1905324389df79978) --- src/wallet/api/wallet.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp index a94f78e21..8446db86c 100644 --- a/src/wallet/api/wallet.cpp +++ b/src/wallet/api/wallet.cpp @@ -568,9 +568,15 @@ bool WalletImpl::createWatchOnly(const std::string &path, const std::string &pas // Generate view only wallet view_wallet->generate(path, password, address, viewkey); - // Export/Import outputs - auto outputs = m_wallet->export_outputs(true/*all*/); - view_wallet->import_outputs(outputs); + // Preserve complete output metadata + tools::wallet2::transfer_container transfers; + m_wallet->get_transfers(transfers); + for (auto &td : transfers) + { + memwipe(td.m_multisig_k.data(), td.m_multisig_k.size() * sizeof(td.m_multisig_k[0])); + td.m_multisig_k.clear(); + } + view_wallet->import_outputs(std::make_tuple(uint64_t{0}, uint64_t{transfers.size()}, transfers)); // Copy scanned blockchain auto bc = m_wallet->export_blockchain();