Просмотр исходного кода

check and load token from erc20 tokens list

ghassmo 4 лет назад
Родитель
Сommit
99a61cd0c5
3 измененных файлов с 25 добавлено и 8 удалено
  1. 7 2
      src/bin/cashierd.rs
  2. 17 5
      src/bin/darkfid.rs
  3. 1 1
      src/util/parse.rs

+ 7 - 2
src/bin/cashierd.rs

@@ -492,9 +492,14 @@ impl Cashierd {
                 }
                 Ok(None)
             }
-            // FIXME add tokens support  
             #[cfg(feature = "eth")]
-            NetworkName::Ethereum => Ok(None),
+            NetworkName::Ethereum => {
+                use drk::service::eth::ETH_NATIVE_TOKEN_ID;
+                if _token_id != ETH_NATIVE_TOKEN_ID {
+                    return Ok(Some(_token_id.to_string()));
+                }
+                Ok(None)
+            },
             #[cfg(feature = "btc")]
             NetworkName::Bitcoin => Ok(None),
             _ => Err(Error::NotSupportedNetwork),

+ 17 - 5
src/bin/darkfid.rs

@@ -242,8 +242,11 @@ impl Darkfid {
             match network {
                 #[cfg(feature = "sol")]
                 NetworkName::Solana => {
-                    let token_id = self.sol_tokenlist.search_id(symbol)?;
-                    Ok(json!(token_id))
+                    if let Some(tkn) = self.sol_tokenlist.search_id(symbol)? {
+                        Ok(json!(tkn))
+                    } else {
+                        return Err(Error::NotSupportedToken);
+                    }
                 }
                 #[cfg(feature = "btc")]
                 NetworkName::Bitcoin => {
@@ -253,9 +256,18 @@ impl Darkfid {
                 }
                 #[cfg(feature = "eth")]
                 NetworkName::Ethereum => {
-                    //hardcoded genesis coinbase address
-                    use drk::service::eth::ETH_NATIVE_TOKEN_ID;
-                    let token_id = ETH_NATIVE_TOKEN_ID.to_string();
+                    // hardcoded genesis coinbase address
+                    let token_id: String = if symbol.to_lowercase() == "eth" {
+                        use drk::service::eth::ETH_NATIVE_TOKEN_ID;
+                        ETH_NATIVE_TOKEN_ID.to_string()
+                    } else {
+                        if let Some(tkn) = self.eth_tokenlist.search_id(symbol)? {
+                            tkn
+                        } else {
+                            return Err(Error::NotSupportedToken);
+                        }
+                    };
+
                     Ok(json!(token_id))
                 }
                 _ => Err(Error::NotSupportedNetwork),

+ 1 - 1
src/util/parse.rs

@@ -70,7 +70,7 @@ pub fn assign_id(
         #[cfg(feature = "eth")]
         NetworkName::Ethereum => {
             use crate::service::eth::ETH_NATIVE_TOKEN_ID;
-            let id = if token == "eth" && token == ETH_NATIVE_TOKEN_ID {
+            let id = if token == "eth" || token == ETH_NATIVE_TOKEN_ID {
                 token.to_string()
             } else {
                 let tok_lower = token.to_lowercase();