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

example/vm: Update for new enums.

parazyd 4 лет назад
Родитель
Сommit
c5aab1d2f8
4 измененных файлов с 28 добавлено и 23 удалено
  1. 1 1
      Cargo.toml
  2. 1 1
      Makefile
  3. 25 21
      example/vm2.rs
  4. 1 0
      src/zk/vm2/mod.rs

+ 1 - 1
Cargo.toml

@@ -262,4 +262,4 @@ required-features = ["crypto"]
 [[example]]
 [[example]]
 name = "vm2"
 name = "vm2"
 path = "example/vm2.rs"
 path = "example/vm2.rs"
-required-features = ["zkvm"]
+required-features = ["cli", "zkvm"]

+ 1 - 1
Makefile

@@ -36,7 +36,7 @@ clippy:
 test:
 test:
 	$(CARGO) test --release --all-features --all
 	$(CARGO) test --release --all-features --all
 	$(CARGO) run --release --features=node --example tx
 	$(CARGO) run --release --features=node --example tx
-	$(CARGO) run --release --features=crypto,cli,zkas,zkvm --example vm2
+	$(CARGO) run --release --features=cli,zkvm --example vm2
 
 
 clean:
 clean:
 	rm -f $(BINS)
 	rm -f $(BINS)

+ 25 - 21
example/vm2.rs

@@ -7,6 +7,7 @@ use halo2_gadgets::primitives::{
     poseidon::{ConstantLength, P128Pow5T3},
     poseidon::{ConstantLength, P128Pow5T3},
 };
 };
 use incrementalmerkletree::{bridgetree::BridgeTree, Frontier, Tree};
 use incrementalmerkletree::{bridgetree::BridgeTree, Frontier, Tree};
+use log::info;
 use pasta_curves::{group::Curve, pallas};
 use pasta_curves::{group::Curve, pallas};
 use rand::rngs::OsRng;
 use rand::rngs::OsRng;
 use simplelog::{ColorChoice, LevelFilter, TermLogger, TerminalMode};
 use simplelog::{ColorChoice, LevelFilter, TermLogger, TerminalMode};
@@ -18,7 +19,7 @@ use darkfi::{
         mint_proof::MintRevealedValues,
         mint_proof::MintRevealedValues,
         spend_proof::SpendRevealedValues,
         spend_proof::SpendRevealedValues,
     },
     },
-    zk::vm2::{WitnessVar, ZkCircuit},
+    zk::vm2::{Witness, ZkCircuit},
     zkas::decoder::ZkBinary,
     zkas::decoder::ZkBinary,
     Result,
     Result,
 };
 };
@@ -47,17 +48,17 @@ fn mint_proof() -> Result<()> {
 
 
     let pk_coords = public_key.0.to_affine().coordinates().unwrap();
     let pk_coords = public_key.0.to_affine().coordinates().unwrap();
     let witnesses = vec![
     let witnesses = vec![
-        WitnessVar::Base(*pk_coords.x()),
-        WitnessVar::Base(*pk_coords.y()),
-        WitnessVar::Base(pallas::Base::from(value)),
-        WitnessVar::Base(token_id),
-        WitnessVar::Base(serial),
-        WitnessVar::Base(coin_blind),
-        WitnessVar::Scalar(value_blind),
-        WitnessVar::Scalar(token_blind),
+        Witness::Base(*pk_coords.x()),
+        Witness::Base(*pk_coords.y()),
+        Witness::Base(pallas::Base::from(value)),
+        Witness::Base(token_id),
+        Witness::Base(serial),
+        Witness::Base(coin_blind),
+        Witness::Scalar(value_blind),
+        Witness::Scalar(token_blind),
     ];
     ];
 
 
-    let circuit = ZkCircuit::new(witnesses, revealed.make_outputs().to_vec(), zkbin);
+    let circuit = ZkCircuit::new(witnesses, zkbin);
     let prover = MockProver::run(11, &circuit, vec![revealed.make_outputs().to_vec()]).unwrap();
     let prover = MockProver::run(11, &circuit, vec![revealed.make_outputs().to_vec()]).unwrap();
     assert_eq!(prover.verify(), Ok(()));
     assert_eq!(prover.verify(), Ok(()));
 
 
@@ -120,19 +121,19 @@ fn burn_proof() -> Result<()> {
     let leaf_pos = leaf_pos as u32;
     let leaf_pos = leaf_pos as u32;
 
 
     let witnesses = vec![
     let witnesses = vec![
-        WitnessVar::Base(secret.0),
-        WitnessVar::Base(serial),
-        WitnessVar::Base(pallas::Base::from(value)),
-        WitnessVar::Base(token_id),
-        WitnessVar::Base(coin_blind),
-        WitnessVar::Scalar(value_blind),
-        WitnessVar::Scalar(token_blind),
-        WitnessVar::Uint32(leaf_pos),
-        WitnessVar::MerklePath(merkle_path),
-        WitnessVar::Base(sig_secret.0),
+        Witness::Base(secret.0),
+        Witness::Base(serial),
+        Witness::Base(pallas::Base::from(value)),
+        Witness::Base(token_id),
+        Witness::Base(coin_blind),
+        Witness::Scalar(value_blind),
+        Witness::Scalar(token_blind),
+        Witness::Uint32(leaf_pos),
+        Witness::MerklePath(merkle_path),
+        Witness::Base(sig_secret.0),
     ];
     ];
 
 
-    let circuit = ZkCircuit::new(witnesses, revealed.make_outputs().to_vec(), zkbin);
+    let circuit = ZkCircuit::new(witnesses, zkbin);
     let prover = MockProver::run(11, &circuit, vec![revealed.make_outputs().to_vec()])?;
     let prover = MockProver::run(11, &circuit, vec![revealed.make_outputs().to_vec()])?;
     assert_eq!(prover.verify(), Ok(()));
     assert_eq!(prover.verify(), Ok(()));
 
 
@@ -147,7 +148,10 @@ fn main() -> Result<()> {
         ColorChoice::Auto,
         ColorChoice::Auto,
     )?;
     )?;
 
 
+    info!("Executing Mint proof");
     mint_proof()?;
     mint_proof()?;
+
+    info!("Executing Burn proof");
     burn_proof()?;
     burn_proof()?;
 
 
     Ok(())
     Ok(())

+ 1 - 0
src/zk/vm2/mod.rs

@@ -2,3 +2,4 @@ pub mod vm;
 mod vm_stack;
 mod vm_stack;
 
 
 pub use vm::*;
 pub use vm::*;
+pub use vm_stack::Witness;