btc: check if there is keypair path in cashierd.toml before generate new one

This commit is contained in:
ghassmo
2021-10-15 07:16:57 +03:00
parent 54c4f20561
commit 61cf278c6c
4 changed files with 26 additions and 17 deletions

View File

@@ -32,7 +32,9 @@ use drk::{
fn handle_bridge_error(error_code: u32) -> Result<()> {
match error_code {
1 => Err(Error::BridgeError("Not Supported Client".into())),
2 => Err(Error::BridgeError("Unable to watch the deposit address".into())),
2 => Err(Error::BridgeError(
"Unable to watch the deposit address".into(),
)),
3 => Err(Error::BridgeError("Unable to send the token".into())),
_ => Err(Error::BridgeError("Unknown error_code".into())),
}
@@ -505,7 +507,7 @@ impl Cashierd {
}
let sol_client =
SolClient::new(serialize(&main_keypair), &network.blockchain).await?;
SolClient::new(main_keypair, &network.blockchain).await?;
bridge2.add_clients(NetworkName::Solana, sol_client).await?;
}
@@ -513,7 +515,7 @@ impl Cashierd {
#[cfg(feature = "btc")]
NetworkName::Bitcoin => {
debug!(target: "CASHIER DAEMON", "Add btc network");
use drk::service::btc::{BtcClient, Keypair};
use drk::service::btc::{BtcClient, Keypair, BtcFailed};
let bridge2 = self.bridge.clone();
@@ -521,19 +523,28 @@ impl Cashierd {
let main_keypairs = self.cashier_wallet.get_main_keys(&NetworkName::Bitcoin)?;
if main_keypairs.is_empty() {
main_keypair = Keypair::new();
self.cashier_wallet.put_main_keys(
&serialize(&main_keypair),
&serialize(&main_keypair.pubkey()),
&NetworkName::Bitcoin,
)?;
if network.keypair.is_empty() {
if main_keypairs.is_empty() {
main_keypair = Keypair::new();
self.cashier_wallet.put_main_keys(
&serialize(&main_keypair),
&serialize(&main_keypair.pubkey()),
&NetworkName::Bitcoin,
)?;
} else {
main_keypair = deserialize(&main_keypairs[main_keypairs.len() - 1].0)?;
}
} else {
main_keypair = deserialize(&main_keypairs[main_keypairs.len() - 1].0)?;
let keypair_str = drk::cli::cli_config::load_keypair_to_str(
PathBuf::from(expand_path(&network.keypair.clone())?),
)?;
let keypair_bytes: Vec<u8> = serde_json::from_str(&keypair_str)?;
main_keypair = Keypair::from_bytes(&keypair_bytes)
.map_err(|e| BtcFailed::DecodeAndEncodeError(e.to_string()))?;
}
let btc_client =
BtcClient::new(serialize(&main_keypair), &network.blockchain).await?;
BtcClient::new(main_keypair, &network.blockchain).await?;
bridge2
.add_clients(NetworkName::Bitcoin, btc_client)

View File

@@ -213,7 +213,7 @@ impl Darkfid {
async fn features(&self, id: Value, _params: Value) -> JsonResult {
let req = jsonreq(json!("features"), json!([]));
let rep: JsonResult;
// TODO: this just selects the first cashier in the list
// NOTE: this just selects the first cashier in the list
match send_request(&self.cashiers[0].rpc_url, json!(req)).await {
Ok(v) => rep = v,
Err(e) => {

View File

@@ -168,8 +168,7 @@ pub struct BtcClient {
}
impl BtcClient {
pub async fn new(main_keypair: Vec<u8>, network: &str) -> Result<Arc<Self>> {
let main_keypair: Keypair = deserialize(&main_keypair)?;
pub async fn new(main_keypair: Keypair, network: &str) -> Result<Arc<Self>> {
let notify_channel = async_channel::unbounded();

View File

@@ -50,8 +50,7 @@ pub struct SolClient {
}
impl SolClient {
pub async fn new(main_keypair: Vec<u8>, network: &str) -> Result<Arc<Self>> {
let main_keypair: Keypair = deserialize(&main_keypair)?;
pub async fn new(main_keypair: Keypair, network: &str) -> Result<Arc<Self>> {
let notify_channel = async_channel::unbounded();
info!(target: "SOL BRIDGE", "Main SOL wallet pubkey: {:?}", &main_keypair.pubkey());