Summary
We recently launched EasyCrypto on Polkadot Asset Hub Mainnet EasyDot [https://polkadot.easycrypto.fans/\] , leveraging pallet-revive for EVM compatibility. While the developer experience of compiling Solidity to PolkaVM has been solid, we are hitting severe infrastructure bottlenecks with the default public EVM RPC (https://eth-rpc.polkadot.io/).
We are opening this topic to discuss the current state of EVM RPC infrastructure for Asset Hub, explore alternative public/commercial endpoints, and understand the recommended production path for dApps relying on standard Web3 tooling.
Project & Technical Context
- Application: EasyCrypto (https://polkadot.easycrypto.fans/)
- Target Network: Polkadot Asset Hub EVM (Chain ID:
420420419/0x190f1b43) - Stack: React, TypeScript, ethers.js (v6), Solidity smart contracts compiled to PolkaVM via
pallet-revive. - Primary RPC Endpoint Used:
https://eth-rpc.polkadot.io/
The Problem: Public RPC Instability Under Production Conditions
Even with low-to-moderate end-user traffic, we are experiencing recurring issues that degrade the core application experience:
- Aggressive Rate-Limiting & Timeouts: Pointers to
https://eth-rpc.polkadot.io/frequently return HTTP 429 (Too Many Requests) or drop connections during sequential reads. CALL_EXCEPTIONwith Null Data: Routine read operations (eth_call) intermittently returnCALL_EXCEPTIONwithdata: nullinstead of resolving or returning a decoded revert reason.- Absence of Dedicated Commercial Providers: Major Web3 node providers (Dwellir, OnFinality, QuickNode, Alchemy) do not yet expose dedicated public endpoints for the Asset Hub EVM wrapper (
pallet-revive-eth-rpc) on Mainnet. - Why Light Clients (Smoldot / PAPI) Aren’t an Immediate Fix:
We evaluated embedding Smoldot + PAPI directly into the frontend. However, our end users connect using standard EVM browser wallets (MetaMask, Rabby), and our application layer relies on standard EVM tooling (ethers.js v6, JSON-RPCeth_*methods, andeth_getLogsfor event filtering). Because Smoldot does not expose a client-side HTTP/WSeth_*RPC server, a dedicated backend RPC endpoint remains essential.
Current Mitigations (and Their Limits)
To keep the dApp usable, we implemented:
- Client-side exponential backoff retries on RPC calls.
- A self-hosted Nginx reverse proxy with caching for static reads to prevent CORS issues and reduce outgoing traffic.
Despite these mitigations, the single public RPC remains a critical single point of failure.
Questions for the Community & Core Team
- Alternative Endpoints: Are there secondary public or community-run RPC endpoints running
pallet-revive-eth-rpcon Asset Hub Mainnet that developers can use as fallbacks? - Commercial Support: Are node providers (e.g., Dwellir, OnFinality) actively onboarding the
pallet-revive-eth-rpclayer for Mainnet Asset Hub? Who can we contact to get access or sponsor dedicated capacity? - Developer Whitelist / Tiered Access: Is there an active application process or whitelist for teams with live Mainnet contracts to obtain higher rate limits on
eth-rpc.polkadot.io? - Recommended Self-Hosted Architecture: If running our own instance is the only production-ready route today, what is the recommended minimal setup? Running a full archive node +
eth-rpcin AWS easily exceeds $600/month. Are there optimized configurations (e.g., specific pruning flags that preserveeth_callandeth_getLogsfunctionality) to run this cost-effectively on bare-metal?
We would appreciate any insights, shared experiences from teams deploying on pallet-revive, or contacts from infrastructure teams supporting this layer.