Skip to content

feat: add Radius Network support (eip155:723487)#29

Merged
lalalune merged 1 commit intoelizaos-plugins:alphafrom
radiustechsystems:add-radius-network
Apr 25, 2026
Merged

feat: add Radius Network support (eip155:723487)#29
lalalune merged 1 commit intoelizaos-plugins:alphafrom
radiustechsystems:add-radius-network

Conversation

@TJ-Frederick
Copy link
Copy Markdown
Contributor

@TJ-Frederick TJ-Frederick commented Apr 17, 2026

Summary

Add Radius Network (chain ID 723487) and its testnet (chain ID 72344) to the Rust and Python implementations of plugin-evm. The TypeScript implementation already picks up Radius automatically via viem/chains (SupportedChain = keyof typeof viemChains), so only the README needs updating there.

Radius Network is an EVM-compatible platform purpose-built for agentic micropayments — sub-penny costs (~$0.0001/tx), sub-second finality (~500ms), and stablecoin-native gas (RUSD). It's a natural fit for plugin-evm's agent payment workflows.

Chain details

Chain ID RPC Explorer
Mainnet 723487 https://rpc.radiustech.xyz https://network.radiustech.xyz
Testnet 72344 https://rpc.testnet.radiustech.xyz https://testnet.radiustech.xyz

Native currency: RUSD (Radius USD, 18 decimals).

Registered in viem 2.48.0 as radius / radiusTestnet, and in ethereum-lists/chains (PR #8168, merged).

Links

Greptile Summary

This PR adds Radius Network (chain ID 723487) and Radius Testnet (chain ID 72344) to the Rust and Python implementations of plugin-evm, and updates the README — the TypeScript layer already picks up the chain automatically via viem/chains. All chain metadata (RPC URLs, native symbol RUSD, is_testnet flag) is correct and consistent across both languages, and the new variants are fully covered by the extended test suites.

Confidence Score: 5/5

Safe to merge; all remaining findings are P2 style suggestions about the pre-existing serde/Display naming gap and missing display assertions in tests.

Chain IDs, RPC URLs, native symbol, and testnet flags are all correct and consistent across Rust and Python. Tests are comprehensive. The only noteworthy issue is the pre-existing serde rename_all = 'lowercase' mismatch for multi-word chain names — RadiusTestnet follows the same pattern as BaseSepolia, which already exists in the codebase without observed breakage.

rust/src/types.rs warrants a follow-up to address the serde/Display inconsistency for both RadiusTestnet and BaseSepolia, but this is not blocking.

Important Files Changed

Filename Overview
rust/src/types.rs Adds Radius/RadiusTestnet chain variants with correct chain IDs, RPC URLs, native symbol, and testnet flag; serde(rename_all = 'lowercase') creates a latent mismatch between wire format and Display for multi-word names.
python/elizaos_plugin_evm/types.py Adds RADIUS and RADIUS_TESTNET enum members with correct chain ID, symbol, RPC URL, and is_testnet flag; consistent with the rest of the Python implementation.
rust/tests/integration_tests.rs Adds chain_id, native_symbol, HTTPS RPC, testnet, and from_str tests for Radius/RadiusTestnet; Display and serde roundtrip tests are not extended to the new chains.
python/tests/test_types.py Updates testnet set and chain count to 16; thorough coverage of the new chains.
README.md Adds Radius Network and Radius Testnet rows to the supported chains table with correct chain IDs and RUSD symbol.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[SupportedChain input] --> B{FromStr lookup}
    B -->|radius| C[Radius - chain ID 723487]
    B -->|radiustestnet or radius-testnet| D[RadiusTestnet - chain ID 72344]
    C --> E[symbol: RUSD\nrpc: rpc.radiustech.xyz\nis_testnet: false]
    D --> F[symbol: RUSD\nrpc: rpc.testnet.radiustech.xyz\nis_testnet: true]
    E --> G[Display → radius\nSerde → radius]
    F --> H[Display → radiusTestnet\nSerde warning → radiustestnet]
Loading

Comments Outside Diff (2)

  1. rust/src/types.rs, line 11 (link)

    P2 Serde serialisation diverges from Display for RadiusTestnet

    #[serde(rename_all = "lowercase")] serialises RadiusTestnet as "radiustestnet", but Display returns "radiusTestnet" and the Python enum value is "radiusTestnet". This means serde_json::from_str::<SupportedChain>("\"radiusTestnet\"") would silently fail while "radiustestnet" succeeds — a mismatch between the serde wire format and what to_string() produces.

    This pre-existing gap also affects BaseSepolia (serde: "basesepolia" vs Display: "baseSepolia"). Adding a per-variant rename on both would align all representations:

    #[serde(rename = "radiusTestnet")]
    RadiusTestnet,

    The same fix applied to BaseSepolia would close the pre-existing gap too.

  2. rust/tests/integration_tests.rs, line 325-330 (link)

    P2 test_chain_display and serde tests not extended to Radius chains

    The existing test_chain_display test covers BaseSepolia and Zksync but the new chains are not tested. Similarly, test_chain_serde_all only covers single-word variants and deliberately skips multi-word ones (where the serde/Display mismatch would surface). Adding assertions here would catch the "radiusTestnet""radiusTestnet" Display roundtrip and make the serde gap visible:

    // in test_chain_display
    assert_eq!(SupportedChain::Radius.to_string(), "radius");
    assert_eq!(SupportedChain::RadiusTestnet.to_string(), "radiusTestnet");

Reviews (1): Last reviewed commit: "feat: add Radius Network support (eip155..." | Re-trigger Greptile

Summary by CodeRabbit

Release Notes

  • New Features

    • Added support for Radius Network (mainnet) and Radius Testnet to the EVM plugin, enabling users to interact with these chains alongside existing supported networks.
  • Tests

    • Updated test coverage to validate chain properties and network identification for the newly added networks.

Adds Radius Network (chain ID 723487) and Radius Testnet (chain ID 72344)
as supported chains in the Rust and Python implementations. The TypeScript
implementation already auto-supports both via viem 2.48.0+, since
`SupportedChain = keyof typeof viemChains` — the `^2.21.0` viem pin accepts
the release that exports `radius` and `radiusTestnet`.

Changes:
- rust/src/types.rs: add `Radius` and `RadiusTestnet` enum variants with
  chain_id, native_symbol ("RUSD"), default_rpc, is_testnet, Display, and
  FromStr match arms following the existing 14-chain pattern.
- python/elizaos_plugin_evm/types.py: add `RADIUS` and `RADIUS_TESTNET` enum
  entries plus dict entries across chain_id, native_symbol, default_rpc,
  and is_testnet properties.
- python/tests/test_types.py: update EXPECTED_CHAIN_IDS, EXPECTED_SYMBOLS,
  test_testnet_identification, test_mainnet_chains_are_not_testnet, and
  test_enum_count to include the two new chains.
- rust/tests/integration_tests.rs: extend test_all_chain_ids,
  test_all_native_symbols, test_all_default_rpcs_are_https,
  test_testnet_identification, and test_chain_from_str_standard with
  Radius + RadiusTestnet coverage.
- README.md: add two rows to the Supported Chains table.

Radius Network is a stablecoin-native EVM platform with ~500ms finality
and sub-penny gas. Native currency is RUSD (Radius USD, 18 decimals).
Registered in viem 2.48.0, alloy-rs/chains, and
ethereum-lists/chains (#8168, merged).

Website: https://radiustech.xyz
Docs: https://docs.radiustech.xyz
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 17, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 0d646663-d5df-48d6-904e-8921e19b0313

📥 Commits

Reviewing files that changed from the base of the PR and between 4e720f0 and fc3ca16.

📒 Files selected for processing (5)
  • README.md
  • python/elizaos_plugin_evm/types.py
  • python/tests/test_types.py
  • rust/src/types.rs
  • rust/tests/integration_tests.rs

Walkthrough

Added support for two new blockchain networks (Radius Network and Radius Testnet) to the EVM plugin. Chain identifiers, native symbols, RPC endpoints, and testnet classifications were integrated into Python and Rust codebases along with corresponding test coverage updates.

Changes

Cohort / File(s) Summary
Documentation
README.md
Added Radius Network (chain ID 723487) and Radius Testnet (chain ID 72344) entries to the "Supported Chains" table with RUSD as native token.
Python Implementation
python/elizaos_plugin_evm/types.py
Added RADIUS and RADIUS_TESTNET enum members to SupportedChain and extended chain_id, native_symbol, and default_rpc property mappings with corresponding values. Updated is_testnet() logic to classify RADIUS_TESTNET as a testnet.
Python Tests
python/tests/test_types.py
Updated test expectations: added Radius chains to EXPECTED_CHAIN_IDS and EXPECTED_SYMBOLS dictionaries, modified testnet assertions to include RADIUS_TESTNET, and adjusted enum count expectation to 16.
Rust Implementation
rust/src/types.rs
Added Radius and RadiusTestnet variants to SupportedChain enum with complete implementations for chain_id(), native_symbol(), default_rpc(), is_testnet(), Display, and FromStr trait methods.
Rust Tests
rust/tests/integration_tests.rs
Extended integration tests to validate chain IDs (723487, 72344), native symbol ("RUSD"), RPC URL validity, testnet classification, and string parsing including alternative aliases ("radius-testnet", "radius_testnet").

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 Two new chains hop into view,
Radius mainnet and testnet too,
With RUSD tokens shining bright,
RPC endpoints set just right,
Python and Rust in harmony! 🌟

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 71.43% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: add Radius Network support (eip155:723487)' directly and clearly summarizes the main change: adding support for Radius Network (mainnet with chain ID 723487), which is the primary focus of the changeset across README, Rust, and Python implementations.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@lalalune lalalune merged commit 0e1c608 into elizaos-plugins:alpha Apr 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants