We’ve been casting a fresh batch of features, and are now ready to announce the third release of Iron Wallet.
This release is focused on supporting live networks, particularly Ethereum mainnet.
While our main target is developer tooling, we also believe it’s crucial to support regular interactions and use Iron as our daily driver for Ethereum. This release is what finally allows for that
The most critical feature to allow us to migrate from other wallets into Iron is the ability to import the same seed phrase, so we get access to the same set of addresses.
This one is important to get right because a big part of the security aspects hinges on how well we protect this secret.
That’s why we took the time to investigate how other wallets implement this, and what our own approach should be. What cryptographic primitives should we favor? What attack vectors should we look out for?
After a period of research, where we dug into the codebases of MetaMask, Frame.sh, and other wallets, we arrived at an implementation that uses state-of-the-art cryptographic primitives (Argon2 and XChaCha20Poly1305), as well as OS-level memory protection, provided mainly by the Rust secrets crate.
On this iteration, we held off on allowing users to generate their own seed within the app. That feature will be dealt with on its own later, as it has its own security concerns to take into account.
For now, though, the setup flow already looks comfortable enough to migrate existing seeds:
Getting real-time and historical data from blockchains is a real problem. Blockchains are great for reaching consensus on state, but terrible at allowing arbitrary queries to that same state. Simple operations such as “Give me the transaction history for this wallet” or “What ERC20 tokens am I holding?” are actually complex to implement, because they mostly rely on 3rd party indexers or bespoke clients to crunch the data for you
In this first iteration, we rely on alchemy.com as our data provider for live networks.
You first need to add an Alchemy API key to your wallet settings. After that, transaction and asset indexing should happen automatically and periodically for all your connected wallets.
There are two main points for improvement here in the future:
Support for additional providers. We do not want vendor lock-in
Better heuristics for updating addresses, while being mindful of rate limits
A simple but effective feature: from now on, the UI will notify you of new releases as soon as they happen!
We’re already actively working on the next batch of updates, including transaction simulation. But a lot of the recent work has been done outside of Github: we’ve been working with one of Subvisual’s designers to finally improve our branding and image.
Expect news here on the very next release, particularly in the form of a brand-new logo. Our Minecraft placeholder has run its course.