From cbbf40460b63ee62f6c1720ddc2faeb5ca43dd26 Mon Sep 17 00:00:00 2001 From: -k Date: Fri, 16 Oct 2020 16:42:35 -0700 Subject: [PATCH 01/18] Edit testnet magic --- src/chainparams.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 3e329dfe3..a0da0a9d5 100755 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -568,7 +568,7 @@ class CTestNetParams : public CChainParams { pchMessageStart[0] = 0xce; pchMessageStart[1] = 0xe2; pchMessageStart[2] = 0xca; - pchMessageStart[3] = 0xff; + pchMessageStart[3] = 0xf1; nDefaultPort = 19937; nPruneAfterHeight = 1000; From 606d1e34a8c0f0c307bbad27206d5e1d0c53d913 Mon Sep 17 00:00:00 2001 From: -k Date: Fri, 16 Oct 2020 16:43:13 -0700 Subject: [PATCH 02/18] Version bump --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 48bd49d37..04c125a3f 100755 --- a/configure.ac +++ b/configure.ac @@ -2,8 +2,8 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 1) define(_CLIENT_VERSION_MINOR, 6) -define(_CLIENT_VERSION_REVISION, 0) -define(_CLIENT_VERSION_BUILD, 1) +define(_CLIENT_VERSION_REVISION, 1) +define(_CLIENT_VERSION_BUILD, 0) define(_CLIENT_VERSION_IS_RELEASE, true) define(_COPYRIGHT_YEAR, 2020) define(_COPYRIGHT_HOLDERS,[The %s developers]) From 7ecea5c02383b18a7f67c1689c3905b226be12ae Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Fri, 16 Oct 2020 06:01:20 +0300 Subject: [PATCH 03/18] Fix IS-locks sync via `mempool` p2p command (#3766) --- src/net_processing.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/net_processing.cpp b/src/net_processing.cpp index 2981f6d26..334220492 100755 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -4158,8 +4158,8 @@ bool PeerLogicValidation::SendMessages(CNode* pto, std::atomic& interruptM CInv islockInv(MSG_ISLOCK, islockHash); pto->filterInventoryKnown.insert(islockHash); - LogPrint(BCLog::NET, "SendMessages -- queued inv: %s index=%d peer=%d\n", inv.ToString(), vInv.size(), pto->GetId()); - vInv.push_back(inv); + LogPrint(BCLog::NET, "SendMessages -- queued inv: %s index=%d peer=%d\n", islockInv.ToString(), vInv.size(), pto->GetId()); + vInv.push_back(islockInv); if (vInv.size() == MAX_INV_SZ) { LogPrint(BCLog::NET, "SendMessages -- pushing inv's: count=%d peer=%d\n", vInv.size(), pto->GetId()); connman->PushMessage(pto, msgMaker.Make(NetMsgType::INV, vInv)); From efbc50cbe4142adee96dbde351f8dda77f2f316a Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Fri, 16 Oct 2020 06:01:42 +0300 Subject: [PATCH 04/18] qt: Do not show a check-mark for "Encrypt wallet" menu item (#3770) --- src/qt/bitcoingui.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index a1305a758..3595c719a 100755 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -492,7 +492,6 @@ void BitcoinGUI::createActions() encryptWalletAction = new QAction(tr("&Encrypt Wallet..."), this); encryptWalletAction->setStatusTip(tr("Encrypt the private keys that belong to your wallet")); - encryptWalletAction->setCheckable(true); backupWalletAction = new QAction(tr("&Backup Wallet..."), this); backupWalletAction->setStatusTip(tr("Backup wallet to another location")); changePassphraseAction = new QAction(tr("&Change Passphrase..."), this); @@ -1654,7 +1653,6 @@ void BitcoinGUI::setEncryptionStatus(int status) labelWalletEncryptionIcon->show(); labelWalletEncryptionIcon->setPixmap(GUIUtil::getIcon("lock_open", GUIUtil::ThemedColor::RED).pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); labelWalletEncryptionIcon->setToolTip(tr("Wallet is unencrypted")); - encryptWalletAction->setChecked(false); changePassphraseAction->setEnabled(false); unlockWalletAction->setVisible(false); lockWalletAction->setVisible(false); @@ -1664,7 +1662,6 @@ void BitcoinGUI::setEncryptionStatus(int status) labelWalletEncryptionIcon->show(); labelWalletEncryptionIcon->setPixmap(GUIUtil::getIcon("lock_open", GUIUtil::ThemedColor::RED).pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); labelWalletEncryptionIcon->setToolTip(tr("Wallet is encrypted and currently unlocked")); - encryptWalletAction->setChecked(true); changePassphraseAction->setEnabled(true); unlockWalletAction->setVisible(false); lockWalletAction->setVisible(true); @@ -1674,7 +1671,6 @@ void BitcoinGUI::setEncryptionStatus(int status) labelWalletEncryptionIcon->show(); labelWalletEncryptionIcon->setPixmap(GUIUtil::getIcon("lock_open", GUIUtil::ThemedColor::ORANGE).pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); labelWalletEncryptionIcon->setToolTip(tr("Wallet is encrypted and currently unlocked for mixing only")); - encryptWalletAction->setChecked(true); changePassphraseAction->setEnabled(true); unlockWalletAction->setVisible(true); lockWalletAction->setVisible(true); @@ -1684,7 +1680,6 @@ void BitcoinGUI::setEncryptionStatus(int status) labelWalletEncryptionIcon->show(); labelWalletEncryptionIcon->setPixmap(GUIUtil::getIcon("lock_closed", GUIUtil::ThemedColor::GREEN).pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); labelWalletEncryptionIcon->setToolTip(tr("Wallet is encrypted and currently locked")); - encryptWalletAction->setChecked(true); changePassphraseAction->setEnabled(true); unlockWalletAction->setVisible(true); lockWalletAction->setVisible(false); From a3a61f88de2db94f5b9e96778d87879572c79893 Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Fri, 16 Oct 2020 06:02:03 +0300 Subject: [PATCH 05/18] qt: avoid auto-updating window width when it's in full screen or when it's maximized (#3771) --- src/qt/bitcoingui.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 3595c719a..eb743cc38 100755 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -1171,6 +1171,9 @@ void BitcoinGUI::updatePrivateSendVisibility() void BitcoinGUI::updateWidth() { + if (windowState() & (Qt::WindowMaximized | Qt::WindowFullScreen)) { + return; + } int nWidthWidestButton{0}; int nButtonsVisible{0}; for (QAbstractButton* button : tabGroup->buttons()) { From 99a0ac6abe785016f530e0502134400a48fa0667 Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Wed, 28 Oct 2020 03:28:57 +0300 Subject: [PATCH 06/18] qt: Handle fonts of deleted widgets properly, streamline the flow in `GUIUtil::updateFonts` (#3772) * Refactor and fix `GUIUtil::updateFonts` Use QPointer-s to process deleted widgets properly, streamline the flow (less loops and map scans). * Add some debug output * qt: Rename mapNormalFontUpdates -> mapFontUpdates The "Normal" was added when we also had other maps containing font updates * qt: Count removed items, adjust debug logs * qt: Use the emplace result for the default font size * qt: Perform all widget font updates later in a seperate step * qt: Drop pointSize checks * qt: Refactor app class font scaling Co-authored-by: xdustinface --- src/qt/guiutil.cpp | 138 ++++++++++++++++++++++----------------------- 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index ec0248a9a..8600403e4 100755 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -55,6 +55,7 @@ #include #include #include +#include #include #include // for Qt::mightBeRichText #include @@ -140,7 +141,7 @@ static QFont::Weight fontWeightNormal = defaultFontWeightNormal; static QFont::Weight fontWeightBold = defaultFontWeightBold; // Contains all widgets and its font attributes (weight, italic, size) with font changes due to GUIUtil::setFont -static std::map> mapNormalFontUpdates; +static std::map, std::tuple> mapFontUpdates; // Contains a list of supported font weights for all members of GUIUtil::FontFamily static std::map> mapSupportedWeights; @@ -1560,7 +1561,7 @@ void setFont(const std::vector& vecWidgets, FontWeight weight, int nPo { for (auto it : vecWidgets) { auto fontAttributes = std::make_tuple(weight, fItalic, nPointSize); - auto itFontUpdate = mapNormalFontUpdates.emplace(std::make_pair(it, fontAttributes)); + auto itFontUpdate = mapFontUpdates.emplace(std::make_pair(it, fontAttributes)); if (!itFontUpdate.second) { itFontUpdate.first->second = fontAttributes; } @@ -1574,10 +1575,36 @@ void updateFonts() return; } - static std::map mapWidgetDefaultFontSizes; - static std::map mapClassDefaultFontSizes; - std::map> mapWidgetFonts; + static std::map, int> mapWidgetDefaultFontSizes; + // QPointer becomes nullptr for objects that were deleted. + // Remove them from mapDefaultFontSize and mapFontUpdates + // before proceeding any further. + size_t nRemovedDefaultFonts{0}; + auto itd = mapWidgetDefaultFontSizes.begin(); + while (itd != mapWidgetDefaultFontSizes.end()) { + if (itd->first.isNull()) { + itd = mapWidgetDefaultFontSizes.erase(itd); + ++nRemovedDefaultFonts; + } else { + ++itd; + } + } + + size_t nRemovedFontUpdates{0}; + auto itn = mapFontUpdates.begin(); + while (itn != mapFontUpdates.end()) { + if (itn->first.isNull()) { + itn = mapFontUpdates.erase(itn); + ++nRemovedFontUpdates; + } else { + ++itn; + } + } + + size_t nUpdatable{0}, nUpdated{0}; + std::map mapWidgetFonts; + // Loop through all widgets for (QWidget* w : qApp->allWidgets()) { std::vector vecIgnore{ "QWidget", "QDialog", "QFrame", "QStackedWidget", "QDesktopWidget", "QDesktopScreenWidget", @@ -1587,86 +1614,59 @@ void updateFonts() if (std::find(vecIgnore.begin(), vecIgnore.end(), w->metaObject()->className()) != vecIgnore.end()) { continue; } + ++nUpdatable; + QFont font = w->font(); + assert(font.pointSize() > 0); font.setFamily(qApp->font().family()); font.setWeight(getFontWeightNormal()); font.setStyleName(qApp->font().styleName()); font.setStyle(qApp->font().style()); - // Set the font size based on the widgets default font size + the font scale - bool fAdded = false; - if (!mapWidgetDefaultFontSizes.count(w)) { - mapWidgetDefaultFontSizes.emplace(std::make_pair(w, font.pointSize() > 0 ? font.pointSize() : defaultFontSize)); - fAdded = true; - } - font.setPointSizeF(getScaledFontSize(mapWidgetDefaultFontSizes[w])); - bool fUpdateRequired = fAdded || (mapNormalFontUpdates.find(w) == mapNormalFontUpdates.end() && font != w->font()); - mapWidgetFonts.emplace(w, std::make_pair(font, fUpdateRequired)); - } - auto itn = mapNormalFontUpdates.begin(); - while (itn != mapNormalFontUpdates.end()) { - auto itw = mapWidgetFonts.find(itn->first); - if (itw != mapWidgetFonts.end()) { - int nSize = std::get<2>(itn->second); + // Insert/Get the default font size of the widget + auto itDefault = mapWidgetDefaultFontSizes.emplace(w, font.pointSize()); + + auto it = mapFontUpdates.find(w); + if (it != mapFontUpdates.end()) { + int nSize = std::get<2>(it->second); if (nSize == -1) { - nSize = mapWidgetDefaultFontSizes[itn->first]; - } - QFont&& font = getFont(std::get<0>(itn->second), std::get<1>(itn->second), nSize); - if (itn->first->font() != font) { - itw->second.first = font; - itw->second.second = true; + nSize = itDefault.first->second; } - ++itn; + font = getFont(std::get<0>(it->second), std::get<1>(it->second), nSize); } else { - itn = mapNormalFontUpdates.erase(itn); + font.setPointSizeF(getScaledFontSize(itDefault.first->second)); } - } - for (auto it : mapWidgetFonts) { - if (it.second.second) { - it.first->setFont(it.second.first); + if (w->font() != font) { + auto itWidgetFont = mapWidgetFonts.emplace(w, font); + assert(itWidgetFont.second); + ++nUpdated; } } + qDebug().nospace() << __func__ << " - widget counts: updated/updatable/total(" << nUpdated << "/" << nUpdatable << "/" << qApp->allWidgets().size() << ")" + << ", removed items: mapWidgetDefaultFontSizes/mapFontUpdates(" << nRemovedDefaultFonts << "/" << nRemovedFontUpdates << ")"; - // Cleanup mapDefaultFontSize to remove deleted widgets - auto itd = mapWidgetDefaultFontSizes.begin(); - while (itd != mapWidgetDefaultFontSizes.end()) { - if (qApp->allWidgets().contains(itd->first)) { - ++itd; - } else { - itd = mapWidgetDefaultFontSizes.erase(itd); - } + // Perform the required font updates + // NOTE: This is done as seperate step to avoid scaling issues due to font inheritance + // hence all fonts are calculated and stored in mapWidgetFonts above. + for (auto it : mapWidgetFonts) { + it.first->setFont(it.second); } - // Scale the global font for QToolTip labels, QMenu and QMessageBox instances - QFont fontToolTip = qApp->font("QTipLabel"); - QFont fontMenu = qApp->font("QMenu"); - QFont fontMessageBox = qApp->font("QMessageBox"); - // Store their default font sizes before ever applying any scale to it - if (!mapClassDefaultFontSizes.count("QTipLabel")) { - mapClassDefaultFontSizes.emplace("QTipLabel", fontToolTip.pointSize()); - } - if (!mapClassDefaultFontSizes.count("QMenu")) { - mapClassDefaultFontSizes.emplace("QMenu", fontMenu.pointSize()); - } - if (!mapClassDefaultFontSizes.count("QMessageBox")) { - mapClassDefaultFontSizes.emplace("QMessageBox", fontMessageBox.pointSize()); - } - // And give them the proper scaled size based on their default sizes if required - double dSize = getScaledFontSize(mapClassDefaultFontSizes["QTipLabel"]); - if (fontToolTip.pointSizeF() != dSize) { - fontToolTip.setPointSizeF(dSize); - qApp->setFont(fontToolTip, "QTipLabel"); - } - dSize = getScaledFontSize(mapClassDefaultFontSizes["QMenu"]); - if (fontMenu.pointSizeF() != dSize) { - fontMenu.setPointSizeF(dSize); - qApp->setFont(fontMenu, "QMenu"); - } - dSize = getScaledFontSize(getScaledFontSize(mapClassDefaultFontSizes["QMessageBox"])); - if (fontMessageBox.pointSizeF() != dSize) { - fontMessageBox.setPointSizeF(dSize); - qApp->setFont(fontMessageBox, "QMessageBox"); + // Scale the global font size for the classes in the map below + static std::map mapClassFontUpdates{ + {"QTipLabel", -1}, {"QMenu", -1}, {"QMessageBox", -1} + }; + for (auto& it : mapClassFontUpdates) { + QFont fontClass = qApp->font(it.first.c_str()); + if (it.second == -1) { + it.second = fontClass.pointSize(); + } + double dSize = getScaledFontSize(it.second); + if (fontClass.pointSizeF() != dSize) { + fontClass.setPointSizeF(dSize); + qApp->setFont(fontClass, it.first.c_str()); + } } } From 00e27cf393a90b2bfc373ddb2aded40c1478ada2 Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Wed, 28 Oct 2020 03:28:16 +0300 Subject: [PATCH 07/18] qt: Fix --disable-wallet build and --disablewallet mode (#3762) * Fix --disable-wallet build and --disablewallet mode Console is not showing up in --disable-wallet build and it's crashing in --disablewallet mode before this commit. * Use nullptr * Load a stylesheet for the RPCConsole when it's not going to be set as a central widget This partially reverts the initial commit. * Fix QMainWindow dark/light styles * Avoid implicit pointer to bool conversions * qt: Set RPCConsole's window flags based on wallet availability * multi-line early returns * Bring back ifdef to fix a recently introduced crash Introduced in https://github.com/dashpay/dash/pull/3682/commits/2856f46424627fb9e2f2057144fc173440e2c565#diff-f63c3d5094d55f88dbd1967774f85838b3aee5a40540b8c82b924574bca772a0R203 Co-authored-by: xdustinface --- src/qt/bitcoingui.cpp | 17 +++++++++++++---- src/qt/res/css/dark.css | 10 ++++------ src/qt/res/css/light.css | 10 ++++------ src/qt/rpcconsole.cpp | 6 ++++-- src/qt/rpcconsole.h | 2 +- 5 files changed, 26 insertions(+), 19 deletions(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index eb743cc38..47b4dc1eb 100755 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -159,7 +159,7 @@ BitcoinGUI::BitcoinGUI(const NetworkStyle *networkStyle, QWidget *parent) : setUnifiedTitleAndToolBarOnMac(true); #endif - rpcConsole = new RPCConsole(this); + rpcConsole = new RPCConsole(this, enableWallet ? Qt::Window : Qt::Widget); helpMessageDialog = new HelpMessageDialog(this, HelpMessageDialog::cmdline); #ifdef ENABLE_WALLET if(enableWallet) @@ -443,6 +443,7 @@ void BitcoinGUI::createActions() connect(masternodeAction, SIGNAL(clicked()), this, SLOT(showNormalIfMinimized())); connect(masternodeAction, SIGNAL(clicked()), this, SLOT(gotoMasternodePage())); } +#endif // ENABLE_WALLET // These showNormalIfMinimized are needed because Send Coins and Receive Coins // can be triggered from the tray menu, and need to show the GUI to be useful. @@ -465,12 +466,15 @@ void BitcoinGUI::createActions() for (auto button : tabGroup->buttons()) { GUIUtil::setFont({button}, GUIUtil::FontWeight::Normal, 16); + if (walletFrame == nullptr) { + // hide buttons when there is no wallet + button->setVisible(false); + } } GUIUtil::updateFonts(); // Give the selected tab button a bolder font. connect(tabGroup, SIGNAL(buttonToggled(QAbstractButton *, bool)), this, SLOT(highlightTabButton(QAbstractButton *, bool))); -#endif // ENABLE_WALLET quitAction = new QAction(tr("E&xit"), this); quitAction->setStatusTip(tr("Quit application")); @@ -1162,7 +1166,9 @@ void BitcoinGUI::updatePrivateSendVisibility() #endif // PrivateSend button is the third QToolButton, show/hide the underlying QAction // Hiding the QToolButton itself doesn't work. - qobject_cast(centralWidget()->layout()->itemAt(0)->widget())->actions()[2]->setVisible(fEnabled); + if (centralWidget()->layout()->itemAt(0)->widget() != nullptr) { + qobject_cast(centralWidget()->layout()->itemAt(0)->widget())->actions()[2]->setVisible(fEnabled); + } privateSendCoinsMenuAction->setVisible(fEnabled); showPrivateSendHelpAction->setVisible(fEnabled); updateToolBarShortcuts(); @@ -1171,7 +1177,7 @@ void BitcoinGUI::updatePrivateSendVisibility() void BitcoinGUI::updateWidth() { - if (windowState() & (Qt::WindowMaximized | Qt::WindowFullScreen)) { + if (walletFrame == nullptr) { return; } int nWidthWidestButton{0}; @@ -1193,6 +1199,9 @@ void BitcoinGUI::updateWidth() void BitcoinGUI::updateToolBarShortcuts() { + if (walletFrame == nullptr) { + return; + } #ifdef Q_OS_MAC auto modifier = Qt::CTRL; #else diff --git a/src/qt/res/css/dark.css b/src/qt/res/css/dark.css index 6f1c8d99a..348d49c79 100644 --- a/src/qt/res/css/dark.css +++ b/src/qt/res/css/dark.css @@ -41,12 +41,10 @@ Loaded in GUIUtil::loadStyleSheet() in guitil.cpp. Common stuff ******************************************************/ -WalletFrame, -QDialog { - background-color: #323233; -} - -QMessageBox { +QDialog, +QMainWindow, +QMessageBox +WalletFrame { background-color: #323233; } diff --git a/src/qt/res/css/light.css b/src/qt/res/css/light.css index 151e1ad24..652d5f067 100755 --- a/src/qt/res/css/light.css +++ b/src/qt/res/css/light.css @@ -39,12 +39,10 @@ Loaded in GUIUtil::loadStyleSheet() in guitil.cpp. Common stuff ******************************************************/ -WalletFrame, -QDialog { - background-color: #f2f2f4; -} - -QMessageBox { +QDialog, +QMainWindow, +QMessageBox +WalletFrame { background-color: #f2f2f4; } diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index 7f9efcfe3..842c1ce96 100755 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -442,8 +442,8 @@ void RPCExecutor::request(const QString &command) } } -RPCConsole::RPCConsole(QWidget* parent) : - QWidget(parent, Qt::Window), +RPCConsole::RPCConsole(QWidget* parent, Qt::WindowFlags flags) : + QWidget(parent, flags), ui(new Ui::RPCConsole), clientModel(0), historyPtr(0), @@ -524,6 +524,8 @@ RPCConsole::RPCConsole(QWidget* parent) : pageButtons.addButton(ui->btnRepair, pageButtons.buttons().size()); connect(&pageButtons, SIGNAL(buttonClicked(int)), this, SLOT(showPage(int))); + showPage(TAB_INFO); + clear(); } diff --git a/src/qt/rpcconsole.h b/src/qt/rpcconsole.h index 3cad36a2c..4921695b1 100755 --- a/src/qt/rpcconsole.h +++ b/src/qt/rpcconsole.h @@ -34,7 +34,7 @@ class RPCConsole: public QWidget Q_OBJECT public: - explicit RPCConsole(QWidget* parent); + explicit RPCConsole(QWidget* parent, Qt::WindowFlags flags); ~RPCConsole(); static bool RPCParseCommandLine(std::string &strResult, const std::string &strCommand, bool fExecute, std::string * const pstrFilteredOut = nullptr); From 4febfe19af3699eecece2d6d10111b13a65e0abf Mon Sep 17 00:00:00 2001 From: -k Date: Wed, 4 Nov 2020 10:11:08 -0800 Subject: [PATCH 08/18] s/dash/axe --- src/qt/bitcoingui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 47b4dc1eb..cd94550c8 100755 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -1191,7 +1191,7 @@ void BitcoinGUI::updateWidth() ++nButtonsVisible; } // Add 30 per button as padding and use minimum 980 which is the minimum required to show all tab's contents - // Use nButtonsVisible + 1 <- for the dash logo + // Use nButtonsVisible + 1 <- for the axe logo int nWidth = std::max(980, (nWidthWidestButton + 30) * (nButtonsVisible + 1)); setMinimumWidth(nWidth); resize(nWidth, height()); From e2d61d03bb6ad58239091df7f6541e4e893034ca Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Wed, 28 Oct 2020 22:01:29 +0300 Subject: [PATCH 09/18] Avoid accessing pendingContributionVerifications from VerifyPendingContributions while ReceiveMessage is still doing its job (#3782) --- src/llmq/quorums_dkgsession.cpp | 9 ++++++++- src/llmq/quorums_dkgsession.h | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/llmq/quorums_dkgsession.cpp b/src/llmq/quorums_dkgsession.cpp index 1e4cdaf2d..b8da22a95 100755 --- a/src/llmq/quorums_dkgsession.cpp +++ b/src/llmq/quorums_dkgsession.cpp @@ -260,6 +260,8 @@ bool CDKGSession::PreVerifyMessage(const uint256& hash, const CDKGContribution& void CDKGSession::ReceiveMessage(const uint256& hash, const CDKGContribution& qc, bool& retBan) { + LOCK(cs_pending); + CDKGLogger logger(*this, __func__); retBan = false; @@ -359,6 +361,8 @@ void CDKGSession::ReceiveMessage(const uint256& hash, const CDKGContribution& qc // See CBLSWorker::VerifyContributionShares for more details. void CDKGSession::VerifyPendingContributions() { + AssertLockHeld(cs_pending); + CDKGLogger logger(*this, __func__); cxxtimer::Timer t1(true); @@ -412,7 +416,10 @@ void CDKGSession::VerifyAndComplain(CDKGPendingMessages& pendingMessages) return; } - VerifyPendingContributions(); + { + LOCK(cs_pending); + VerifyPendingContributions(); + } CDKGLogger logger(*this, __func__); diff --git a/src/llmq/quorums_dkgsession.h b/src/llmq/quorums_dkgsession.h index be8c5d5dc..ff09b3086 100755 --- a/src/llmq/quorums_dkgsession.h +++ b/src/llmq/quorums_dkgsession.h @@ -277,6 +277,7 @@ class CDKGSession std::map justifications; std::map prematureCommitments; + mutable CCriticalSection cs_pending; std::vector pendingContributionVerifications; // filled by ReceivePrematureCommitment and used by FinalizeCommitments From 009d8e8e74516e72397cb5a1653a19f8d5e9a1c8 Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Wed, 28 Oct 2020 22:02:05 +0300 Subject: [PATCH 10/18] Call EraseObjectRequest as soon as an object is read from the stream (#3783) EraseObjectRequest should nat be postponed for later (no reason to do so) or skipped due to early returns (this is a bug). --- src/llmq/quorums_chainlocks.cpp | 2 +- src/llmq/quorums_dkgsessionhandler.cpp | 31 +++++++++++--------------- src/llmq/quorums_instantsend.cpp | 14 ++++++------ src/llmq/quorums_signing.cpp | 10 ++++----- src/net_processing.cpp | 7 ++++-- 5 files changed, 31 insertions(+), 33 deletions(-) diff --git a/src/llmq/quorums_chainlocks.cpp b/src/llmq/quorums_chainlocks.cpp index 8f96b947e..dfa9cf84a 100755 --- a/src/llmq/quorums_chainlocks.cpp +++ b/src/llmq/quorums_chainlocks.cpp @@ -108,7 +108,7 @@ void CChainLocksHandler::ProcessMessage(CNode* pfrom, const std::string& strComm void CChainLocksHandler::ProcessNewChainLock(NodeId from, const llmq::CChainLockSig& clsig, const uint256& hash) { - { + if (from != -1) { LOCK(cs_main); EraseObjectRequest(from, CInv(MSG_CLSIG, hash)); } diff --git a/src/llmq/quorums_dkgsessionhandler.cpp b/src/llmq/quorums_dkgsessionhandler.cpp index 20cfa7d93..90cb08d85 100755 --- a/src/llmq/quorums_dkgsessionhandler.cpp +++ b/src/llmq/quorums_dkgsessionhandler.cpp @@ -29,30 +29,29 @@ void CDKGPendingMessages::PushPendingMessage(NodeId from, CDataStream& vRecv) // this will also consume the data, even if we bail out early auto pm = std::make_shared(std::move(vRecv)); - { - LOCK(cs); - - if (messagesPerNode[from] >= maxMessagesPerNode) { - // TODO ban? - LogPrint(BCLog::LLMQ_DKG, "CDKGPendingMessages::%s -- too many messages, peer=%d\n", __func__, from); - return; - } - messagesPerNode[from]++; - } - CHashWriter hw(SER_GETHASH, 0); hw.write(pm->data(), pm->size()); uint256 hash = hw.GetHash(); - LOCK2(cs_main, cs); + if (from != -1) { + LOCK(cs_main); + EraseObjectRequest(from, CInv(invType, hash)); + } + + LOCK(cs); + + if (messagesPerNode[from] >= maxMessagesPerNode) { + // TODO ban? + LogPrint(BCLog::LLMQ_DKG, "CDKGPendingMessages::%s -- too many messages, peer=%d\n", __func__, from); + return; + } + messagesPerNode[from]++; if (!seenMessages.emplace(hash).second) { LogPrint(BCLog::LLMQ_DKG, "CDKGPendingMessages::%s -- already seen %s, peer=%d\n", __func__, hash.ToString(), from); return; } - EraseObjectRequest(from, CInv(invType, hash)); - pendingMessages.emplace_back(std::make_pair(from, std::move(pm))); } @@ -454,10 +453,6 @@ bool ProcessPendingMessageBatch(CDKGSession& session, CDKGPendingMessages& pendi const auto& msg = *p.second; auto hash = ::SerializeHash(msg); - { - LOCK(cs_main); - EraseObjectRequest(p.first, CInv(MessageType, hash)); - } bool ban = false; if (!session.PreVerifyMessage(hash, msg, ban)) { diff --git a/src/llmq/quorums_instantsend.cpp b/src/llmq/quorums_instantsend.cpp index 9840095c6..968c6ed02 100755 --- a/src/llmq/quorums_instantsend.cpp +++ b/src/llmq/quorums_instantsend.cpp @@ -680,6 +680,13 @@ void CInstantSendManager::ProcessMessage(CNode* pfrom, const std::string& strCom void CInstantSendManager::ProcessMessageInstantSendLock(CNode* pfrom, const llmq::CInstantSendLock& islock, CConnman& connman) { + auto hash = ::SerializeHash(islock); + + { + LOCK(cs_main); + EraseObjectRequest(pfrom->GetId(), CInv(MSG_ISLOCK, hash)); + } + bool ban = false; if (!PreVerifyInstantSendLock(pfrom->GetId(), islock, ban)) { if (ban) { @@ -689,8 +696,6 @@ void CInstantSendManager::ProcessMessageInstantSendLock(CNode* pfrom, const llmq return; } - auto hash = ::SerializeHash(islock); - LOCK(cs); if (db.GetInstantSendLockByHash(hash) != nullptr) { return; @@ -883,11 +888,6 @@ std::unordered_set CInstantSendManager::ProcessPendingInstantSendLocks( void CInstantSendManager::ProcessInstantSendLock(NodeId from, const uint256& hash, const CInstantSendLock& islock) { - { - LOCK(cs_main); - EraseObjectRequest(from, CInv(MSG_ISLOCK, hash)); - } - CTransactionRef tx; uint256 hashBlock; const CBlockIndex* pindexMined = nullptr; diff --git a/src/llmq/quorums_signing.cpp b/src/llmq/quorums_signing.cpp index 6c1ff0929..565b7458e 100755 --- a/src/llmq/quorums_signing.cpp +++ b/src/llmq/quorums_signing.cpp @@ -482,6 +482,11 @@ void CSigningManager::ProcessMessage(CNode* pfrom, const std::string& strCommand void CSigningManager::ProcessMessageRecoveredSig(CNode* pfrom, const CRecoveredSig& recoveredSig, CConnman& connman) { + { + LOCK(cs_main); + EraseObjectRequest(pfrom->GetId(), CInv(MSG_QUORUM_RECOVERED_SIG, recoveredSig.GetHash())); + } + bool ban = false; if (!PreVerifyRecoveredSig(pfrom->GetId(), recoveredSig, ban)) { if (ban) { @@ -682,11 +687,6 @@ void CSigningManager::ProcessRecoveredSig(NodeId nodeId, const CRecoveredSig& re { auto llmqType = (Consensus::LLMQType)recoveredSig.llmqType; - { - LOCK(cs_main); - EraseObjectRequest(nodeId, CInv(MSG_QUORUM_RECOVERED_SIG, recoveredSig.GetHash())); - } - if (db.HasRecoveredSigForHash(recoveredSig.GetHash())) { return; } diff --git a/src/net_processing.cpp b/src/net_processing.cpp index 334220492..eee11a3c8 100755 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -2734,6 +2734,11 @@ bool static ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStr CInv inv(nInvType, tx.GetHash()); pfrom->AddInventoryKnown(inv); + { + LOCK(cs_main); + EraseObjectRequest(pfrom->GetId(), inv); + } + // Process custom logic, no matter if tx will be accepted to mempool later or not if (nInvType == MSG_DSTX) { uint256 hashTx = tx.GetHash(); @@ -2786,8 +2791,6 @@ bool static ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStr bool fMissingInputs = false; CValidationState state; - EraseObjectRequest(pfrom->GetId(), inv); - if (!AlreadyHave(inv) && AcceptToMemoryPool(mempool, state, ptx, &fMissingInputs /* pfMissingInputs */, false /* bypass_limits */, 0 /* nAbsurdFee */)) { // Process custom txes, this changes AlreadyHave to "true" From 01dc45d74fdbf040e29fbe5fad63859185dcbebb Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Tue, 3 Nov 2020 15:39:38 +0300 Subject: [PATCH 11/18] Merge #15730: rpc: Show scanning details in getwalletinfo (#3785) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit b6c748f84909212dce73e4b77aa125ed1e108a10 doc: Add release notes for 15730 (João Barbosa) d3e8458365ab29017241bc43204fe81cb7fd8530 rpc: Show scanning details in getwalletinfo (João Barbosa) 90e27abe37cc84c7b206f20d28aafe32e71e7209 wallet: Track current scanning progress (João Barbosa) 2ee811e6930cf76ea51e6826fe437ed888688adc wallet: Track scanning duration (João Barbosa) Pull request description: Closes #15724. ACKs for commit b6c748: MarcoFalke: re-utACK b6c748f849 (Only change since my last review is rebase, adding release notes, and returning false instead of null) laanwj: utACK b6c748f84909212dce73e4b77aa125ed1e108a10 jonatack: ACK b6c748f84909212dce73e4b77aa125ed1e108a10, only changes appear to be rebase for https://github.com/bitcoin/bitcoin/pull/15730#discussion_r280030617 and release notes. Tree-SHA512: 8ee98f971c15f66ce8138fc92c55e51abc9faf01866a31ac7ce2ad766aa2bb88559eabee3b5815d645c84cdf1c19dc35ec03f31461e39bc5f6040edec0b87116 Co-authored-by: Wladimir J. van der Laan --- src/wallet/rpcwallet.cpp | 13 +++++++++++++ src/wallet/wallet.cpp | 3 ++- src/wallet/wallet.h | 6 ++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 8fc300e58..8ca1f4c79 100755 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -2768,6 +2768,11 @@ UniValue getwalletinfo(const JSONRPCRequest& request) " }\n" " ,...\n" " ]\n" + " \"scanning\": (json object) current scanning details, or false if no scan is in progress\n" + " {\n" + " \"duration\" : xxxx (numeric) elapsed seconds since scan start\n" + " \"progress\" : x.xxxx, (numeric) scanning progress percentage [0.0, 1.0]\n" + " }\n" "}\n" "\nExamples:\n" + HelpExampleCli("getwalletinfo", "") @@ -2821,6 +2826,14 @@ UniValue getwalletinfo(const JSONRPCRequest& request) } obj.push_back(Pair("hdaccounts", accounts)); } + if (pwallet->IsScanning()) { + UniValue scanning(UniValue::VOBJ); + scanning.pushKV("duration", pwallet->ScanningDuration() / 1000); + scanning.pushKV("progress", pwallet->ScanningProgress()); + obj.pushKV("scanning", scanning); + } else { + obj.pushKV("scanning", false); + } return obj; } diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 119eb239c..ad8e9b319 100755 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -2059,7 +2059,8 @@ CBlockIndex* CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, CBlock LOCK(cs_main); gvp = GuessVerificationProgress(chainParams.TxData(), pindex); } - ShowProgress(_("Rescanning..."), std::max(1, std::min(99, (int)((gvp - dProgressStart) / (dProgressTip - dProgressStart) * 100)))); + m_scanning_progress = (gvp - dProgressStart) / (dProgressTip - dProgressStart); + ShowProgress(_("Rescanning..."), std::max(1, std::min(99, (int)(m_scanning_progress * 100)))); } if (GetTime() >= nNow + 60) { nNow = GetTime(); diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h index 55c803f7f..72429b7d3 100755 --- a/src/wallet/wallet.h +++ b/src/wallet/wallet.h @@ -717,6 +717,8 @@ class CWallet final : public CCryptoKeyStore, public CValidationInterface private: std::atomic fAbortRescan; std::atomic fScanningWallet; //controlled by WalletRescanReserver + std::atomic m_scanning_start{0}; + std::atomic m_scanning_progress{0}; std::mutex mutexScanning; friend class WalletRescanReserver; @@ -977,6 +979,8 @@ class CWallet final : public CCryptoKeyStore, public CValidationInterface void AbortRescan() { fAbortRescan = true; } bool IsAbortingRescan() { return fAbortRescan; } bool IsScanning() { return fScanningWallet; } + int64_t ScanningDuration() const { return fScanningWallet ? GetTimeMillis() - m_scanning_start : 0; } + double ScanningProgress() const { return fScanningWallet ? (double) m_scanning_progress : 0; } /** * keystore implementation @@ -1348,6 +1352,8 @@ class WalletRescanReserver if (m_wallet->fScanningWallet) { return false; } + m_wallet->m_scanning_start = GetTimeMillis(); + m_wallet->m_scanning_progress = 0; m_wallet->fScanningWallet = true; m_could_reserve = true; return true; From fccf170ae202520703c97be196223f4f7413d3fa Mon Sep 17 00:00:00 2001 From: -k Date: Sat, 7 Nov 2020 16:41:25 -0800 Subject: [PATCH 12/18] Bump best block/chainwork testnet --- src/chainparams.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index a0da0a9d5..be6b0f2c6 100755 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -560,10 +560,10 @@ class CTestNetParams : public CChainParams { consensus.vDeployments[Consensus::DEPLOYMENT_REALLOC].nFalloffCoeff = 5; // this corresponds to 10 periods // The best chain should have at least this much work. - consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000000000000001a10897feeb"); // 28049 + consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000000000006f80bb27579f1"); // 189536 // By default assume that the signatures in ancestors of this block are valid. - consensus.defaultAssumeValid = uint256S("0x000000e826e2f4bff3d2812c08d8a220869c0596ea7ee62fe3a7371846999e05"); // 28049 + consensus.defaultAssumeValid = uint256S("0x00000109ef379bab833e20aaa4ccca1123ea9ba13abd68da4e0ace7cdf16115f"); // 189536 pchMessageStart[0] = 0xce; pchMessageStart[1] = 0xe2; From 8484ab09e0b52fb9709ef02319066ad059f0c355 Mon Sep 17 00:00:00 2001 From: -k Date: Sat, 7 Nov 2020 16:51:44 -0800 Subject: [PATCH 13/18] Bump best block/chainwork mainnet --- src/chainparams.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index be6b0f2c6..c6b507bad 100755 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -360,10 +360,10 @@ class CMainParams : public CChainParams { consensus.vDeployments[Consensus::DEPLOYMENT_REALLOC].nFalloffCoeff = 5; // this corresponds to 10 periods // The best chain should have at least this much work. - consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000000057d1699af8ff34e377"); // 507186 + consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000005dd60d804ed482dce3"); // 551525 // By default assume that the signatures in ancestors of this block are valid. - consensus.defaultAssumeValid = uint256S("0x00000000000004d7bcf343ee36d62beae50d19cf26f6ffeb774ee561ab9cc632"); // 507186 + consensus.defaultAssumeValid = uint256S("0x000000000000253fe23b3fe2ad44457bbdd1f24516805fc7fad9fbcd96f9610b"); // 551525 /** * The message start string is designed to be unlikely to occur in normal data. From bc80b8bc42df45b9553465d6cdb8d06f1367b771 Mon Sep 17 00:00:00 2001 From: -k Date: Sat, 7 Nov 2020 17:01:09 -0800 Subject: [PATCH 14/18] Update chaintxdata mainnet --- src/chainparams.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index c6b507bad..9d7861944 100755 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -466,10 +466,10 @@ class CMainParams : public CChainParams { }; chainTxData = ChainTxData{ - 1597784558, // * UNIX timestamp of last known number of transactions - 1043092, // * total number of transactions between genesis and that timestamp + 1604796713, // * UNIX timestamp of last known number of transactions + 1127533, // * total number of transactions between genesis and that timestamp // (the tx=... number in the SetBestChain debug.log lines) - 0.02 // * estimated number of transactions per second after that timestamp + 0.01 // * estimated number of transactions per second after that timestamp }; } }; From 48d78d0c9822b9a39477eec1f1b6efac3e4426d8 Mon Sep 17 00:00:00 2001 From: -k Date: Sat, 7 Nov 2020 17:06:02 -0800 Subject: [PATCH 15/18] Update chaintxdata testnet --- src/chainparams.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 9d7861944..95252ac20 100755 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -643,8 +643,8 @@ class CTestNetParams : public CChainParams { }; chainTxData = ChainTxData{ - 1597784520, // * UNIX timestamp of last known number of transactions - 194076, // * total number of transactions between genesis and that timestamp + 1604797397, // * UNIX timestamp of last known number of transactions + 273040, // * total number of transactions between genesis and that timestamp // (the tx=... number in the SetBestChain debug.log lines) 0.01 // * estimated number of transactions per second after that timestamp }; From 38a25eaac3882775d4243e74a220705d178a3770 Mon Sep 17 00:00:00 2001 From: ddude <32743542+ddude1@users.noreply.github.com> Date: Sun, 8 Nov 2020 19:18:05 -0500 Subject: [PATCH 16/18] 1.6.1.0 manpages --- doc/man/axe-cli.1 | 8 ++++---- doc/man/axe-qt.1 | 12 ++++++------ doc/man/axe-tx.1 | 8 ++++---- doc/man/axed.1 | 12 ++++++------ 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/doc/man/axe-cli.1 b/doc/man/axe-cli.1 index 6958a9974..d0f42267a 100644 --- a/doc/man/axe-cli.1 +++ b/doc/man/axe-cli.1 @@ -1,9 +1,9 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. -.TH AXE-CLI "1" "October 2020" "axe-cli v1.6.0.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. +.TH AXE-CLI "1" "November 2020" "axe-cli v1.6.1.0" "User Commands" .SH NAME -axe-cli \- manual page for axe-cli v1.6.0.0 +axe-cli \- manual page for axe-cli v1.6.1.0 .SH DESCRIPTION -Axe Core RPC client version v1.6.0.0 +Axe Core RPC client version v1.6.1.0 .SS "Usage:" .TP axe\-cli [options] [params] diff --git a/doc/man/axe-qt.1 b/doc/man/axe-qt.1 index 530cccbdd..11491d098 100755 --- a/doc/man/axe-qt.1 +++ b/doc/man/axe-qt.1 @@ -1,9 +1,9 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. -.TH AXE-QT "1" "October 2020" "axe-qt v1.6.0.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. +.TH AXE-QT "1" "November 2020" "axe-qt v1.6.1.0" "User Commands" .SH NAME -axe-qt \- manual page for axe-qt v1.6.0.0 +axe-qt \- manual page for axe-qt v1.6.1.0 .SH DESCRIPTION -Axe Core version v1.6.0.0 (64\-bit) +Axe Core version v1.6.1.0 (64\-bit) Usage: .IP axe\-qt [command\-line options] @@ -32,9 +32,9 @@ block hash) If this block is in the chain assume that it and its ancestors are valid and potentially skip their script verification (0 to verify all, default: -00000000000004d7bcf343ee36d62beae50d19cf26f6ffeb774ee561ab9cc632, +000000000000253fe23b3fe2ad44457bbdd1f24516805fc7fad9fbcd96f9610b, testnet: -000000e826e2f4bff3d2812c08d8a220869c0596ea7ee62fe3a7371846999e05) +00000109ef379bab833e20aaa4ccca1123ea9ba13abd68da4e0ace7cdf16115f) .HP \fB\-conf=\fR .IP diff --git a/doc/man/axe-tx.1 b/doc/man/axe-tx.1 index 408ed4819..329d71e22 100644 --- a/doc/man/axe-tx.1 +++ b/doc/man/axe-tx.1 @@ -1,9 +1,9 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. -.TH AXE-TX "1" "October 2020" "axe-tx v1.6.0.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. +.TH AXE-TX "1" "November 2020" "axe-tx v1.6.1.0" "User Commands" .SH NAME -axe-tx \- manual page for axe-tx v1.6.0.0 +axe-tx \- manual page for axe-tx v1.6.1.0 .SH DESCRIPTION -Axe Core axe\-tx utility version v1.6.0.0 +Axe Core axe\-tx utility version v1.6.1.0 .SS "Usage:" .TP axe\-tx [options] [commands] diff --git a/doc/man/axed.1 b/doc/man/axed.1 index 9efc4766f..7d77e3f78 100644 --- a/doc/man/axed.1 +++ b/doc/man/axed.1 @@ -1,9 +1,9 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. -.TH AXED "1" "October 2020" "axed v1.6.0.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. +.TH AXED "1" "November 2020" "axed v1.6.1.0" "User Commands" .SH NAME -axed \- manual page for axed v1.6.0.0 +axed \- manual page for axed v1.6.1.0 .SH DESCRIPTION -Axe Core Daemon version v1.6.0.0 +Axe Core Daemon version v1.6.1.0 .SS "Usage:" .TP axed [options] @@ -33,9 +33,9 @@ block hash) If this block is in the chain assume that it and its ancestors are valid and potentially skip their script verification (0 to verify all, default: -00000000000004d7bcf343ee36d62beae50d19cf26f6ffeb774ee561ab9cc632, +000000000000253fe23b3fe2ad44457bbdd1f24516805fc7fad9fbcd96f9610b, testnet: -000000e826e2f4bff3d2812c08d8a220869c0596ea7ee62fe3a7371846999e05) +00000109ef379bab833e20aaa4ccca1123ea9ba13abd68da4e0ace7cdf16115f) .HP \fB\-conf=\fR .IP From ea82d678f51487e4853d8b3ace8ed04ed708c8e6 Mon Sep 17 00:00:00 2001 From: -k Date: Sat, 14 Nov 2020 13:55:23 -0800 Subject: [PATCH 17/18] Update hardcoded seeds/mainnet --- contrib/seeds/nodes_main.txt | 49 +++++++++++++++++++++++------------- src/chainparamsseeds.h | 49 +++++++++++++++++++++++------------- 2 files changed, 64 insertions(+), 34 deletions(-) diff --git a/contrib/seeds/nodes_main.txt b/contrib/seeds/nodes_main.txt index 7fb3c3ec9..08446e385 100644 --- a/contrib/seeds/nodes_main.txt +++ b/contrib/seeds/nodes_main.txt @@ -1,4 +1,3 @@ -1.1.1.5:9937 1.9.1.9:9937 1.25.15.15:9937 4.5.2.1:9937 @@ -17,7 +16,6 @@ 35.232.242.61:9937 37.120.162.254:9937 38.103.9.20:9937 -38.103.14.254:9937 38.103.59.180:9937 38.103.110.22:9937 38.103.110.23:9937 @@ -108,17 +106,17 @@ 82.211.25.92:9937 84.255.243.73:9937 85.81.164.189:9937 -85.217.170.166:9937 -88.88.88.88:9937 89.40.118.180:9937 +91.92.136.108:9937 +94.156.189.42:9937 94.176.239.71:9937 94.177.245.248:9937 95.114.189.23:9937 95.183.51.146:9937 95.183.53.17:9937 95.183.53.128:9937 +95.216.127.184:9937 95.216.249.233:9937 -95.216.250.95:9937 95.217.67.224:9937 104.238.82.168:9937 104.238.88.205:9937 @@ -130,6 +128,8 @@ 114.55.242.249:9937 116.203.92.8:9937 117.45.185.37:9937 +117.51.138.86:9937 +117.85.3.120:9937 118.31.124.115:9937 119.45.180.66:9937 119.45.208.63:9937 @@ -138,6 +138,7 @@ 139.186.18.174:9937 144.32.208.54:9937 144.64.0.170:9937 +144.91.89.141:9937 144.91.115.17:9937 144.190.29.94:9937 144.190.130.242:9937 @@ -149,36 +150,42 @@ 148.72.150.99:9937 149.23.53.102:9937 149.28.166.204:9937 +149.46.29.6:9937 +149.81.201.233:9937 149.91.87.98:9937 149.99.178.216:9937 149.110.184.201:9937 149.115.16.188:9937 +149.147.121.28:9937 149.153.41.39:9937 149.168.182.182:9937 +149.173.196.121:9937 149.175.211.30:9937 149.206.97.177:9937 149.210.178.234:9937 +149.211.96.129:9937 149.223.52.189:9937 149.234.81.175:9937 149.235.99.204:9937 149.248.116.203:9937 149.248.118.99:9937 153.26.110.69:9937 -153.26.181.7:9937 153.26.210.70:9937 153.26.210.71:9937 -154.118.13.55:9937 -154.118.13.57:9937 -154.118.13.62:9937 +154.113.168.34:9937 +154.113.168.36:9937 +154.113.168.42:9937 +154.113.168.45:9937 +154.118.13.63:9937 154.118.13.121:9937 154.208.178.3:9937 +154.208.178.5:9937 154.208.178.7:9937 -154.208.178.13:9937 -154.208.178.155:9937 +154.208.178.8:9937 +154.208.178.152:9937 154.208.178.160:9937 154.208.178.163:9937 154.208.178.170:9937 -154.208.178.173:9937 156.33.204.157:9937 156.42.3.53:9937 156.76.50.101:9937 @@ -193,26 +200,26 @@ 156.224.24.44:9937 156.228.13.4:9937 159.89.161.164:9937 -167.86.88.137:9937 167.86.107.225:9937 -167.86.115.204:9937 +167.86.115.205:9937 172.161.33.56:9937 -175.128.171.201:9937 178.62.251.10:9937 178.128.53.16:9937 178.128.77.190:9937 181.227.59.120:9937 +184.119.18.210:9937 185.133.97.4:9937 185.133.97.5:9937 -185.133.97.6:9937 185.133.97.15:9937 +185.133.97.16:9937 185.172.165.190:9937 185.183.110.3:9937 185.228.83.130:9937 188.117.114.53:9937 188.117.114.54:9937 +189.114.146.56:9937 193.37.213.45:9937 -193.37.213.62:9937 +193.37.214.45:9937 193.187.181.132:9937 193.187.181.146:9937 193.187.181.148:9937 @@ -223,6 +230,14 @@ 202.91.32.72:9937 212.24.108.28:9937 216.189.147.174:9937 +217.118.154.30:9937 +217.118.154.39:9937 +217.118.154.44:9937 +217.118.154.66:9937 +217.119.14.14:9937 +217.119.14.22:9937 +217.119.14.30:9937 +217.119.14.61:9937 222.45.62.67:9937 222.45.62.70:9937 222.45.62.82:9937 diff --git a/src/chainparamsseeds.h b/src/chainparamsseeds.h index 14bf8e20e..c77a9c2e3 100755 --- a/src/chainparamsseeds.h +++ b/src/chainparamsseeds.h @@ -8,7 +8,6 @@ * IPv4 as well as onion addresses are wrapped inside a IPv6 address accordingly. */ static SeedSpec6 pnSeed6_main[] = { - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x01,0x01,0x01,0x05}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x01,0x09,0x01,0x09}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x01,0x19,0x0f,0x0f}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x04,0x05,0x02,0x01}, 9937}, @@ -27,7 +26,6 @@ static SeedSpec6 pnSeed6_main[] = { {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x23,0xe8,0xf2,0x3d}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x25,0x78,0xa2,0xfe}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x26,0x67,0x09,0x14}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x26,0x67,0x0e,0xfe}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x26,0x67,0x3b,0xb4}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x26,0x67,0x6e,0x16}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x26,0x67,0x6e,0x17}, 9937}, @@ -118,17 +116,17 @@ static SeedSpec6 pnSeed6_main[] = { {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x52,0xd3,0x19,0x5c}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x54,0xff,0xf3,0x49}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x55,0x51,0xa4,0xbd}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x55,0xd9,0xaa,0xa6}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x58,0x58,0x58,0x58}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x59,0x28,0x76,0xb4}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5b,0x5c,0x88,0x6c}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5e,0x9c,0xbd,0x2a}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5e,0xb0,0xef,0x47}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5e,0xb1,0xf5,0xf8}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5f,0x72,0xbd,0x17}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5f,0xb7,0x33,0x92}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5f,0xb7,0x35,0x11}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5f,0xb7,0x35,0x80}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5f,0xd8,0x7f,0xb8}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5f,0xd8,0xf9,0xe9}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5f,0xd8,0xfa,0x5f}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5f,0xd9,0x43,0xe0}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x68,0xee,0x52,0xa8}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x68,0xee,0x58,0xcd}, 9937}, @@ -140,6 +138,8 @@ static SeedSpec6 pnSeed6_main[] = { {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x72,0x37,0xf2,0xf9}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x74,0xcb,0x5c,0x08}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x75,0x2d,0xb9,0x25}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x75,0x33,0x8a,0x56}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x75,0x55,0x03,0x78}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x76,0x1f,0x7c,0x73}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x77,0x2d,0xb4,0x42}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x77,0x2d,0xd0,0x3f}, 9937}, @@ -148,6 +148,7 @@ static SeedSpec6 pnSeed6_main[] = { {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x8b,0xba,0x12,0xae}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x90,0x20,0xd0,0x36}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x90,0x40,0x00,0xaa}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x90,0x5b,0x59,0x8d}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x90,0x5b,0x73,0x11}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x90,0xbe,0x1d,0x5e}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x90,0xbe,0x82,0xf2}, 9937}, @@ -159,36 +160,42 @@ static SeedSpec6 pnSeed6_main[] = { {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x94,0x48,0x96,0x63}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0x17,0x35,0x66}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0x1c,0xa6,0xcc}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0x2e,0x1d,0x06}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0x51,0xc9,0xe9}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0x5b,0x57,0x62}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0x63,0xb2,0xd8}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0x6e,0xb8,0xc9}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0x73,0x10,0xbc}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0x93,0x79,0x1c}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0x99,0x29,0x27}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0xa8,0xb6,0xb6}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0xad,0xc4,0x79}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0xaf,0xd3,0x1e}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0xce,0x61,0xb1}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0xd2,0xb2,0xea}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0xd3,0x60,0x81}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0xdf,0x34,0xbd}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0xea,0x51,0xaf}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0xeb,0x63,0xcc}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0xf8,0x74,0xcb}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0xf8,0x76,0x63}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x99,0x1a,0x6e,0x45}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x99,0x1a,0xb5,0x07}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x99,0x1a,0xd2,0x46}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x99,0x1a,0xd2,0x47}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0x76,0x0d,0x37}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0x76,0x0d,0x39}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0x76,0x0d,0x3e}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0x71,0xa8,0x22}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0x71,0xa8,0x24}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0x71,0xa8,0x2a}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0x71,0xa8,0x2d}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0x76,0x0d,0x3f}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0x76,0x0d,0x79}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0xd0,0xb2,0x03}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0xd0,0xb2,0x05}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0xd0,0xb2,0x07}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0xd0,0xb2,0x0d}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0xd0,0xb2,0x9b}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0xd0,0xb2,0x08}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0xd0,0xb2,0x98}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0xd0,0xb2,0xa0}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0xd0,0xb2,0xa3}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0xd0,0xb2,0xaa}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0xd0,0xb2,0xad}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9c,0x21,0xcc,0x9d}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9c,0x2a,0x03,0x35}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9c,0x4c,0x32,0x65}, 9937}, @@ -203,26 +210,26 @@ static SeedSpec6 pnSeed6_main[] = { {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9c,0xe0,0x18,0x2c}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9c,0xe4,0x0d,0x04}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9f,0x59,0xa1,0xa4}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xa7,0x56,0x58,0x89}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xa7,0x56,0x6b,0xe1}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xa7,0x56,0x73,0xcc}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xa7,0x56,0x73,0xcd}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xac,0xa1,0x21,0x38}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xaf,0x80,0xab,0xc9}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb2,0x3e,0xfb,0x0a}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb2,0x80,0x35,0x10}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb2,0x80,0x4d,0xbe}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb5,0xe3,0x3b,0x78}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb8,0x77,0x12,0xd2}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb9,0x85,0x61,0x04}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb9,0x85,0x61,0x05}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb9,0x85,0x61,0x06}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb9,0x85,0x61,0x0f}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb9,0x85,0x61,0x10}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb9,0xac,0xa5,0xbe}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb9,0xb7,0x6e,0x03}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb9,0xe4,0x53,0x82}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xbc,0x75,0x72,0x35}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xbc,0x75,0x72,0x36}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xbd,0x72,0x92,0x38}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc1,0x25,0xd5,0x2d}, 9937}, - {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc1,0x25,0xd5,0x3e}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc1,0x25,0xd6,0x2d}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc1,0xbb,0xb5,0x84}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc1,0xbb,0xb5,0x92}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc1,0xbb,0xb5,0x94}, 9937}, @@ -233,6 +240,14 @@ static SeedSpec6 pnSeed6_main[] = { {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xca,0x5b,0x20,0x48}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd4,0x18,0x6c,0x1c}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd8,0xbd,0x93,0xae}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd9,0x76,0x9a,0x1e}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd9,0x76,0x9a,0x27}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd9,0x76,0x9a,0x2c}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd9,0x76,0x9a,0x42}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd9,0x77,0x0e,0x0e}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd9,0x77,0x0e,0x16}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd9,0x77,0x0e,0x1e}, 9937}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd9,0x77,0x0e,0x3d}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xde,0x2d,0x3e,0x43}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xde,0x2d,0x3e,0x46}, 9937}, {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xde,0x2d,0x3e,0x52}, 9937}, From 76dc439402ee664ade01beab95ccb9a38427f1ad Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Fri, 16 Oct 2020 06:02:03 +0300 Subject: [PATCH 18/18] qt: avoid auto-updating window width when it's in full screen or when it's maximized (#3771) --- src/qt/bitcoingui.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index cd94550c8..6e6553d39 100755 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -1180,6 +1180,9 @@ void BitcoinGUI::updateWidth() if (walletFrame == nullptr) { return; } + if (windowState() & (Qt::WindowMaximized | Qt::WindowFullScreen)) { + return; + } int nWidthWidestButton{0}; int nButtonsVisible{0}; for (QAbstractButton* button : tabGroup->buttons()) {