Blockradar
01/06
Blockradar serves businesses that want on-chain wallets without building the infrastructure. I designed the first version in 2024 with Faye (product designer), and handed over a production-ready Figma file: scalable patterns, a responsive version, handoff notes. Blockradar has since processed $1.3B across 1.1M transactions, with 189.3K wallets created.
Designing Blockradar’s V1: wallet infrastructure for operations and finance teams
- The problem
- Operations and finance teams needed on-chain wallets they could run without a blockchain engineer, and the product could not hide the complexity, because the people paying for it needed to see exactly what was happening.
- My role
- One of two designers on V1, with Faye, reporting to the co-founder. Onboarding, wallet creation, transactions and filters, the failed states, backups and the dashboard.
- Outcome
- Blockradar was implemented and went live using this V1. In 2026, Blockradar reported that it has processed $1.3B across 1.1M transactions, with 189.3K wallets created.
The people using it are operations and finance teams, not blockchain engineers. Every flow carried real cryptographic weight: environments, generated addresses, key material, exports you cannot undo. All of it had to read like an ordinary dashboard to somebody who has never held a wallet, and the product could not hide the complexity, because the people paying for it needed to see exactly what was happening.
I came on as a freelance product designer when the product was still being defined, working with another designer, Faye, and reporting to the co-founder. We were a team of three on the design side of V1.
There was no existing product to redesign. We figured it out from scratch.
We designed the experience for environments, wallet creation, transaction data, security settings and backups.
- $1.3B
- total transaction volume
- 189.3K
- wallets created
- 1.1M
- total transactions
Starting with onboarding
We took the product one piece at a time. The co-founders would walk us through how a piece should behave and share a few visual references, and after some reading on the market we’d come back with our questions. Onboarding was the obvious place to start. It’s the first flow an operator touches, and nothing else in the product is reachable until they’re through it.
The main call was where to put the security step.
- 01Create an account
- 02Verify the email
- 03Business details and a password
- 04Set up 2FA
- 05You’re in


As we worked through onboarding, it led us into the product itself.
Starting with the wallet
We designed the master wallet setup as a multi-step form first, because that’s what setup flows usually are. Testing it against a single screen showed the habit was wrong here: the network decides the assets, and the steps hid that dependency from the operator.
We brainstormed a single screen. The wallet name stayed a text field, since nothing depends on it. Network and assets became dropdowns side by side: when an operator picked a network, the asset list narrowed right there, and they saw the effect of the choice without stepping back. Review became a summary page before Create, where the whole wallet got checked once, at the end.
The lesson I kept: check whether choices depend on each other before deciding how many screens they get.
- 01Name the wallet
- 02Pick a network
- 03Pick the assets
- 04Review
- 05Created
- 01Wallet name · Network ▾ · Assets ▾Each old step is a field on one screen; the asset list follows the network. Then a summary page, then Create.

Blockradar has a Test mode and a Live mode. The switch started out in the header, like most dashboards. In review we saw an operator could create a wallet without noticing which mode they were in, which matters because Live wallets hold real money. So we moved the choice into the wallet form, where it couldn’t be missed, and added a confirmation step when switching modes.
What sits inside a wallet
Each wallet has many addresses, and each address has a lot of data. Our first table showed all of it, and it was unreadable. So we kept the three things an operator checks most in the row, balance, type and status, and put everything else one click away.

- In the rowBalance · Type · StatusWhat an operator checks most, readable at a glance.
- On requestActivity · Asset details · Creation details · Chain dataOpens from the row, so nothing is lost.

Transactions
Once we had the wallet and address structure in place, we moved into what happens after money starts moving.
The requirements included a lot of transaction information, and our first table showed most of it. In review it read like a spreadsheet: an operator checking whether a payment went through had to scan past hashes and webhook details to find the status. So the main view kept the seven things an operator looks for first:
- Type
- Date
- Sender
- Recipient
- Amount
- Asset
- Status

We designed the transaction detail view around the events in its lifecycle, because that is how an operator checks one: what happened, in what order, and where it stopped. For example:
- 01Deposit confirmed
- 02Asset swept
- 03Deposit webhook sent
- 04Sweep webhook sent

If a sweep failed, the failure reason appeared in the activity log at that step, with the retry beside it, so nobody had to leave the record to fix it.
Advanced transaction filters
The table worked well for browsing, but a business with thousands of records isn’t browsing. An operator investigating a transaction arrives with a reference, a hash or a recipient in hand. Our first filter was a single search box, and it kept returning too much. So we designed the filters around the information someone realistically has when investigating:
- Reference
- Hash
- Recipient
- Type
- Status
- Asset
- Date

Filters could be combined, and the applied ones stayed visible as chips, so it was always clear why the table had been narrowed and what to remove to widen it again.

Small decisions like this came up repeatedly: what is the user trying to find, and what is the quickest way to get them there?
Designing the failed states
Once the main flows were taking shape, we went back through them for the ways they break, the edge cases the requirements didn’t mention.
If someone lost their authenticator, they couldn’t simply turn 2FA off; the wallet sits behind it. Our first answer was “contact support”. That would have left an operator locked out of real funds until someone replied, so we designed a recovery path that proves it’s them another way:
- 01Password
- 02Email OTP
- 03New authenticator
- 04Confirmation

The “forgot 2FA” route sat on the verification step itself, because that is where people are when they get stuck.
Backup was another flow where the edge cases mattered. A backup downloads the wallet’s keys, so the flow had to make clear how sensitive that is while still getting the operator through it. Our first version put one warning at the top of a single form, and in review people scrolled straight past it. So we broke it into five steps, with the warning before the action, so the acknowledgement couldn’t be skipped.

A deposit could come in successfully and the sweep could still fail. Showing a failed status wasn’t enough on its own; in review the first question was always “why?”. So we surfaced the reason and put the retry action next to it, so an operator could fix it from the same screen.

The questions the requirements didn’t cover
A lot of the work happened in questions the requirements didn’t cover, and where each one landed.
- How should a wallet address be displayed without taking up half the screen?
- Shortened to its first and last characters, with the full address one click away.
- When should we show the full transaction hash?
- Only in the detail view. The table carries the reference.
- What information should appear before someone opens transaction details?
- Type, date, sender, recipient, amount, asset and status. Everything else waits inside.
- How should a user know which environment they’re currently in?
- The mode is stated in the header and inside the wallet form, and switching asks for confirmation.
- What happens when there are no wallets yet?
- An empty state that explains what a master wallet is and starts the create flow.
- What should happen when a transaction is pending, fails, or needs another action?
- The status says why, and the next action sits beside it.
- Where should a user go when they’ve lost their authenticator?
- Nowhere new. The recovery link is on the verification screen they’re already on.
- … and 20 more like these
None of these had an obvious answer in the requirements. Faye (designer 2) and I worked through them together and brought the bigger decisions back to the co-founder. That back-and-forth shaped a lot of the final experience.
Some answers changed as we designed. We’d put something on screen, realise it didn’t quite work, and go back to the flow.
Bringing V1 together
By the end of the engagement we had worked through the core V1 experience across onboarding, wallets, child addresses, transactions, security, backups, usage and settings, and handed over a production-ready Figma file: scalable patterns, a responsive version, handoff notes.

The dashboard came last, on purpose: it brought the main pieces together once we knew what they were. Wallet balances, address and transaction counts, deposits over the year, recent activity, and usage against plan limits, which is the one an operator checks before the month ends.

More importantly, we had a shared direction for how those pieces should work together. The work later became the starting point for a product that continued to expand well beyond the V1 we designed.
Looking back
The requirements described the happy path. Most of what shaped V1 came from the cases they left out: a lost authenticator, a sweep that fails after the deposit lands, a Test wallet mistaken for a Live one. We found those by designing the main flows first and going back.
If I did it again, I’d map the failure cases with the co-founders in the first week, before the happy path. They took the most rework, and they’re the flows an operator remembers.
What I’d measure now: how long a new business takes from sign-up to its first wallet, and how many failed sweeps get resolved from the activity log without a support ticket.
Design: Faye and me. Product direction: the Blockradar co-founder. Freelance engagement, 2024.
Send me an email at tassyomah@gmail.com and I’ll walk you through it properly.

























































