| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- use std::{fs::*, path::PathBuf, time::Instant};
- use crate::{
- crypto::proof::{ProvingKey, VerifyingKey},
- util::serial::Decodable,
- zk::{circuit::MintContract, vm},
- Result,
- };
- pub struct ContractLoader {}
- impl ContractLoader {
- // let bin = from_bincode("Mint", "proofs/mint.zk.bin");
- pub fn from_bincode(name: String, path: PathBuf) -> Result<vm::ZkContract> {
- let start = Instant::now();
- let file = File::open(path)?;
- let zkbin = vm::ZkBinary::decode(file)?;
- for contract_name in zkbin.contracts.keys() {
- println!("Loaded '{}' contract.", contract_name);
- }
- println!("Load time: [{:?}]", start.elapsed());
- let contract = zkbin.contracts[&name].clone();
- Ok(contract)
- }
- // let prk = load_prk("Mint", "proofs/mint.zk/bin", "proofs/mint.prk")
- pub fn load_prk(
- contract_name: String,
- contract_path: PathBuf,
- key_path: PathBuf,
- ) -> Result<()> {
- // TODO: benchmarks
- //let start = Instant::now();
- let contract_data = metadata(contract_path)?;
- let key_data = metadata(key_path)?;
- let contract_time = contract_data.modified()?;
- let key_time = key_data.modified()?;
- if key_time > contract_time {
- println!("Key is newer than contract.");
- } else {
- Self::create_prk(contract_name)?;
- }
- Ok(())
- }
- // let prk = load_vrk("Mint", "proofs/mint.zk/bin", "proofs/mint.vrk")
- pub fn load_vrk(
- contract_name: String,
- contract_path: PathBuf,
- key_path: PathBuf,
- ) -> Result<()> {
- // TODO: benchmarks
- //let start = Instant::now();
- let contract_data = metadata(contract_path)?;
- let key_data = metadata(key_path)?;
- let contract_time = contract_data.modified()?;
- let key_time = key_data.modified()?;
- if key_time > contract_time {
- println!("Key is newer than contract.");
- } else {
- Self::create_vrk(contract_name)?;
- }
- Ok(())
- }
- pub fn create_prk(name: String) -> Result<()> {
- // TODO: implement this
- let _mint_pk = ProvingKey::build(11, MintContract::default());
- let _file = File::create(name + ".prk")?;
- // TODO: serialize and save file
- Ok(())
- }
- pub fn create_vrk(name: String) -> Result<()> {
- // TODO: implement this
- let _mint_vk = VerifyingKey::build(11, MintContract::default());
- let _file = File::create(name + ".vrk")?;
- // TODO: serialize and save file
- Ok(())
- }
- }
|