[crypsinous] move circuit creation to leadcoin

This commit is contained in:
mohab metwally
2022-07-06 20:29:03 +02:00
parent 6de880d9f9
commit a9abb7c7db
3 changed files with 35 additions and 27 deletions

View File

@@ -1,4 +1,4 @@
use halo2_proofs::{arithmetic::Field, dev::MockProver, circuit::Value};
use halo2_proofs::{arithmetic::Field, dev::MockProver};
use incrementalmerkletree::{bridgetree::BridgeTree, Tree};
use pasta_curves::{
arithmetic::CurveAffine,
@@ -54,27 +54,7 @@ fn main() {
let coins: Vec<LeadCoin> = epoch.create_coins();
let coin_idx = 0;
let coin = coins[coin_idx];
let contract = LeadContract {
path: Value::known(coin.path.unwrap()),
coin_pk_x: Value::known(coin.pk_x.unwrap()),
coin_pk_y: Value::known(coin.pk_y.unwrap()),
root_sk: Value::known(coin.root_sk.unwrap()),
sf_root_sk: Value::known(mod_r_p(coin.root_sk.unwrap())),
path_sk: Value::known(coin.path_sk.unwrap()),
coin_timestamp: Value::known(coin.tau.unwrap()), //
coin_nonce: Value::known(coin.nonce.unwrap()),
coin1_blind: Value::known(coin.c1_blind.unwrap()),
value: Value::known(coin.value.unwrap()),
coin2_blind: Value::known(coin.c2_blind.unwrap()),
cm_pos: Value::known(coin.idx),
//sn_c1: Value::known(coin.sn.unwrap()),
slot: Value::known(coin.sl.unwrap()),
mau_rho: Value::known(mod_r_p(coin.rho_mu.unwrap())),
mau_y: Value::known(mod_r_p(coin.y_mu.unwrap())),
root_cm: Value::known(coin.root_cm.unwrap()),
};
let contract = coin.create_contract();
//let proof = create_lead_proof(lead_pk.clone(), coin.clone()).unwrap();
//verify_lead_proof(&lead_vk, &proof, coin);

View File

@@ -1,9 +1,12 @@
use pasta_curves::pallas;
use crate::crypto::{
constants::MERKLE_DEPTH_ORCHARD,
merkle_node::MerkleNode,
util::{mod_r_p, pedersen_commitment_scalar},
use halo2_proofs::{circuit::Value};
use crate::{
zk::circuit::lead_contract::LeadContract,
crypto::{
constants::MERKLE_DEPTH_ORCHARD,
merkle_node::MerkleNode,
util::{mod_r_p, pedersen_commitment_scalar},
}
};
use incrementalmerkletree::Hashable;
@@ -89,4 +92,28 @@ impl LeadCoin {
];
public_inputs
}
pub fn create_contract(&self) -> LeadContract
{
let contract = LeadContract {
path: Value::known(self.path.unwrap()),
coin_pk_x: Value::known(self.pk_x.unwrap()),
coin_pk_y: Value::known(self.pk_y.unwrap()),
root_sk: Value::known(self.root_sk.unwrap()),
sf_root_sk: Value::known(mod_r_p(self.root_sk.unwrap())),
path_sk: Value::known(self.path_sk.unwrap()),
coin_timestamp: Value::known(self.tau.unwrap()), //
coin_nonce: Value::known(self.nonce.unwrap()),
coin1_blind: Value::known(self.c1_blind.unwrap()),
value: Value::known(self.value.unwrap()),
coin2_blind: Value::known(self.c2_blind.unwrap()),
cm_pos: Value::known(self.idx),
//sn_c1: Value::known(self.sn.unwrap()),
slot: Value::known(self.sl.unwrap()),
mau_rho: Value::known(mod_r_p(self.rho_mu.unwrap())),
mau_y: Value::known(mod_r_p(self.y_mu.unwrap())),
root_cm: Value::known(self.root_cm.unwrap()),
};
contract
}
}

View File

@@ -8,6 +8,7 @@ use crate::{
use pasta_curves::{
pallas,
};
use group::ff::PrimeField;
pub struct Stakeholder