Files
Jules 838d20c153 fix(wallet): recover from stuck transactions instead of breaking the session (#1316)
* fix(wallet): poll receipts on the node that took the broadcast

Chain 1 now proxies to the same `/alchemy` path `nodes.broadcastTransaction`
and `nodes.getNonce` use. A node that does not hold the transaction answers
receipt lookups with null forever.

* fix(wallet): only commit the nonce on a validated broadcast

The result was read unvalidated, so a broadcast that produced no transaction
still burned its nonce and gapped every later one. Failures now carry the
node's own reason instead of the status code.

* fix(wallet): reconcile the nonce down against an empty pool

Nothing lowered the local counter, so one dropped transaction left every
later one signed at a gapped nonce until the browser restarted. When the
node's pending and latest counts agree it holds nothing for the account, so
a counter above that is lowered once it has stayed ahead for 5 blocks.

* feat(wallet): detect and notify dropped transactions

A never-mined transaction kept its 30s alarm forever, since only receipt
`0x1` and `0x0` settled it. `eth_getTransactionByHash` is now the probe: a
null receipt means nothing on its own, but three consecutive polls where the
node has no record of the hash settle it as dropped. RPC failures do not
count towards that.

* fix(wallet): sync pending transactions from the background monitor

The page read the list once at mount and wrote its own copy back over the
monitor's removals, leaving settled transactions pending. It now watches the
key it shares with the monitor.

* fix(wallet): keep the earliest mark for a pending count

The post-send mark overwrote the block a held one carried, so every send
from the address restarted the 5-block window and the counter was never
lowered -- each retry only added another gapped transaction. `resolveNonce`
now reports when a mark for the pool count is already held.
2026-08-27 13:21:36 +00:00
..
2025-05-09 01:42:28 +09:00
2025-05-09 01:42:28 +09:00
2026-03-09 11:41:24 +00:00
2025-08-26 03:09:11 +09:00
2025-08-26 03:09:11 +09:00

A wallet extension by Status

Compatibility

Tested with these browsers:

  • Google Chrome

Development

Env

Set environment variables in:

Google Chrome

Develop

Follow Getting Started

Load

Google Chrome > Window > Extensions > enable Developer mode

Google Chrome > Window > Extensions > Load unpacked > select build (.output/chrome-mv3)

Note: Reloads automatically in development.

Note: Press Command + Shift + . to show hidden files like .output/.

Visit

Google Chrome > Extensions > !Status Portfolio Wallet (Beta) > Inspect views > service worker

Google Chrome > Toolbar > Extensions > !Status Portfolio Wallet (Beta)

Google Chrome > Toolbar > Extensions > !Status Portfolio Wallet (Beta) > Open side panel

chrome-extension://[ID]/page.html#/portfolio

chrome-extension://[ID]/page.html#/onboarding