diff --git a/doc/release-notes-7618.md b/doc/release-notes-7618.md new file mode 100644 index 000000000000..02ea16131a6b --- /dev/null +++ b/doc/release-notes-7618.md @@ -0,0 +1,9 @@ +GUI changes +----------- + +- Dash-Qt can now register and maintain regular masternodes and EvoNodes from + the Masternodes tab. The registration wizard supports wallet-funded, + wallet-owned, and externally held collateral, while row actions provide + Update Service, Update Registrar, and Revoke workflows. Generated operator + keys are shown and confirmed before registration; wallet-seed-derived + operator keys are not required. (#7618) diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index 16296207eca1..56ddd8a12156 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -71,8 +71,12 @@ QT_MOC_CPP = \ qt/moc_intro.cpp \ qt/moc_macdockiconhandler.cpp \ qt/moc_macnotificationhandler.cpp \ + qt/moc_masternodedialogs.cpp \ qt/moc_masternodelist.cpp \ qt/moc_masternodemodel.cpp \ + qt/moc_masternodeoperationrunner.cpp \ + qt/moc_masternodewidgets.cpp \ + qt/moc_masternodewizard.cpp \ qt/moc_mnemonicverificationdialog.cpp \ qt/moc_modaloverlay.cpp \ qt/moc_networkwidget.cpp \ @@ -158,8 +162,12 @@ BITCOIN_QT_H = \ qt/macdockiconhandler.h \ qt/macnotificationhandler.h \ qt/macos_appnap.h \ + qt/masternodedialogs.h \ qt/masternodelist.h \ qt/masternodemodel.h \ + qt/masternodeoperationrunner.h \ + qt/masternodewidgets.h \ + qt/masternodewizard.h \ qt/mnemonicverificationdialog.h \ qt/modaloverlay.h \ qt/networkstyle.h \ @@ -302,7 +310,11 @@ BITCOIN_QT_WALLET_CPP = \ qt/createwalletdialog.cpp \ qt/descriptiondialog.cpp \ qt/editaddressdialog.cpp \ + qt/masternodedialogs.cpp \ qt/masternodelist.cpp \ + qt/masternodeoperationrunner.cpp \ + qt/masternodewidgets.cpp \ + qt/masternodewizard.cpp \ qt/mnemonicverificationdialog.cpp \ qt/openuridialog.cpp \ qt/overviewpage.cpp \ diff --git a/src/Makefile.qttest.include b/src/Makefile.qttest.include index bcea59d339d8..00401c6340d7 100644 --- a/src/Makefile.qttest.include +++ b/src/Makefile.qttest.include @@ -17,12 +17,16 @@ if ENABLE_WALLET TEST_QT_MOC_CPP += \ qt/test/moc_addressbooktests.cpp \ qt/test/moc_providertransactiontests.cpp \ + qt/test/moc_masternodewidgettests.cpp \ + qt/test/moc_masternodemaintenancetests.cpp \ qt/test/moc_wallettests.cpp endif # ENABLE_WALLET TEST_QT_H = \ qt/test/addressbooktests.h \ qt/test/apptests.h \ + qt/test/masternodemaintenancetests.h \ + qt/test/masternodewidgettests.h \ qt/test/optiontests.h \ qt/test/providertransactiontests.h \ qt/test/rpcnestedtests.h \ @@ -48,6 +52,8 @@ if ENABLE_WALLET qt_test_test_dash_qt_SOURCES += \ qt/test/addressbooktests.cpp \ qt/test/providertransactiontests.cpp \ + qt/test/masternodewidgettests.cpp \ + qt/test/masternodemaintenancetests.cpp \ qt/test/wallettests.cpp \ wallet/test/wallet_test_fixture.cpp endif # ENABLE_WALLET diff --git a/src/interfaces/providertx.h b/src/interfaces/providertx.h index c9f048efe31d..0561d84a095a 100644 --- a/src/interfaces/providertx.h +++ b/src/interfaces/providertx.h @@ -75,6 +75,8 @@ struct ProviderNetInfo { }; struct ProviderPayout { + static constexpr uint16_t MAX_REWARD{10000}; + CTxDestination destination; uint16_t reward{0}; }; diff --git a/src/qt/forms/masternodelist.ui b/src/qt/forms/masternodelist.ui index 41d519b2095a..ab3c7cdd7b59 100644 --- a/src/qt/forms/masternodelist.ui +++ b/src/qt/forms/masternodelist.ui @@ -93,6 +93,16 @@ + + + + Register a new masternode or evonode using this wallet + + + Register Masternode… + + + diff --git a/src/qt/masternodedialogs.cpp b/src/qt/masternodedialogs.cpp new file mode 100644 index 000000000000..214b23cc6d4a --- /dev/null +++ b/src/qt/masternodedialogs.cpp @@ -0,0 +1,721 @@ +// Copyright (c) 2026 The Dash Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include + +#include +#include +#include +#include +#include +#include +#include +#include