Troubleshooting

Find solutions for common issues, organized by category. Use the search to filter by keyword.

Causes

MetaMask not installed; wallet locked; unsupported browser; multiple wallet extensions conflicting.

Solutions

Install MetaMask; unlock your wallet; use Chrome, Firefox, or Brave; disable conflicting wallet extensions.

Causes

Your wallet is connected to a different chain than the app expects.

Solutions

Switch the network in MetaMask, or use the chain selector in the app header.

Causes

Groth16 prover failed to load (snarkjs); IndexedDB blocked; proof artifact download failed; slow or interrupted internet connection.

Solutions

Refresh the page. Ensure your browser supports WebAssembly. Disable private browsing mode. Check your internet connection. Try a different browser.

Causes

IndexedDB is unavailable in private browsing on Safari and some Firefox configurations. The RAILGUN engine requires IndexedDB for its merkle tree database and proof artifacts.

Solutions

Use normal (non-private) browsing mode. RAILGUN requires persistent browser storage to function.

Causes

WebAssembly memory limits on mobile; proof generation is CPU-intensive and may exceed available resources.

Solutions

Use a desktop browser for best performance. If using mobile, keep the tab in the foreground during proof generation.

Causes

You clicked "Reject" in MetaMask, or the MetaMask popup was closed before signing.

Solutions

Try again and click "Sign" when MetaMask prompts. The signature is a message signature — it costs no gas and sends no transaction.

Causes

The RAILGUN engine is still initializing, or initialization failed silently.

Solutions

Wait for the "Privacy engine initializing..." message to complete. If it never completes, refresh the page.

Causes

Wallet sync hasn't started yet, or sync is still in progress.

Solutions

Check the sync indicator in the bottom-right corner. Wait for the sync to reach 100% before sending.

Causes

The derived private key is held in memory and not persisted to disk. Each new session requires a fresh signature. This is an intentional security measure.

Solutions

This is expected behavior. Sign in again — your shielded tokens are safe on-chain and will reappear after sync.

Causes

QuickSync endpoint unreachable; RPC provider is down; engine initialization failed before sync started.

Solutions

Check your internet connection. Refresh the page to re-initialize the engine. Try a different network if available.

Causes

First-time sync must process the entire merkle tree history. Mainnet has significantly more history than testnets.

Solutions

This is expected for first sync — it can take several minutes on mainnet. Subsequent syncs only process new blocks and are much faster. Keep the tab open and active.

Causes

The POI node is configured with different list keys than the Wallet SDK expects. This is a backend configuration mismatch.

Solutions

Try refreshing. If persistent, this is a POI node configuration issue that requires updating the node to support the SDK's expected list key.

Causes

The configured POI node is not compatible with the current chain's TXID sync source.

Solutions

Try refreshing. Switch to a different supported chain if available. This is a node compatibility issue.

Causes

Transient merkletree data inconsistency, usually self-resolving.

Solutions

Try scanning again — the app auto-repairs on retry. If persistent, do a hard refresh (Ctrl+Shift+R) to restart the engine from scratch.

Causes

The initial sync on mainnet or Arbitrum exceeded the timeout (2-5 minutes depending on chain).

Solutions

Try scanning again. Progress is saved between attempts — each retry catches up from where the last scan stopped, so it gets faster.

Causes

You haven't shielded tokens yet on this chain; you shielded on a different chain; PPOI is still clearing (balance is in "pending" state, not "spendable").

Solutions

Verify you shielded tokens on this specific chain. Check if there's a "pending" balance — that means PPOI hasn't cleared yet. Wait for PPOI clearance.

Causes

Not enough tokens for the shield amount, or not enough ETH for gas. Shielding can involve up to 3 transactions (wrap + approve + shield), each requiring gas.

Solutions

Reduce the amount. Ensure you have enough ETH to cover gas fees for all transactions.

Causes

You rejected the approval transaction in your wallet; gas was too low; the contract interaction reverted.

Solutions

Try again and confirm the approval in your wallet. Ensure you have sufficient ETH for gas.

Causes

Wrapped token not configured for this chain; insufficient balance to cover both the wrap amount and gas; transaction reverted.

Solutions

Ensure you're on a supported chain. Check that your ETH balance covers both the wrap amount and the gas fee.

Causes

Token approval didn't go through (insufficient allowance); contract error; gas estimation failed.

Solutions

Verify the approval transaction confirmed before the shield. Try again. If gas estimation failed, your wallet may prompt you to set gas manually.

Causes

The RPC provider failed to load for this chain during engine initialization.

Solutions

Refresh the page. Check your internet connection. The provider loads during engine initialization.

Causes

The shared symmetric key for shield encryption couldn't be generated.

Solutions

Sign out and sign in again to re-derive your wallet. If the issue persists, clear your browser data for this site and start fresh.

Causes

PPOI clearance hasn't started yet, or the shielded balance scan hasn't picked up the new deposit.

Solutions

The app scans automatically after shielding. Your balance will appear as "pending" first, then transition to "spendable" after PPOI clearance.

Causes

Mainnet clearance can take up to 60+ minutes. Network congestion or POI node backlog can extend this.

Solutions

This is normal for mainnet. The progress bar shows an estimate. Your tokens are safe in the shielded pool throughout the wait.

Causes

The POI node is down or unreachable, or POI processing failed for this specific deposit.

Solutions

Wait at least the full estimated time (5 min testnet, 60 min mainnet). If still pending after 2x the estimate, the POI node may be experiencing issues. Your tokens remain safe and will become spendable when the node recovers.

Causes

Nothing bad. The pipeline state is saved to your browser's localStorage.

Solutions

Reopen the page. After signing in and waiting for sync to complete, a resume banner will appear. Click "Resume" to continue from where you left off.

Causes

The saved pipeline state expired (mainnet: 24 hours, testnet: 2 hours); you're using a different browser or device; localStorage was cleared.

Solutions

If expired, your tokens are still safe in the shielded pool. Go to /wallet to manage your shielded tokens manually.

Causes

You clicked "Dismiss" on the resume notification.

Solutions

Dismissing does NOT affect your shielded tokens — they remain in the private pool. Go to /wallet to view your shielded balance and unshield manually.

Causes

Your device is slow; the browser tab was backgrounded (browsers throttle background tabs); memory pressure from other tabs.

Solutions

Keep the tab in the foreground and active. Close other heavy tabs. Proof generation is CPU-intensive — it takes 20-30 seconds on modern hardware, longer on older devices.

Causes

Available memory was exceeded; proof artifacts in IndexedDB are corrupted; a browser extension is interfering with WebAssembly execution.

Solutions

Refresh and try again. If the issue persists, clear the site's IndexedDB storage (this forces re-download of proof artifacts). Disable browser extensions that might intercept WebAssembly or network calls.

Causes

Proof generation ran out of memory. This is more common on mobile devices or systems with limited RAM.

Solutions

Use a device with more RAM. Close other tabs and applications to free memory. On mobile, proof generation may exceed available resources — a desktop browser is recommended.

Causes

No broadcasters are currently online for this chain/token combination; Waku network connectivity issue; the broadcaster client couldn't start.

Solutions

Toggle to "Direct send" mode as a fallback (your address will be visible on the unshield). Alternatively, try again in a few minutes — broadcasters come and go. Check that your network or VPN isn't blocking WebSocket connections.

Causes

Waku peer discovery failed; a firewall is blocking the Waku protocol; all discovered broadcasters reported as unavailable.

Solutions

The app auto-reconnects — it monitors peer health every 15 seconds and restarts after 3 consecutive failures. Wait 30-60 seconds and retry. Switch to direct mode if the transaction is urgent.

Causes

Each broadcaster sets their own fee based on gas costs plus a margin. The app selects from available broadcasters.

Solutions

Fees vary by broadcaster. Try again to potentially be matched with a different broadcaster offering lower fees. Direct mode has no broadcaster fee but uses your own gas.

Causes

The unshield delivered WETH (wrapped ETH) to the recipient, but the automatic unwrap to native ETH failed.

Solutions

Your funds are not lost. You have WETH in the recipient's public wallet. It can be unwrapped to ETH manually on any DEX or wrapper interface.

Causes

Gas price was too low for current network conditions; the network is congested.

Solutions

Wait — the app polls for the receipt with exponential backoff. If stuck for more than 10 minutes, the transaction may need to be sped up in MetaMask (increase gas price on the pending transaction).

Causes

A typo or incorrect address was entered in the recipient field.

Solutions

Blockchain transactions are irreversible. Always double-check the recipient address before sending. The app validates address format (0x + 40 hex characters) but cannot verify the intended recipient.

Causes

The token is not in the default token registry for this chain, or it's a very new or custom token.

Solutions

The token list is loaded from on-chain registry data. If your token doesn't appear, it may not yet be supported on this chain's RAILGUN deployment.

Causes

Wallet not connected; wrong chain selected; balance fetch failed; tokens are in the shielded pool (not public balance).

Solutions

Connect your wallet. Verify you're on the correct chain. Check both "public" and "shielded" balances — tokens in the pool won't show as public. Trigger a manual refresh.

Causes

Tokens in the shielded pool don't appear as public wallet balance because they're held by the RAILGUN contract.

Solutions

Public balance = tokens in your 0x wallet. Shielded balance = tokens in the RAILGUN pool controlled by your private key. Shielded "pending" = waiting for PPOI clearance. Shielded "spendable" = ready to use for private transactions.

Causes

PPOI clearance hasn't completed yet, or there's a POI node issue.

Solutions

See the PPOI Clearance section above. Pending tokens will transition to spendable after PPOI completes.

Causes

RAILGUN only works with ERC-20 tokens. Native ETH is automatically wrapped to WETH for shielding, and unwrapped back to ETH on unshield.

Solutions

This wrapping/unwrapping is handled automatically by the app. If the auto-unwrap fails on the recipient side, WETH can be manually unwrapped to ETH on any DEX.

Causes

The transaction is still pending; the recipient is checking the wrong chain; the recipient is checking the wrong address; block explorer indexing delay.

Solutions

Verify the unshield transaction hash on a block explorer. Confirm the recipient is checking the correct chain and wallet address. Block explorers may take 1-2 minutes to index new transactions.

Causes

The simplified send operation was interrupted; the resume banner was dismissed; PPOI is still clearing.

Solutions

Go to /wallet — the wallet interface lets you view shielded balances and manually trigger unshield transactions.

Causes

The simplified send flow was interrupted or dismissed before completing.

Solutions

Use the /wallet page: sign in, wait for sync to complete, select the shielded token, and use the unshield action.

Causes

No. Tokens are on-chain in the RAILGUN smart contract, not in your browser.

Solutions

Sign in again with the same wallet (same signature). Wait for sync to complete. Your shielded balances will reappear as the merkle tree is re-scanned.

Causes

The Waku P2P protocol or RPC endpoints are being blocked by your network configuration.

Solutions

Try without VPN. Ensure WebSocket connections are allowed. The broadcaster relies on the Waku network (which uses libp2p) — some corporate firewalls and VPNs block this.

Causes

Browser extensions are blocking WebAssembly execution, RPC calls, or Waku connections.

Solutions

Disable ad blockers and privacy extensions for this site. Whitelist the RPC and Waku domains. Consider using a dedicated browser profile with minimal extensions.