Просмотр исходного кода

client::State: updated is_valid_cashier_public_key

lunar-mining 4 лет назад
Родитель
Сommit
c0ba3d75d1
1 измененных файлов с 14 добавлено и 12 удалено
  1. 14 12
      src/client.rs

+ 14 - 12
src/client.rs

@@ -64,6 +64,8 @@ impl Client {
         let mint_params_path = params_paths.0.to_str().unwrap_or("mint.params");
         let mint_params_path = params_paths.0.to_str().unwrap_or("mint.params");
         let spend_params_path = params_paths.1.to_str().unwrap_or("spend.params");
         let spend_params_path = params_paths.1.to_str().unwrap_or("spend.params");
 
 
+        let public_keys = cashier_public_keys.clone();
+
         wallet.init_db().await?;
         wallet.init_db().await?;
 
 
         if wallet.get_keypairs()?.is_empty() {
         if wallet.get_keypairs()?.is_empty() {
@@ -98,6 +100,7 @@ impl Client {
             mint_pvk,
             mint_pvk,
             spend_pvk,
             spend_pvk,
             wallet,
             wallet,
+            public_keys,
         }));
         }));
 
 
         // create gateway client
         // create gateway client
@@ -400,21 +403,20 @@ pub struct State {
     // Spend verifying key used by ZK
     // Spend verifying key used by ZK
     pub spend_pvk: groth16::PreparedVerifyingKey<Bls12>,
     pub spend_pvk: groth16::PreparedVerifyingKey<Bls12>,
     pub wallet: WalletPtr,
     pub wallet: WalletPtr,
+    pub public_keys: Vec<jubjub::SubgroupPoint>,
 }
 }
 
 
 impl ProgramState for State {
 impl ProgramState for State {
-    //fn is_valid_cashier_public_key(&self, public: &jubjub::SubgroupPoint) -> bool {
-    //    debug!(target: "CLIENT STATE", "Check if it is valid cashier public key");
-
-    //    if let Ok(pub_keys) = self.wallet.get_cashier_public_keys() {
-    //        if pub_keys.is_empty() {
-    //            error!(target: "State", "No cashier public key");
-    //            return false;
-    //        }
-    //        return pub_keys.contains(public);
-    //    }
-    //    false
-    //}
+    fn is_valid_cashier_public_key(&self, public: &jubjub::SubgroupPoint) -> bool {
+        debug!(target: "CLIENT STATE", "Check if it is valid cashier public key");
+
+        if self.public_keys.is_empty() {
+            error!(target: "State", "No cashier public key");
+            return false;
+        } else {
+            return self.public_keys.contains(public);
+        }
+    }
 
 
     fn is_valid_merkle(&self, merkle_root: &MerkleNode) -> bool {
     fn is_valid_merkle(&self, merkle_root: &MerkleNode) -> bool {
         debug!(target: "CLIENT STATE", "Check if it is valid merkle");
         debug!(target: "CLIENT STATE", "Check if it is valid merkle");