QA: Keplr wallet not working on yieldomega.com (production) #219

Closed
opened 2026-05-19 10:44:54 +00:00 by PlasticDigits · 6 comments
PlasticDigits commented 2026-05-19 10:44:54 +00:00 (Migrated from gitlab.com)

Summary

A participant reported that Keplr does not work on https://yieldomega.com (connect and/or transact). This issue tracks manual QA and investigation on production (and local parity) before any connector change ships.

Related (may share root cause): #215 — Connect wallet does not fire for most of the available wallets

Current stack (for investigators)

  • RainbowKit + wagmi — frontend/src/wagmi-config.ts
  • Explicit modal wallets: Safe, Rainbow, Base Account, MetaMask, SafePal, WalletConnect (when VITE_WALLETCONNECT_PROJECT_ID is set)
  • No explicit @keplr-wallet/rainbow-connector / keplrWallet entry today
  • EIP-6963 multi-injected discovery is enabled (multiInjectedProviderDiscovery: true) — Keplr may only appear if its browser extension registers an EVM provider
  • Docs: docs/frontend/wallet-connection.md (#58 SafePal, #81 single-chain, #95 wrong-network gating)

Expected behavior

Users with Keplr (browser extension EVM enabled, or mobile via WalletConnect if supported) can:

  1. Open the connect modal and select / discover Keplr
  2. Complete connection on MegaETH mainnet (chainId matching production VITE_CHAIN_ID)
  3. See connected address in the header
  4. Complete at least one guarded write (e.g. view-gated panel on /timecurve/simple or /referrals register preflight) without silent failure

Actual behavior (reported)

Keplr does not work on yieldomega.com — exact failure mode TBD (not listed, connect click no-op, wrong network, signature rejected, etc.).

Repro information to collect from reporter

  • Browser + version (Chrome / Firefox / Brave / mobile WebView)
  • Keplr version + platform (extension vs mobile app)
  • Keplr EVM support enabled for the account used
  • Network shown in Keplr vs MegaETH expectation
  • Steps: header Connect vs in-page WalletConnectButton
  • Screenshot or screen recording of modal + console errors (redact seed phrases / keys)
  • Whether other wallets (MetaMask, SafePal, WC QR) work on the same device

Test plan (assignee)

A — Production https://yieldomega.com

# Scenario Pass criteria
A1 Keplr extension installed, EVM account Keplr appears in RainbowKit list or EIP-6963 injected list; connect succeeds
A2 After connect Header shows address; no perpetual “Wrong network” if wallet on MegaETH
A3 /timecurve/simple Buy panel loads wallet-gated reads; chain mismatch overlay matches #95 when on wrong chain
A4 Mobile Keplr If using WalletConnect path in modal, QR / deep link completes session
A5 Regression MetaMask + one WC wallet still connect (sanity vs #215)

B — Local parity (optional)

bash scripts/start-qa-local-full-stack.sh or documented stack with production-like VITE_CHAIN_ID / VITE_WALLETCONNECT_PROJECT_ID from deploy env.

C — If Keplr is missing from modal only

Evaluate official integration: @keplr-wallet/rainbow-connector — add keplrWallet to RainbowKit wallet group (same pattern as #58 SafePal). Do not close this issue on code merge alone — confirm production deploy.

Acceptance criteria

  • Root cause documented in a comment (connector gap vs EIP-6963 vs chain mismatch vs #215)
  • Repro steps + environment filled in above checklist
  • Either verified fix on yieldomega.com or won’t-fix / out of scope with participant-facing guidance (e.g. use MetaMask / WC)

Doc / invariant follow-ups (if product supports Keplr)

## Summary A participant reported that **Keplr does not work** on **https://yieldomega.com** (connect and/or transact). This issue tracks **manual QA and investigation** on production (and local parity) before any connector change ships. **Related (may share root cause):** [#215 — Connect wallet does not fire for most of the available wallets](https://gitlab.com/PlasticDigits/yieldomega/-/issues/215) ## Current stack (for investigators) - RainbowKit + wagmi — [`frontend/src/wagmi-config.ts`](../../frontend/src/wagmi-config.ts) - Explicit modal wallets: Safe, Rainbow, Base Account, MetaMask, SafePal, WalletConnect (when `VITE_WALLETCONNECT_PROJECT_ID` is set) - **No** explicit `@keplr-wallet/rainbow-connector` / `keplrWallet` entry today - EIP-6963 multi-injected discovery is enabled (`multiInjectedProviderDiscovery: true`) — Keplr may only appear if its browser extension registers an EVM provider - Docs: [`docs/frontend/wallet-connection.md`](../../docs/frontend/wallet-connection.md) ([#58](https://gitlab.com/PlasticDigits/yieldomega/-/issues/58) SafePal, [#81](https://gitlab.com/PlasticDigits/yieldomega/-/issues/81) single-chain, [#95](https://gitlab.com/PlasticDigits/yieldomega/-/issues/95) wrong-network gating) ## Expected behavior Users with **Keplr** (browser extension EVM enabled, or mobile via WalletConnect if supported) can: 1. Open the connect modal and select / discover Keplr 2. Complete connection on **MegaETH mainnet** (`chainId` matching production `VITE_CHAIN_ID`) 3. See connected address in the header 4. Complete at least one guarded write (e.g. view-gated panel on `/timecurve/simple` or `/referrals` register preflight) without silent failure ## Actual behavior (reported) Keplr **does not work** on yieldomega.com — exact failure mode TBD (not listed, connect click no-op, wrong network, signature rejected, etc.). ## Repro information to collect from reporter - [ ] Browser + version (Chrome / Firefox / Brave / mobile WebView) - [ ] Keplr version + platform (extension vs mobile app) - [ ] Keplr **EVM** support enabled for the account used - [ ] Network shown in Keplr vs MegaETH expectation - [ ] Steps: header **Connect** vs in-page **WalletConnectButton** - [ ] Screenshot or screen recording of modal + console errors (redact seed phrases / keys) - [ ] Whether other wallets (MetaMask, SafePal, WC QR) work on the same device ## Test plan (assignee) ### A — Production https://yieldomega.com | # | Scenario | Pass criteria | |---|----------|---------------| | A1 | Keplr extension installed, EVM account | Keplr appears in RainbowKit list **or** EIP-6963 injected list; connect succeeds | | A2 | After connect | Header shows address; no perpetual “Wrong network” if wallet on MegaETH | | A3 | `/timecurve/simple` | Buy panel loads wallet-gated reads; chain mismatch overlay matches [#95](https://gitlab.com/PlasticDigits/yieldomega/-/issues/95) when on wrong chain | | A4 | Mobile Keplr | If using WalletConnect path in modal, QR / deep link completes session | | A5 | Regression | MetaMask + one WC wallet still connect (sanity vs [#215](https://gitlab.com/PlasticDigits/yieldomega/-/issues/215)) | ### B — Local parity (optional) `bash scripts/start-qa-local-full-stack.sh` or documented stack with production-like `VITE_CHAIN_ID` / `VITE_WALLETCONNECT_PROJECT_ID` from deploy env. ### C — If Keplr is missing from modal only Evaluate official integration: [`@keplr-wallet/rainbow-connector`](https://www.npmjs.com/package/@keplr-wallet/rainbow-connector) — add `keplrWallet` to RainbowKit wallet group (same pattern as [#58](https://gitlab.com/PlasticDigits/yieldomega/-/issues/58) SafePal). **Do not close this issue on code merge alone** — confirm production deploy. ## Acceptance criteria - [ ] Root cause documented in a comment (connector gap vs EIP-6963 vs chain mismatch vs [#215](https://gitlab.com/PlasticDigits/yieldomega/-/issues/215)) - [ ] Repro steps + environment filled in above checklist - [ ] Either **verified fix on yieldomega.com** or **won’t-fix / out of scope** with participant-facing guidance (e.g. use MetaMask / WC) ## Doc / invariant follow-ups (if product supports Keplr) - Update [`docs/frontend/wallet-connection.md`](../../docs/frontend/wallet-connection.md) supported-wallet list - Add manual QA section in [`docs/testing/manual-qa-checklists.md`](../../docs/testing/manual-qa-checklists.md) (mirror [#58](https://gitlab.com/PlasticDigits/yieldomega/-/issues/58) checklist style)
Brouie commented 2026-05-20 00:44:17 +00:00 (Migrated from gitlab.com)

Walked A1-A5 on production. Desktop wallet 0x8Fe47aD07812aE322b2034d13E7d57af83DC0CeA. Keplr mobile app v2.1.165 build 319.

A1 — PASS. Keplr shows up in the RainbowKit modal under Installed via EIP-6963 discovery, no explicit @keplr-wallet/rainbow-connector needed.

A1 mid-flow — Keplr's own UI asks the user to pick which EVM chain to connect, then prompts Add MegaETH to Keplr because MegaETH isn't in Keplr's chain registry. The chain config Keplr offers to add points VITE_RPC_URL globalstake first (the dead fallback I flagged in #216). User has to approve adding the chain on first connect.

A2 — PASS. Header shows connected address, MEGAETH pill, no wrong-network banner.

A3 — PASS. /timecurve loaded with wallet-gated reads — charm preview, CL8Y balance, prize podiums.

A4 — FAIL. Loaded yieldomega.com inside Keplr mobile app's built-in browser, tapped Connect. The RainbowKit modal lists Rainbow / Base Account / MetaMask / SafePal / WalletConnect — Keplr is NOT in the modal even though we're browsing inside Keplr's own app. Keplr mobile dapp browser does not inject itself as an EIP-6963 provider.

Tried the WalletConnect path instead. The deep link keplrwallet://wcV2/wc?uri=... fails to open with net::ERR_UNKNOWN_URL_SCHEME. The keplrwallet:// scheme is not registered as a handler on this device, so the WC session never starts.

A5 — separate finding, filing a new issue. WalletConnect handshake hangs across multiple wallets (MetaMask mobile, Trust Wallet, Keplr mobile) — looks like WC is broken on production in general, not Keplr-specific. MetaMask desktop extension does connect eventually but takes ~2min to complete the handshake.

Console findings (desktop) — possibly relevant to the original report:
Multiple wallet extensions fight over window.ethereum at page load. Saw:

  • evmAsk.js: Cannot redefine property: ethereum
  • requestProvider.js: Cannot set property ethereum of # which has only a getter
  • MetaMask: encountered an error setting the global Ethereum provider, likely due to another Ethereum wallet extension also setting it
  • Backpack: was unable to override window.ethereum

EIP-6963 sidesteps this for wallets that register through it (which is how Keplr surfaces cleanly in the desktop modal). But wallets still try to grab window.ethereum for legacy paths, and only one wins. If the reporter has multiple wallets installed and MetaMask or Backpack won the race, Keplr's legacy injection path would break.

Summary:

  • Keplr desktop end-to-end works
  • Keplr mobile in-app browser does not discover itself in the RainbowKit modal
  • WalletConnect deep link to keplrwallet:// fails ERR_UNKNOWN_URL_SCHEME on mobile

Working theory on the reporter:

  • If desktop and multi-wallet installed → window.ethereum race
  • If mobile → the two failures above

Useful questions for the reporter:

  • Desktop or mobile?
  • If desktop, which other wallet extensions installed
  • If mobile, in-app browser or WC QR from another browser?
  • Browser console errors at time of failure (desktop)
Walked A1-A5 on production. Desktop wallet 0x8Fe47aD07812aE322b2034d13E7d57af83DC0CeA. Keplr mobile app v2.1.165 build 319. A1 — PASS. Keplr shows up in the RainbowKit modal under Installed via EIP-6963 discovery, no explicit @keplr-wallet/rainbow-connector needed. A1 mid-flow — Keplr's own UI asks the user to pick which EVM chain to connect, then prompts Add MegaETH to Keplr because MegaETH isn't in Keplr's chain registry. The chain config Keplr offers to add points VITE_RPC_URL globalstake first (the dead fallback I flagged in #216). User has to approve adding the chain on first connect. A2 — PASS. Header shows connected address, MEGAETH pill, no wrong-network banner. A3 — PASS. /timecurve loaded with wallet-gated reads — charm preview, CL8Y balance, prize podiums. A4 — FAIL. Loaded yieldomega.com inside Keplr mobile app's built-in browser, tapped Connect. The RainbowKit modal lists Rainbow / Base Account / MetaMask / SafePal / WalletConnect — Keplr is NOT in the modal even though we're browsing inside Keplr's own app. Keplr mobile dapp browser does not inject itself as an EIP-6963 provider. Tried the WalletConnect path instead. The deep link keplrwallet://wcV2/wc?uri=... fails to open with net::ERR_UNKNOWN_URL_SCHEME. The keplrwallet:// scheme is not registered as a handler on this device, so the WC session never starts. A5 — separate finding, filing a new issue. WalletConnect handshake hangs across multiple wallets (MetaMask mobile, Trust Wallet, Keplr mobile) — looks like WC is broken on production in general, not Keplr-specific. MetaMask desktop extension does connect eventually but takes ~2min to complete the handshake. Console findings (desktop) — possibly relevant to the original report: Multiple wallet extensions fight over window.ethereum at page load. Saw: - evmAsk.js: Cannot redefine property: ethereum - requestProvider.js: Cannot set property ethereum of #<Window> which has only a getter - MetaMask: encountered an error setting the global Ethereum provider, likely due to another Ethereum wallet extension also setting it - Backpack: was unable to override window.ethereum EIP-6963 sidesteps this for wallets that register through it (which is how Keplr surfaces cleanly in the desktop modal). But wallets still try to grab window.ethereum for legacy paths, and only one wins. If the reporter has multiple wallets installed and MetaMask or Backpack won the race, Keplr's legacy injection path would break. Summary: - Keplr desktop end-to-end works - Keplr mobile in-app browser does not discover itself in the RainbowKit modal - WalletConnect deep link to keplrwallet:// fails ERR_UNKNOWN_URL_SCHEME on mobile Working theory on the reporter: - If desktop and multi-wallet installed → window.ethereum race - If mobile → the two failures above Useful questions for the reporter: - Desktop or mobile? - If desktop, which other wallet extensions installed - If mobile, in-app browser or WC QR from another browser? - Browser console errors at time of failure (desktop)
Brouie commented 2026-05-20 00:47:03 +00:00 (Migrated from gitlab.com)

mentioned in issue #220

mentioned in issue #220
PlasticDigits commented 2026-05-20 04:22:05 +00:00 (Migrated from gitlab.com)

Response from user on keplr:
"Tried with keplr desktop extension on chrome windows.

It always shows 0 fees and cant approve the TX"
"On keplr android app it doesn't show megaeth network at all so couldn't try"
User switched to rabby wallet, but keplr still needs investigations

Response from user on keplr: "Tried with keplr desktop extension on chrome windows. It always shows 0 fees and cant approve the TX" "On keplr android app it doesn't show megaeth network at all so couldn't try" User switched to rabby wallet, but keplr still needs investigations
PlasticDigits commented 2026-05-20 04:41:01 +00:00 (Migrated from gitlab.com)

Investigation note (codebase + web research, no code changes)

Scope: Static analysis of frontend/src/wagmi-config.ts, docs/frontend/wallet-connection.md, related issues (#215, #216), reporter comments, and Brouie’s 2026-05-20 production QA. This consolidates likely root causes and ranked fixes for assignees.


Executive summary

Keplr failures on yieldomega.com are not one bug — they split by platform and failure mode:

Segment Symptom Most likely cause Fix direction
Desktop extension (reporter) Connect may work; txs show 0 fees, cannot approve MegaETH dual gas model + very low base fee (0.001 gwei) → wallets (especially Keplr) may show ~$0 fee or fail eth_estimateGas / fee UI; possible Keplr EVM approve/gas bugs Verify with eth_estimateGas on MegaETH RPC; test Rabby/MM; upgrade Keplr; consider dApp-side gas/fee hints per MegaETH send-tx docs
Desktop (multi-wallet) Keplr missing or connect no-op window.ethereum injection race; EIP-6963 is the supported path User guidance: pick Keplr under Installed (EIP-6963), disable conflicting extensions; optional explicit keplrWallet connector
Keplr Android MegaETH not listed Keplr mobile registry lag; not in prebuilt network list Manual add via RPC https://mainnet.megaeth.com/rpc, chainId 4326 (MegaETH connect guide)
Keplr in-app browser No Keplr in modal; WC deep link fails In-app browser does not EIP-6963-inject; keplrwallet:// scheme not registered Out of scope for extension-only UX; use external browser + extension, or fix production WC (#215-class)
Mobile WC (all wallets) Handshake hangs ~2 min Production WalletConnect infra / project id / relay — not Keplr-specific (Brouie filing separate issue) Track under WC issue; don’t attribute to Keplr connector gap alone

Codebase findings

  1. No explicit Keplr connector — wagmi-config.ts lists Safe, Rainbow, Base Account, MetaMask, SafePal, WalletConnect only. Grep shows no @keplr-wallet/rainbow-connector / keplrWallet in repo.

  2. EIP-6963 discovery is enabled (multiInjectedProviderDiscovery: true). Brouie confirmed Keplr appears under Installed on desktop production without the npm connector — matches design in issue description.

  3. Single-chain wagmi — only configuredChain() (MegaETH 4326 in prod via VITE_CHAIN_ID). Keplr must add/switch to MegaETH; first connect triggers wallet_addEthereumChain with RPC from wagmi chain metadata (first comma-separated VITE_RPC_URL entry).

  4. RPC URL ordering (#216) — megaethMainnetOrderedRpcUrls() uses env URLs only (no frontend public fallbacks). If production VITE_RPC_URL lists https://rpc-megaeth-mainnet.globalstake.io first (indexer still documents this fallback in indexer/src/config.rs), Keplr’s “Add MegaETH” prompt may point at a dead or CORS-blocked RPC → broken reads/estimates after add. Fix: ensure production build puts https://mainnet.megaeth.com/rpc first (or sole) in VITE_RPC_URL.

  5. Transaction path — writes use writeContractWithGasBuffer (+30% on successful estimateContractGas; on estimate failure, submit-without-override lets the wallet estimate). Pre-sign UI warns when simulation fails (useTimeCurveSaleSession / Arena). 0 fee in Keplr may mean estimate returned 0/empty or wallet cannot price MegaETH storage gas.

  6. Docs gap — wallet-connection.md documents SafePal (#58) but not Keplr; no manual QA checklist for #219 yet.


Reporter-specific theory (desktop, “0 fees, can’t approve”)

PlasticDigits relay (2026-05-20): Chrome Windows, Keplr extension; user switched to Rabby.

Likely explanations (ranked):

  1. MegaETH fee display / estimation — Base fee 0.001 gwei + dual compute+storage gas (spec). Total cost can round to $0.00 in wallet UI while still being valid — but if Keplr treats missing/invalid estimate as 0, it may disable Approve. MegaETH docs warn standard local/wallet estimators may undercount storage gas; dApps should estimate against MegaETH RPC.

  2. Keplr EVM bugs — chainapsis merged fixes for EVM gas estimation on ERC-20 approve (e.g. PR #1922 on keplr-wallet). Reporter should update Keplr extension and retry on latest build.

  3. Wrong or broken RPC after chain add — if user added MegaETH with globalstake (or other bad URL), eth_estimateGas / eth_sendTransaction fail silently in wallet chrome.

  4. Multi-extension conflict — Brouie saw Cannot redefine property: ethereum / MetaMask vs Backpack races. Less likely if user only uses Keplr via EIP-6963, but worth asking.

Not the primary issue: missing keplrWallet in RainbowKit list (reporter got far enough to see a tx approval screen).


P0 — Operator / env (no connector code)

  • Audit production VITE_RPC_URL: canonical first → https://mainnet.megaeth.com/rpc; remove or demote dead globalstake URL for client builds.
  • Participant guidance: update Keplr; add MegaETH manually on Android (4326, RPC above); use Rabby/MetaMask if Keplr approve remains broken after RPC fix.

P1 — Product support

  • Add @keplr-wallet/rainbow-connector keplrWallet to Popular group (same pattern as SafePal #58) — improves discoverability; does not fix mobile in-app browser or 0-fee approve by itself.
  • Document Keplr + MegaETH in wallet-connection.md + manual QA checklist (#219).

P2 — Tx reliability (if estimates confirmed failing)

  • For MegaETH writes: ensure estimateContractGas uses capable RPC; consider MegaETH-specific min gas limits or maxFeePerGas guidance per MegaETH developer docs.
  • Optionally tighten onEstimateRevert: "rethrow" on critical paths so users never reach a wallet with failed simulation (today some paths fall through to wallet estimator).

P3 — Mobile

  • Keplr in-app browser: document as unsupported unless Keplr injects EIP-6963 or WC works.
  • Fix production WalletConnect separately (related #215).

Verification checklist for assignee

Desktop (reporter repro):

  • Keplr version; extensions installed (MM, Backpack, etc.)
  • DevTools → Network: eth_estimateGas / eth_sendTransaction errors when clicking Buy/approve
  • Keplr → MegaETH network → RPC URL matches mainnet.megaeth.com
  • Compare same tx in Rabby (user says Rabby works — diff gas UI)

Mobile:

  • Android: manually add chain 4326; retest
  • In-app browser vs Chrome + WC QR

Regression: MetaMask desktop + one WC wallet after any wagmi change.


References

## Investigation note (codebase + web research, no code changes) **Scope:** Static analysis of `frontend/src/wagmi-config.ts`, `docs/frontend/wallet-connection.md`, related issues (#215, #216), reporter comments, and Brouie’s 2026-05-20 production QA. This consolidates likely root causes and ranked fixes for assignees. --- ### Executive summary Keplr failures on yieldomega.com are **not one bug** — they split by platform and failure mode: | Segment | Symptom | Most likely cause | Fix direction | |--------|---------|-------------------|---------------| | **Desktop extension (reporter)** | Connect may work; txs show **0 fees**, **cannot approve** | MegaETH **dual gas model** + very low base fee (0.001 gwei) → wallets (especially Keplr) may show ~$0 fee or fail `eth_estimateGas` / fee UI; possible Keplr EVM approve/gas bugs | Verify with `eth_estimateGas` on MegaETH RPC; test Rabby/MM; upgrade Keplr; consider dApp-side gas/fee hints per [MegaETH send-tx docs](https://docs.megaeth.com/developer-docs/overview-1) | | **Desktop (multi-wallet)** | Keplr missing or connect no-op | `window.ethereum` injection race; EIP-6963 is the supported path | User guidance: pick Keplr under **Installed** (EIP-6963), disable conflicting extensions; optional explicit `keplrWallet` connector | | **Keplr Android** | MegaETH not listed | Keplr mobile registry lag; not in prebuilt network list | Manual add via RPC `https://mainnet.megaeth.com/rpc`, chainId **4326** ([MegaETH connect guide](https://docs.megaeth.com/user-guide/connect)) | | **Keplr in-app browser** | No Keplr in modal; WC deep link fails | In-app browser does **not** EIP-6963-inject; `keplrwallet://` scheme not registered | Out of scope for extension-only UX; use external browser + extension, or fix production WC (#215-class) | | **Mobile WC (all wallets)** | Handshake hangs ~2 min | Production WalletConnect infra / project id / relay — **not Keplr-specific** (Brouie filing separate issue) | Track under WC issue; don’t attribute to Keplr connector gap alone | --- ### Codebase findings 1. **No explicit Keplr connector** — `wagmi-config.ts` lists Safe, Rainbow, Base Account, MetaMask, SafePal, WalletConnect only. Grep shows **no** `@keplr-wallet/rainbow-connector` / `keplrWallet` in repo. 2. **EIP-6963 discovery is enabled** (`multiInjectedProviderDiscovery: true`). Brouie confirmed Keplr appears under **Installed** on desktop production without the npm connector — matches design in issue description. 3. **Single-chain wagmi** — only `configuredChain()` (MegaETH **4326** in prod via `VITE_CHAIN_ID`). Keplr must add/switch to MegaETH; first connect triggers `wallet_addEthereumChain` with RPC from wagmi chain metadata (**first** comma-separated `VITE_RPC_URL` entry). 4. **RPC URL ordering (#216)** — `megaethMainnetOrderedRpcUrls()` uses env URLs only (no frontend public fallbacks). If production `VITE_RPC_URL` lists `https://rpc-megaeth-mainnet.globalstake.io` first (indexer still documents this fallback in `indexer/src/config.rs`), Keplr’s “Add MegaETH” prompt may point at a **dead or CORS-blocked** RPC → broken reads/estimates after add. **Fix:** ensure production build puts `https://mainnet.megaeth.com/rpc` first (or sole) in `VITE_RPC_URL`. 5. **Transaction path** — writes use `writeContractWithGasBuffer` (+30% on successful `estimateContractGas`; on estimate failure, **`submit-without-override`** lets the wallet estimate). Pre-sign UI warns when simulation fails (`useTimeCurveSaleSession` / Arena). **0 fee in Keplr** may mean estimate returned 0/empty or wallet cannot price MegaETH storage gas. 6. **Docs gap** — `wallet-connection.md` documents SafePal (#58) but not Keplr; no manual QA checklist for #219 yet. --- ### Reporter-specific theory (desktop, “0 fees, can’t approve”) PlasticDigits relay (2026-05-20): Chrome Windows, Keplr extension; user switched to Rabby. **Likely explanations (ranked):** 1. **MegaETH fee display / estimation** — Base fee 0.001 gwei + dual compute+storage gas ([spec](https://docs.megaeth.com/spec/megaevm/dual-gas-model.md)). Total cost can round to **$0.00** in wallet UI while still being valid — but if Keplr treats missing/invalid estimate as **0**, it may **disable Approve**. MegaETH docs warn standard local/wallet estimators may **undercount storage gas**; dApps should estimate against MegaETH RPC. 2. **Keplr EVM bugs** — chainapsis merged fixes for EVM gas estimation on **ERC-20 approve** (e.g. PR #1922 on `keplr-wallet`). Reporter should **update Keplr extension** and retry on latest build. 3. **Wrong or broken RPC after chain add** — if user added MegaETH with globalstake (or other bad URL), `eth_estimateGas` / `eth_sendTransaction` fail silently in wallet chrome. 4. **Multi-extension conflict** — Brouie saw `Cannot redefine property: ethereum` / MetaMask vs Backpack races. Less likely if user only uses Keplr via EIP-6963, but worth asking. **Not the primary issue:** missing `keplrWallet` in RainbowKit list (reporter got far enough to see a tx approval screen). --- ### Recommended fixes (product / eng) **P0 — Operator / env (no connector code)** - Audit production `VITE_RPC_URL`: **canonical first** → `https://mainnet.megaeth.com/rpc`; remove or demote dead globalstake URL for **client** builds. - Participant guidance: update Keplr; add MegaETH manually on Android (4326, RPC above); use Rabby/MetaMask if Keplr approve remains broken after RPC fix. **P1 — Product support** - Add `@keplr-wallet/rainbow-connector` `keplrWallet` to Popular group (same pattern as SafePal #58) — improves discoverability; **does not** fix mobile in-app browser or 0-fee approve by itself. - Document Keplr + MegaETH in `wallet-connection.md` + manual QA checklist (#219). **P2 — Tx reliability (if estimates confirmed failing)** - For MegaETH writes: ensure `estimateContractGas` uses capable RPC; consider MegaETH-specific min gas limits or `maxFeePerGas` guidance per [MegaETH developer docs](https://docs.megaeth.com/developer-docs/overview-1). - Optionally tighten `onEstimateRevert: "rethrow"` on critical paths so users never reach a wallet with failed simulation (today some paths fall through to wallet estimator). **P3 — Mobile** - Keplr in-app browser: document as **unsupported** unless Keplr injects EIP-6963 or WC works. - Fix production WalletConnect separately (related #215). --- ### Verification checklist for assignee **Desktop (reporter repro):** - [ ] Keplr version; extensions installed (MM, Backpack, etc.) - [ ] DevTools → Network: `eth_estimateGas` / `eth_sendTransaction` errors when clicking Buy/approve - [ ] Keplr → MegaETH network → RPC URL matches `mainnet.megaeth.com` - [ ] Compare same tx in Rabby (user says Rabby works — diff gas UI) **Mobile:** - [ ] Android: manually add chain 4326; retest - [ ] In-app browser vs Chrome + WC QR **Regression:** MetaMask desktop + one WC wallet after any wagmi change. --- ### References - Issue stack: `wagmi-config.ts`, `docs/frontend/wallet-connection.md` - [@keplr-wallet/rainbow-connector](https://www.npmjs.com/package/@keplr-wallet/rainbow-connector) (peer: RainbowKit v2, wagmi v2) - [Keplr EVM multi-chain API](https://docs.keplr.app/api/multi-ecosystem-support/evm) - [MegaETH dual gas model](https://docs.megaeth.com/spec/megaevm/dual-gas-model.md) - Related: #215 (modal click / WC), #216 (RPC ordering / sale-state)
Brouie commented 2026-05-20 05:21:58 +00:00 (Migrated from gitlab.com)

mentioned in issue #215

mentioned in issue #215
Brouie commented 2026-05-21 02:56:19 +00:00 (Migrated from gitlab.com)

Walked your verification checklist item 4 (Rabby comparison) on the same dapp.

Setup: Rabby extension on Chrome desktop, connected to https://yieldomega.com on MegaETH, wallet funded with ETH + CL8Y. Clicked Buy CHARM, captured the Rabby approval popup, cancelled before sign.

Rabby popup decoded:

  • Origin verified: yieldomega.com
  • Chain: MegaETH (4326)
  • Interact contract: 0x1b68bb...f2bf71 (TimeCurve proxy)
  • Operation: buy
  • Interacted before: Yes
  • Simulation Results: simulated cleanly, decoded CL8Y outflow
  • Gas fee: real non-zero ETH amount at MegaETH baseline gas
  • Speed tier: Normal
  • Sign button: enabled

Same chain, same contract, same dapp, same operation as the reporter's broken Keplr flow — Rabby simulates clean, shows a real fee, produces a signable popup.

Comparison:

Dimension Rabby (working here) Keplr (reporter, broken)
Connect Works Works
Chain recognized MegaETH MegaETH (added via Keplr's first-connect prompt)
Simulation result Decoded outflow + value shown Unknown — reporter says fee = 0
Fee display Real non-zero $0.00
Approve/Sign Enabled, signable "Can't approve"

What this isolates:

Yieldomega backend is fine — Rabby successfully simulates against the TimeCurve proxy on MegaETH and prices the tx. Protocol + chain + dapp wiring all work.

The failure is Keplr-side. Two of your investigation note theories are both supported:

  1. RPC config theory: Per A1 walkthrough yesterday, Keplr's "Add MegaETH" prompt during first connect points VITE_RPC_URL position 1 (currently globalstake from #216 — dead/CORS-blocked). If Keplr's eth_estimateGas call routes to globalstake, it gets no answer → fee defaults to 0 → wallet may disable Approve. Rabby doesn't use yieldomega's VITE_RPC_URL, it uses its own MegaETH chain definition — which is why Rabby works on the same dapp/profile.
  2. Keplr EVM estimation bug: Keplr has known EVM gas-estimation issues with non-standard fee models. MegaETH's dual gas model (compute + storage, 0.001 gwei base) is plausibly hitting one. PR #1922 on chainapsis/keplr-wallet is in this area.

Remaining checklist items still not walked:

  • Keplr version + conflicting extensions: partial — yesterday's note documented the multi-extension window.ethereum race on this profile (evmAsk, requestProvider, MetaMask, Backpack fighting); did not capture today's specific Keplr build.
  • DevTools eth_estimateGas / eth_sendTransaction errors on Keplr Buy/approve: not walked. Popup-observation method can't reach the Keplr signing screen without funding a Keplr-controlled address.
  • Keplr → MegaETH → RPC URL match check: not walked. Keplr's user-facing Add/Remove Chains panel doesn't expose the RPC URL field — would need chain-info JSON or extension dev tools to confirm whether Keplr is pointing at globalstake or mainnet.megaeth.com.

Easiest reporter-facing remediation per your playbook:

Tell the reporter to (a) update Keplr to latest, and (b) manually edit their Keplr MegaETH chain config to RPC https://mainnet.megaeth.com/rpc. If that resolves "0 fees, can't approve" → confirms RPC config theory. If not → Keplr EVM bug, hand-off back to chainapsis.

Walked your verification checklist item 4 (Rabby comparison) on the same dapp. **Setup:** Rabby extension on Chrome desktop, connected to https://yieldomega.com on MegaETH, wallet funded with ETH + CL8Y. Clicked Buy CHARM, captured the Rabby approval popup, cancelled before sign. **Rabby popup decoded:** * Origin verified: yieldomega.com * Chain: MegaETH (4326) * Interact contract: `0x1b68bb...f2bf71` (TimeCurve proxy) * Operation: `buy` * Interacted before: Yes * Simulation Results: simulated cleanly, decoded CL8Y outflow * Gas fee: real non-zero ETH amount at MegaETH baseline gas * Speed tier: Normal * **Sign button: enabled** Same chain, same contract, same dapp, same operation as the reporter's broken Keplr flow — Rabby simulates clean, shows a real fee, produces a signable popup. **Comparison:** | Dimension | Rabby (working here) | Keplr (reporter, broken) | |-----------|----------------------|--------------------------| | Connect | Works | Works | | Chain recognized | MegaETH | MegaETH (added via Keplr's first-connect prompt) | | Simulation result | Decoded outflow + value shown | Unknown — reporter says fee = 0 | | Fee display | Real non-zero | $0.00 | | Approve/Sign | Enabled, signable | "Can't approve" | **What this isolates:** Yieldomega backend is fine — Rabby successfully simulates against the TimeCurve proxy on MegaETH and prices the tx. Protocol + chain + dapp wiring all work. The failure is Keplr-side. Two of your investigation note theories are both supported: 1. **RPC config theory:** Per A1 walkthrough yesterday, Keplr's "Add MegaETH" prompt during first connect points VITE_RPC_URL position 1 (currently globalstake from #216 — dead/CORS-blocked). If Keplr's `eth_estimateGas` call routes to globalstake, it gets no answer → fee defaults to 0 → wallet may disable Approve. Rabby doesn't use yieldomega's VITE_RPC_URL, it uses its own MegaETH chain definition — which is why Rabby works on the same dapp/profile. 2. **Keplr EVM estimation bug:** Keplr has known EVM gas-estimation issues with non-standard fee models. MegaETH's dual gas model (compute + storage, 0.001 gwei base) is plausibly hitting one. PR #1922 on chainapsis/keplr-wallet is in this area. **Remaining checklist items still not walked:** * Keplr version + conflicting extensions: partial — yesterday's note documented the multi-extension `window.ethereum` race on this profile (evmAsk, requestProvider, MetaMask, Backpack fighting); did not capture today's specific Keplr build. * DevTools `eth_estimateGas` / `eth_sendTransaction` errors on Keplr Buy/approve: not walked. Popup-observation method can't reach the Keplr signing screen without funding a Keplr-controlled address. * Keplr → MegaETH → RPC URL match check: not walked. Keplr's user-facing Add/Remove Chains panel doesn't expose the RPC URL field — would need chain-info JSON or extension dev tools to confirm whether Keplr is pointing at globalstake or mainnet.megaeth.com. **Easiest reporter-facing remediation per your playbook:** Tell the reporter to (a) update Keplr to latest, and (b) manually edit their Keplr MegaETH chain config to RPC `https://mainnet.megaeth.com/rpc`. If that resolves "0 fees, can't approve" → confirms RPC config theory. If not → Keplr EVM bug, hand-off back to chainapsis.
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-05-30 13:22:50 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
code/yieldomega#219
No description provided.