Parcourir la source

ouroboros/stakeholder: added temp proof verification check

aggstam il y a 3 ans
Parent
commit
f3df2bcde2
1 fichiers modifiés avec 12 ajouts et 1 suppressions
  1. 12 1
      src/consensus/ouroboros/stakeholder.rs

+ 12 - 1
src/consensus/ouroboros/stakeholder.rs

@@ -15,6 +15,7 @@ use crate::{
         coin::OwnCoin,
         keypair::{PublicKey, SecretKey},
         leadcoin::LeadCoin,
+        lead_proof,
         proof::{Proof, ProvingKey, VerifyingKey},
         schnorr::SchnorrSecret,
     },
@@ -380,7 +381,17 @@ impl Stakeholder {
         let won: Vec<bool> = self.epoch.is_leader(sl, &mut winning_coin_idx);
         for i in 0..won.len() {
             let proof = if won[i] {
-                self.epoch.get_proof(sl, i, &self.get_leadprovkingkey())
+                let p = self.epoch.get_proof(sl, i, &self.get_leadprovkingkey());
+                // Sanity check for proof validity)
+                info!("================= Leader proof generated successfully, veryfing... =================");
+                let coin = self.epoch.get_coin(sl as usize, i);                
+                match lead_proof::verify_lead_proof(&self.get_leadverifyingkey(), &p, &coin.public_inputs()) {
+                    Ok(_) => info!("================= Proof veryfied succsessfully! ================="),
+                    Err(e) => error!("================= Error during leader proof verification: {} =================", e),
+                }
+                info!("====================================================================================");
+                /////////////////////////////////////////////
+                p
             } else {
                 Proof::new(vec![])
             };