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

darkfid, client: added cashier_public_keys vector

disabled public key check
lunar-mining 4 лет назад
Родитель
Сommit
624ba86c02
2 измененных файлов с 31 добавлено и 22 удалено
  1. 16 10
      src/bin/darkfid.rs
  2. 15 12
      src/client.rs

+ 16 - 10
src/bin/darkfid.rs

@@ -30,7 +30,7 @@ use std::str::FromStr;
 pub struct Cashiers {
 pub struct Cashiers {
     pub cashier_name: String,
     pub cashier_name: String,
     pub cashier_rpc_url: String,
     pub cashier_rpc_url: String,
-    pub cashier_public_key: String,
+    pub cashier_public_key: jubjub::SubgroupPoint,
 }
 }
 
 
 struct Darkfid {
 struct Darkfid {
@@ -70,6 +70,20 @@ impl Darkfid {
     async fn new(config: DarkfidConfig, wallet: Arc<WalletDb>) -> Result<Self> {
     async fn new(config: DarkfidConfig, wallet: Arc<WalletDb>) -> Result<Self> {
         debug!(target: "DARKFID", "INIT WALLET WITH PATH {}", config.wallet_path);
         debug!(target: "DARKFID", "INIT WALLET WITH PATH {}", config.wallet_path);
 
 
+        let mut cashiers = Vec::new();
+        let mut cashier_public_keys = Vec::new();
+
+        for cashier in config.clone().cashiers {
+            let cashier_public: jubjub::SubgroupPoint =
+                deserialize(&bs58::decode(cashier.cashier_public_key).into_vec()?)?;
+            cashiers.push(Cashiers {
+                cashier_name: cashier.cashier_name,
+                cashier_rpc_url: cashier.cashier_rpc_url,
+                cashier_public_key: cashier_public,
+            });
+            cashier_public_keys.push(cashier_public);
+        }
+
         let rocks = Rocks::new(expand_path(&config.database_path.clone())?.as_path())?;
         let rocks = Rocks::new(expand_path(&config.database_path.clone())?.as_path())?;
 
 
         let client = Client::new(
         let client = Client::new(
@@ -83,18 +97,10 @@ impl Darkfid {
                 expand_path(&config.spend_params_path.clone())?,
                 expand_path(&config.spend_params_path.clone())?,
             ),
             ),
             wallet.clone(),
             wallet.clone(),
+            cashier_public_keys,
         )
         )
         .await?;
         .await?;
 
 
-        let mut cashiers = Vec::new();
-
-        for cashier in config.clone().cashiers {
-            cashiers.push(Cashiers {
-                cashier_name: cashier.cashier_name,
-                cashier_rpc_url: cashier.cashier_rpc_url,
-                cashier_public_key: cashier.cashier_public_key,
-            });
-        }
         let client = Arc::new(Mutex::new(client));
         let client = Arc::new(Mutex::new(client));
 
 
         let sol_tokenlist = SolTokenList::new()?;
         let sol_tokenlist = SolTokenList::new()?;

+ 15 - 12
src/client.rs

@@ -46,6 +46,7 @@ pub struct Client {
     spend_params: bellman::groth16::Parameters<Bls12>,
     spend_params: bellman::groth16::Parameters<Bls12>,
     gateway: GatewayClient,
     gateway: GatewayClient,
     pub main_keypair: Keypair,
     pub main_keypair: Keypair,
+    pub cashier_public_keys: Vec<jubjub::SubgroupPoint>,
 }
 }
 
 
 impl Client {
 impl Client {
@@ -54,6 +55,7 @@ impl Client {
         gateway_addrs: (SocketAddr, SocketAddr),
         gateway_addrs: (SocketAddr, SocketAddr),
         params_paths: (PathBuf, PathBuf),
         params_paths: (PathBuf, PathBuf),
         wallet: WalletPtr,
         wallet: WalletPtr,
+        cashier_public_keys: Vec<jubjub::SubgroupPoint>,
     ) -> Result<Self> {
     ) -> Result<Self> {
         let slabstore = RocksColumn::<columns::Slabs>::new(rocks.clone());
         let slabstore = RocksColumn::<columns::Slabs>::new(rocks.clone());
         let merkle_roots = RocksColumn::<columns::MerkleRoots>::new(rocks.clone());
         let merkle_roots = RocksColumn::<columns::MerkleRoots>::new(rocks.clone());
@@ -108,6 +110,7 @@ impl Client {
             spend_params,
             spend_params,
             gateway,
             gateway,
             main_keypair,
             main_keypair,
+            cashier_public_keys,
         })
         })
     }
     }
 
 
@@ -400,18 +403,18 @@ pub struct State {
 }
 }
 
 
 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 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_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");