Jelajahi Sumber

finish adding solana network to the bridge

ghassmo 4 tahun lalu
induk
melakukan
9a861cf363
1 mengubah file dengan 13 tambahan dan 7 penghapusan
  1. 13 7
      src/bin/cashierd.rs

+ 13 - 7
src/bin/cashierd.rs

@@ -114,9 +114,9 @@ impl Cashierd {
     async fn start(&self, executor: Arc<Executor<'static>>) -> Result<()> {
         self.cashier_wallet.init_db()?;
 
-        let bridge = Bridge::new();
 
         for (feature_name, _) in self.features.iter() {
+            let bridge2 = self.bridge.clone();
             match feature_name.as_str() {
                 #[cfg(feature = "sol")]
                 "sol" | "solana" => {
@@ -124,8 +124,8 @@ impl Cashierd {
                     use drk::service::SolClient;
                     use solana_sdk::signer::keypair::Keypair;
                     let main_keypari = Keypair::new();
-                    let _sol_client = SolClient::new(serialize(&main_keypari));
-                    //bridge.add_clients(sol_client).await?;
+                    let sol_client = SolClient::new(serialize(&main_keypari)).await?;
+                    bridge2.add_clients("sol".into(), sol_client).await?;
                 }
                 #[cfg(feature = "btc")]
                 "btc" | "bitcoin" => {
@@ -135,8 +135,8 @@ impl Cashierd {
                         String::from("ssl://blockstream.info:993"),
                     );
                     use drk::service::btc::BtcClient;
-                    let _btc_client = BtcClient::new(btc_endpoint);
-                    //bridge.add_clients(sol_client).await?;
+                    let _btc_client = BtcClient::new(btc_endpoint)?;
+                    //bridge2.add_clients("btc".into(), btc_client).await?;
                 }
                 _ => {
                     warn!("No feature enabled for {} network", feature_name);
@@ -156,6 +156,7 @@ impl Cashierd {
             ));
 
         let cashier_wallet = self.cashier_wallet.clone();
+        let bridge = self.bridge.clone();
         let listen_for_receiving_coins_task = smol::spawn(async move {
             loop {
                 Self::listen_for_receiving_coins(
@@ -200,10 +201,11 @@ impl Cashierd {
 
         // send a request to bridge to send equivalent amount of
         // received drk coin to token publickey
-        if let Some((addr, asset_id)) = token {
+        if let Some((addr, network, asset_id)) = token {
             bridge_subscribtion
                 .sender
                 .send(bridge::BridgeRequests {
+                    network: network.to_string(),
                     asset_id,
                     payload: bridge::BridgeRequestsPayload::SendRequest(addr.clone(), amount),
                 })
@@ -239,10 +241,11 @@ impl Cashierd {
         }
 
         let network = &args[0].as_str().unwrap();
+        let network = network.to_string();
         let token_id = &args[1];
         let drk_pub_key = &args[2].as_str().unwrap();
 
-        if !self.features.contains_key(network.clone()) {
+        if !self.features.contains_key(&network.clone()) {
             return JsonResult::Err(jsonerr(
                 InvalidParams,
                 Some(format!("Cashier doesn't support this network: {}", network)),
@@ -267,6 +270,7 @@ impl Cashierd {
             bridge_subscribtion
                 .sender
                 .send(bridge::BridgeRequests {
+                    network: network.clone(),
                     asset_id,
                     payload: bridge::BridgeRequestsPayload::WatchRequest,
                 })
@@ -287,6 +291,7 @@ impl Cashierd {
                         &drk_pub_key,
                         &token_priv,
                         &serialize(&token_pub),
+                        &network,
                         &asset_id,
                     )?;
 
@@ -347,6 +352,7 @@ impl Cashierd {
                     &address,
                     &cashier_public,
                     &cashier_secret,
+                    &network.to_string(),
                     &asset_id,
                 )?;
             }