iuna

iuna - experimental devnet protocol
git clone https://iuna.jhx.app/git/iuna.git
Log | Files | Refs | README | LICENSE

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:
Msrc/app.rs | 31+++++++++++++++++++++++++++++++
Msrc/main.rs | 3+++
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; }