From 98c801c8db6a42d5e8ba3ee694dd342597c95f83 Mon Sep 17 00:00:00 2001 From: GoudanWoo <155265132+GoudanWoo@users.noreply.github.com> Date: Tue, 6 Aug 2024 21:52:57 +0800 Subject: [PATCH 1/3] fix: min difficulty --- src/mine.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mine.rs b/src/mine.rs index 46cf1da1..3598493e 100644 --- a/src/mine.rs +++ b/src/mine.rs @@ -110,7 +110,7 @@ impl Miner { // Exit if time has elapsed if nonce % 100 == 0 { if timer.elapsed().as_secs().ge(&cutoff_time) { - if best_difficulty.gt(&min_difficulty) { + if best_difficulty.ge(&min_difficulty) { // Mine until min difficulty has been met break; } From ed686229fa8defca050928db12571711a4f1accf Mon Sep 17 00:00:00 2001 From: GoudanWoo <155265132+GoudanWoo@users.noreply.github.com> Date: Tue, 6 Aug 2024 21:53:30 +0800 Subject: [PATCH 2/3] fix: min difficulty in multithreading --- src/mine.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/mine.rs b/src/mine.rs index 3598493e..e591745f 100644 --- a/src/mine.rs +++ b/src/mine.rs @@ -1,4 +1,4 @@ -use std::{sync::Arc, time::Instant}; +use std::{sync::Arc, sync::RwLock, time::Instant}; use colored::*; use drillx::{ @@ -80,8 +80,10 @@ impl Miner { // Dispatch job to each thread let progress_bar = Arc::new(spinner::new_progress_bar()); progress_bar.set_message("Mining..."); + let global_best_difficulty = Arc::new(RwLock::new(0u32)); let handles: Vec<_> = (0..threads) .map(|i| { + let global_best_difficulty = Arc::clone(&global_best_difficulty); std::thread::spawn({ let proof = proof.clone(); let progress_bar = progress_bar.clone(); @@ -104,13 +106,17 @@ impl Miner { best_nonce = nonce; best_difficulty = difficulty; best_hash = hx; + if best_difficulty.gt(&*global_best_difficulty.read().unwrap()) { + *global_best_difficulty.write().unwrap() = best_difficulty; + } } } // Exit if time has elapsed if nonce % 100 == 0 { + let global_best_difficulty = *global_best_difficulty.read().unwrap(); if timer.elapsed().as_secs().ge(&cutoff_time) { - if best_difficulty.ge(&min_difficulty) { + if global_best_difficulty.ge(&min_difficulty) { // Mine until min difficulty has been met break; } From ad035e922f32e1f85a5d9a1a0ce1e207b8130a73 Mon Sep 17 00:00:00 2001 From: GoudanWoo <155265132+GoudanWoo@users.noreply.github.com> Date: Tue, 6 Aug 2024 21:53:59 +0800 Subject: [PATCH 3/3] feat: log difficulty --- src/mine.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/mine.rs b/src/mine.rs index e591745f..8ae54f38 100644 --- a/src/mine.rs +++ b/src/mine.rs @@ -116,13 +116,22 @@ impl Miner { if nonce % 100 == 0 { let global_best_difficulty = *global_best_difficulty.read().unwrap(); if timer.elapsed().as_secs().ge(&cutoff_time) { + if i == 0 { + progress_bar.set_message(format!( + "Mining... ({} / {} difficulty)", + global_best_difficulty, + min_difficulty, + )); + } if global_best_difficulty.ge(&min_difficulty) { // Mine until min difficulty has been met break; } } else if i == 0 { progress_bar.set_message(format!( - "Mining... ({} sec remaining)", + "Mining... ({} / {} difficulty, {} sec remaining)", + global_best_difficulty, + min_difficulty, cutoff_time.saturating_sub(timer.elapsed().as_secs()), )); }