فهرست منبع

validator/pow: always mine in a diff thread

skoupidi 8 ماه پیش
والد
کامیت
c3dfe69967
1فایلهای تغییر یافته به همراه9 افزوده شده و 60 حذف شده
  1. 9 60
      src/validator/pow.rs

+ 9 - 60
src/validator/pow.rs

@@ -491,47 +491,22 @@ pub fn generate_mining_vms(
     Ok(vms)
 }
 
-/// Auxiliary function to mine provided header using provided RandomX
-/// VM (single thread).
-fn randomx_vm_mine(
-    vm: &RandomXVM,
+/// Mine provided header, based on provided PoW module next mine target,
+/// using provided RandomX VMs setup.
+pub fn mine_block(
+    vms: &[Arc<RandomXVM>],
     target: &BigUint,
     header: &mut Header,
     stop_signal: &Receiver<()>,
 ) -> Result<()> {
-    debug!(target: "validator::pow::randomx_vm_mine", "[MINER] Mining started!");
-    let mining_start = Instant::now();
-    loop {
-        // Check if stop signal is received
-        if stop_signal.is_full() {
-            debug!(target: "validator::pow::randomx_vm_mine", "[MINER] Stop signal received, exiting");
-            return Err(Error::MinerTaskStopped);
-        }
-
-        let out_hash = vm.calculate_hash(header.hash().inner())?;
-        let out_hash = BigUint::from_bytes_le(&out_hash);
-        if &out_hash <= target {
-            debug!(target: "validator::pow::randomx_vm_mine", "[MINER] Found block header using nonce {}", header.nonce);
-            debug!(target: "validator::pow::randomx_vm_mine", "[MINER] Block header hash {}", header.hash());
-            debug!(target: "validator::pow::randomx_vm_mine", "[MINER] RandomX output: 0x{out_hash:064x}");
-            break;
-        }
+    debug!(target: "validator::pow::mine_block", "[MINER] Mine target: 0x{target:064x}");
 
-        header.nonce += 1;
+    // Check VMs were provided
+    if vms.is_empty() {
+        error!(target: "validator::pow::mine_block", "[MINER] No VMs were provided!");
+        return Err(Error::MinerTaskStopped)
     }
-    debug!(target: "validator::pow::randomx_vm_mine", "[MINER] Completed mining in {:?}", mining_start.elapsed());
-    debug!(target: "validator::pow::randomx_vm_mine", "[MINER] Mined header: {header:?}");
-    Ok(())
-}
 
-/// Auxiliary function to mine provided header using provided RandomX
-/// VMs corresponding to a multiple threads setup.
-fn randomx_vms_mine(
-    vms: &[Arc<RandomXVM>],
-    target: &BigUint,
-    header: &mut Header,
-    stop_signal: &Receiver<()>,
-) -> Result<()> {
     debug!(target: "validator::pow::randomx_vms_mine", "[MINER] Initializing mining threads...");
     let mut handles = Vec::with_capacity(vms.len());
     let found_header = Arc::new(AtomicBool::new(false));
@@ -614,32 +589,6 @@ fn randomx_vms_mine(
     Ok(())
 }
 
-/// Mine provided header, based on provided PoW module next mine target,
-/// using provided RandomX VMs setup.
-pub fn mine_block(
-    vms: &[Arc<RandomXVM>],
-    target: &BigUint,
-    header: &mut Header,
-    stop_signal: &Receiver<()>,
-) -> Result<()> {
-    debug!(target: "validator::pow::mine_block", "[MINER] Mine target: 0x{target:064x}");
-
-    // Check if stop signal is received
-    if stop_signal.is_full() {
-        debug!(target: "validator::pow::mine_block", "[MINER] Stop signal received, exiting");
-        return Err(Error::MinerTaskStopped);
-    }
-
-    match vms.len() {
-        0 => {
-            error!(target: "validator::pow::mine_block", "[MINER] No VMs were provided!");
-            Err(Error::MinerTaskStopped)
-        }
-        1 => randomx_vm_mine(&vms[0], target, header, stop_signal),
-        _ => randomx_vms_mine(vms, target, header, stop_signal),
-    }
-}
-
 #[cfg(test)]
 mod tests {
     use std::{