Compare commits

...

12 Commits

Author SHA1 Message Date
luigi1111
c89f8eca91 Merge pull request #4491
16da754 build: prepare v0.18.4.2 (selsta)
2025-08-24 22:34:18 -04:00
selsta
16da754c79 build: prepare v0.18.4.2 2025-08-24 19:31:12 +02:00
tobtoht
346d962837 Merge pull request #4476
9e37b21 chore: remove redundant words in comment (xihuwenhua)
2025-08-22 07:48:08 +00:00
xihuwenhua
9e37b219b9 chore: remove redundant words in comment
Signed-off-by: xihuwenhua <xihuwenhua@outlook.com>
2025-08-22 15:14:32 +08:00
tobtoht
b8b556f289 Merge pull request #4490
881206d p2pool: update to v4.9.1 (sech1)
2025-08-21 16:34:00 +00:00
sech1
881206db99 p2pool: update to v4.9.1 2025-08-21 12:03:32 +02:00
tobtoht
f8ad672c44 Merge pull request #4482
614b81f p2pool: add nano sidechain (nahuhh)
2025-08-04 11:54:17 +00:00
tobtoht
8a85221f95 Merge pull request #4050
5332495 Implement background sync when locked (j-berman)
2025-08-04 11:51:24 +00:00
j-berman
5332495c24 Implement background sync when locked 2025-08-03 10:26:11 -07:00
nahuhh
614b81fd23 p2pool: add nano sidechain 2025-07-24 20:17:37 +00:00
tobtoht
10a184db8b Merge pull request #4477
7c4ddf7 p2pool: update to v4.9 (SChernykh)
2025-07-22 14:15:44 +00:00
SChernykh
7c4ddf7bc4 p2pool: update to v4.9 2025-07-20 22:27:30 +02:00
14 changed files with 290 additions and 53 deletions

View File

@@ -5,7 +5,7 @@ message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}")
set(VERSION_MAJOR "18")
set(VERSION_MINOR "4")
set(VERSION_REVISION "1")
set(VERSION_REVISION "2")
set(VERSION "0.${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}")
option(STATIC "Link libraries statically, requires static Qt")

View File

@@ -12,9 +12,9 @@ RUN apt update && \
RUN update-alternatives --set x86_64-w64-mingw32-g++ $(which x86_64-w64-mingw32-g++-posix) && \
update-alternatives --set x86_64-w64-mingw32-gcc $(which x86_64-w64-mingw32-gcc-posix)
RUN git clone -b v0.18.4.1 --depth 1 https://github.com/monero-project/monero && \
RUN git clone -b v0.18.4.2 --depth 1 https://github.com/monero-project/monero && \
cd monero && \
git reset --hard ec870e50706a29768a65f597155ed5c7ad7e6326 && \
git reset --hard d87edf57fcc4bc2279ad9d8a1db093805e6becd7 && \
cp -a contrib/depends / && \
cd .. && \
rm -rf monero

View File

@@ -105,7 +105,7 @@ Packaging for your favorite distribution would be a welcome contribution!
```
git clone --branch master --recursive https://github.com/monero-project/monero-gui.git
```
\* `master` - replace with the desired version tag (e.g. `v0.18.4.1`) to build the release binaries.
\* `master` - replace with the desired version tag (e.g. `v0.18.4.2`) to build the release binaries.
3. Prepare build environment
```
cd monero-gui
@@ -128,7 +128,7 @@ Packaging for your favorite distribution would be a welcome contribution!
```
git clone --branch master --recursive https://github.com/monero-project/monero-gui.git
```
\* `master` - replace with the desired version tag (e.g. `v0.18.4.1`) to build the release binaries.
\* `master` - replace with the desired version tag (e.g. `v0.18.4.2`) to build the release binaries.
3. Prepare build environment
```
cd monero-gui

View File

@@ -50,6 +50,7 @@ Item {
property bool passwordDialogMode
property bool passphraseDialogMode
property bool newPasswordDialogMode
property bool backgroundSyncing
// same signals as Dialog has
signal accepted()
@@ -77,10 +78,11 @@ Item {
appWindow.updateBalance();
}
function open(walletName, errorText, okButtonText, okButtonIcon) {
function open(walletName, errorText, okButtonText, okButtonIcon, backgroundSyncOn) {
passwordDialogMode = true;
passphraseDialogMode = false;
newPasswordDialogMode = false;
backgroundSyncing = backgroundSyncOn || false;
root.okButtonText = okButtonText;
root.okButtonIcon = okButtonIcon ? okButtonIcon : "";
_openInit(walletName, errorText);
@@ -90,6 +92,7 @@ Item {
passwordDialogMode = false;
passphraseDialogMode = true;
newPasswordDialogMode = false;
backgroundSyncing = false;
_openInit("", "");
}
@@ -97,6 +100,7 @@ Item {
passwordDialogMode = false;
passphraseDialogMode = false;
newPasswordDialogMode = true;
backgroundSyncing = false;
_openInit("", "");
}
@@ -300,6 +304,18 @@ Item {
onClicked: onOk()
}
}
Label {
visible: backgroundSyncing
text: qsTr("Syncing in the background...") + translationManager.emptyString;
Layout.fillWidth: true
font.pixelSize: 14
font.family: MoneroComponents.Style.fontLight.name
font.italic: true
color: MoneroComponents.Style.defaultFontColor
}
}
}
}

View File

@@ -23,7 +23,7 @@ You would think timestamp preservation is no problem when unpacking the zip arch
In any case, after unpacking, check the file dates in the `bin` directory where the installer script looks for them with the dates of the files in the zip file: They must be identical.
Note that the the following line in `Monero.iss` is also important regarding file timestamps:
Note that the following line in `Monero.iss` is also important regarding file timestamps:
TimeStampsInUTC=yes

108
main.qml
View File

@@ -99,6 +99,7 @@ ApplicationWindow {
property string prevSplashText;
property bool splashDisplayedBeforeButtonRequest;
property bool themeTransition: false
property int backgroundSyncType: Wallet.BackgroundSync_Off;
// fiat price conversion
property real fiatPrice: 0
@@ -133,6 +134,12 @@ ApplicationWindow {
}
function lock() {
if (currentWallet && currentWallet.getBackgroundSyncType() != Wallet.BackgroundSync_Off) {
appWindow.showProcessingSplash(qsTr("Locking..."));
currentWallet.startBackgroundSync()
return;
}
passwordDialog.onRejectedCallback = function() { appWindow.showWizard(); }
passwordDialog.onAcceptedCallback = function() {
if(walletPassword === passwordDialog.password)
@@ -288,6 +295,9 @@ ApplicationWindow {
currentWallet.heightRefreshed.disconnect(onHeightRefreshed);
currentWallet.refreshed.disconnect(onWalletRefresh)
currentWallet.updated.disconnect(onWalletUpdate)
currentWallet.backgroundSyncSetup.disconnect(onBackgroundSyncSetup)
currentWallet.backgroundSyncStarted.disconnect(onBackgroundSyncStarted)
currentWallet.backgroundSyncStopped.disconnect(onBackgroundSyncStopped)
currentWallet.newBlock.disconnect(onWalletNewBlock)
currentWallet.moneySpent.disconnect(onWalletMoneySent)
currentWallet.moneyReceived.disconnect(onWalletMoneyReceived)
@@ -324,6 +334,7 @@ ApplicationWindow {
walletName = usefulName(wallet.path)
viewOnly = currentWallet.viewOnly;
backgroundSyncType = currentWallet.getBackgroundSyncType();
// New wallets saves the testnet flag in keys file.
if(persistentSettings.nettype != currentWallet.nettype) {
@@ -335,6 +346,9 @@ ApplicationWindow {
currentWallet.heightRefreshed.connect(onHeightRefreshed);
currentWallet.refreshed.connect(onWalletRefresh)
currentWallet.updated.connect(onWalletUpdate)
currentWallet.backgroundSyncSetup.connect(onBackgroundSyncSetup)
currentWallet.backgroundSyncStarted.connect(onBackgroundSyncStarted)
currentWallet.backgroundSyncStopped.connect(onBackgroundSyncStopped)
currentWallet.newBlock.connect(onWalletNewBlock)
currentWallet.moneySpent.connect(onWalletMoneySent)
currentWallet.moneyReceived.connect(onWalletMoneyReceived)
@@ -544,6 +558,15 @@ ApplicationWindow {
}
}
// Don't allow opening background wallets in the GUI
if (wallet.isBackgroundWallet()) {
passwordDialog.onCancel();
appWindow.showStatusMessage(qsTr("Can't open background wallets in the GUI"),6);
console.log("closing background wallet");
closeWallet();
return;
}
// wallet opened successfully, subscribing for wallet updates
connectWallet(wallet)
@@ -585,16 +608,17 @@ ApplicationWindow {
devicePassphraseDialog.open(on_device)
}
function onWalletUpdate() {
function onWalletUpdate(stoppedBackgroundSync) {
if (!currentWallet)
return;
console.log(">>> wallet updated")
updateBalance();
// Update history if new block found since last update
if(foundNewBlock) {
// Update history if new block found since last update or background sync was just stopped
if(foundNewBlock || stoppedBackgroundSync) {
if (foundNewBlock)
console.log("New block found - updating history")
foundNewBlock = false;
console.log("New block found - updating history")
currentWallet.history.refresh(currentWallet.currentSubaddressAccount)
if(middlePanel.state == "History")
@@ -602,6 +626,61 @@ ApplicationWindow {
}
}
function onBackgroundSyncSetup() {
console.log(">>> background sync setup");
hideProcessingSplash();
if (currentWallet.status !== Wallet.Status_Ok) {
console.error("Error setting up background sync: ", currentWallet.errorString);
appWindow.showStatusMessage(currentWallet.errorString, 5);
return;
}
appWindow.backgroundSyncType = currentWallet.getBackgroundSyncType();
}
function onBackgroundSyncStarted() {
console.log(">>> background sync started");
hideProcessingSplash();
var started = currentWallet.status === Wallet.Status_Ok;
if (!started) {
console.error("Error starting background sync: ", currentWallet.errorString);
appWindow.showStatusMessage(currentWallet.errorString, 5);
}
passwordDialog.onRejectedCallback = function() { appWindow.showWizard(); }
passwordDialog.onAcceptedCallback = function() {
if(walletPassword === passwordDialog.password) {
if (currentWallet && started) {
appWindow.showProcessingSplash(qsTr("Unlocking..."));
currentWallet.stopBackgroundSync(walletPassword);
} else {
passwordDialog.close();
}
} else {
passwordDialog.showError(qsTr("Wrong password") + translationManager.emptyString);
}
}
passwordDialog.open(usefulName(persistentSettings.wallet_path), "", "", "", started);
}
function onBackgroundSyncStopped() {
console.log(">>> background sync stopped");
var stopped = currentWallet.status === Wallet.Status_Ok;
if (!stopped) {
hideProcessingSplash();
console.error("Error stopping background sync: ", currentWallet.errorString);
// If there is an error stopping background sync, the spend key
// won't be loaded and the wallet will be in a broken state. Don't
// let the user continue normal wallet operations in this state.
passwordDialog.showError(qsTr("Error stopping background sync: ") + currentWallet.errorString);
return;
}
onWalletUpdate(stopped);
hideProcessingSplash();
passwordDialog.close();
}
function connectRemoteNode() {
console.log("connecting remote node");
@@ -2258,6 +2337,20 @@ ApplicationWindow {
var inactivity = Utils.epoch() - appWindow.userLastActive;
if(inactivity < (persistentSettings.lockOnUserInActivityInterval * 60)) return;
if (inputDialogVisible) inputDialog.close()
remoteNodeDialog.close();
informationPopup.close()
txConfirmationPopup.close()
txConfirmationPopup.clearFields()
txConfirmationPopup.rejected()
successfulTxPopup.close();
if (currentWallet && currentWallet.getBackgroundSyncType() != Wallet.BackgroundSync_Off) {
appWindow.showProcessingSplash(qsTr("Locking..."));
currentWallet.startBackgroundSync()
return;
}
passwordDialog.onAcceptedCallback = function() {
if(walletPassword === passwordDialog.password){
passwordDialog.close();
@@ -2270,13 +2363,6 @@ ApplicationWindow {
}
passwordDialog.onRejectedCallback = function() { appWindow.showWizard(); }
if (inputDialogVisible) inputDialog.close()
remoteNodeDialog.close();
informationPopup.close()
txConfirmationPopup.close()
txConfirmationPopup.clearFields()
txConfirmationPopup.rejected()
successfulTxPopup.close();
passwordDialog.open();
}

2
monero

Submodule monero updated: ec870e5070...d87edf57fc

View File

@@ -1542,6 +1542,7 @@ Rectangle {
function updateTransactionsFromModel() {
// This function copies the items of `appWindow.currentWallet.historyModel` to `root.txModelData`, as a list of javascript objects
if(currentWallet == null || typeof currentWallet.history === "undefined" ) return;
if(currentWallet.isBackgroundSyncing()) return;
var _model = root.model;
var total = 0

View File

@@ -384,6 +384,7 @@ Rectangle {
ListElement { column1: qsTr("Mini") ; column2: ""; priority: 0}
ListElement { column1: qsTr("Main") ; column2: ""; priority: 1}
ListElement { column1: qsTr("Nano") ; column2: ""; priority: 2}
}
ColumnLayout {
@@ -400,7 +401,7 @@ Rectangle {
MoneroComponents.Tooltip {
id: chainsHelpTooltip
text: qsTr("Use the mini chain if you have a low hashrate.") + translationManager.emptyString
text: qsTr("Use the mini or nano chains if you have a low hashrate.") + translationManager.emptyString
}
MouseArea {
@@ -448,26 +449,43 @@ Rectangle {
id: flagsHelpTooltip
text: "
Usage:<br>
--wallet Wallet address to mine to. Subaddresses and integrated addresses are not supported!<br>
--host IP address of your Monero node, default is 127.0.0.1<br>
--rpc-port monerod RPC API port number, default is 18081<br>
--zmq-port monerod ZMQ pub port number, default is 18083 (same port as in monerod\'s \"--zmq-pub\" command line parameter)<br>
--stratum Comma-separated list of IP:port for stratum server to listen on<br>
--p2p Comma-separated list of IP:port for p2p server to listen on<br>
--addpeers Comma-separated list of IP:port of other p2pool nodes to connect to<br>
--light-mode Don't allocate RandomX dataset, saves 2GB of RAM<br>
--loglevel Verbosity of the log, integer number between 0 and 6<br>
--config Name of the p2pool config file<br>
--data-api Path to the p2pool JSON data (use it in tandem with an external web-server)<br>
--local-api Enable /local/ path in api path for Stratum Server and built-in miner statistics<br>
--stratum-api An alias for --local-api<br>
--no-cache Disable p2pool.cache<br>
--no-color Disable colors in console output<br>
--no-randomx Disable internal RandomX hasher: p2pool will use RPC calls to monerod to check PoW hashes<br>
--out-peers N Maximum number of outgoing connections for p2p server (any value between 10 and 1000)<br>
--in-peers N Maximum number of incoming connections for p2p server (any value between 10 and 1000)<br>
--start-mining N Start built-in miner using N threads (any value between 1 and 64)<br>
--help Show this help message
--wallet Wallet address to mine to. Subaddresses and integrated addresses are not supported!<br>
--host IP address of your Monero node, default is 127.0.0.1<br>
--rpc-port monerod RPC API port number, default is 18081<br>
--zmq-port monerod ZMQ pub port number, default is 18083 (same port as in monerod\'s \"--zmq-pub\" command line parameter)<br>
--stratum Comma-separated list of IP:port for stratum server to listen on<br>
--p2p Comma-separated list of IP:port for p2p server to listen on<br>
--addpeers Comma-separated list of IP:port of other p2pool nodes to connect to<br>
--stratum-ban-time N Number of seconds to ban misbehaving stratum client, default is 600<br>
--light-mode Don't allocate RandomX dataset, saves 2GB of RAM<br>
--loglevel Verbosity of the log, integer number between 0 and 6<br>
--data-dir Path to store general p2pool files (log, cache, peer data, etc.), default is current directory<br>
--sidechain-config Name of the p2pool sidechain parameters file (only use it if you run your own sidechain)<br>
--data-api Path to the p2pool JSON data (use it in tandem with an external web-server)<br>
--local-api Enable /local/ path in api path for Stratum Server and built-in miner statistics<br>
--stratum-api An alias for --local-api<br>
--no-cache Disable p2pool.cache<br>
--no-color Disable colors in console output<br>
--no-randomx Disable internal RandomX hasher: p2pool will use RPC calls to monerod to check PoW hashes<br>
--out-peers N Maximum number of outgoing connections for p2p server (any value between 10 and 1000)<br>
--in-peers N Maximum number of incoming connections for p2p server (any value between 10 and 1000)<br>
--start-mining N Start built-in miner using N threads (any value between 1 and 64)<br>
--no-autodiff Disable automatic difficulty adjustment for miners connected to stratum (WARNING: incompatible with Nicehash and MRR)<br>
--rpc-login Specify username[:password] required for Monero RPC server<br>
--socks5 Specify IP:port of a SOCKS5 proxy to use for outgoing connections<br>
--no-dns Disable DNS queries, use only IP addresses to connect to peers (seed node DNS will be unavailable too)<br>
--p2p-external-port Port number that your router uses for mapping to your local p2p port. Use it if you are behind a NAT and still want to accept incoming connections<br>
--no-upnp Disable UPnP port forwarding<br>
--no-igd An alias for --no-upnp<br>
--upnp-stratum Port forward Stratum port (it's not forwarded by default)<br>
--merge-mine IP:port and wallet address for another blockchain to merge mine with<br>
--version Print p2pool's version and build details<br>
--tls-cert file Load TLS certificate chain from \"file\" in the PEM format<br>
--tls-cert-key file Load TLS certificate private key from \"file\" in the PEM format<br>
--rpc-ssl Enable SSL on RPC connections to the Monero node<br>
--rpc-ssl-fingerprint base64-encoded fingerprint of the Monero node's certificate (optional, use it for certificate pinning)<br>
--no-stratum-http Disable HTTP on Stratum ports<br>
--help Show this help message
"
}
@@ -630,6 +648,9 @@ allArgs = allArgs.filter( ( el ) => !defaultArgs.includes( el.split(" ")[0] ) )
if (chainDropdown.currentIndex === 1) {
chain = "main"
}
if (chainDropdown.currentIndex === 2) {
chain = "nano"
}
var p2poolArgs = persistentSettings.p2poolFlags;
var success = p2poolManager.start(p2poolArgs, address, chain, threads);
if (success)

View File

@@ -31,6 +31,8 @@ import QtQuick.Layouts 1.1
import QtQuick.Controls 2.0
import QtQuick.Dialogs 1.2
import moneroComponents.Wallet 1.0
import "../../js/Utils.js" as Utils
import "../../js/Windows.js" as Windows
import "../../components" as MoneroComponents
@@ -155,6 +157,28 @@ Rectangle {
onMoved: persistentSettings.lockOnUserInActivityInterval = value
}
MoneroComponents.CheckBox {
id: backgroundSyncCheckbox
visible: !!currentWallet && !currentWallet.isHwBacked() && !appWindow.viewOnly
checked: appWindow.backgroundSyncType != Wallet.BackgroundSync_Off
text: qsTr("Sync in the background when locked") + translationManager.emptyString
toggleOnClick: false
onClicked: {
if (currentWallet && appWindow) {
appWindow.showProcessingSplash(qsTr("Updating settings..."))
// TODO: add support for custom background password option
var newBackgroundSyncType = Wallet.BackgroundSync_Off
if (currentWallet.getBackgroundSyncType() === Wallet.BackgroundSync_Off)
newBackgroundSyncType = Wallet.BackgroundSync_ReusePassword
// TODO: don't keep the wallet password in memory on the appWindow
// https://github.com/monero-project/monero-gui/issues/1537#issuecomment-410055329
currentWallet.setupBackgroundSync(newBackgroundSyncType, appWindow.walletPassword)
}
}
}
MoneroComponents.CheckBox {
checked: persistentSettings.askStopLocalNode
onClicked: persistentSettings.askStopLocalNode = !persistentSettings.askStopLocalNode

View File

@@ -529,6 +529,69 @@ bool Wallet::scanTransactions(const QVector<QString> &txids)
return m_walletImpl->scanTransactions(c);
}
void Wallet::setupBackgroundSync(const Wallet::BackgroundSyncType background_sync_type, const QString &wallet_password)
{
qDebug() << "Setting up background sync";
bool refreshEnabled = m_refreshEnabled;
pauseRefresh();
// run inside scheduler because of lag when stopping/starting refresh
m_scheduler.run([this, refreshEnabled, background_sync_type, &wallet_password] {
m_walletImpl->setupBackgroundSync(
static_cast<Monero::Wallet::BackgroundSyncType>(background_sync_type),
wallet_password.toStdString(),
Monero::optional<std::string>());
if (refreshEnabled)
startRefresh();
emit backgroundSyncSetup();
});
}
Wallet::BackgroundSyncType Wallet::getBackgroundSyncType() const
{
return static_cast<BackgroundSyncType>(m_walletImpl->getBackgroundSyncType());
}
bool Wallet::isBackgroundWallet() const
{
return m_walletImpl->isBackgroundWallet();
}
bool Wallet::isBackgroundSyncing() const
{
return m_walletImpl->isBackgroundSyncing();
}
void Wallet::startBackgroundSync()
{
qDebug() << "Starting background sync";
bool refreshEnabled = m_refreshEnabled;
pauseRefresh();
// run inside scheduler because of lag when stopping/starting refresh
m_scheduler.run([this, refreshEnabled] {
m_walletImpl->startBackgroundSync();
if (refreshEnabled)
startRefresh();
emit backgroundSyncStarted();
});
}
void Wallet::stopBackgroundSync(const QString &password)
{
qDebug() << "Stopping background sync";
bool refreshEnabled = m_refreshEnabled;
pauseRefresh();
// run inside scheduler because of lag when stopping/starting refresh
m_scheduler.run([this, password, refreshEnabled] {
m_walletImpl->stopBackgroundSync(password.toStdString());
if (refreshEnabled)
startRefresh();
emit backgroundSyncStopped();
});
}
bool Wallet::refresh(bool historyAndSubaddresses /* = true */)
{
refreshingSet(true);

View File

@@ -112,6 +112,14 @@ public:
Q_ENUM(ConnectionStatus)
enum BackgroundSyncType {
BackgroundSync_Off = Monero::Wallet::BackgroundSync_Off,
BackgroundSync_ReusePassword = Monero::Wallet::BackgroundSync_ReusePassword,
BackgroundSync_CustomPassword = Monero::Wallet::BackgroundSync_CustomPassword
};
Q_ENUM(BackgroundSyncType)
//! returns mnemonic seed
QString getSeed() const;
@@ -215,6 +223,17 @@ public:
//! scan transactions
Q_INVOKABLE bool scanTransactions(const QVector<QString> &txids);
Q_INVOKABLE void setupBackgroundSync(const BackgroundSyncType background_sync_type, const QString &wallet_password);
Q_INVOKABLE BackgroundSyncType getBackgroundSyncType() const;
Q_INVOKABLE bool isBackgroundWallet() const;
Q_INVOKABLE bool isBackgroundSyncing() const;
//! scan in the background with just the view key (wipe the spend key)
Q_INVOKABLE void startBackgroundSync();
//! bring the spend key back and process background synced txs
Q_INVOKABLE void stopBackgroundSync(const QString &password);
//! refreshes the wallet
Q_INVOKABLE bool refresh(bool historyAndSubaddresses = true);
@@ -369,6 +388,9 @@ signals:
void moneyReceived(const QString &txId, quint64 amount);
void unconfirmedMoneyReceived(const QString &txId, quint64 amount);
void newBlock(quint64 height, quint64 targetHeight);
void backgroundSyncSetup() const;
void backgroundSyncStarted() const;
void backgroundSyncStopped() const;
void addressBookChanged() const;
void historyModelChanged() const;
void walletCreationHeightChanged();

View File

@@ -53,21 +53,21 @@ void P2PoolManager::download() {
QString fileName;
QString validHash;
#ifdef Q_OS_WIN
url = "https://github.com/SChernykh/p2pool/releases/download/v4.8.1/p2pool-v4.8.1-windows-x64.zip";
fileName = m_p2poolPath + "/p2pool-v4.8.1-windows-x64.zip";
validHash = "a5378296a202625014623235ac347ddb5d9618b9ac8d1159a6cd9511966f86c0";
url = "https://github.com/SChernykh/p2pool/releases/download/v4.9.1/p2pool-v4.9.1-windows-x64.zip";
fileName = m_p2poolPath + "/p2pool-v4.9.1-windows-x64.zip";
validHash = "97a388ffb445f943db1130169f803cc1f8a4bcc29d35c2843d3dd82ae274faf6";
#elif defined(Q_OS_LINUX)
url = "https://github.com/SChernykh/p2pool/releases/download/v4.8.1/p2pool-v4.8.1-linux-x64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v4.8.1-linux-x64.tar.gz";
validHash = "2c182de88aac7fbd5a3f9a8ac1840b5f9d6050a2d1829c7b177f7a6df8b32117";
url = "https://github.com/SChernykh/p2pool/releases/download/v4.9.1/p2pool-v4.9.1-linux-x64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v4.9.1-linux-x64.tar.gz";
validHash = "4a5369b9e15504d9f4d8d1f8be834fd4cc590cbcea4a3bb9db2703f728f8b8cb";
#elif defined(Q_OS_MACOS_AARCH64)
url = "https://github.com/SChernykh/p2pool/releases/download/v4.8.1/p2pool-v4.8.1-macos-aarch64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v4.8.1-macos-aarch64.tar.gz";
validHash = "38d63384cb183477593460a917183ddb8345f242231efe54020f8e93c399700a";
url = "https://github.com/SChernykh/p2pool/releases/download/v4.9.1/p2pool-v4.9.1-macos-aarch64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v4.9.1-macos-aarch64.tar.gz";
validHash = "20054d77a3e193035e84a011e3c6e864d2e7631a5e3c9e23e73cfe906bb01794";
#elif defined(Q_OS_MACOS)
url = "https://github.com/SChernykh/p2pool/releases/download/v4.8.1/p2pool-v4.8.1-macos-x64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v4.8.1-macos-x64.tar.gz";
validHash = "da7eea2a0b5ec0fc5f51deff63903d2cbe0ead9be04a18327a0fbb4004fba399";
url = "https://github.com/SChernykh/p2pool/releases/download/v4.9.1/p2pool-v4.9.1-macos-x64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v4.9.1-macos-x64.tar.gz";
validHash = "769989d0d299ae6dac513e14eda3269f88ad66e1f73e781a3ad0b2299863db4f";
#endif
QFile file(fileName);
epee::net_utils::http::http_simple_client http_client;
@@ -182,6 +182,10 @@ bool P2PoolManager::start(const QString &flags, const QString &address, const QS
arguments << "--start-mining" << threads;
}
if (chain == "nano") {
arguments << "--nano";
}
if (chain == "mini") {
arguments << "--mini";
}

View File

@@ -86,7 +86,7 @@ Rectangle {
visible: false
text: qsTr("Print this paper, fill it out, and keep it in a safe location. Never share your recovery phrase with anybody, especially with strangers offering technical support.") +
qsTr("Recovery phrase (mnemonic seed)") +
qsTr("These words are are a backup of your wallet. They are the only thing needed to access your funds and restore your Monero wallet, so keep this paper in a safe place and do not disclose it to anybody! It is strongly not recommended to store your recovery phrase digitally (in an email, online service, screenshot, photo, or any other type of computer file).") +
qsTr("These words are a backup of your wallet. They are the only thing needed to access your funds and restore your Monero wallet, so keep this paper in a safe place and do not disclose it to anybody! It is strongly not recommended to store your recovery phrase digitally (in an email, online service, screenshot, photo, or any other type of computer file).") +
qsTr("Wallet creation date") +
qsTr("Wallet restore height") +
qsTr("For instructions on how to restore this wallet, visit www.getmonero.org and go to Resources > User Guides > \"How to restore a wallet from mnemonic seed\". Use only Monero wallets that are trusted and recommended by the Monero community (see a list of them in www.getmonero.org/downloads).") + translationManager.emptyString