From 3c7abeae9214e0cd0dc9cd75aeb0d2e8891339ac Mon Sep 17 00:00:00 2001 From: Harpal Jadeja Date: Wed, 1 Apr 2026 11:24:00 +0000 Subject: [PATCH 1/3] feat: add Monad mainnet support --- docs/07-supported-chains.md | 2 ++ ows/crates/ows-core/src/chain.rs | 21 +++++++++++++++++++++ ows/crates/ows-core/src/config.rs | 2 ++ 3 files changed, 25 insertions(+) diff --git a/docs/07-supported-chains.md b/docs/07-supported-chains.md index f66628bb..ae624f67 100644 --- a/docs/07-supported-chains.md +++ b/docs/07-supported-chains.md @@ -57,6 +57,7 @@ Each network has a canonical chain identifier. Endpoint discovery and transport | BSC | `eip155:56` | | Avalanche | `eip155:43114` | | Etherlink | `eip155:42793` | +| Monad | `eip155:143` | ### Non-EVM Networks @@ -88,6 +89,7 @@ optimism → eip155:10 bsc → eip155:56 avalanche → eip155:43114 etherlink → eip155:42793 +monad → eip155:143 solana → solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp bitcoin → bip122:000000000019d6689c085ae165831e93 cosmos → cosmos:cosmoshub-4 diff --git a/ows/crates/ows-core/src/chain.rs b/ows/crates/ows-core/src/chain.rs index 299ab523..d3ce403d 100644 --- a/ows/crates/ows-core/src/chain.rs +++ b/ows/crates/ows-core/src/chain.rs @@ -85,6 +85,11 @@ pub const KNOWN_CHAINS: &[Chain] = &[ chain_type: ChainType::Evm, chain_id: "eip155:42793", }, + Chain { + name: "monad", + chain_type: ChainType::Evm, + chain_id: "eip155:143", + }, Chain { name: "solana", chain_type: ChainType::Solana, @@ -420,6 +425,22 @@ mod tests { assert_eq!(chain.chain_id, "eip155:42793"); } + #[test] + fn test_parse_chain_monad_alias() { + let chain = parse_chain("monad").unwrap(); + assert_eq!(chain.name, "monad"); + assert_eq!(chain.chain_type, ChainType::Evm); + assert_eq!(chain.chain_id, "eip155:143"); + } + + #[test] + fn test_parse_chain_monad_caip2() { + let chain = parse_chain("eip155:143").unwrap(); + assert_eq!(chain.name, "monad"); + assert_eq!(chain.chain_type, ChainType::Evm); + assert_eq!(chain.chain_id, "eip155:143"); + } + #[test] fn test_parse_chain_caip2() { let chain = parse_chain("eip155:42161").unwrap(); diff --git a/ows/crates/ows-core/src/config.rs b/ows/crates/ows-core/src/config.rs index 35275c50..01087927 100644 --- a/ows/crates/ows-core/src/config.rs +++ b/ows/crates/ows-core/src/config.rs @@ -42,6 +42,7 @@ impl Config { "eip155:43114".into(), "https://api.avax.network/ext/bc/C/rpc".into(), ); + rpc.insert("eip155:143".into(), "https://rpc.monad.xyz".into()); rpc.insert( "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp".into(), "https://api.mainnet-beta.solana.com".into(), @@ -191,6 +192,7 @@ mod tests { Some("https://polygon-rpc.com") ); assert_eq!(config.rpc_url("eip155:9745"), Some("https://rpc.plasma.to")); + assert_eq!(config.rpc_url("eip155:143"), Some("https://rpc.monad.xyz")); assert_eq!( config.rpc_url("solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"), Some("https://api.mainnet-beta.solana.com") From f1d252f052ed92e03e47dd12759148c0639be5e6 Mon Sep 17 00:00:00 2001 From: Harpal Jadeja Date: Mon, 6 Apr 2026 14:08:44 +0000 Subject: [PATCH 2/3] feat: add Monad to OWS pay --- ows/crates/ows-pay/src/chains.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/ows/crates/ows-pay/src/chains.rs b/ows/crates/ows-pay/src/chains.rs index a034ce48..7fda2df4 100644 --- a/ows/crates/ows-pay/src/chains.rs +++ b/ows/crates/ows-pay/src/chains.rs @@ -53,6 +53,27 @@ mod tests { ); } + #[test] + fn resolve_monad_name() { + assert_eq!(resolve_chain_type("monad"), Some(ChainType::Evm)); + } + + #[test] + fn resolve_monad_caip2() { + assert_eq!(resolve_chain_type("eip155:143"), Some(ChainType::Evm)); + } + + #[test] + fn display_monad() { + assert_eq!(display_name("monad"), "monad"); + assert_eq!(display_name("eip155:143"), "monad"); + } + + #[test] + fn caip2_ref_monad() { + assert_eq!(caip2_reference("eip155:143"), Some("143")); + } + #[test] fn resolve_unknown_caip2_known_namespace() { // Chain not in KNOWN_CHAINS but namespace is recognized. From 61197c9f5b32381afe9f063c6c1d637d627cde49 Mon Sep 17 00:00:00 2001 From: Harpal Jadeja Date: Sun, 19 Apr 2026 10:08:30 +0000 Subject: [PATCH 3/3] fix: CI error --- ows/crates/ows-core/src/config.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ows/crates/ows-core/src/config.rs b/ows/crates/ows-core/src/config.rs index 2833eb21..1bfb2abf 100644 --- a/ows/crates/ows-core/src/config.rs +++ b/ows/crates/ows-core/src/config.rs @@ -266,7 +266,7 @@ mod tests { fn test_load_or_default_nonexistent() { let config = Config::load_or_default_from(std::path::Path::new("/nonexistent/config.json")); // Should have all default RPCs - assert_eq!(config.rpc.len(), 21); + assert_eq!(config.rpc.len(), 22); assert_eq!(config.rpc_url("eip155:1"), Some("https://eth.llamarpc.com")); }