Devlog #12
Quite a bit more to report this time! Since last devlog, I’ve mostly been working on improving actual wallet functionality, fixing some smaller UI issues, and looking into performance.
Recent changes
Below is a quick summary of what I’ve been working on since the last devlog:
- Full TRC-20 token support is here! 🎊 Tron is no longer limited to just native TRX transfers, and the token validation/network logic has been updated to support TRC-20 tokens as well.
- Significantly improved Bitcoin support by adding proper BIP84 account discovery. VaultForge now scans both receive and change addresses, tracks which UTXOs belong to which derived addresses, signs each input with the correct derived key, and refreshes discovery before sending. Anecdote: I use Brave Wallet which did the receive and change addresses thing so my funds didn’t show up in previous versions of VaultForge. However, as of this update, I now am.
- Wallet unlocking now feels much faster! Cached balances/prices are shown immediately while fresh data refreshes in the background.
- Improved asset cards so they show which network an asset belongs to.
- Assets worth less than $1 are now hidden from the portfolio/assets view unless VaultForge does not have price data for them.
- Fixed a few UI issues, including dashboard scrolling, refresh errors, escaping asset data (aka preventing XSS), and copying the currently selected wallet address.
-
Converted the remaining
.jsconfig files to TypeScript because apparently I cannot resist refactoring things even when it makes no difference whatsoever.
For the first time in this series of devlogs, I’m linking the changes to relevant commits on GitHub wherever possible so you can have a look.
Performance improvements
I also found a few ways to reduce VaultForge’s roughly 10s full refresh time:
- Cached unlock (mentioned above): perceived unlock time is now closer to ~1–3s, although balances/prices can still take around the same amount of time to fully refresh in the background.
- Reuse HTTP clients: should save roughly ~0.2-1.5s by reusing connections.
- Concurrent provider calls: likely the biggest improvement, potentially bringing a ~10s refresh down to ~3–5s.
- Refresh prices separately: could make fresh balances appear another ~0.5–2s sooner.
- Derive Argon2 once: should save roughly a few hundred ms to ~1s on cold unlocks.
The above estimated perf improvements are obviously quite variable and depend on a multitude of factors (+ I got ChatGPT to analyze my current code to make an estimate because how else would I do it), but there is definitely still a lot of low-hanging fruit here.
Upcoming features
- Actual settings are still the elephant in the room 😭, so I definitely need to get around to those but since I think this may need a big PR a bit like the previous style improvements, I think I will do this after
v0.4.0(so therefore forv0.5.0). - Ripple (XRP) support (at least for native token transfers), planned for
v0.4.0. - Zcash (ZEC) support: I’ve got a feeling this one will take quite some time so at most I will implement transparent <=> transparent transactions before next release but will have to see.
- The remaining performance improvements mentioned above.
Comments 0
No comments yet. Be the first!
Sign in to join the conversation.