A user opens their browser, connects to a decentralized exchange, and reviews a token swap through their Rabby wallet extension. The transaction preview shows a yellow warning—moderate risk detected. They wait fifteen seconds while the mempool queue grows. The same transaction is now green. Two minutes later, in peak Ethereum network congestion, the alert turns red. They close the tab and return an hour later when conditions stabilize, and the alert is yellow again. The question is not whether the wallet is malfunctioning, but why a transaction’s risk status can change without the user altering its parameters.
That behavior reflects how modern self-custody wallets recalculate transaction safety in real time. The Rabby wallet extension performs transaction simulation and produces risk alerts that are not static labels—they are snapshots of network conditions, contract state, and fee dynamics at the moment of evaluation. When the Ethereum mempool enters periods of congestion, the factors that determine whether a transaction is safe to sign shift beneath the interface. Understanding why requires examining how risk scoring works, what triggers recalculation, and how a user should respond when alerts change color before they press approve.

How transaction simulation creates risk alerts
The Rabby wallet extension does not simply display a transaction and ask the user to trust their instincts. Instead, it executes a simulation—a read-only copy of the transaction against the current blockchain state—to determine what will actually happen if the transaction is signed and broadcast. This simulation checks whether smart contracts will execute as expected, whether token approvals are excessive, whether the user might lose funds through slippage or price manipulation, and whether the transaction could trigger unexpected behaviors such as reentrancy attacks or contract exploits.
The simulation produces a risk score based on several inputs. First, it evaluates the contract being called: is it a known contract with a strong security history, or is it a newly deployed contract with minimal audit history? Second, it checks token interactions: are tokens being sent to unexpected addresses, or are approvals being granted for unusually large amounts? Third, it models the transaction outcome: if the user is swapping tokens, will they receive an amount close to the market rate, or does the transaction imply extreme slippage that might indicate a rug pull or front-running attack? Fourth, it assesses gas parameters: are fees reasonable for the current network state, or does the transaction require gas prices that exceed historical norms by a dangerous margin?
Each of these factors is dynamic. A contract that was safe yesterday remains safe, but a contract created ten minutes ago has less historical validation. A token approval for 100 USDC has different risk characteristics than an approval for the maximum possible integer value. A swap quote is valid only for a specific moment in time—if the market moves between quote generation and signing, the same transaction might now produce worse output or better output depending on price direction.
The color coding that appears in the Rabby wallet extension—green for low risk, yellow for moderate risk, red for high risk—represents this real-time evaluation. It is not a permanent badge. It is a conditional assessment that changes when the underlying data changes. That distinction is crucial because users often interpret wallet warnings as fixed attributes rather than measurements of a dynamic system.
Why mempool congestion triggers recalculation
Ethereum’s mempool is the waiting area where transactions accumulate before they are included in a block. During periods of low network activity, transactions typically confirm within seconds, and the competition for blockspace is minimal. During congestion—such as during popular token launches, high-value liquidations, or network stress—the mempool can contain hundreds of thousands of pending transactions, and users must offer higher fees to be prioritized.
This congestion directly affects risk scoring because it changes the probability that a transaction will confirm as simulated. Suppose a user is executing a complex arbitrage that depends on executing three transactions in rapid sequence: first, flash loan a large amount of tokens; second, perform a profitable swap across exchanges; third, repay the loan with the profit. If the mempool is empty, all three can execute within the same block, and the simulation shows green because the risk of front-running or price movement between steps is minimal.
Now imagine the network reaches congestion. The first transaction might confirm in block 18,500,000, but by the time the second transaction is processed, it is block 18,500,050, and the market price has moved against the user. The arbitrage that was profitable in the simulation is now a loss. Or, a different user broadcasts a competing transaction to the same liquidity pool, and the swap output degrades. The simulation’s green assessment was correct for the state at the time of evaluation—it is no longer correct for the expected state at confirmation time.
The Rabby wallet extension addresses this by re-simulating transactions or updating risk scores as the mempool state changes. Block times, pending transaction count, and gas price estimates are continuously monitored. If gas prices spike, the wallet recalculates whether the fee is still reasonable. If the mempool backlog grows, the wallet recalculates the probability that a time-dependent transaction will execute safely. If a user is quoting a swap rate, and that quote is older than a threshold (often a few seconds), the rate is considered stale and the risk score may degrade to prompt the user to refresh.
This mechanism protects against a common failure mode: a user sees a green risk alert, waits during network congestion, and then approves an outdated transaction. By continuously recalculating, Rabby reduces the likelihood that the user will execute something materially different from what was displayed.
Gas fees, confirmation time, and fee market dynamics
The Gas Account feature in the Rabby wallet extension allows users to pay network fees from stablecoin balances (USDC or USDT) rather than maintaining a buffer of ETH in their wallet. This is a convenience improvement, but it also creates an additional layer of risk assessment. When a user chooses to pay gas from a stablecoin, the wallet must ensure that the stablecoin balance is sufficient, that the conversion from stablecoin to ETH is efficient, and that the total cost (transaction fee plus conversion slippage) is reasonable.
During mempool congestion, gas prices move upward. If a transaction was estimated at 50 gwei per unit of gas when the simulation ran, but congestion has pushed the market to 150 gwei by the time the user signs, the actual fee will be three times higher. For a simple transfer, this might be an acceptable inconvenience. For a complex interaction such as a liquidity pool deposit that requires multiple state changes, the higher fee might exceed the user’s prior approval or make the transaction economically irrational.
The wallet’s risk alert responds by changing color: green (fee is reasonable relative to transaction value) becomes yellow (fee has risen materially but transaction is still viable) becomes red (fee is now so high relative to transaction value or risk of failure that signing is not recommended). This progression is not arbitrary. It reflects changing risk-reward characteristics.
Consider a user depositing $500 into a liquidity pool. If the gas fee is $5, the 1% cost is acceptable. If congestion drives the fee to $50, the 10% cost is significant but might still be worthwhile if the user is committed to the deposit. If the fee reaches $150, the 30% cost exceeds typical slippage and impermanent loss expectations, and the Rabby wallet extension appropriately signals that proceeding is high-risk. The user can still sign if they choose, but the alert color has changed to reflect the new reality.
Transaction simulation limitations during rapid state changes
Transaction simulation is powerful, but it has a hard boundary: it simulates only the current state of the blockchain. If the user signs a transaction and it enters a queue of thousands of pending transactions, the blockchain state will change before the transaction confirms. Contracts may execute, tokens may be transferred, prices may move, and liquidity pools may be drained.
A simulation that appears safe at simulation time can become unsafe at confirmation time. This is not a defect in Rabby or any wallet; it is a fundamental property of blockchain systems. The simulation demonstrates “if this transaction executes now, in this state, what happens?” The answer can be different from “if this transaction executes in five minutes, in a different state, what happens?”
Developers at DeBank, who maintain the rabby wallet extension, have addressed this through partial mechanisms: checking transaction staleness, detecting when quotes have expired, and warning when slippage parameters are too loose. A very loose slippage tolerance means the transaction will execute at almost any price, which is dangerous; a very tight slippage tolerance means the transaction might fail if the price moves even slightly, which is inefficient. The wallet tries to surface these trade-offs to the user.
However, no simulation system can predict all of the contract behaviors or price movements that might occur during a multi-second delay. The risk alert is therefore most useful as a filtering mechanism: it catches obvious problems (approvals that are too high, new contracts with no history, extreme slippage) and alerts the user to re-evaluate before signing. It is not a guarantee that the transaction will succeed or that the outcome will match the simulation.
When risk alerts stay red despite no user action
A user might encounter a situation where they refresh the transaction quote multiple times, but the risk alert remains red. The underlying cause is typically one of the following: the network remains congested and gas fees stay elevated relative to transaction value; the token or contract being interacted with has a low trust score or security history; the transaction quote has expired and needs to be regenerated; or the simulated output indicates extreme slippage or price impact.
To troubleshoot, the user should first check whether the issue is transient congestion or a persistent problem. Open a block explorer such as Etherscan and review recent gas prices. If prices have returned to normal but the alert is still red, the issue is likely not congestion—it is something about the transaction itself. Second, verify that the transaction has not been pending for hours. If a prior version of the transaction was broadcast and is still stuck in the mempool, attempting to send a new version might create a race condition. Use the block explorer to check the wallet’s pending transactions and cancel stuck ones if necessary.
Third, check whether the contract address is correct. Phishing attacks often create fake versions of popular contracts. A red alert on a counterfeit contract is appropriate and should be treated as a serious warning. Use a contract verification tool such as OpenZeppelin’s smart contract audit database or Etherscan’s contract checker to confirm the contract is legitimate.
Fourth, if the transaction involves a swap or bridge, regenerate the quote. Old quotes accumulate slippage risk and become stale. Refreshing the quote will reset the simulation and may produce a green alert if market conditions have improved or gas prices have normalized.
Hardware wallet integration and risk alert consistency
The Rabby wallet extension supports hardware wallets including Ledger, Trezor, Keystone, OneKey, GridPlus, and BitBox02. When a transaction is simulated for a hardware wallet, the risk assessment is performed in Rabby, but the actual signing occurs on the hardware device. This separation is intentional: the hardware device signs only what it is told to sign, while Rabby evaluates context and risk.
However, this creates an asymmetry. Rabby might show a red alert because gas fees are high, but the Ledger or Trezor device will still allow the user to sign if they approve it on the device screen. The hardware wallet is not evaluating whether the fee is reasonable relative to the transaction value; it is verifying that the signature is valid. The user is therefore responsible for interpreting Rabby’s alert and making the final decision.
This design is appropriate because it preserves the user’s autonomy and the hardware wallet’s role as a signing device, not a policy enforcer. But it means that a red alert is a strong advisory, not a block. Users should respect red alerts and investigate before signing on the device. If the alert is red because congestion has temporarily spiked, waiting an hour and retrying is reasonable. If the alert is red because the contract has an unknown origin or the transaction would send all funds to an external address, signing despite the alert is typically a mistake.
Best practices for navigating alert color changes
First, refresh the transaction quote before signing if more than a few seconds have passed since the initial simulation. Market quotes expire, and slippage assumptions become stale. A refresh takes seconds and can prevent signing an outdated transaction.
Second, if an alert is yellow or red, understand why by hovering over or tapping the alert message in the Rabby wallet extension. The wallet provides specific reasons: “Gas price is 3x higher than 1-hour average,” “Token has low holder count,” “Slippage tolerance is above 5%,” or similar. These reasons help distinguish between transient congestion (which may resolve by waiting) and structural problems (which suggest reconsidering the transaction).
Third, check the mempool and recent gas prices before signing. If the network is experiencing a brief spike, waiting 15 to 30 minutes can often resolve the issue. If congestion is prolonged, the spike may be driven by a major event (token launch, liquidation cascade) and may not resolve quickly.
Fourth, for complex transactions such as arbitrage, flash loans, or transactions that depend on tight timing, ensure that the slippage tolerance and time limits are set appropriately. A 1% slippage tolerance is much safer than a 5% tolerance, but it also increases the probability of failure if prices move even slightly. The right setting depends on the transaction type and market conditions.
Fifth, always verify the destination address before signing. Risk alerts cannot catch phishing attacks where the user has pasted the wrong address. A small test transaction to an unfamiliar address is safer than moving a large amount immediately.
Frequently asked questions
Why does my Rabby wallet extension show a green alert, but then it turns yellow after I wait a few seconds?
The Rabby wallet extension recalculates risk alerts as network conditions change. If mempool congestion increases or gas prices spike, the transaction fee becomes less favorable relative to the transaction value, and the alert may shift from green to yellow. This does not mean the wallet is broken; it means the transaction has become riskier under the new network state. Refresh the quote to see updated parameters, or wait for congestion to ease if you prefer lower fees.
Can I ignore a red alert and sign the transaction anyway?
Yes, but you should first understand why the alert is red. Use the block explorer to check current gas prices and confirm whether the alert is due to temporary congestion or a structural problem with the transaction (unknown contract, excessive slippage, suspicious destination). Temporary congestion is less urgent than a contract with security concerns. For hardware wallet transactions, you must approve on the device itself; the Rabby wallet extension alert is advisory, not a block.
Why does the Rabby wallet extension charge 0.25% on swaps and bridges?
Rabby applies a 0.25% fee on swaps and bridges, with discounts available for stablecoin pairs and large trades. This fee supports development and maintenance of the wallet. The fee is transparent and displayed before you sign, so you can compare the total cost (swap rate, slippage, gas, and Rabby fee) against alternative routes before approving. This is significantly lower than most centralized exchange fees.
