From eb45a804417eb501f7a06a4deeea03cfc829497b Mon Sep 17 00:00:00 2001 From: Mattie Conover Date: Fri, 8 Sep 2023 08:55:25 -0700 Subject: [PATCH] Support base58 in matching list --- .../relayer/src/settings/matching_list.rs | 20 ++++++++++--------- typescript/sdk/src/metadata/customZodTypes.ts | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/rust/agents/relayer/src/settings/matching_list.rs b/rust/agents/relayer/src/settings/matching_list.rs index 89fcf099c8..d750c537c1 100644 --- a/rust/agents/relayer/src/settings/matching_list.rs +++ b/rust/agents/relayer/src/settings/matching_list.rs @@ -8,7 +8,7 @@ use std::{ marker::PhantomData, }; -use hyperlane_core::{config::StrOrInt, HyperlaneMessage, H160, H256}; +use hyperlane_core::{config::StrOrInt, utils::hex_or_base58_to_h256, HyperlaneMessage, H256}; use serde::{ de::{Error, SeqAccess, Visitor}, Deserialize, Deserializer, @@ -118,7 +118,7 @@ impl<'de> Visitor<'de> for FilterVisitor { fn expecting(&self, fmt: &mut Formatter) -> fmt::Result { write!( fmt, - "Expecting either a wildcard \"*\", hex address string, or list of hex address strings" + "Expecting either a wildcard \"*\", hex/base58 address string, or list of hex/base58 address strings" ) } @@ -254,12 +254,7 @@ fn to_serde_err(e: IE) -> OE { } fn parse_addr(addr_str: &str) -> Result { - if addr_str.len() <= 42 { - addr_str.parse::().map(H256::from) - } else { - addr_str.parse::() - } - .map_err(to_serde_err) + hex_or_base58_to_h256(addr_str).map_err(to_serde_err) } #[cfg(test)] @@ -312,7 +307,7 @@ mod test { #[test] fn config_with_address() { - let list: MatchingList = serde_json::from_str(r#"[{"senderAddress": "0x9d4454B023096f34B160D6B654540c56A1F81688", "recipientAddress": "9d4454B023096f34B160D6B654540c56A1F81688"}]"#).unwrap(); + let list: MatchingList = serde_json::from_str(r#"[{"senderAddress": "0x9d4454B023096f34B160D6B654540c56A1F81688", "recipientAddress": "0x9d4454B023096f34B160D6B654540c56A1F81688"}]"#).unwrap(); assert!(list.0.is_some()); assert_eq!(list.0.as_ref().unwrap().len(), 1); let elem = &list.0.as_ref().unwrap()[0]; @@ -389,4 +384,11 @@ mod test { // blacklist use assert!(!MatchingList(None).matches(info, false)); } + + #[test] + fn supports_base58() { + serde_json::from_str::( + r#"[{"originDomain":1399811151,"senderAddress":"DdTMkk9nuqH5LnD56HLkPiKMV3yB3BNEYSQfgmJHa5i7","destinationDomain":11155111,"recipientAddress":"0x6AD4DEBA8A147d000C09de6465267a9047d1c217"}]"#, + ).unwrap(); + } } diff --git a/typescript/sdk/src/metadata/customZodTypes.ts b/typescript/sdk/src/metadata/customZodTypes.ts index f671303e24..6f2841cd0d 100644 --- a/typescript/sdk/src/metadata/customZodTypes.ts +++ b/typescript/sdk/src/metadata/customZodTypes.ts @@ -14,5 +14,5 @@ export const ZUWei = z.union([ZUint.safe(), z.string().regex(/^\d+$/)]); export const ZHash = z .string() .regex( - /^(0x[0-9a-fA-F]{32}|[0-9a-fA-F]{40}|[0-9a-fA-F]{64}|[0-9a-fA-F]{128})|([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{32})$/, + /^(0x([0-9a-fA-F]{32}|[0-9a-fA-F]{40}|[0-9a-fA-F]{64}|[0-9a-fA-F]{128}))|([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{32})$/, );