From 6ea87ec75224691f7a73b8a70f22519c811b6322 Mon Sep 17 00:00:00 2001 From: "J. Ayo Akinyele" Date: Tue, 13 Aug 2019 02:18:17 -0400 Subject: [PATCH] Clean up vars and toml file --- Cargo.toml | 3 --- src/channels.rs | 54 ++++++++++++++----------------------------------- 2 files changed, 15 insertions(+), 42 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index fc2a135..3a81f80 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,6 @@ license = "MIT License" rand = "0.6" rand_core = "0.4.0" rand_xorshift = "0.1" -bn = { git = "https://github.com/ZcashFoundation/bn", branch = "master" } ff = { git = "https://github.com/boltlabs-inc/ff", branch = "master" } pairing = { git = "https://github.com/boltlabs-inc/pairing", branch = "master", features = ["serde"] } bincode = "0.6.1" @@ -23,11 +22,9 @@ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" serde_with = "1.0" time = "*" -rustc-serialize = "0.3" secp256k1 = { version = "0.15.0", features = ["rand", "serde"] } curve25519-dalek = { version = "1", features = ["serde"] } merlin = "1.0.0" -#bulletproofs = { git = "https://github.com/dalek-cryptography/bulletproofs", branch = "main" } bulletproofs = { git = "https://github.com/dalek-cryptography/bulletproofs", tag = "1.0.2" } sha2 = { version = "0.8", default-features = false } diff --git a/src/channels.rs b/src/channels.rs index ce4e456..634c131 100644 --- a/src/channels.rs +++ b/src/channels.rs @@ -204,7 +204,7 @@ pub struct CustomerWallet { pub wpk: secp256k1::PublicKey, // keypair bound to the wallet wsk: secp256k1::SecretKey, old_kp: Option, // old wallet key pair - r: E::Fr, // randomness used to form the commitment + t: E::Fr, // randomness used to form the commitment wallet: Wallet, // vector of field elements that represent wallet pub w_com: Commitment, // commitment to the current state of the wallet index: i32, @@ -230,11 +230,11 @@ impl CustomerWallet { let cust_b0 = convert_int_to_fr::(cust_bal); let merch_b0 = convert_int_to_fr::(merch_bal); // randomness for commitment - let r = E::Fr::rand(csprng); + let t = E::Fr::rand(csprng); // initialize wallet vector let wallet = Wallet { pkc: pk_h, wpk: wpk_h, bc: cust_bal, bm: merch_bal, close: None }; - let w_com = channel_token.comParams.commit(&wallet.as_fr_vec(), &r); + let w_com = channel_token.comParams.commit(&wallet.as_fr_vec(), &t); channel_token.set_customer_pk(&pk_c); @@ -253,7 +253,7 @@ impl CustomerWallet { wpk: wpk, wsk: wsk, old_kp: None, - r: r, + t: t, w_com: w_com, wallet: wallet, index: 1, @@ -275,7 +275,7 @@ impl CustomerWallet { // generate nizk proof of knowledge of commitment opening pub fn generate_proof(&self, csprng: &mut R, channel_token: &ChannelToken) -> CommitmentProof { - return CommitmentProof::::new(csprng, &channel_token.comParams, &self.w_com.c, &self.wallet.as_fr_vec(), &self.r); + return CommitmentProof::::new(csprng, &channel_token.comParams, &self.w_com.c, &self.wallet.as_fr_vec(), &self.t); } pub fn verify_close_token(&mut self, channel: &ChannelState, close_token: &Signature) -> bool { @@ -285,11 +285,11 @@ impl CustomerWallet { let mpk = cp.pub_params.mpk.clone(); //println!("verify_close_token - Wallet: {}", &self.wallet); - let is_close_valid = cp.pub_params.keypair.verify(&mpk, &close_wallet, &self.r, &close_token); + let is_close_valid = cp.pub_params.keypair.verify(&mpk, &close_wallet, &self.t, &close_token); if is_close_valid { println!("verify_close_token - Blinded close token is valid!!"); let pk = cp.pub_params.keypair.get_public_key(&mpk); - let unblind_close_token = cp.pub_params.keypair.unblind(&self.r, &close_token); + let unblind_close_token = cp.pub_params.keypair.unblind(&self.t, &close_token); let is_valid = pk.verify(&mpk, &close_wallet, &unblind_close_token); if is_valid { // record the unblinded close token @@ -311,10 +311,10 @@ impl CustomerWallet { let wallet = self.wallet.without_close(); //println!("verify_pay_token - Wallet: {}", &self.wallet); - let is_pay_valid = cp.pub_params.keypair.verify(&mpk, &wallet, &self.r, &pay_token); + let is_pay_valid = cp.pub_params.keypair.verify(&mpk, &wallet, &self.t, &pay_token); if is_pay_valid { println!("verify_pay_token - Blinded pay token is valid!!"); - let unblind_pay_token = cp.pub_params.keypair.unblind(&self.r, &pay_token); + let unblind_pay_token = cp.pub_params.keypair.unblind(&self.t, &pay_token); let pk = cp.pub_params.keypair.get_public_key(&mpk); let is_valid = pk.verify(&mpk, &wallet, &unblind_pay_token); if is_valid { @@ -345,45 +345,21 @@ impl CustomerWallet { // 2 - form new wallet and commitment let new_cust_bal= self.cust_balance - amount; let new_merch_bal = self.merch_balance + amount; - let new_r = E::Fr::rand(csprng); + let new_t = E::Fr::rand(csprng); //println!("old wallet close => {}", self.wallet.close.unwrap()); let cp = channel.cp.as_ref().unwrap(); let old_wallet = Wallet { pkc: self.wallet.pkc.clone(), wpk: self.wallet.wpk.clone(), bc: self.cust_balance, bm: self.merch_balance, close: None }; let new_wallet = Wallet { pkc: self.wallet.pkc.clone(), wpk: wpk_h, bc: new_cust_bal, bm: new_merch_bal, close: Some(self.wallet.close.unwrap()) }; - let new_wcom = cp.pub_params.comParams.commit(&new_wallet.as_fr_vec(), &new_r); - -// turn this into a isolated test to make sure we are handling transition between close/pay tokens -// println!("<==============================>"); -// println!("new wcom: {}", new_wcom); -// -// let new_wcom_pay= cp.pub_params.comParams.commit(&new_wallet.without_close(), &new_r); -// println!("new pay com: {}", new_wcom_pay); -// println!("<==============================>"); -// -// let x = hash_to_fr::(String::from("close").into_bytes() ); -// let ext_new_wcom = cp.pub_params.comParams.extend_commit(&new_wcom_pay, &x); -// assert!( ext_new_wcom.c == new_wcom.c ); -// -// // remove -// let rm_close_new_wcom = cp.pub_params.comParams.remove_commit(&ext_new_wcom, &x); -// println!("removed close from ext new wcom: {}", rm_close_new_wcom); -// assert!( rm_close_new_wcom.c == new_wcom_pay.c ); -// -// panic!("they are all equal!"); - + let new_wcom = cp.pub_params.comParams.commit(&new_wallet.as_fr_vec(), &new_t); // 3 - generate new blinded and randomized pay token let i = self.index - 1; let mut prev_pay_token = self.pay_tokens.get(&i).unwrap(); -// println!("OLD {}", &self.wallet); -// println!("NEW {}", &new_wallet); -// println!("{}", &prev_pay_token); - - let pay_proof = cp.pub_params.prove(csprng, self.r.clone(), old_wallet, new_wallet.clone(), - new_wcom.clone(), new_r, &prev_pay_token); + let pay_proof = cp.pub_params.prove(csprng, self.t.clone(), old_wallet, new_wallet.clone(), + new_wcom.clone(), new_t, &prev_pay_token); // update internal state after proof has been verified by remote let new_cw = CustomerWallet { @@ -395,7 +371,7 @@ impl CustomerWallet { wpk: new_wpk, wsk: new_wsk, old_kp: Some(WalletKeyPair { wpk: self.wpk.clone(), wsk: self.wsk.clone() }), - r: new_r, + t: new_t, w_com: new_wcom.clone(), wallet: new_wallet.clone(), index: self.index + 1, // increment index here @@ -412,7 +388,7 @@ impl CustomerWallet { assert!(self.name == new_wallet.name); self.cust_balance = new_wallet.cust_balance; self.merch_balance = new_wallet.merch_balance; - self.r = new_wallet.r; + self.t = new_wallet.t; self.old_kp = new_wallet.old_kp; self.wpk = new_wallet.wpk; self.wsk = new_wallet.wsk;