Просмотр исходного кода

validator/pow: don't blindly unwrap next darkfi rx key

skoupidi 5 месяцев назад
Родитель
Сommit
8753c20c1b
3 измененных файлов с 22 добавлено и 11 удалено
  1. 9 3
      bin/darkfid/src/registry/model.rs
  2. 1 2
      src/validator/consensus.rs
  3. 12 6
      src/validator/pow.rs

+ 9 - 3
bin/darkfid/src/registry/model.rs

@@ -39,7 +39,7 @@ use darkfi::{
     },
     zk::{empty_witnesses, ProvingKey, ZkCircuit},
     zkas::ZkBinary,
-    Result,
+    Error, Result,
 };
 use darkfi_money_contract::{
     client::pow_reward_v1::PoWRewardCallBuilder, MoneyFunction, MONEY_CONTRACT_ZKAS_MINT_NS_V1,
@@ -270,8 +270,14 @@ pub async fn generate_next_block_template(
     let randomx_keys = if next_block_height > RANDOMX_KEY_CHANGING_HEIGHT &&
         next_block_height % RANDOMX_KEY_CHANGING_HEIGHT == RANDOMX_KEY_CHANGE_DELAY
     {
-        // Its safe to unwrap here since we know the key has been set
-        (extended_fork.module.darkfi_rx_keys.1.unwrap(), None)
+        (
+            extended_fork
+                .module
+                .darkfi_rx_keys
+                .1
+                .ok_or_else(|| Error::ParseFailed("darkfi_rx_keys.1 unwrap() error"))?,
+            None,
+        )
     } else {
         extended_fork.module.darkfi_rx_keys
     };

+ 1 - 2
src/validator/consensus.rs

@@ -413,8 +413,7 @@ impl Consensus {
         if next_block_height > RANDOMX_KEY_CHANGING_HEIGHT &&
             next_block_height % RANDOMX_KEY_CHANGING_HEIGHT == RANDOMX_KEY_CHANGE_DELAY
         {
-            // Its safe to unwrap here since we know the key has been set
-            Ok(rx_keys.1.unwrap())
+            Ok(rx_keys.1.ok_or_else(|| Error::ParseFailed("darkfi_rx_keys.1 unwrap() error"))?)
         } else {
             Ok(rx_keys.0)
         }

+ 12 - 6
src/validator/pow.rs

@@ -308,8 +308,10 @@ impl PoWModule {
                 let randomx_key = if header.height > RANDOMX_KEY_CHANGING_HEIGHT &&
                     header.height % RANDOMX_KEY_CHANGING_HEIGHT == RANDOMX_KEY_CHANGE_DELAY
                 {
-                    // Its safe to unwrap here since we know the key has been set
-                    &self.darkfi_rx_keys.1.unwrap()
+                    &self
+                        .darkfi_rx_keys
+                        .1
+                        .ok_or_else(|| Error::ParseFailed("darkfi_rx_keys.1 unwrap() error"))?
                 } else {
                     &self.darkfi_rx_keys.0
                 };
@@ -382,8 +384,10 @@ impl PoWModule {
 
         // Check if need to rotate keys
         if header.height % RANDOMX_KEY_CHANGING_HEIGHT == RANDOMX_KEY_CHANGE_DELAY {
-            // Its safe to unwrap here since we know the key has been set
-            self.darkfi_rx_keys.0 = self.darkfi_rx_keys.1.unwrap();
+            self.darkfi_rx_keys.0 = self
+                .darkfi_rx_keys
+                .1
+                .ok_or_else(|| Error::ParseFailed("darkfi_rx_keys.1 unwrap() error"))?;
             self.darkfi_rx_keys.1 = None;
         }
 
@@ -416,8 +420,10 @@ impl PoWModule {
         let randomx_key = if header.height > RANDOMX_KEY_CHANGING_HEIGHT &&
             header.height % RANDOMX_KEY_CHANGING_HEIGHT == RANDOMX_KEY_CHANGE_DELAY
         {
-            // Its safe to unwrap here since we know the key has been set
-            &self.darkfi_rx_keys.1.unwrap()
+            &self
+                .darkfi_rx_keys
+                .1
+                .ok_or_else(|| Error::ParseFailed("darkfi_rx_keys.1 unwrap() error"))?
         } else {
             &self.darkfi_rx_keys.0
         };