Neshoba - A film by Micki Dickoff and Tony Pagano
Buy the film

A Film by Micki Dickoff and Tony Pagano

Rabby Wallet vs Metamask: Transaction Simulation Showdown – Which Catches More Scams?

A user receives a transaction proposal from what appears to be a legitimate DeFi protocol. The interface looks correct, the token address matches a recent memory, and the gas estimate seems reasonable. Yet something is wrong: the transaction will drain not just the intended amount but the entire wallet balance, sent to an address controlled by an attacker. The difference between catching this attack and losing funds often comes down to one feature: whether the wallet can simulate the transaction and show the user what will actually happen before they sign.

MetaMask, the most widely used Ethereum wallet, added basic transaction simulation in recent versions. Rabby Wallet, a younger but more specialized alternative, has built transaction simulation into its core logic from inception. Both claim to prevent scams. Both can import wallets and handle EVM chains. Yet their approaches to simulation differ fundamentally in scope, accuracy, and the specific attack patterns they detect. The practical difference matters for any user moving significant value or interacting with unfamiliar protocols.

Comparative interface of Rabby Wallet and MetaMask transaction approval screens showing simulation results and risk warnings

What transaction simulation actually does and why it matters

Transaction simulation means the wallet executes the transaction in a test environment before the user signs it on the blockchain. The wallet calls the smart contract functions, observes what tokens move, what addresses receive them, and what final state results. If a user approves sending 10 USDC to a Uniswap pool but the simulation shows that 1,000 USDC will actually leave the wallet, the discrepancy is visible before any signature is committed to the blockchain. This is not guessing based on function names or parsing ABI descriptions. It is actually running the code and watching the results.

The critical distinction is that simulation can catch deception that traditional security measures miss. A smart contract can have a correct function signature, legitimate-looking parameters, and a benign-appearing address, yet its bytecode can execute arbitrary transfers. A phishing page can display a plausible UI while constructing a malicious transaction underneath. A token approval can claim it is approving 100 units but encode a higher value due to integer overflow or manual construction. Simulation bypasses the presentation layer and goes directly to the execution layer.

The limitation, however, is that simulation only shows the immediate result of the transaction. If a user is interacting with a legitimate protocol but supplies bad parameters, simulation will correctly show that bad result—and the user may not realize they have made an error. Simulation is therefore a necessary but not sufficient security control. It answers the question “What will happen if I sign this?” but not always “Is what I am about to do a good decision?”

MetaMask’s simulation capability expanded when the wallet integrated external security partners and began running contract execution in parallel with the traditional approval flow. Rabby took a different architectural approach by building simulation directly into its transaction interpretation engine, which means every transaction is simulated by default, and the wallet highlights changes in token balances, allowances, and contract states before the user ever sees the approve button.

Rabby’s simulation architecture and detection depth

Rabby’s transaction interpretation system parses the transaction data, identifies the likely intent (swap, bridge, NFT transfer, approval), and then simulates execution to verify the intent matches the actual effect. For a Uniswap swap, the wallet will identify the input token, output token, and expected amounts, then run a simulation to confirm that those amounts actually result from the transaction. If the contract has been modified to steal the input, add hidden approvals, or redirect the output, the simulation reveals the discrepancy.

The wallet also maintains an internal risk alert system that flags patterns associated with known attack vectors. These include suspicious approvals (allowance set to an extremely high value without corresponding benefit), hidden transfers (transactions that move funds to unexpected addresses), approval to untrusted contracts (newly deployed contracts or contracts with suspicious behavior history), and balance changes that exceed the stated transaction purpose. These checks run in parallel with the simulation, so the user sees both the direct output of the simulation and the wallet’s risk assessment.

One concrete advantage of Rabby’s approach is that it simulates every transaction, regardless of source. A MetaMask user might receive a signed transaction proposal from a dapp interface and approve it without checking, since the interface may not trigger a full simulation. Rabby always simulates, so a malformed or malicious signed message cannot bypass the check. Additionally, Rabby supports transaction simulation for batch transactions—multiple operations bundled into one—which is increasingly common in MEV-aware strategies and complex DeFi interactions. The wallet will show the net effect across all operations in the batch, not just the first one.

A user can also preview transactions without committing them. Rabby allows a user to inspect a transaction, see the full simulation result, and decide whether to approve without time pressure. MetaMask’s simulation, by comparison, is triggered during the signing flow, so the user sees it as part of the approval modal rather than as a separate inspection step. The difference is subtle but affects user behavior: a wallet that treats simulation as a pre-signing step makes the check feel optional, while a wallet that shows simulation as the default state makes the check feel mandatory.

MetaMask’s simulation approach and its gaps

MetaMask’s simulation feature uses external providers and relies heavily on contract-level analysis rather than full bytecode execution in all cases. For well-known protocols like Uniswap, Aave, and OpenSea, MetaMask has pre-built interpretation logic that understands the transaction intent and validates the parameters. This approach is faster than running full simulation and reduces the number of contract calls needed during the security check.

The trade-off is that this strategy depends on recognizing the contract. A newly deployed contract, a forked protocol on an unfamiliar chain, or a contract that does not match MetaMask’s existing patterns may not receive the full simulation treatment. Instead, MetaMask might show a generic warning about an unverified contract without simulating the actual execution. This is where sophisticated attackers often operate: by deploying contracts that appear to be legitimate but have hidden logic, or by using legitimate protocol addresses with modified bytecode.

MetaMask also does not always show token balance changes in the approval preview the way Rabby does. A user might see that they are approving a spend allowance but not immediately understand which tokens will be transferred and in what quantities. The simulation result is available in the transaction details, but it requires the user to actively expand and read additional information. Rabby, by default, surfaces the token changes prominently, so the user sees “You will send 100 USDC, 0.5 ETH” before the approve button, not buried in a details panel.

Another difference emerges with approval transactions. MetaMask will warn if an approval is unusually high, but Rabby simulates the approval and shows whether it enables any immediate token transfers or if it is a straightforward allowance increase. If a user approves a contract that will immediately drain tokens, Rabby’s simulation catches this because it shows the actual state change, while MetaMask’s warning system might flag a high approval without necessarily showing the execution consequence.

Real-world attack scenarios: Where each wallet fails and succeeds

Consider a phishing attack involving a fake Lido staking interface. The attacker has deployed a contract that looks like Lido’s staking pool, accepts ETH deposits, and returns a token that appears to be stETH. However, the contract does not actually stake the ETH; it simply holds it and allows the attacker to withdraw. MetaMask will see that the user is calling a contract function and may not flag it as malicious if the contract is new and has no history in MetaMask’s threat database. Rabby will simulate the transaction, observe that sending ETH results in receiving a token from an unexpected address, and flag the token address mismatch. Additionally, Rabby’s risk system identifies recently deployed contracts that lack established on-chain history, which surfaces the newness of the attacker’s contract.

Another scenario involves a bridge exploit where the user is interacting with a legitimate bridge interface but an attacker has modified the destination chain parameter. The user intends to bridge 10 ETH from Ethereum to Arbitrum, but the modified transaction actually sets the destination chain to Polygon and the recipient address to an attacker-controlled wallet. MetaMask’s simulation may complete without explicit error because the transaction is technically valid—it will execute and move the funds—but the user will not see that the destination address has changed. Rabby’s simulation will show the funds leaving Ethereum, and if Rabby has data about the destination chain, it may flag an unusual recipient address or chain combination. Even if Rabby cannot identify the specific chain, the simulation result will show the net asset change, and the user can verify that the recipient address is correct.

A more subtle attack uses approval malleability: a contract that accepts an approval but includes hidden logic that changes the effective allowance based on transaction timing or other state. When a user approves spending 1,000 units, the contract’s `approve` function internally sets the allowance to 10,000 units. MetaMask checks the allowance amount shown in the transaction constructor and might not detect the discrepancy if the contract’s approval function is not widely recognized. Rabby’s simulation will execute the approval and show the final allowance value stored in the contract, directly revealing the mismatch between the requested amount and the actual stored value.

Both wallets can fail against certain attack patterns. If a contract redirects funds to the attacker through a separate call within the transaction, and both the user’s intended transfer and the attacker’s theft occur within a single transaction, both wallets will see the transaction complete—but Rabby will show the net balance change more clearly in its summary. If a user is simply using the wrong address due to their own mistake (entering 0x000…001 instead of 0x000…002), neither wallet will prevent the error, though Rabby’s address risk system may flag unrecognized addresses while MetaMask typically will not. The key difference is that Rabby is more aggressive about highlighting suspicious patterns, while MetaMask is more conservative and relies on known threat intelligence.

Hardware wallet integration and secure signing flow

Both Rabby and MetaMask support hardware wallets including Ledger, Trezor, and others. The difference lies in how transaction information is presented before hardware signing. Rabby will display the simulation result and risk assessment on the screen before asking the user to confirm with their hardware device. This means the user sees the interpreted transaction (tokens to be sent, addresses, amounts) on their computer, then confirms the raw transaction on the hardware device. MetaMask follows a similar pattern but may not surface the simulation result as prominently in the hardware signing flow.

For a MetaMask import of an existing wallet into Rabby, the wallet recovery phrase or private key is imported identically, and the underlying accounts remain the same. The hardware wallet integration continues to work because both wallets use standard derivation paths. However, the security checks experienced differ: a user who previously used only MetaMask and then switches to Rabby will immediately encounter more detailed transaction previews and risk alerts, which can feel unfamiliar. Some users interpret the additional warnings as Rabby being overly cautious; others find it reassuring.

For users whose primary concern is hardware wallet security, both wallets handle the signing device correctly. The real difference is in the quality of information provided before the signing occurs. Rabby’s pre-signing clarity means a user can make an informed decision at the computer level before committing to the hardware device. If the user decides not to sign after reviewing Rabby’s simulation, they never need to touch the hardware device at all. MetaMask does not prevent the workflow, but it may provide less detail beforehand.

Network selection and chain-specific simulation accuracy

Rabby’s automatic network selection means the wallet identifies which EVM chain a transaction is intended for and switches the simulation environment accordingly. This is important because the same contract address can have completely different bytecode on Ethereum, Polygon, Arbitrum, and other chains. An attacker might deploy a malicious contract at an address that looks like a legitimate contract address from a different chain, exploiting users who are not paying attention to which network they are on. Rabby’s simulation runs on the correct chain, so it will show the true execution result.

MetaMask also supports multiple EVM chains, but the automatic network detection is less aggressive. If a user is on the wrong network and approves a transaction, MetaMask may show a warning but might not prevent the approval. Rabby includes a more prominent chain mismatch alert and will ask the user to confirm the network explicitly if there is any ambiguity. This is a minor difference for a careful user but can prevent mistakes for a user who is working quickly across multiple networks.

Simulation accuracy also depends on whether the wallet has up-to-date state from the chain. Both Rabby and MetaMask use RPC providers (Infura, Alchemy, or others) to fetch blockchain state and run simulations. If the RPC provider’s state is slightly stale or corrupted, the simulation result may not match the actual transaction result once broadcast. This is a risk that both wallets face equally, and there is no easy mitigation beyond using a reliable RPC provider. However, Rabby allows users to specify custom RPC endpoints, giving more advanced users control over which provider is used for simulation.

Watch-only modes and secondary wallet security

Both Rabby and MetaMask support watch-only wallets, which display balances and transaction history without holding the private key. This is useful for monitoring accounts controlled by multisigs, hardware wallets in different physical locations, or simply accounts whose private keys are stored elsewhere. The simulation feature works with watch-only wallets because simulation does not require signing; it only requires the account address to determine which balances will change.

Rabby’s watch-only mode is particularly useful for users who import multiple MetaMask accounts and want to monitor some without holding the signing key. A user can create a Rabby wallet, keep the signing key offline, and then import the wallet address in watch-only mode on a separate Rabby instance on their daily-use computer. When they need to sign a transaction, they transport the approved transaction to an offline device for signing. Rabby supports this workflow better than MetaMask because the wallet explicitly separates the signing context from the viewing context.

One security consideration: a watch-only wallet can be imported from a public address alone, so there is no need to expose any private key. However, the wallet itself must be kept secure. If a user’s browser or device is compromised, the attacker cannot steal funds from a watch-only wallet directly, but they could modify addresses in the wallet to redirect incoming transactions or alter transaction previews to trick the user into signing malicious transactions. Both Rabby and MetaMask depend on device security at this point, though Rabby’s more detailed previews reduce the chance that a display hijack goes unnoticed.

The practical choice: When to use Rabby over MetaMask and vice versa

The strongest case for Rabby is when a user is actively trading, using unfamiliar protocols, or moving significant value. The detailed transaction simulation, risk alerts, and pre-signing inspection reduce the surface for accidental or sophisticated scams. If a user is importing an existing wallet from MetaMask, Rabby can enhance security without changing the underlying accounts. To download Rabby safely, visit the official Rabby website and verify that the browser extension is installed from the correct source before importing any wallets.

MetaMask remains advantageous for users who prioritize ecosystem integration and compatibility. Many dapps still launch with MetaMask as the default or preferred wallet. If a user has been using MetaMask for years and is comfortable with its interface, switching to Rabby introduces learning curve costs. MetaMask’s simulation is improving, and for well-known protocols, it provides adequate protection. For casual users who interact primarily with Uniswap, Aave, and OpenSea, the difference in detection depth may not matter in practice.

A mixed strategy is also viable: keeping both wallets installed, using Rabby for high-risk or unfamiliar transactions, and using MetaMask for routine interaction with known protocols. This approach distributes the risk of a wallet compromise across two different codebases and allows the user to benefit from Rabby’s more thorough simulation without abandoning MetaMask’s dapp compatibility. The real security depends not on the wallet brand but on the user’s habits: verifying addresses, inspecting simulations before signing, and treating recovery phrases as the most sensitive secret in the system.

Frequently asked questions

Can Rabby import a MetaMask wallet, and will it work with the same addresses?

Yes. Rabby can import a MetaMask recovery phrase or private key, and the imported accounts will have the same addresses as in MetaMask. Both wallets use standard BIP39 derivation paths for Ethereum and EVM chains. The underlying accounts are identical; the difference is that Rabby provides more detailed transaction simulation and risk checking when you use the imported accounts.

Does Rabby’s transaction simulation prevent all scams?

No. Transaction simulation shows what will happen if you sign a transaction, but it does not protect against user error, such as entering the wrong recipient address or approving an excessively high spend allowance intentionally. Simulation also cannot prevent attacks that occur outside the specific transaction, such as phishing through a fake website or private key exposure. It is one security layer, not a complete guarantee.

Which wallet is better for someone new to DeFi?

Rabby is likely a better choice for new users because its detailed transaction previews and risk alerts provide more education about what each transaction actually does. MetaMask may feel simpler initially, but Rabby’s warnings help users understand the risks of unfamiliar contracts and approval amounts. Both wallets support the same networks and assets; the difference is visibility and security checking depth.

Comments are closed.