A developer building on Arbitrum or Polygon may need to test contract interactions on a local testnet before deploying to mainnet, or switch between several EVM-compatible networks throughout a single working session. Rabby Wallet, as a self-custody crypto wallet designed for Ethereum and EVM-compatible blockchain networks, supports this workflow through its network-switching interface and custom RPC configuration. However, adding a chain that does not appear in Rabby’s default list requires understanding how to input the correct RPC endpoint, chain ID, and explorer details—and how to verify that the information comes from a legitimate source rather than a misconfigured or compromised endpoint.
The distinction matters because an incorrect or malicious RPC endpoint can display false balances, fail to broadcast transactions, or in more dangerous scenarios, serve a forked or altered version of a blockchain. A network switcher that makes adding chains frictionless can encourage faster iteration during development but also creates a surface where configuration errors or supply-chain attacks can occur. Rabby’s approach to this problem combines a curated list of common networks with the ability to add custom endpoints, alongside pre-transaction risk scanning that can catch some classes of mistakes before a user signs.
The standard network list and when to add custom chains
Rabby Wallet ships with support for major EVM networks out of the box: Ethereum mainnet, Arbitrum, Optimism, Polygon, Avalanche, Binance Smart Chain, Fantom, and others. These are pre-configured with correct RPC endpoints, chain IDs, explorers, and currency symbols. For most users and applications, selecting from this list is sufficient and reduces configuration risk because Rabby has already validated the endpoint and network parameters.
Custom chains become necessary when working with testnets, private networks, rollup sandboxes, or newly launched networks that have not yet been added to Rabby’s default list. Developers testing on Sepolia or Goerli, Arbitrum Sepolia, Optimism Sepolia, or a local Hardhat instance all require custom chain configuration. The wallet allows this flexibility, but it places the burden of verification on the user: entering an incorrect or untrusted RPC endpoint can create silent failures or expose transaction details to an adversary.
The practical risk depends on what the endpoint sees. An RPC provider cannot steal private keys because it never receives them; transactions are signed locally on the device before being broadcast. However, an endpoint can observe which addresses are querying balances, infer patterns from repeated calls, serve stale data, reject valid transactions, or return false information about on-chain state. In a development context, the last risk is most common: a developer may inadvertently send a test transaction to the wrong network, approve an unintended contract, or miss a contract bug because the endpoint was misconfigured and reported incorrect state.
Rabby’s pre-transaction risk scanning can detect some obvious mistakes—such as approving a token contract to spend all of your balance—but it operates on the assumption that the RPC endpoint is honest. If the endpoint is returning false data about the contract being approved or the token balance, even good security design in the wallet cannot fully compensate.
How to add a custom RPC endpoint correctly
Adding a custom network in Rabby requires navigating to the network settings or the “Add Network” interface and entering several pieces of information. The most critical field is the RPC endpoint: a URL that the wallet uses to read balances, estimate gas, and broadcast transactions. This must be a fully qualified HTTPS endpoint belonging to a legitimate node provider or your own infrastructure. The second essential field is the chain ID, a unique numeric identifier for the network. Entering the wrong chain ID will cause transactions to be valid on one chain but interpreted as valid on another, creating a replay attack surface.
Additional fields typically include the network name (for display), the currency symbol (ETH, AVAX, MATIC, and so on), and the block explorer URL. The explorer is useful for users to verify transactions after they are broadcast, but an incorrect explorer URL will simply point them to the wrong place; it will not affect transaction signing or security directly. Some custom networks may also require the explorer API endpoint if Rabby is trying to fetch additional metadata about contracts or token symbols.
The source of this information matters intensely. For public testnets, official documentation from Ethereum Foundation (for Sepolia or Goerli), Arbitrum, Optimism, or Polygon is the correct reference. For example, Sepolia’s chain ID is 11155111 and a widely used public RPC endpoint is provided by the Ethereum Foundation or by Infura. If you are configuring a testnet, cross-reference the chain ID and at least one RPC endpoint with the official network documentation before entering it into Rabby. If you are configuring a private network or local testnet, verify the chain ID against your deployment configuration and the RPC endpoint against your node operator.
A common mistake is copying network details from a blog post, social media, or community forum without verifying against the official source. Even well-intentioned community members can provide outdated or incorrect endpoints. For production or even staging testing, use RPC providers with public reputation, uptime tracking, and rate-limit policies. Infura, Alchemy, QuickNode, and similar providers maintain multiple endpoints with redundancy. If you operate your own node, ensure it is synchronized with the canonical chain before routing transactions through it.
Chain ID mismatches and transaction replay risks
The chain ID is the cryptographic separator between networks. Ethereum mainnet is chain ID 1. Sepolia is 11155111. Arbitrum One is 42161. When you sign a transaction in Rabby, the signature includes a commitment to the chain ID. In principle, this means a transaction signed for Sepolia cannot be replayed on mainnet; they have different chain IDs in the signed data.
However, if you misconfigure Rabby to believe it is connected to chain ID 1 when you are actually broadcasting to chain ID 11155111, the signature will be valid on the misconfigured chain but invalid on the actual target. The transaction may be silently rejected, creating confusion about whether it was broadcast at all. The inverse problem is more dangerous: if you sign a transaction thinking you are on a testnet but Rabby is actually configured with a mainnet chain ID, the signature will be valid on mainnet and could drain real funds.
This is why Rabby’s balance change preview before signing is valuable for development work. If you are approving a contract interaction on what you believe is a testnet, but Rabby displays a balance in real ETH instead of test ETH, that discrepancy should trigger a pause. Similarly, if the displayed contract address or token symbol does not match your expectations, do not proceed. The preview screen is one of the last moments to catch a misconfiguration before signing.
To minimize this risk, maintain separate browser profiles or separate instances of Rabby for testnet and mainnet work. Some developers use one extension instance for development and testing and keep another instance on a different machine or browser profile for production wallets. This reduces the chance of accidentally targeting the wrong network. Additionally, when you add a custom testnet to Rabby, include a clear network name such as “Sepolia Testnet” or “Local Hardhat Dev” rather than a generic name, so the network selection dropdown gives you constant visual feedback about which environment you are in.
Verifying RPC endpoint reliability and avoiding compromised endpoints
An RPC endpoint is only as reliable as the node it queries and the network it is connected to. A node that is lagging behind the canonical chain will report stale balances and rejected transactions. A node that is forked from the canonical chain—either due to network partition or deliberate attack—will report completely false state. Rabby cannot distinguish between these scenarios automatically because the wallet must trust the endpoint to tell it what the current state is.
For public networks and testnets, use well-known providers or official endpoints. The Ethereum Foundation, Arbitrum, Optimism, and other major networks publish recommended endpoints in their documentation. These providers are incentivized to maintain accuracy because their reputation and business depend on it. For a local development network such as Hardhat, Ganache, or Foundry, the RPC endpoint is usually http://localhost:8545 or a similar local address; as long as your node is running and synchronized, the endpoint will be local and therefore not subject to network-based attacks.
If you use a custom RPC provider, monitor its behavior: check that the returned balances match your expectations, that gas estimates are reasonable, and that transactions are broadcast and confirmed within normal timeframes. If an endpoint suddenly starts returning different data or rejecting transactions, it may be misconfigured, under attack, or not synchronized. In that case, switch to a different endpoint or provider immediately.
One additional safeguard is to verify the RPC endpoint’s basic health before routing significant transactions through it. Many providers offer a simple JSON-RPC method such as eth_blockNumber or eth_getBalance to test connectivity. You can make a manual call from a browser console or command-line tool to confirm that the endpoint responds and returns sensible data before trusting Rabby to use it. This is particularly important if you are configuring an endpoint provided by a third party or community member rather than a major commercial provider.
Using Rabby Wallet features for testnet and development workflows
Beyond network switching, Rabby’s broader feature set supports development and testing. The open-source codebase published on GitHub allows developers to review the code, audit the security practices, and understand exactly how custom networks are handled. This transparency is important for any wallet used in a professional development context. The balance change preview before signing is especially valuable when testing contract interactions; it can reveal whether an approval is being granted to the correct contract or whether a transfer amount matches your intentions.
Multi-chain support means you can hold test tokens on several testnets simultaneously without creating separate wallets or exporting recovery phrases multiple times. A single recovery phrase imported into Rabby gives you derived accounts on every network, reducing the number of secrets you must manage. However, this also means that compromising the recovery phrase on one network compromises all networks, so protect it with the same care you would use for a mainnet-only wallet.
The browser extension form factor is convenient for rapid switching during development because you can approve transactions while interacting with a dapp in the same tab or neighboring tab. The mobile app and desktop application offer similar features but may be more suitable for reviewing transactions before signing when you want a clearer separation of concerns. For high-value or production deployments, hardware wallet integration (via wallet connect or similar) can add another layer of isolation, though this slows down the development cycle.
When testing a contract on a custom chain, use Rabby’s interface to simulate the entire user journey: connect to a dapp, review the pre-transaction risk scan output, examine the transaction preview, and sign. This process will reveal usability issues and mistakes much earlier than discovering them in production. Rabby Wallet features such as the preview mechanism and risk scanning are designed to catch errors before signing, so use them as part of your testing checklist rather than treating them as optional.
Downloading and verifying the official Rabby extension
Because a wallet extension is a high-value target for impersonation and phishing, verifying that you have installed the genuine Rabby Wallet is essential before using it with any recovery phrase or production funds. The official Chrome extension ID is acmacodkjbdgmoleebolmdjonilkdbch; if your extension ID differs, you have installed a fake. The safest approach is to download Rabby Wallet extension directly from the official Chrome Web Store link or from the official rabby.io website. Avoid installing extensions from third-party app stores, email attachments, or URLs shared in social media or forums unless you have verified the URL yourself by visiting rabby.io in a fresh browser tab.
The same principle applies to the mobile app: install only from Google Play or the Apple App Store, and verify the publisher name before installing. Fraudulent versions of popular wallets are common; installing a fake version will expose your recovery phrase to the attackers the moment you import it. If you are setting up Rabby for the first time, create a new wallet and recovery phrase in the official extension, then carefully back up the phrase in an offline location. Only then import it into other instances if you need multi-device access.
For development work, you can create test wallets separate from your production wallets. This allows you to experiment with network configurations, test transactions, and try different workflows without risking funds in wallets that hold significant value. When you are confident that a network configuration works correctly, you can then use it in a production wallet context. This staged approach—test wallet first, then production wallet—reduces the risk of user error and configuration mistakes affecting your valuable assets.
Troubleshooting network configuration and common mistakes
If you have added a custom network but Rabby displays zero balance, shows a connection error, or fails to broadcast transactions, the first step is to verify the RPC endpoint. Test it from a command line using a simple curl command or from a browser console. For example, curl -X POST https://your-rpc-endpoint -H “Content-Type: application/json” -d ‘{“jsonrpc”:”2.0″,”method”:”eth_blockNumber”,”params”:[],”id”:1}’ should return a block number if the endpoint is working. If the endpoint is unresponsive, switch to a different one.
If the endpoint responds but Rabby still shows zero balance, verify that your wallet address is correct and that you have actually funded it on that network. For testnets, you may need to use a faucet to send test tokens to your address. Some faucets have delays or may require social proof such as a Twitter post. Check the testnet documentation for the correct faucet and any requirements.
If you cannot broadcast a transaction, check that the chain ID in Rabby matches the actual network chain ID. An off-by-one error or a typo will cause all transactions to be rejected silently. Additionally, ensure that you have enough gas token balance on that network. You cannot pay for gas in USDC or any other token; you must have the native token (ETH on Ethereum, AVAX on Avalanche, and so on) in your account.
If a transaction appears to succeed in Rabby but does not show up on the block explorer, the endpoint you are viewing in Rabby may not be the same as the endpoint used by the block explorer. This can happen if the block explorer is querying a different node or if your Rabby endpoint is behind. Wait a few minutes and refresh the block explorer, then check the transaction hash that Rabby displays. If the transaction never appears even after waiting, it may have been rejected by the network or failed to propagate.
Best practices for production and staging deployment
As you move from development and testing to staging and production, treat network configuration with increasing scrutiny. For staging deployments, use the official testnet or a private testnet managed by your organization, with RPC endpoints operated by trusted infrastructure. For production, restrict access to Rabby instances that hold significant funds; use a separate device or browser profile, enable all security features, and consider using a hardware wallet for additional protection.
Document your network configurations so that other team members can reproduce your setup without relying on memory or informal notes. Include the RPC endpoint, chain ID, explorer URL, and the date the configuration was verified. If you change an RPC endpoint due to provider issues, update the documentation immediately. This practice reduces the chance of team members accidentally using an outdated or compromised endpoint.
For contracts being tested on multiple networks, ensure that you have verified the contract deployment address on each network before interacting with it. A contract address that is valid on Ethereum mainnet may not contain code on Arbitrum, or it may contain a different contract entirely. Rabby’s contract verification and risk scanning can help detect some of these mistakes, but they rely on accurate labeling and known contracts. When in doubt, query the network directly to confirm that the address you are about to interact with contains the contract code you expect.
Frequently asked questions
Can I add any EVM-compatible chain to Rabby, or only chains on the default list?
Rabby supports both the pre-configured standard networks and custom chains that you add manually. To add a custom chain, you need the RPC endpoint, chain ID, network name, currency symbol, and optional block explorer URL. Verify all of this information against official sources before entering it into Rabby, because an incorrect endpoint or chain ID can cause silent failures or transaction mistakes.
What happens if I enter the wrong chain ID when adding a custom network?
Transactions signed on a network with an incorrect chain ID will not be valid on the actual target network. If you sign thinking you are on a testnet but Rabby is configured with a mainnet chain ID, the transaction could be valid on mainnet and drain real funds. Always verify the chain ID against official network documentation before confirming the network configuration.
How do I verify that the RPC endpoint I am using is trustworthy and not compromised?
Test the endpoint with a simple JSON-RPC call such as eth_blockNumber before routing transactions through it. Use endpoints from well-known providers such as Infura, Alchemy, or QuickNode for public networks, or official endpoints published by the network documentation. For private or local networks, ensure the endpoint is on your own infrastructure. If balances or transaction results seem incorrect, switch to a different endpoint immediately.
