Skip to content

Dynamic RPC endpoints: chain registry, Keplr fallback, user settings #1387

Description

@saint-Joy

Problem

All external chain RPC endpoints are hardcoded in src/utils/networkListIbc.ts. If any RPC provider goes down or gets blocked (e.g. by country-level firewalls), the bridge for that chain breaks completely.

Current hardcoded RPCs:

  • osmosis: rpc-osmosis.ecostake.com
  • cosmoshub: rpc.cosmoshub-4.bronbro.io
  • juno: rpc-juno.itastakers.com
  • evmos: rpc.evmos-9001-2.bronbro.io
  • etc.

Proposed solution

1. Fallback RPC list

Multiple RPC endpoints per chain with automatic failover on connection error or timeout.

2. Chain registry integration

Use Cosmos Chain Registry as a source of up-to-date RPC endpoints. Can be fetched at app startup.

3. Keplr chain info

keplr.getChainInfosWithoutEndpoints() is already used in the codebase — extend to also extract RPC endpoints from Keplr's registry.

4. User-configurable RPC (Avatar Settings skill)

Create a skill in Avatar Settings where users can manually set custom RPC endpoints per chain. This is critical for users in countries where certain RPCs are blocked without VPN.

UI: Settings → Network → per-chain RPC input fields with "test connection" button.

Files to modify

  • src/utils/networkListIbc.ts — replace static config with dynamic resolution
  • Avatar Settings — new RPC management skill
  • Consider localStorage persistence for user RPC preferences

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions