Browse Source

added cashier->darkfid withdraw channel. ran cargo fmt

lunar-mining 5 years ago
parent
commit
8734978f1e
4 changed files with 32 additions and 17 deletions
  1. 7 4
      src/bin/darkfid.rs
  2. 8 4
      src/rpc/adapter.rs
  3. 13 8
      src/rpc/jsonserver.rs
  4. 4 1
      src/service/cashier.rs

+ 7 - 4
src/bin/darkfid.rs

@@ -1,6 +1,6 @@
 use drk::blockchain::{rocks::columns, Rocks, RocksColumn, Slab};
-use drk::cli::{TransferParams, WithdrawParams};
 use drk::cli::{Config, DarkfidCli, DarkfidConfig};
+use drk::cli::{TransferParams, WithdrawParams};
 use drk::crypto::{
     load_params,
     merkle::{CommitmentTree, IncrementalWitness},
@@ -212,14 +212,16 @@ async fn start(executor: Arc<Executor<'_>>, config: Arc<&DarkfidConfig>) -> Resu
     // channels to request transfer from adapter
     let (publish_tx_send, publish_tx_recv) = async_channel::unbounded::<TransferParams>();
 
-    // channels to request deposit from adapter and send cashier public key
+    // channels to request deposit from adapter and receive cashier public key
     let (deposit_send, deposit_recv) = async_channel::unbounded::<jubjub::SubgroupPoint>();
     let (cashier_deposit_addr_send, cashier_deposit_addr_recv) =
         async_channel::unbounded::<Option<bitcoin::util::address::Address>>();
 
     // channel to request withdraw from adapter
     let (withdraw_send, withdraw_recv) = async_channel::unbounded::<WithdrawParams>();
-    
+    let (cashier_withdraw_send, cashier_withdraw_recv) =
+        async_channel::unbounded::<jubjub::SubgroupPoint>();
+
     // start gateway client
     debug!(target: "fn::start client", "start() Client started");
     client.start().await?;
@@ -240,6 +242,7 @@ async fn start(executor: Arc<Executor<'_>>, config: Arc<&DarkfidConfig>) -> Resu
                         let cashier_public =  cashier_client.get_address(deposit_addr.unwrap()).await.unwrap();
                         cashier_deposit_addr_send.send(cashier_public).await.unwrap();
                     }
+                    //TODO: implement withdraw_
                     transfer_params = publish_tx_recv.recv().fuse() => {
                         let transfer_params = transfer_params.unwrap();
 
@@ -293,7 +296,7 @@ async fn start(executor: Arc<Executor<'_>>, config: Arc<&DarkfidConfig>) -> Resu
         wallet.clone(),
         publish_tx_send,
         (deposit_send, cashier_deposit_addr_recv),
-        withdraw_send,
+        (withdraw_send, cashier_withdraw_recv),
     )?;
 
     // start the rpc server

+ 8 - 4
src/rpc/adapter.rs

@@ -13,12 +13,16 @@ pub type DepositChannel = (
     async_channel::Sender<jubjub::SubgroupPoint>,
     async_channel::Receiver<Option<bitcoin::util::address::Address>>,
 );
+pub type WithdrawChannel = (
+    async_channel::Sender<WithdrawParams>,
+    async_channel::Receiver<jubjub::SubgroupPoint>,
+);
 
 pub struct RpcAdapter {
     pub wallet: Arc<WalletDb>,
     publish_tx_send: async_channel::Sender<TransferParams>,
-    deposit_channel: DepositChannel, 
-    withdraw_channel: async_channel::Sender<WithdrawParams>,
+    deposit_channel: DepositChannel,
+    withdraw_channel: WithdrawChannel,
 }
 
 impl RpcAdapter {
@@ -26,7 +30,7 @@ impl RpcAdapter {
         wallet: Arc<WalletDb>,
         publish_tx_send: async_channel::Sender<TransferParams>,
         deposit_channel: DepositChannel,
-        withdraw_channel: async_channel::Sender<WithdrawParams>,
+        withdraw_channel: WithdrawChannel,
     ) -> Result<Self> {
         debug!(target: "ADAPTER", "new() [CREATING NEW WALLET]");
         Ok(Self {
@@ -97,7 +101,7 @@ impl RpcAdapter {
     }
 
     pub async fn withdraw(&self, withdraw_params: WithdrawParams) -> Result<()> {
-        self.withdraw_channel.send(withdraw_params).await?;
+        self.withdraw_channel.0.send(withdraw_params).await?;
         Ok(())
     }
 

+ 13 - 8
src/rpc/jsonserver.rs

@@ -185,7 +185,9 @@ impl RpcInterface {
             let self2 = self1.clone();
             async move {
                 self2.adapter.init_db()?;
-                Ok(jsonrpc_core::Value::String("wallet creation successful".into()))
+                Ok(jsonrpc_core::Value::String(
+                    "wallet creation successful".into(),
+                ))
             }
         });
 
@@ -216,7 +218,9 @@ impl RpcInterface {
             let self2 = self1.clone();
             async move {
                 self2.adapter.init_cashier_db()?;
-                Ok(jsonrpc_core::Value::String("cashier wallet creation successful".into()))
+                Ok(jsonrpc_core::Value::String(
+                    "cashier wallet creation successful".into(),
+                ))
             }
         });
 
@@ -225,10 +229,7 @@ impl RpcInterface {
             let self2 = self1.clone();
             async move {
                 let btckey = self2.adapter.deposit().await?;
-                Ok(jsonrpc_core::Value::String(format!(
-                    "{}",
-                    btckey
-                )))
+                Ok(jsonrpc_core::Value::String(format!("{}", btckey)))
             }
         });
 
@@ -241,7 +242,8 @@ impl RpcInterface {
                 let address = parsed.pub_key.clone();
                 self2.adapter.transfer(parsed).await?;
                 Ok(jsonrpc_core::Value::String(format!(
-                    "transfered {} DRK to {}", amount, address
+                    "transfered {} DRK to {}",
+                    amount, address
                 )))
             }
         });
@@ -254,7 +256,10 @@ impl RpcInterface {
                 let amount = parsed.amount.clone();
                 let address = parsed.pub_key.clone();
                 self2.adapter.withdraw(parsed).await?;
-                Ok(jsonrpc_core::Value::String(format!("withdrawing {} BTC to {}...", amount, address)))
+                Ok(jsonrpc_core::Value::String(format!(
+                    "withdrawing {} BTC to {}...",
+                    amount, address
+                )))
             }
         });
 

+ 4 - 1
src/service/cashier.rs

@@ -188,7 +188,10 @@ impl CashierClient {
         Ok(())
     }
 
-    pub async fn get_address(&mut self, index: jubjub::SubgroupPoint) -> Result<Option<PubAddress>> {
+    pub async fn get_address(
+        &mut self,
+        index: jubjub::SubgroupPoint,
+    ) -> Result<Option<PubAddress>> {
         let handle_error = Arc::new(handle_error);
         let rep = self
             .protocol