commit b2abb60fb04f5068bac582cbb83159eb9d597a9f
parent fe972a32a637661060b72f77f17655a98c1a404b
Author: Joris Hartog <jorishartog@hotmail.com>
Date: Sat, 8 Aug 2026 21:44:47 +0200
Stop automatic PoW worker when disabled
Diffstat:
2 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/src/app.rs b/src/app.rs
@@ -761,6 +761,10 @@ impl NodeCore {
}
}
+ pub fn pow_mining_enabled(&self) -> bool {
+ self.pow_mining_enabled
+ }
+
pub fn set_recovery_vdf_top_rank_percent(&mut self, percent: u8) {
self.recovery_vdf_top_rank_percent = percent.min(100);
}
@@ -2647,6 +2651,33 @@ mod tests {
}
#[test]
+ fn disabling_automatic_pow_mining_clears_local_work() {
+ let wallet = Wallet::from_seed("automatic-pow-disable-wallet");
+ let mut allocations = BTreeMap::new();
+ allocations.insert(wallet.address().to_string(), 1);
+ let mut node = NodeCore::new(NodeConfig {
+ wallet,
+ genesis_allocations: allocations,
+ vdf_rounds: 10,
+ burn_per_block: 0,
+ burn_fee: 0,
+ recovery_vdf_top_rank_percent: 100,
+ });
+
+ node.set_pow_mining_enabled(true);
+ assert!(node.pow_mining_enabled());
+ node.prepare_automatic_pow_mining().unwrap();
+ assert!(node.auto_pow_mine_cursor.is_some());
+ assert!(node.status().mining.last_auto_pow_mine_status.is_some());
+
+ node.set_pow_mining_enabled(false);
+
+ assert!(!node.pow_mining_enabled());
+ assert!(node.auto_pow_mine_cursor.is_none());
+ assert!(node.status().mining.last_auto_pow_mine_status.is_none());
+ }
+
+ #[test]
fn automatic_pow_mining_skips_unspendable_owned_blinded_payloads() {
let alice = Wallet::from_seed("automatic-pow-stale-owned-blind-alice");
let bob = Wallet::from_seed("automatic-pow-stale-owned-blind-bob");
diff --git a/src/main.rs b/src/main.rs
@@ -716,6 +716,9 @@ async fn run_automatic_pow_miner(node: SharedNode, gossip: p2p::GossipNetwork, d
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
let (height, pow_mined, outbox) = {
let mut node = node.lock().await;
+ if !node.pow_mining_enabled() {
+ continue;
+ }
if !node.has_real_chain() {
continue;
}