diff --git a/recursive/methods/guest/src/bin/exp.rs b/recursive/methods/guest/src/bin/exp.rs index 2bff929..bfd4b2a 100644 --- a/recursive/methods/guest/src/bin/exp.rs +++ b/recursive/methods/guest/src/bin/exp.rs @@ -2,16 +2,21 @@ #![no_std] extern crate alloc; -use miden_air::FieldElement; -use risc0_zkvm_guest::env; +use risc0_zkvm_guest::{env, mul}; use winter_math::fields::f64::BaseElement; risc0_zkvm_guest::entry!(main); pub fn main() { - let base: u64 = env::read(); - let exp: u64 = env::read(); - let b = BaseElement::new(base); - let res = b.exp(exp); + let a: u64 = env::read(); + let b: u64 = env::read(); + let a_felt = BaseElement::new(a.clone()); + let b_felt = BaseElement::new(b.clone()); + for _i in 0..10 { + let _res = mul::mul_goldilocks(&a, &b); + let _res_felt = a_felt * b_felt; + } + let res = mul::mul_goldilocks(&a, &b).get_u64(); + let _res_felt = a_felt * b_felt; env::commit(&res); } diff --git a/recursive/starter/src/main.rs b/recursive/starter/src/main.rs index c926bde..68edc86 100644 --- a/recursive/starter/src/main.rs +++ b/recursive/starter/src/main.rs @@ -19,9 +19,9 @@ pub mod fibonacci; fn main() -> Result<()> { // fib_winter::fib_winter()?; - recursive_miden()?; + // recursive_miden()?; // sha3(); - // exp(); + exp(); Ok(()) } @@ -137,20 +137,20 @@ fn get_verifier_channel( // assert_eq!(&s, &hashed); //} // -//#[allow(dead_code)] -//fn exp() { -// let mut prover = Prover::new(&std::fs::read(EXP_PATH).unwrap(), EXP_ID).unwrap(); -// let base = 16u64; -// let exp = 10u64; -// prover.add_input(to_vec(&base).unwrap().as_slice()).unwrap(); -// prover.add_input(to_vec(&exp).unwrap().as_slice()).unwrap(); -// let receipt = prover.run().unwrap(); -// let result: BaseElement = from_slice(&receipt.get_journal_vec().unwrap()).unwrap(); -// println!("{}^{} = {}", &base, &exp, &result); -// receipt.verify(EXP_ID).unwrap(); -// let b = BaseElement::new(base); -// assert_eq!(result, b.exp(exp)); -//} +#[allow(dead_code)] +fn exp() { + let mut prover = Prover::new(&std::fs::read(EXP_PATH).unwrap(), EXP_ID).unwrap(); + let a = 0xFFFFFFFF00000000u64; + let b = 2u64; + prover.add_input(to_vec(&a).unwrap().as_slice()).unwrap(); + prover.add_input(to_vec(&b).unwrap().as_slice()).unwrap(); + let receipt = prover.run().unwrap(); + let result: u64 = from_slice(&receipt.get_journal_vec().unwrap()).unwrap(); + println!("{}*{} = {}", &a, &b, &result); + receipt.verify(EXP_ID).unwrap(); + let res_felt = BaseElement::new(result); + assert_eq!(res_felt, BaseElement::new(a) * BaseElement::new(b)); +} pub fn get_proof_options() -> ProofOptions { ProofOptions::with_sha2() diff --git a/risc0 b/risc0 index 3a6ac0a..a9945a4 160000 --- a/risc0 +++ b/risc0 @@ -1 +1 @@ -Subproject commit 3a6ac0ac728f91a47539faa0720388793bae235f +Subproject commit a9945a43f86fb0da1ce05cfb3695ff59d1643d2d diff --git a/winterfell b/winterfell index e7d27e2..75ae08f 160000 --- a/winterfell +++ b/winterfell @@ -1 +1 @@ -Subproject commit e7d27e2932db9911d19e8d97f33bc769a9d98694 +Subproject commit 75ae08fdf7fba54b1f6effbe278d3a8ff7b899be