Developers working on Ethereum Virtual Machine applications face a recurring practical constraint: testing workflows must account for multiple networks, each with different RPC endpoints, contract deployments, and state conditions. A standard wallet often provides only mainnet access or a limited preset of popular testnets, forcing developers to manage separate tools or switch between applications for local, testnet, and production environments. This fragmentation slows iteration cycles and introduces potential mistakes when moving code between stages.
The Rabby wallet extension addresses this friction by offering full control over network configuration, custom RPC endpoint assignment, and seamless testnet support without requiring developers to abandon their primary signing tool. Rather than operating as a black box that hides network details, Rabby exposes the underlying RPC structure while maintaining the security posture necessary for production use. This combination of transparency and control makes it particularly valuable for teams building, testing, and deploying smart contracts across the Ethereum Virtual Machine ecosystem.
Why developers need manual RPC control in their blockchain wallet
An Ethereum Virtual Machine network is defined by its RPC endpoint, contract addresses, block explorers, and native token economics. Public RPCs—those maintained by Infura, Alchemy, or similar providers—work well for standard queries but can impose rate limits, require API keys, or introduce latency that affects testing feedback loops. Many development teams instead run local nodes using Hardhat, Foundry, or Ganache, or they use dedicated infrastructure that provides better performance guarantees and avoids third-party rate limiting.
A blockchain wallet that cannot point to arbitrary RPC endpoints becomes an obstacle rather than a tool. If the Rabby wallet extension is constrained to use only Infura or a single default provider, developers testing against their own node or a private RPC cannot use the wallet to sign transactions. This limitation forces a choice: keep the wallet but use a different signing mechanism for local testing, or temporarily switch to a wallet that supports custom endpoints and risk losing address consistency or transaction history. Neither option is efficient.
Manual RPC configuration solves this by letting developers specify exactly where the wallet should send read requests and broadcast transactions. The wallet still maintains its security model—private keys remain on the user’s device, transaction simulation happens locally before broadcast, and message signing stays under user control—but the network target becomes flexible. A developer can test against localhost:8545 for local development, switch to a testnet RPC for integration testing, and move to mainnet with the same wallet instance and address without reconfiguring credentials or account setup.
This flexibility also supports scenarios where developers need to use private RPC infrastructure provided by their organization, connect through a proxy or VPN, or work with custom networks that do not appear in any wallet’s preset list. Without the ability to add a custom RPC in the Rabby wallet extension, these workflows require workarounds that add complexity and increase the chance of errors during critical deployments.
Adding and configuring custom RPC endpoints
The process of adding a custom RPC endpoint to Rabby begins in the network settings panel, which is accessible from the extension’s main view or browser action. Rather than relying on hidden configuration files or command-line tools, the interface presents a clear form where developers specify the RPC URL, network name, chain ID, and optional currency symbol. Each field has practical constraints: the RPC URL must be a valid HTTP or HTTPS endpoint, the chain ID must match what the network actually uses, and the currency symbol helps the wallet display balances in readable units.
Developers should verify the RPC endpoint before adding it to the Rabby wallet extension. Testing connectivity involves making a simple JSON-RPC call to the endpoint, such as requesting the current block number using eth_blockNumber. Many IDEs and command-line tools like curl can do this quickly. A working endpoint will return a valid block number; a misconfigured URL, a networking issue, or an endpoint that is temporarily offline will show an error. This validation step prevents the frustration of configuring a wallet against a broken endpoint, discovering the problem only when attempting to sign a transaction.
Once the endpoint is added, the wallet will use it for all network interactions including balance queries, transaction history, and gas estimation. The wallet’s transaction simulation feature—a key security benefit—runs against this RPC, so the simulation reflects the actual state of the network as the endpoint sees it. If the endpoint is lagging behind the canonical chain due to sync issues, the simulation may not reflect recent state changes. Developers working with multiple teams or services should ensure they understand which endpoint version of truth is authoritative for their particular workflow.
Custom RPCs can be deleted or modified at any time, and developers can maintain multiple RPC configurations for different purposes. Labeling them clearly—such as “Local Dev”, “Sepolia Public”, or “Private Infra”—prevents confusion when switching between environments. The Rabby wallet extension remembers all configured networks and allows rapid switching without re-entering the endpoint details, which is essential for developers who frequently toggle between testnet and production work.
Testnet support and local development workflows
Ethereum testnets—Sepolia, Goerli (deprecated), and others—exist specifically to let developers test contracts and interactions without risking real funds on mainnet. The Rabby wallet extension provides built-in support for major testnets, but the full value emerges when developers understand how testnet assets, faucets, and state differ from mainnet. A testnet wallet address is the same as its mainnet counterpart because both derive from the same private key; the only difference is which RPC and blockchain the wallet queries.
Testnet Ether can be obtained from faucets, which are services that distribute small amounts of test ETH to developers. The wallet address itself is agnostic to which network it is being used on, so a developer can request test ETH to their Rabby wallet address through a web faucet interface, then switch the wallet to the appropriate testnet and wait for the balance to appear. The security model remains identical: the wallet controls the private key, the Rabby wallet extension broadcasts transactions, and only the network context changes.
Local development networks created with Hardhat or Foundry use custom RPC endpoints, typically at localhost:8545 or a developer-specified port. Adding these as custom networks in the Rabby wallet extension lets developers sign transactions against their local node without switching tools. A typical workflow might involve starting a local Hardhat network, importing the predefined accounts into the wallet (which Hardhat outputs during initialization), configuring the local RPC endpoint, and then connecting to a contract testing interface or directly crafting transactions through the wallet’s send feature.
State management in local networks requires attention: every time a local node is restarted, the state resets unless the developer explicitly configures state snapshots or persistence. This means balances, contract deployments, and transaction histories will be lost. Developers should not treat local testnet balances the same as real assets. The Rabby wallet extension will still display them until the node is reset, which can create confusion if a developer expects balances to persist across restarts. Keeping clear mental separation between local, testnet, and mainnet contexts prevents expensive mistakes.
Transaction simulation and contract interaction verification
Before broadcasting a transaction to an Ethereum Virtual Machine network, Rabby performs transaction simulation, which executes the transaction against the current state of the network as seen by the RPC endpoint. This dry-run identifies failures that would otherwise consume gas: contract revert reasons, insufficient balances, allowance issues, or logic errors that would waste transaction fees. For smart contract testing and deployment, this feature is invaluable because it provides immediate feedback without committing to the blockchain.
The simulation depends entirely on the RPC endpoint’s current state. If a developer is using a local Hardhat network and has just deployed a new contract, but the contract address has not been added to the wallet’s address book, the wallet may not display human-readable information about what the contract does. The transaction will still simulate correctly against the RPC, but the developer may have to manually verify the contract address and expected function call to be confident. This is why maintaining accurate contract address records and using verification tools like Etherscan (on mainnet and testnets) to cross-reference function signatures is important.
Smart contract developers often need to test specific edge cases: what happens when a contract receives unexpected input, runs out of gas, or interacts with other contracts that may revert. The Rabby wallet extension’s simulation shows whether a transaction would fail, but developers should still validate the failure reason. Some contract interactions are intentionally reversible as part of the contract’s logic; understanding the difference between a security measure and an actual error requires reading the contract code or reviewing the Solidity ABI definition. The wallet surfaces information but does not replace due diligence.
For deployment workflows, developers often use contracts that deploy other contracts, including proxies or factories. The simulation will show the resulting state changes, including new contract addresses, but these addresses will not immediately appear in the wallet’s transaction history until the transaction is confirmed on chain. Waiting for confirmation and then refreshing the wallet ensures that the newly deployed contract appears in the transaction record and can be interacted with subsequently.
Hardware wallet integration and production security
Development workflows often shift from testing to production, and the security requirements scale accordingly. The Rabby wallet extension supports hardware wallets including Ledger and Trezor, allowing developers to maintain the same wallet interface and RPC configuration while using hardware-backed key signing for critical transactions. This is particularly useful for team workflows where a single hardware device signs contract deployments or administrative transactions, while other team members use software wallets for testing.
Connecting a hardware wallet to the Rabby wallet extension involves selecting the hardware wallet option during account creation or import, then following the device’s authorization flow. The wallet can then be used to approve transactions, but the actual signing happens on the hardware device, which remains in the developer’s or organization’s physical custody. For mainnet contract deployments or state-changing administrative actions, this additional security checkpoint is worth the slight additional latency.
A critical limitation of hardware wallets in development workflows is that they cannot sign offline or with custom signing schemes easily. Some advanced contract interactions, particularly those using signature-based authentication or complex multi-signature arrangements, may require handling signature generation separately from the wallet interface. Developers should test hardware wallet integration against testnet first to confirm that their intended interaction pattern works before attempting it on mainnet.
The Rabby wallet extension’s message signing feature—which allows signing arbitrary messages for authentication, off-chain proofs, or other purposes—also works with hardware wallets. This is useful for workflows where developers need to prove ownership of an address without broadcasting a transaction. Always verify what message is being signed before approving it on the hardware device, as the message appears on the device’s screen and represents a binding commitment.
Monitoring and debugging RPC behavior
When developers use a custom RPC endpoint in the Rabby wallet extension, understanding the endpoint’s behavior becomes critical for debugging. If a transaction simulation succeeds but fails after broadcast, or if balances appear incorrect, the RPC endpoint itself may be the source of the problem. Common issues include: the RPC node is lagging behind the canonical chain, the endpoint is enforcing rate limits, the node’s state is corrupted or inconsistent, or there is a networking issue between the developer’s device and the RPC infrastructure.
Testing an RPC endpoint independently of the wallet can isolate whether the problem is with the endpoint or with the wallet’s use of it. Using curl or a tool like Postman, a developer can send JSON-RPC requests directly to the endpoint and observe the responses. Comparing results from the custom RPC against known-good public endpoints (such as Infura or Alchemy) can reveal discrepancies. If a custom RPC returns a different block number or account balance than public alternatives, the custom RPC is likely the problem.
Gas estimation is another debugging surface. The Rabby wallet extension uses the RPC’s eth_estimateGas method to predict transaction costs. If gas estimates are wildly inaccurate, the RPC may have an outdated view of the contract’s state or may not be correctly simulating the transaction. Developers should understand their contract’s gas consumption profile independently—using testing frameworks like Hardhat or Foundry—to validate whether the RPC’s estimates are reasonable.
For long-running development projects or team environments, maintaining documentation about which RPC endpoints are used for which purposes prevents confusion. A shared configuration file or wiki page listing the RPC URL, maintenance contact, expected uptime, rate limits, and any known issues reduces the time spent troubleshooting connectivity problems. When multiple developers share a project, a mismatch between which RPC they are using can lead to very difficult-to-diagnose divergences in test results.
Advanced configuration for multi-chain development
The broader Ethereum Virtual Machine ecosystem includes Arbitrum, Optimism, Base, Polygon, BNB Smart Chain, Avalanche, and many others. Each network has distinct RPC endpoints, gas tokens, block times, and economic characteristics. Developers building applications that support multiple chains must test against each network’s actual RPC to ensure that contract behavior, gas costs, and state interactions work as expected. The Rabby wallet extension supports adding custom RPC entries for any EVM-compatible network, enabling developers to test a single wallet address across multiple chains without switching applications.
Chain-specific considerations include understanding which tokens are native, how bridges work, and what the canonical block explorer is. The Rabby wallet extension allows specifying a block explorer URL during network configuration, which is essential because different networks have different explorers. Properly configuring the block explorer lets developers quickly verify transactions and contract deployments from within the wallet interface. For custom or private networks, developers may need to set up a custom block explorer or at least have a way to query state independently.
Multi-chain token standards vary as well. While ERC-20 is prevalent, some networks have custom token implementations or require additional approvals for certain operations. The Rabby wallet extension’s token approval review feature shows what permissions a transaction is requesting, which is particularly important when interacting with multi-chain bridges or cross-chain protocols. Always review token approvals carefully before signing, even on testnets, to develop the habit of careful review before mainnet use.
The process of deploying a contract to a new EVM-compatible chain involves compiling the contract (which produces the same bytecode regardless of target network), obtaining native gas tokens for that chain, configuring the RPC endpoint in the Rabby wallet extension, and then using a deployment tool or direct wallet interaction to deploy. The contract address will be deterministic if the same sender and nonce are used, which is useful for cross-chain deployments where the contract should exist at the same address on multiple networks. Test this determinism on testnets first before relying on it for mainnet deployments.
Best practices for development-to-production transitions
Moving a wallet from development configuration to production requires careful steps to prevent mistakes that could compromise security or result in transaction errors. First, ensure that the production RPC endpoint is different and clearly labeled from any testnet or local development RPC. Naming conventions such as “Mainnet Production”, “Sepolia Testing”, and “Localhost Dev” help prevent selecting the wrong network accidentally. Second, review and document which accounts in the wallet are intended for production use and which are purely for testing.
Before conducting any real transaction on mainnet, test the same transaction flow on testnet with the same wallet and RPC configuration. This confirms that the wallet is properly configured, that the contract interactions work as expected, and that gas estimation is reasonable. Many developers use a separate browser profile or extension instance for mainnet and testnet work, which adds a layer of protection against accidentally switching networks mid-transaction.
When downloading or reinstalling the Rabby wallet extension, ensure that you are getting it from an official source. A compromised wallet could silently redirect transactions to attacker-controlled addresses or expose private keys. The open-source code on GitHub provides transparency, but developers should verify that the version they are running matches a known-good commit or release. Using the rabby wallet extension from an official distribution channel and checking cryptographic signatures or integrity hashes reduces supply chain risk.
Finally, understand that the Rabby wallet extension, like any wallet, cannot recover a lost or compromised recovery phrase. The phrase should be stored securely and separately from the device, and it should be tested once to ensure it can restore the wallet. Backup your recovery phrase before conducting any mainnet transactions, and maintain strict separation between development testing wallets and those holding real funds. Even a small amount of mainnet Ether in a development wallet can become a high-value target if the wallet is compromised through development tools or practices.
Frequently asked questions
How do I add a custom RPC endpoint to the Rabby wallet extension?
Open the Rabby wallet extension, navigate to network settings, and select “Add Custom Network” or similar option. Enter the RPC URL, network name, chain ID, and optional currency symbol. Verify the RPC endpoint is working by testing its connectivity before adding it. Once saved, the Rabby wallet extension will use that endpoint for all network interactions on that network.
Can I use the Rabby wallet extension with a local Hardhat node?
Yes. Start your Hardhat node (which typically runs on localhost:8545), add a custom RPC pointing to that address in the Rabby wallet extension, and import or create an account. You can then sign transactions against your local network without switching wallets. Remember that local node state resets when the node restarts, so balances and deployments are not permanent.
Is the Rabby wallet extension safe for mainnet use?
The Rabby wallet extension is self-custodial, meaning your private keys remain on your device and the wallet does not store assets. For mainnet use, ensure you have backed up your recovery phrase securely, use a hardware wallet for high-value transactions, verify transaction details before signing, and download the wallet from an official source only. Security depends on your device security and your practices, not just the wallet software.