Aegis — the multi-chain wallet built into Theseus (BCH, BTC, DGB, ETH, SOL, TRX, SC)
Second half of the Theseus-lag investigation. 0.27.1 removed the 7.4 MB store; this removes the two things that produced it and the latency that came with it. Measured on this profile's own cache: 6,981 transactions, 7.38 MB, and one consolidation with 400 inputs (median 2). - loadHistory() awaited getTx() per displayed transaction and then again per INPUT, strictly one at a time. The 400-input row alone cost 400 serial round trips. Both waves are now prefetched with bounded parallelism (getTxMany, 12 at a time). Against a simulated 10 ms link the same 473 fetches take 771 ms instead of ~4,730 ms; on a real 30-50 ms link the serial version was 15-25 seconds per refresh, per wallet. - Parent transactions were persisted forever. They exist only to compute a delta for the 25 rows on screen, and keeping every one ever seen is what grew the file. Only the displayed window is written now — 25 entries, 16.4 KB in the harness — while parents stay in a process-lifetime map bounded at 20,000, seeded from the window so a restart does not refetch what is already visible. A second refresh issues zero fetches. TX_CACHE_VERSION 4 discards v3 caches. The v3 cap of 400 was also exactly the wrong number for this data: a 400-input transaction needs 401 entries, so it would have evicted and refetched on every single refresh. |
||
|---|---|---|
| lib | ||
| addon.json | ||
| electrum-servers.json | ||
| index.js | ||
| panel.html | ||
| panel.js | ||
| qr.js | ||
| wallet-inject.js | ||