Преглед изворни кода

Client: create main_keypair field

ghassmo пре 4 година
родитељ
комит
318d57d6dd
3 измењених фајлова са 36 додато и 23 уклоњено
  1. 3 4
      src/bin/cashierd.rs
  2. 5 4
      src/bin/darkfid.rs
  3. 28 15
      src/client/client.rs

+ 3 - 4
src/bin/cashierd.rs

@@ -44,7 +44,6 @@ struct Cashierd {
 
 #[async_trait]
 impl RequestHandler for Cashierd {
-    // TODO: ServerError codes should be part of the lib.
     async fn handle_request(&self, req: JsonRequest) -> JsonResult {
         if req.params.as_array().is_none() {
             return JsonResult::Err(jsonerr(InvalidParams, None, req.id));
@@ -65,7 +64,7 @@ impl RequestHandler for Cashierd {
 }
 
 impl Cashierd {
-    fn new(config_path: PathBuf) -> Result<Self> {
+    async fn new(config_path: PathBuf) -> Result<Self> {
         let config: CashierdConfig = Config::<CashierdConfig>::load(config_path)?;
 
         let cashier_wallet = CashierDb::new(
@@ -91,7 +90,7 @@ impl Cashierd {
                 expand_path(&config.spend_params_path.clone())?,
             ),
             client_wallet.clone(),
-        )?;
+        ).await?;
 
         let client = Arc::new(Mutex::new(client));
 
@@ -521,6 +520,6 @@ async fn main() -> Result<()> {
 
     simple_logger::init_with_level(loglevel)?;
     let ex = Arc::new(Executor::new());
-    let cashierd = Cashierd::new(config_path)?;
+    let cashierd = Cashierd::new(config_path).await?;
     cashierd.start(ex.clone()).await
 }

+ 5 - 4
src/bin/darkfid.rs

@@ -18,7 +18,7 @@ use drk::{
     },
     serial::{deserialize, serialize},
     util::{
-        expand_path, join_config_path, parse_network, parse_params, parse_wrapped_token, search_id,
+        expand_path, join_config_path, parse_network, parse_wrapped_token, search_id,
     },
     wallet::WalletDb,
     Result,
@@ -57,7 +57,7 @@ impl RequestHandler for Darkfid {
 }
 
 impl Darkfid {
-    fn new(config_path: PathBuf) -> Result<Self> {
+    async fn new(config_path: PathBuf) -> Result<Self> {
         let config: DarkfidConfig = Config::<DarkfidConfig>::load(config_path)?;
         let wallet = WalletDb::new(
             expand_path(&config.wallet_path)?.as_path(),
@@ -78,7 +78,8 @@ impl Darkfid {
                 expand_path(&config.spend_params_path.clone())?,
             ),
             wallet.clone(),
-        )?;
+        ).await?;
+
         let client = Arc::new(Mutex::new(client));
 
         Ok(Self {
@@ -371,7 +372,7 @@ async fn main() -> Result<()> {
 
     simple_logger::init_with_level(loglevel)?;
 
-    let darkfid = Darkfid::new(config_path)?;
+    let darkfid = Darkfid::new(config_path).await?;
 
     let server_config = RpcServerConfig {
         socket_addr: darkfid.config.rpc_listen_address.clone(),

+ 28 - 15
src/client/client.rs

@@ -1,18 +1,20 @@
-use crate::blockchain::{rocks::columns, Rocks, RocksColumn, Slab};
-use crate::crypto::{
-    load_params,
-    merkle::{CommitmentTree, IncrementalWitness},
-    merkle_node::MerkleNode,
-    note::{EncryptedNote, Note},
-    nullifier::Nullifier,
-    save_params, setup_mint_prover, setup_spend_prover, OwnCoin,
+use crate::{
+    blockchain::{rocks::columns, Rocks, RocksColumn, Slab},
+    crypto::{
+        load_params,
+        merkle::{CommitmentTree, IncrementalWitness},
+        merkle_node::MerkleNode,
+        note::{EncryptedNote, Note},
+        nullifier::Nullifier,
+        save_params, setup_mint_prover, setup_spend_prover, OwnCoin,
+    },
+    serial::{Decodable, Encodable},
+    service::{GatewayClient, GatewaySlabsSubscriber},
+    state::{state_transition, ProgramState, StateUpdate},
+    tx,
+    wallet::{CashierDbPtr, Keypair, WalletPtr},
+    Result,
 };
-use crate::serial::Decodable;
-use crate::serial::Encodable;
-use crate::service::{GatewayClient, GatewaySlabsSubscriber};
-use crate::state::{state_transition, ProgramState, StateUpdate};
-use crate::wallet::{CashierDbPtr, WalletPtr};
-use crate::{tx, Result};
 
 use super::ClientFailed;
 
@@ -30,10 +32,11 @@ pub struct Client {
     mint_params: bellman::groth16::Parameters<Bls12>,
     spend_params: bellman::groth16::Parameters<Bls12>,
     gateway: GatewayClient,
+    pub main_keypair: Keypair
 }
 
 impl Client {
-    pub fn new(
+    pub async fn new(
         rocks: Arc<Rocks>,
         gateway_addrs: (SocketAddr, SocketAddr),
         params_paths: (PathBuf, PathBuf),
@@ -46,6 +49,15 @@ impl Client {
         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");
 
+
+        wallet.init_db().await?;
+
+        if wallet.get_keypairs()?.len() == 0 {
+            wallet.key_gen()?;
+        }
+
+        let main_keypair = wallet.get_keypairs()?[0].clone();
+
         // Auto create trusted ceremony parameters if they don't exist
         if !params_paths.0.exists() {
             let params = setup_mint_prover();
@@ -78,6 +90,7 @@ impl Client {
             mint_params,
             spend_params,
             gateway,
+            main_keypair,
         })
     }