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}"), + ); + } +}