A user is about to approve a transaction on Uniswap. The interface shows the expected output, but before clicking “sign,” Rabby displays a preview: the exact tokens that will leave the wallet, the exact tokens that will arrive, and the net change to the balance. This preview arrives instantly, before any blockchain interaction occurs. It is not a guess based on pool reserves or a best-effort calculation. It is a transaction simulation—a dry-run execution that shows what the blockchain will do if the signature is valid and the transaction reaches the network in the current state.
Most wallets show a quote from the DEX interface itself. Rabby adds a layer that many users never notice: it simulates the entire transaction path on the blockchain and returns the real, final balance change. That distinction matters because quotes can become stale, slippage tolerances can be breached, contract logic can execute differently than expected, and malicious contracts can behave entirely differently from what a user intended. The preview is not infallible, but it is the most direct warning system available before the irreversible signature appears.
When you approve a token swap on Uniswap, Dydx, or any other EVM contract, you are submitting a series of instructions to the blockchain: transfer this token from your address, call this contract function, and await the result. A traditional wallet shows you a quote from the frontend—a prediction made by the DEX’s interface based on current pool reserves. That quote can change by the time the transaction is mined. Rabby takes a different approach: it uses the Ethereum JSON-RPC method eth_call, which executes the transaction in a simulated environment against the current blockchain state without actually committing any data.
The simulation happens against the latest block state, so it reflects the most current pool reserves, token balances, and contract behavior. Rabby runs this simulation before asking for your signature, and it displays the actual token movements that would occur: not “approximately” X tokens out, but the precise amount based on the exact reserve state at the moment of signing. For token swaps, this means you see the real output amount before you commit. For complex interactions involving multiple contracts, the simulation traces through each step and returns the net balance change across all token types.
The technical foundation is important because it explains both the value and the limits. The simulation executes against a snapshot of state at block N. If the transaction is not mined until block N+10, reserves may have changed. Slippage tolerance settings in the contract become the mechanism that guards against this lag. But Rabby’s preview still catches a large class of errors that no quote-based system can: it shows whether the contract will actually execute as intended, whether you have approved sufficient tokens, whether the path through liquidity pools actually exists, and whether a malicious contract tries to drain your wallet without producing the expected output.
This is why Rabby’s balance change preview is particularly valuable for less common operations. A standard token-to-token swap on Uniswap v3 is well-understood and unlikely to fail. But a complex yield farming deposit that interacts with multiple protocols, a cross-protocol arbitrage, or an interaction with a newer or less liquid contract carries higher execution risk. The simulation runs through the actual code path and returns the actual result, not a frontend prediction.
A DEX quote shows you the expected output from the liquidity pool, assuming execution at a certain price point. Slippage tolerance (often 0.5% to 3%) allows the actual output to vary within a band. Many users accept the quote and sign without understanding what happens if that band is breached or if unexpected behavior occurs. Rabby’s preview removes this invisibility because it simulates the full transaction and shows the actual result, not a quote with a tolerance band.
Consider a token swap during volatile market conditions. The quote might say “you will receive approximately 1.5 ETH, with slippage tolerance of 2%.” The actual execution might fall within that range, producing 1.47 ETH, and the transaction succeeds silently. But if the token is less liquid or if the pool has been heavily used, the actual output could dip below the minimum, and the transaction reverts—meaning you paid gas fees for nothing and your input tokens remain unswapped. Rabby’s simulation shows you the real output amount at the moment of signing, and it shows whether the slippage band would be breached.
More critically, the preview catches contract vulnerabilities and malicious behavior that quotes cannot detect. If a contract contains a backdoor that drains token approvals, a quote-based system shows only the expected swap output. A simulation catches the drain because it executes the contract code and observes all balance movements. A token contract that implements a transfer tax—removing 5% of every transfer to a treasury or burn address—appears in the simulation as an actual output reduction, not as a surprise deduction after the transaction is signed.
This matters for NFT operations and less standardized interactions. An NFT marketplace might ask for approval of an entire collection, then execute a purchase that also transfers a hidden commission to an affiliate address. A quote-based system shows “send NFT A, receive Y tokens.” The simulation shows “send NFT A, receive Y tokens, transfer 0.1% of Y to affiliate address”—the complete picture of what actually happens to your assets. Rabby’s preview is therefore a defense against silent drains because it forces the contract to execute its actual logic and report the result before you sign.
Rabby is designed for Ethereum and EVM-compatible networks—Polygon, Arbitrum, Optimism, Base, Gnosis Chain, and dozens of others. The EVM (Ethereum Virtual Machine) is deterministic, meaning that if you run the same code against the same state twice, you get the same result. This is what makes transaction simulation possible: Rabby can execute your transaction in a read-only environment and know for certain that it will produce the same outcome on-chain, assuming state does not change between the simulation and the actual mining.
This is one of the reasons why wallet security on EVM chains has evolved differently than on non-EVM systems. A Bitcoin or Monero transaction is much simpler: you move coins from input addresses to output addresses, and the math is straightforward. Smart contract interactions are far more complex. A single transaction can trigger dozens of contract calls, conditional logic, state changes, and external calls. The only way to know what will actually happen is to execute it. Simulation fills that gap.
The simulability of the EVM is also why Rabby can offer automatic network detection and pre-sign security checking. When you attempt to approve a transaction, Rabby’s extension can detect which network the transaction targets, fetch the correct RPC endpoint, and simulate the transaction against that network’s state. If you have accidentally connected to the wrong network, the simulation often makes the error apparent because the contract address will not match any known protocol, or the token balance will show as zero, or the simulation will fail outright.
This also explains why the value of simulation becomes more apparent as you use less common protocols or interact with smaller projects. On Uniswap, a quote is usually reliable because the contract logic is battle-tested and the liquidity is deep. On a newer AMM, a beta protocol, or a specialized contract, the simulation becomes a safety net. It tells you not just what the protocol promised, but what the code will actually do. For users downloading rabby wallet crypto nft wallet extensions from legitimate sources and using self-custodial management, this simulation layer represents one of the strongest real-time defenses available.
Transaction simulation is powerful, but it is not a guarantee. The most important limitation is time lag. Rabby simulates your transaction against the blockchain state at the moment you review it. If you wait five minutes before signing, or if the network is congested and your transaction sits in the mempool for thirty seconds, the state will have changed. Reserves in liquidity pools will have shifted. Other transactions will have modified contract state. Your simulation preview remains accurate to what would happen if the transaction executed immediately at the simulated state, but the real state when miners include your transaction may be different.
This is why slippage tolerance exists. It is the user’s way of saying, “I accept that the output might be X percent worse than the simulation because of legitimate state changes.” If the actual output falls within the tolerance, the transaction succeeds. If state changes are extreme—if a large trade happens before yours—the slippage might be breached and the transaction reverts. The simulation does not prevent this; it only shows you the expected outcome at the time of signing.
Sandwich attacks present a second limitation. A malicious MEV (Maximal Extractable Value) bot or searcher could observe your pending transaction in the mempool and execute trades before it to change the pool state. This is a network-level problem, not a wallet problem. Rabby’s simulation cannot see into the future. It can show you that your transaction will fail if slippage is too large, but it cannot prevent another transaction from executing first and changing state. Solutions like private mempools or MEV protection require network-level support that the wallet cannot provide alone.
The simulation also depends on the accuracy and availability of the RPC endpoint being used. If the endpoint is out of sync, returns incorrect state, or is unreliable, the simulation results may not match the actual on-chain execution. Rabby allows users to configure custom RPC endpoints and automatically selects from reputable public endpoints, but the choice of endpoint remains a trust assumption. A malicious or faulty endpoint could report simulated results that differ from what the mainnet actually executes.
For this reason, the preview is best understood as a local safety check, not as a complete insurance policy. It catches errors, obvious vulnerabilities, and gross mismatches between what you intended and what the contract will do. It does not protect against all forms of MEV exploitation, extreme slippage from network congestion, or endpoint misbehavior. But it provides more information than any quote-based system, and it makes silent drains significantly harder.
When Rabby displays the transaction preview, it shows the before and after balance for each asset affected. A simple swap shows: “Send 1 ETH, Receive 1,500 USDC.” A more complex interaction might show: “Send 1,000 DAI, Receive 0.4 ETH, Pay 0.002 ETH in fees.” This is the actual expected change, not a quote or estimate. Some transactions affect more assets than are obvious from the contract function name alone, which is why the full list matters.
Rabby also applies risk classification to transactions and displays alerts when certain patterns are detected. If a transaction would drain your entire token allowance, the wallet warns you. If a token has known vulnerabilities or if the contract is not verified on Etherscan, the alert level increases. If a contract is flagged in security databases as having been exploited before, Rabby may display a red warning. These alerts are not failsafe—they depend on the accuracy of the databases and on regular updates—but they catch many common attack vectors.
The most useful alert is probably the one that triggers when the balance change is dramatically worse than expected. If you sign a swap expecting to receive 1,000 tokens but the simulation shows you will receive 50 tokens, Rabby displays a mismatch. This catches cases where a contract has been modified, where slippage is truly catastrophic, or where the contract’s behavior has changed since you initiated the transaction. The alert will not stop you from signing—only you can do that—but it forces you to actively notice the discrepancy.
These alerts also highlight why the simulation layer matters more than the extension’s other features. Automatic network detection is convenient, but selecting the wrong network is an obvious mistake that users catch. A contract that silently drains your approval or transfers more tokens than you authorized is invisible until you execute it. The balance change preview and risk alerts make the invisible visible.
Some hardware wallets display transaction details on their own secure screens, but the information shown is limited by the screen size and processing power. A hardware wallet can show you the recipient address and the amount sent, but it cannot simulate complex contract interactions to show you the full balance change. MetaMask and other software wallets typically show the contract address and the function being called, but they do not simulate execution to reveal the actual token movements.
Hardware wallet makers have added security by requiring explicit confirmation on the device itself, which prevents a compromised browser from broadcasting a transaction without your physical approval. Rabby adds a different layer: it simulates the transaction locally within the extension and displays the complete expected outcome before any signature is requested. The two approaches are complementary. Using Rabby with a hardware wallet gives you the simulation preview on screen, plus the requirement to confirm the transaction on the device itself.
Code audits and protocol reputation provide another form of safety, but they are slower and cannot catch new vulnerabilities. An audited smart contract can still be compromised through a governance attack or an unexpected interaction with another protocol. A simulation catches the actual behavior at the moment of transaction, regardless of audit history. This is why Rabby’s approach scales better for new and less-well-known contracts. On established protocols, the simulation often confirms what you already expect. On new protocols, the simulation is your primary source of truth about what will actually happen.
Watch-only accounts and test transactions offer a lower-risk way to verify that a new contract behaves as expected before committing real funds. Rabby supports watch-only functionality, which allows you to preview transactions using an address you do not control the keys for. This can be useful for testing a transaction flow before executing it with your real wallet. But simulation in the context of an actual transaction you intend to sign is faster and more reliable because it shows the exact state and the exact path your funds will take.
The first practice is to never sign a transaction without reviewing the balance change preview. This is not about paranoia; it is about using the information available. If the preview shows an outcome you did not expect, stop. Do not sign and hope for the best. The preview is designed to catch mismatches before they become irreversible.
The second is to understand that the preview is accurate to the current moment only. If you take a long time reviewing the preview, or if the network is congested and your transaction sits in the mempool, the actual result may differ slightly. This is normal and expected. Set a realistic slippage tolerance that accounts for network conditions. During high-volume market events, a 1% slippage tolerance might be too aggressive. A 3% to 5% tolerance is more conservative but more likely to execute.
The third is to use the preview to catch errors in your inputs. If you intended to swap ETH for USDC but the preview shows you sending USDT instead, the preview caught an address confusion error. If you meant to deposit into a yield protocol but the preview shows the tokens going to an unfamiliar address, the preview caught a potential scam. Treat unexpected balance changes as a reason to investigate, not as a glitch to ignore.
The fourth is to combine simulation with other safeguards. Verify that the contract address in the transaction matches the official address for the protocol. Check that you are on the correct blockchain. If using a hardware wallet, confirm the transaction on the device as well. Rabby’s simulation is one layer of defense; it is most effective as part of a layered approach that includes careful address verification, correct network selection, and hardware confirmation when appropriate.
The fifth is to recognize that simulation works best for transactions you understand. If a transaction is so complex that you cannot predict what it should do, a simulation preview is less useful because you have nothing to compare it against. In those cases, you might start with a test transaction using a very small amount, or you might reach out to the protocol’s community to understand the expected outcome. The preview shows you what the code will do, but it cannot replace understanding what you intended.
Transaction simulation via eth_call is now standard across most modern Ethereum wallets, but the quality of implementation and the depth of the preview vary significantly. Rabby emphasizes this feature prominently because it addresses a real security gap: most users do not understand what a contract will do until after they have signed. Making the outcome visible before signing is a design decision that prioritizes security over speed.
As the ecosystem grows more complex—with layer 2s, cross-chain bridges, and protocol interactions spanning multiple blockchains—the value of local simulation becomes even more apparent. A transaction that touches multiple chains cannot be simulated in a single call, but simulation on each chain individually can catch most errors. Future developments might include multi-chain simulation, more sophisticated slippage analysis, or integration with MEV-aware routing that shows you the likelihood that your transaction will be sandwiched.
The most important trend is that security wallets are moving from showing you a quote and a signature request to showing you the actual execution outcome. This is a fundamental shift from “trust this prediction” to “here is what will happen.” Rabby leads in this direction, and the pattern is becoming expected by users who understand the value. For anyone managing tokens across multiple protocols, the preview becomes not a nice feature but a necessary one.
The preview shows you the actual balance change that the contract will produce, which catches gross mismatches between what you intended and what the contract will do. It does not prevent slippage from market movement or MEV sandwich attacks that occur after you sign but before the transaction is mined. It does prevent silent drains, approve exploits, and contracts that transfer more than expected. Review the balance change carefully before signing; if the output is dramatically worse than you expected, stop and investigate.
Rabby simulates the transaction against the actual current blockchain state, while the DEX quote is a prediction based on pool reserves at the moment the quote was generated. If several seconds or minutes have passed, or if other traders have executed transactions in between, the reserves will have changed. The simulation is more accurate because it runs against current state, but the actual mined result may still differ slightly due to slippage. Set an appropriate slippage tolerance to account for this.
Transaction simulation works on all EVM-compatible chains—Ethereum, Polygon, Arbitrum, Optimism, Base, and others. It will simulate any transaction, but the accuracy of the preview depends on the RPC endpoint’s state and the contract’s behavior. A contract that relies on external data feeds or that has unpredictable logic might produce a preview that does not exactly match the final result, but this is rare. For standard swaps and well-tested protocols, the preview is highly reliable.