From 691dd662a8b1be2b1d204439bf91fdddd473bca7 Mon Sep 17 00:00:00 2001 From: ygd58 Date: Sun, 19 Apr 2026 15:49:00 +0200 Subject: [PATCH 1/2] feat: add EVM testnet chains (sepolia, base-sepolia, arbitrum-sepolia, optimism-sepolia, polygon-amoy) Closes #189 Adds named testnet chain entries to the KNOWN_CHAINS registry: - sepolia (eip155:11155111) - base-sepolia (eip155:84532) - arbitrum-sepolia (eip155:421614) - optimism-sepolia (eip155:11155420) - polygon-amoy (eip155:80002) These chains were already usable via CAIP-2 ID or bare chain ID due to the generic EVM namespace fallback, but lacked friendly names. Now users can use ows wallet info --chain base-sepolia or pass base-sepolia directly to sign commands. Adds 7 unit tests covering name, CAIP-2, and bare ID parsing. --- ows/crates/ows-core/src/chain.rs | 75 +++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) diff --git a/ows/crates/ows-core/src/chain.rs b/ows/crates/ows-core/src/chain.rs index 1f7411156..253440556 100644 --- a/ows/crates/ows-core/src/chain.rs +++ b/ows/crates/ows-core/src/chain.rs @@ -190,6 +190,32 @@ pub const KNOWN_CHAINS: &[Chain] = &[ chain_type: ChainType::Evm, chain_id: "eip155:999", }, + // EVM testnets + Chain { + name: "sepolia", + chain_type: ChainType::Evm, + chain_id: "eip155:11155111", + }, + Chain { + name: "base-sepolia", + chain_type: ChainType::Evm, + chain_id: "eip155:84532", + }, + Chain { + name: "arbitrum-sepolia", + chain_type: ChainType::Evm, + chain_id: "eip155:421614", + }, + Chain { + name: "optimism-sepolia", + chain_type: ChainType::Evm, + chain_id: "eip155:11155420", + }, + Chain { + name: "polygon-amoy", + chain_type: ChainType::Evm, + chain_id: "eip155:80002", + }, ]; /// Parse a chain string into a `Chain`. Accepts: @@ -628,4 +654,51 @@ mod tests { assert_eq!(chain.name, "ethereum"); assert_eq!(chain.chain_id, "eip155:1"); } -} + #[test] + fn parse_base_sepolia_by_name() { + let chain = parse_chain("base-sepolia").unwrap(); + assert_eq!(chain.chain_id, "eip155:84532"); + assert_eq!(chain.chain_type, ChainType::Evm); + } + + #[test] + fn parse_sepolia_by_name() { + let chain = parse_chain("sepolia").unwrap(); + assert_eq!(chain.chain_id, "eip155:11155111"); + assert_eq!(chain.chain_type, ChainType::Evm); + } + + #[test] + fn parse_arbitrum_sepolia_by_name() { + let chain = parse_chain("arbitrum-sepolia").unwrap(); + assert_eq!(chain.chain_id, "eip155:421614"); + assert_eq!(chain.chain_type, ChainType::Evm); + } + + #[test] + fn parse_optimism_sepolia_by_name() { + let chain = parse_chain("optimism-sepolia").unwrap(); + assert_eq!(chain.chain_id, "eip155:11155420"); + assert_eq!(chain.chain_type, ChainType::Evm); + } + + #[test] + fn parse_polygon_amoy_by_name() { + let chain = parse_chain("polygon-amoy").unwrap(); + assert_eq!(chain.chain_id, "eip155:80002"); + assert_eq!(chain.chain_type, ChainType::Evm); + } + + #[test] + fn parse_base_sepolia_by_caip2() { + let chain = parse_chain("eip155:84532").unwrap(); + assert_eq!(chain.chain_id, "eip155:84532"); + } + + #[test] + fn parse_base_sepolia_by_chain_id() { + let chain = parse_chain("84532").unwrap(); + assert_eq!(chain.chain_id, "eip155:84532"); + } + +} \ No newline at end of file From aec312fd10ad750ad1423b9e65819c7d940e100e Mon Sep 17 00:00:00 2001 From: ygd58 Date: Wed, 10 Jun 2026 18:20:18 +0200 Subject: [PATCH 2/2] fix: cargo fmt and add testnet entries to supported-chains docs Address review feedback from #213: - Run cargo fmt --all to fix trailing newline - Add EVM testnet rows to Known Networks table in 07-supported-chains.md (Sepolia, Base Sepolia, Arbitrum Sepolia, Optimism Sepolia, Polygon Amoy) - Add matching shorthand aliases to the Aliases section --- docs/07-supported-chains.md | 12 +++++++++++- ows/crates/ows-core/src/chain.rs | 3 +-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/07-supported-chains.md b/docs/07-supported-chains.md index 2ebab67d3..bdc83f645 100644 --- a/docs/07-supported-chains.md +++ b/docs/07-supported-chains.md @@ -59,6 +59,11 @@ Each network has a canonical chain identifier. Endpoint discovery and transport | Etherlink | `eip155:42793` | | Tempo | `eip155:4217` | | Hyperliquid | `eip155:999` | +| Sepolia | `eip155:11155111` | +| Base Sepolia | `eip155:84532` | +| Arbitrum Sepolia | `eip155:421614` | +| Optimism Sepolia | `eip155:11155420` | +| Polygon Amoy | `eip155:80002` | ### Non-EVM Networks @@ -91,7 +96,12 @@ bsc → eip155:56 avalanche → eip155:43114 etherlink → eip155:42793 tempo → eip155:4217 -hyperliquid → eip155:999 +hyperliquid → eip155:999 +sepolia → eip155:11155111 +base-sepolia → eip155:84532 +arbitrum-sepolia → eip155:421614 +optimism-sepolia → eip155:11155420 +polygon-amoy → eip155:80002 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 253440556..e78b99575 100644 --- a/ows/crates/ows-core/src/chain.rs +++ b/ows/crates/ows-core/src/chain.rs @@ -700,5 +700,4 @@ mod tests { let chain = parse_chain("84532").unwrap(); assert_eq!(chain.chain_id, "eip155:84532"); } - -} \ No newline at end of file +}