mirror of
https://github.com/status-im/status-web.git
synced 2026-08-27 20:31:12 +00:00
* 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.