mint-classic.rs 880 B

1234567891011121314151617181920212223242526272829303132333435
  1. use ff::Field;
  2. use group::Group;
  3. use drk::crypto::{
  4. create_mint_proof, load_params, save_params, setup_mint_prover, verify_mint_proof,
  5. };
  6. fn main() {
  7. use rand::rngs::OsRng;
  8. let public = jubjub::SubgroupPoint::random(&mut OsRng);
  9. let value = 110;
  10. let randomness_value: jubjub::Fr = jubjub::Fr::random(&mut OsRng);
  11. let serial: jubjub::Fr = jubjub::Fr::random(&mut OsRng);
  12. let randomness_coin: jubjub::Fr = jubjub::Fr::random(&mut OsRng);
  13. {
  14. let params = setup_mint_prover();
  15. save_params("mint.params", &params);
  16. }
  17. let (params, pvk) = load_params("mint.params").expect("params should load");
  18. let (proof, revealed) = create_mint_proof(
  19. &params,
  20. value,
  21. randomness_value,
  22. serial,
  23. randomness_coin,
  24. public,
  25. );
  26. assert!(verify_mint_proof(&pvk, &proof, &revealed));
  27. }