From c43dbb53647eb423afa99364644969f0213561be Mon Sep 17 00:00:00 2001 From: lunar-mining Date: Thu, 30 Sep 2021 11:59:38 +0200 Subject: [PATCH] generate_id: added NetworkName. disabled parse_wrapped_token --- src/bin/cashierd.rs | 4 ++-- src/bin/darkfid.rs | 39 ++++++++++++++++++++--------------- src/util/mod.rs | 2 +- src/util/parse.rs | 50 +++++++++++++++++++++++---------------------- 4 files changed, 51 insertions(+), 44 deletions(-) diff --git a/src/bin/cashierd.rs b/src/bin/cashierd.rs index b338c428f..735c8b969 100644 --- a/src/bin/cashierd.rs +++ b/src/bin/cashierd.rs @@ -206,7 +206,7 @@ impl Cashierd { let result: Result = async { Self::validate_token_id(&network, token_id)?; - let asset_id = generate_id(token_id)?; + let asset_id = generate_id(token_id, &network)?; let drk_pub_key = bs58::decode(&drk_pub_key).into_vec()?; let drk_pub_key: jubjub::SubgroupPoint = deserialize(&drk_pub_key)?; @@ -300,7 +300,7 @@ impl Cashierd { let result: Result = async { Self::validate_token_id(&network, token)?; - let asset_id = generate_id(&token)?; + let asset_id = generate_id(&token, &network)?; let address = serialize(&address.to_string()); let cashier_public: jubjub::SubgroupPoint; diff --git a/src/bin/darkfid.rs b/src/bin/darkfid.rs index ed1f19709..7451fdddd 100644 --- a/src/bin/darkfid.rs +++ b/src/bin/darkfid.rs @@ -17,7 +17,7 @@ use drk::{ rpcserver::{listen_and_serve, RequestHandler, RpcServerConfig}, }, serial::{deserialize, serialize}, - util::{assign_id, expand_path, join_config_path, parse_wrapped_token, TokenList}, + util::{assign_id, expand_path, join_config_path, TokenList}, wallet::WalletDb, Result, }; @@ -331,23 +331,28 @@ impl Darkfid { let amount = amount.as_f64().unwrap(); - let result: Result<()> = async { - let token_id = parse_wrapped_token(token, self.tokenlist.clone())?; - let address = bs58::decode(&address).into_vec()?; - let address: jubjub::SubgroupPoint = deserialize(&address)?; - self.client - .lock() - .await - .transfer(token_id, address, amount) - .await?; - Ok(()) - } - .await; + //let result: Result<()> = async { + // let token_id = parse_wrapped_token(token, self.tokenlist.clone())?; + // let address = bs58::decode(&address).into_vec()?; + // let address: jubjub::SubgroupPoint = deserialize(&address)?; + // self.client + // .lock() + // .await + // .transfer(token_id, address, amount) + // .await?; + // Ok(()) + //} + //.await; - match result { - Ok(res) => JsonResult::Resp(jsonresp(json!(res), json!(id))), - Err(err) => JsonResult::Err(jsonerr(InternalError, Some(err.to_string()), json!(id))), - } + //match result { + // Ok(res) => JsonResult::Resp(jsonresp(json!(res), json!(id))), + // Err(err) => JsonResult::Err(jsonerr(InternalError, Some(err.to_string()), json!(id))), + //} + return JsonResult::Err(jsonerr( + ServerError(-32005), + Some("failed to withdraw".to_string()), + id, + )); } } diff --git a/src/util/mod.rs b/src/util/mod.rs index 292ae523a..65ba7a14e 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -4,6 +4,6 @@ pub mod path; pub mod token_list; pub use net_name::NetworkName; -pub use parse::{generate_id, parse_network, parse_params, parse_wrapped_token}; +pub use parse::{assign_id, generate_id, parse_params}; pub use path::{expand_path, join_config_path}; pub use token_list::TokenList; diff --git a/src/util/parse.rs b/src/util/parse.rs index 6dd01f2f5..d04930fc6 100644 --- a/src/util/parse.rs +++ b/src/util/parse.rs @@ -55,12 +55,14 @@ use std::str::FromStr; // here we hash the alphanumeric token ID. if it fails, we change the last 4 bytes and hash it // again, and keep repeating until it works. -pub fn generate_id(tkn_str: &str) -> Result { - if bs58::decode(tkn_str).into_vec().is_err() { +pub fn generate_id(tkn_str: &str, network: &NetworkName) -> Result { + let mut id_string = network.to_string(); + id_string.push_str(tkn_str); + if bs58::decode(id_string.clone()).into_vec().is_err() { // TODO: make this an error debug!(target: "PARSE ID", "COULD NOT DECODE STR"); } - let mut data = bs58::decode(tkn_str).into_vec().unwrap(); + let mut data = bs58::decode(id_string).into_vec().unwrap(); let token_id = match deserialize::(&data) { Ok(v) => v, @@ -87,27 +89,27 @@ pub fn generate_id(tkn_str: &str) -> Result { Ok(token_id) } -pub fn parse_wrapped_token(token: &str, tokenlist: TokenList) -> Result { - match token.to_lowercase().as_str() { - "sol" => { - let id = "So11111111111111111111111111111111111111112"; - let token_id = generate_id(id)?; - Ok(token_id) - } - "btc" => Err(Error::TokenParseError), - tkn => { - // (== 44) can represent a Solana base58 token mint address - let id = if token.len() == 44 { - token.to_string() - } else { - symbol_to_id(tkn, tokenlist)? - }; - - let token_id = generate_id(&id)?; - Ok(token_id) - } - } -} +//pub fn parse_wrapped_token(token: &str, tokenlist: TokenList) -> Result { +// match token.to_lowercase().as_str() { +// "sol" => { +// let id = "So11111111111111111111111111111111111111112"; +// let token_id = generate_id(id)?; +// Ok(token_id) +// } +// "btc" => Err(Error::TokenParseError), +// tkn => { +// // (== 44) can represent a Solana base58 token mint address +// let id = if token.len() == 44 { +// token.to_string() +// } else { +// symbol_to_id(tkn, tokenlist)? +// }; +// +// let token_id = generate_id(&id)?; +// Ok(token_id) +// } +// } +//} pub fn assign_id(network: &str, token: &str, tokenlist: TokenList) -> Result { match NetworkName::from_str(network)? {