]> Nutra Git (v2) - gamesguru/feather.git/commitdiff
Compare base addresses due to wallet2 integrated address inconsistency
authortobtoht <thotbot@protonmail.com>
Tue, 26 Jul 2022 16:59:17 +0000 (18:59 +0200)
committertobtoht <thotbot@protonmail.com>
Tue, 26 Jul 2022 16:59:17 +0000 (18:59 +0200)
monero
src/MainWindow.cpp
src/libwalletqt/WalletManager.cpp
src/libwalletqt/WalletManager.h

diff --git a/monero b/monero
index ed9996693aaa2c23206e43ca13b532aebc2cc2e7..566e6e1904f20d7537c8f4c7f50caf1a5ee86bf8 160000 (submodule)
--- a/monero
+++ b/monero
@@ -1 +1 @@
-Subproject commit ed9996693aaa2c23206e43ca13b532aebc2cc2e7
+Subproject commit 566e6e1904f20d7537c8f4c7f50caf1a5ee86bf8
index b7790ee902771a32cbb1ac5df9b9a678c70e6794..8f4cd9777d896e0f1a172e87b19cdf7907c3c1b3 100644 (file)
@@ -667,11 +667,12 @@ void MainWindow::onCreateTransactionSuccess(PendingTransaction *tx, const QVecto
     tx->refresh();
     QSet<QString> outputAddresses;
     for (const auto &output : tx->transaction(0)->outputs()) {
-        outputAddresses.insert(output->address());
+        outputAddresses.insert(WalletManager::baseAddressFromIntegratedAddress(output->address(), constants::networkType));
     }
     QSet<QString> destAddresses;
     for (const auto &addr : address) {
-        destAddresses.insert(addr);
+        // TODO: Monero core bug, integrated address is not added to dests for transactions spending ALL
+        destAddresses.insert(WalletManager::baseAddressFromIntegratedAddress(addr, constants::networkType));
     }
     if (!outputAddresses.contains(destAddresses)) {
         err = QString("%1 %2").arg(err, "Constructed transaction doesn't appear to send to (all) specified destination address(es). Try creating the transaction again.");
index 3273e6896625716cbeebd28a4e5778cf64e26d0f..f092749b26f2d2b26800c37c252549470367ee7e 100644 (file)
@@ -250,6 +250,11 @@ QString WalletManager::paymentIdFromAddress(const QString &address, NetworkType:
     return QString::fromStdString(Monero::Wallet::paymentIdFromAddress(address.toStdString(), static_cast<Monero::NetworkType>(nettype)));
 }
 
+QString WalletManager::baseAddressFromIntegratedAddress(const QString &address, NetworkType::Type nettype)
+{
+    return QString::fromStdString(Monero::Wallet::baseAddressFromIntegratedAddress(address.toStdString(), static_cast<Monero::NetworkType>(nettype)))   ;
+}
+
 bool WalletManager::isDaemonLocal(const QString &daemon_address) const
 {
     return daemon_address.isEmpty() ? false : Monero::Utils::isAddressLocal(daemon_address.toStdString());
index 6390b49b56027b4875f7d57f136f7f58577d632f..0611fbaa5ff032e2e12a1a9c067c691cadd55ca0 100644 (file)
@@ -98,6 +98,7 @@ public:
     static bool keyValid(const QString &key, const QString &address, bool isViewKey, NetworkType::Type nettype);
 
     QString paymentIdFromAddress(const QString &address, NetworkType::Type nettype) const;
+    static QString baseAddressFromIntegratedAddress(const QString &address, NetworkType::Type nettype);
 
     bool isDaemonLocal(const QString &daemon_address) const;