|
@@ -1,4 +1,4 @@
|
|
|
-use halo2_proofs::{arithmetic::Field, dev::MockProver};
|
|
|
|
|
|
|
+use halo2_proofs::{arithmetic::Field, dev::MockProver, circuit::Value};
|
|
|
use incrementalmerkletree::{bridgetree::BridgeTree, Tree};
|
|
use incrementalmerkletree::{bridgetree::BridgeTree, Tree};
|
|
|
use pasta_curves::{
|
|
use pasta_curves::{
|
|
|
arithmetic::CurveAffine,
|
|
arithmetic::CurveAffine,
|
|
@@ -18,6 +18,7 @@ use darkfi::{
|
|
|
zk::circuit::lead_contract::LeadContract,
|
|
zk::circuit::lead_contract::LeadContract,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+
|
|
|
const MERKLE_DEPTH: u8 = MERKLE_DEPTH_ORCHARD as u8;
|
|
const MERKLE_DEPTH: u8 = MERKLE_DEPTH_ORCHARD as u8;
|
|
|
|
|
|
|
|
fn create_coins_sks(len: usize) -> (Vec<MerkleNode>, Vec<[MerkleNode; MERKLE_DEPTH_ORCHARD]>) {
|
|
fn create_coins_sks(len: usize) -> (Vec<MerkleNode>, Vec<[MerkleNode; MERKLE_DEPTH_ORCHARD]>) {
|
|
@@ -183,23 +184,23 @@ fn main() {
|
|
|
let mau_rho: pallas::Base = pallas::Base::from(rhou64);
|
|
let mau_rho: pallas::Base = pallas::Base::from(rhou64);
|
|
|
|
|
|
|
|
let contract = LeadContract {
|
|
let contract = LeadContract {
|
|
|
- path: coin.path,
|
|
|
|
|
- coin_pk_x: coin.pk_x,
|
|
|
|
|
- coin_pk_y: coin.pk_y,
|
|
|
|
|
- root_sk: coin.root_sk,
|
|
|
|
|
- sf_root_sk: Some(mod_r_p(coin.root_sk.unwrap())),
|
|
|
|
|
- path_sk: coin.path_sk,
|
|
|
|
|
- coin_timestamp: coin.tau, //
|
|
|
|
|
- coin_nonce: coin.nonce,
|
|
|
|
|
- coin_opening_1: Some(mod_r_p(coin.opening1.unwrap())),
|
|
|
|
|
- value: coin.value,
|
|
|
|
|
- coin_opening_2: Some(mod_r_p(coin.opening2.unwrap())),
|
|
|
|
|
- cm_pos: Some(coin.idx),
|
|
|
|
|
- //sn_c1: Some(coin.sn.unwrap()),
|
|
|
|
|
- slot: Some(coin.sl.unwrap()),
|
|
|
|
|
- mau_rho: Some(mod_r_p(mau_rho)),
|
|
|
|
|
- mau_y: Some(mod_r_p(mau_y)),
|
|
|
|
|
- root_cm: Some(coin.root_cm.unwrap()),
|
|
|
|
|
|
|
+ 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()),
|
|
|
|
|
+ coin_opening_1: Value::known(mod_r_p(coin.opening1.unwrap())),
|
|
|
|
|
+ value: Value::known(coin.value.unwrap()),
|
|
|
|
|
+ coin_opening_2: Value::known(mod_r_p(coin.opening2.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(mau_rho)),
|
|
|
|
|
+ mau_y: Value::known(mod_r_p(mau_y)),
|
|
|
|
|
+ root_cm: Value::known(coin.root_cm.unwrap()),
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//let proof = create_lead_proof(lead_pk.clone(), coin.clone()).unwrap();
|
|
//let proof = create_lead_proof(lead_pk.clone(), coin.clone()).unwrap();
|