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

fix the issue in the failing proof hash

mohab metwally 4 лет назад
Родитель
Сommit
8f8e4cca81
2 измененных файлов с 7 добавлено и 9 удалено
  1. 0 8
      src/crypto/lead_proof.rs
  2. 7 1
      src/zk/circuit/lead_contract.rs

+ 0 - 8
src/crypto/lead_proof.rs

@@ -23,18 +23,10 @@ use rand::{thread_rng, Rng};
 
 #[allow(clippy::too_many_arguments)]
 pub fn create_lead_proof(pk: ProvingKey, coin: LeadCoin) -> Result<Proof> {
-    //
-    //let mut rng = thread_rng();
-    //let yu64: u64 = rng.gen();
-    //let rhou64: u64 = rng.gen();
-    //let mau_y: pallas::Base = pallas::Base::from(yu64);
-    //let mau_rho: pallas::Base = pallas::Base::from(rhou64);
     let contract = coin.create_contract();
     //let start = Instant::now();
     let public_inputs = coin.public_inputs();
-    println!("creating proof");
     let proof = Proof::create(&pk, &[contract], &public_inputs, &mut OsRng)?;
-    println!("proof created");
     //debug!("Prove lead: [{:?}]", start.elapsed());
     Ok(proof)
 }

+ 7 - 1
src/zk/circuit/lead_contract.rs

@@ -463,6 +463,7 @@ impl Circuit<pallas::Base> for LeadContract {
          */
 
 
+        /*
         let coin_hash : AssignedCell<Fp,Fp> = {
             let poseidon_message = [
                 //TODO (fix)
@@ -484,8 +485,13 @@ impl Circuit<pallas::Base> for LeadContract {
             let poseidon_output: AssignedCell<Fp, Fp> = poseidon_output;
             poseidon_output
         };
+        */
+        let coin_val = {
+            let coin_val_pt = ar_chip.mul(layouter.namespace(|| ""), &coin_pk_y, &coin_pk_x)?;
 
-
+            let coin_val0 = ar_chip.mul(layouter.namespace(|| ""), &coin_nonce, &coin_value)?;
+            ar_chip.mul(layouter.namespace(|| ""), &coin_val_pt, &coin_val0)?
+        };
         let (com, _) = {
             let coin_commit_v = ValueCommitV;
             let coin_commit_v = FixedPointShort::from_inner(ecc_chip.clone(), coin_commit_v);