From d5d365ab6e19b9f7e75844a25011746a853a8002 Mon Sep 17 00:00:00 2001
From: Karim <karim.alabtakh@nearone.org>
Date: Wed, 8 Jan 2025 13:36:18 +0000
Subject: [PATCH] Backward compatible address prefix for ETH network (#176)

* Backward compatible address prefix for ETH network

* Fix ETH address

* Fix fmt
---
 near/omni-types/src/lib.rs            |  7 +++++++
 near/omni-types/src/tests/lib_test.rs | 19 ++++++++++++++++++-
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/near/omni-types/src/lib.rs b/near/omni-types/src/lib.rs
index 5ac3914c..ddd9e43c 100644
--- a/near/omni-types/src/lib.rs
+++ b/near/omni-types/src/lib.rs
@@ -273,6 +273,13 @@ impl OmniAddress {
                     format!("sol-{hashed_address}")
                 }
             }
+            OmniAddress::Eth(address) => {
+                if self.is_zero() {
+                    "eth".to_string()
+                } else {
+                    address.to_string()[2..].to_string()
+                }
+            }
             _ => self.encode('-', true),
         }
     }
diff --git a/near/omni-types/src/tests/lib_test.rs b/near/omni-types/src/tests/lib_test.rs
index c2068da0..e8250129 100644
--- a/near/omni-types/src/tests/lib_test.rs
+++ b/near/omni-types/src/tests/lib_test.rs
@@ -420,7 +420,7 @@ fn test_stringify() {
 }
 
 #[test]
-fn test_get_token_prefix() {
+fn test_get_native_token_prefix() {
     for chain_kind in [
         ChainKind::Near,
         ChainKind::Sol,
@@ -439,3 +439,20 @@ fn test_get_token_prefix() {
         );
     }
 }
+
+#[test]
+fn test_get_evm_token_prefix() {
+    let address = "0x23ddd3e3692d1861ed57ede224608875809e127f";
+    let eth_address: OmniAddress = format!("eth:{address}").parse().unwrap();
+    let prefix = eth_address.get_token_prefix();
+    assert_eq!(prefix, "23ddd3e3692d1861ed57ede224608875809e127f");
+
+    for chain_kind in [ChainKind::Base, ChainKind::Arb] {
+        let chain_kind_prefix: String = chain_kind.as_ref().to_lowercase();
+        let chain_address: OmniAddress = format!("{chain_kind_prefix}:{address}").parse().unwrap();
+        assert_eq!(
+            chain_address.get_token_prefix(),
+            format!("{chain_kind_prefix}-{address}"),
+        );
+    }
+}