mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-01-09 14:48:08 -05:00
darkfid wallet: WIP support multi keys & exporting and importing keypair to/from a file
This commit is contained in:
@@ -75,6 +75,10 @@ impl RequestHandler for Darkfid {
|
||||
Some("key_gen") => return self.key_gen(req.id, req.params).await,
|
||||
Some("get_key") => return self.get_key(req.id, req.params).await,
|
||||
Some("get_keys") => return self.get_keys(req.id, req.params).await,
|
||||
Some("export_keypair") => return self.get_keys(req.id, req.params).await,
|
||||
Some("set_default_address") => {
|
||||
return self.set_default_address(req.id, req.params).await
|
||||
}
|
||||
Some("get_balances") => return self.get_balances(req.id, req.params).await,
|
||||
Some("get_token_id") => return self.get_token_id(req.id, req.params).await,
|
||||
Some("features") => return self.features(req.id, req.params).await,
|
||||
@@ -177,6 +181,20 @@ impl Darkfid {
|
||||
}
|
||||
}
|
||||
|
||||
// --> {"method": "export_keypair", "params": "path/"}
|
||||
// <-- {"result": true}
|
||||
async fn export_keypair(&self, _id: Value, _params: Value) -> JsonResult {
|
||||
// TODO
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
// --> {"method": "set_default_address", "params":
|
||||
// "vdNS7oBj7KvsMWWmo9r96SV4SqATLrGsH2a3PGpCfJC"} <-- {"result": true}
|
||||
async fn set_default_address(&self, _id: Value, _params: Value) -> JsonResult {
|
||||
// TODO
|
||||
unimplemented!()
|
||||
}
|
||||
|
||||
// --> {"method": "get_balances", "params": []}
|
||||
// <-- {"result": "get_balances": "[ {"btc": (value, network)}, .. ]"}
|
||||
async fn get_balances(&self, id: Value, _params: Value) -> JsonResult {
|
||||
|
||||
@@ -107,6 +107,21 @@ impl Drk {
|
||||
Ok(self.request(req).await?)
|
||||
}
|
||||
|
||||
// --> {"jsonrpc": "2.0", "method": "set_default_address", "params":
|
||||
// "vdNS7oBj7KvsMWWmo9r96SV4SqATLrGsH2a3PGpCfJC", "id": 42} <-- {"jsonrpc": "2.0", "result":
|
||||
// true, "id": 42}
|
||||
async fn set_default_address(&self, address: String) -> Result<Value> {
|
||||
let req = jsonrpc::request(json!("set_default_address"), json!(address));
|
||||
Ok(self.request(req).await?)
|
||||
}
|
||||
|
||||
// --> {"jsonrpc": "2.0", "method": "export_keypair", "params": "path/", "id": 42}
|
||||
// <-- {"jsonrpc": "2.0", "result": true, "id": 42}
|
||||
async fn export_keypair(&self, path: String) -> Result<Value> {
|
||||
let req = jsonrpc::request(json!("export_keypair"), json!(path));
|
||||
Ok(self.request(req).await?)
|
||||
}
|
||||
|
||||
// --> {"jsonrpc": "2.0", "method": "get_key", "params": ["solana", "usdc"], "id": 42}
|
||||
// <-- {"jsonrpc": "2.0", "result": "vdNS7oBj7KvsMWWmo9r96SV4SqATLrGsH2a3PGpCfJC", "id": 42}
|
||||
async fn get_token_id(&self, network: &str, token: &str) -> Result<Value> {
|
||||
@@ -178,7 +193,15 @@ async fn start(config: &DrkConfig, options: CliDrk) -> Result<()> {
|
||||
println!("Features: {}", &reply.to_string());
|
||||
return Ok(())
|
||||
}
|
||||
Some(CliDrkSubCommands::Wallet { create, keygen, address, balances, addresses }) => {
|
||||
Some(CliDrkSubCommands::Wallet {
|
||||
create,
|
||||
keygen,
|
||||
address,
|
||||
balances,
|
||||
addresses,
|
||||
export_keypair,
|
||||
set_default_address,
|
||||
}) => {
|
||||
if create {
|
||||
let reply = client.create_wallet().await?;
|
||||
if reply.as_bool().unwrap() {
|
||||
@@ -241,6 +264,18 @@ async fn start(config: &DrkConfig, options: CliDrk) -> Result<()> {
|
||||
|
||||
return Ok(())
|
||||
}
|
||||
|
||||
if set_default_address.is_some() {
|
||||
let default_address = set_default_address.unwrap();
|
||||
client.set_default_address(default_address).await?;
|
||||
return Ok(())
|
||||
}
|
||||
|
||||
if export_keypair.is_some() {
|
||||
let path = export_keypair.unwrap();
|
||||
client.export_keypair(path).await?;
|
||||
return Ok(())
|
||||
}
|
||||
}
|
||||
Some(CliDrkSubCommands::Id { network, token }) => {
|
||||
let network = network.to_lowercase();
|
||||
|
||||
@@ -20,6 +20,12 @@ pub enum CliDrkSubCommands {
|
||||
/// Get wallet addresses
|
||||
#[clap(long)]
|
||||
addresses: bool,
|
||||
/// Set default address
|
||||
#[clap(long, value_name = "ADDRESS")]
|
||||
set_default_address: Option<String>,
|
||||
/// Export default address
|
||||
#[clap(long, value_name = "PATH")]
|
||||
export_keypair: Option<String>,
|
||||
/// Get wallet balances
|
||||
#[clap(long)]
|
||||
balances: bool,
|
||||
|
||||
Reference in New Issue
Block a user