DUOLABS
Work

Blockchain wallet app

We rebuilt a live blockchain wallet app for another platform, single-handed. In a wallet, one wrong address or signature can leave users unable to find their own assets, so the first priority was handling the same wallet with the same addresses as the existing app. Working only from the existing app's source code to analyze its features and screen flows, we implemented everything from the screen architecture to wallet creation and recovery, transfers and signing, and transaction history. Rather than just copying existing behavior, we reorganized the screen structure and interactions to suit how the new platform is used.

Launch
2025
Client
A blockchain service company
Type
Investing & Assets

01 / 04

Ported from source alone, with screens rebuilt the new platform's way

Porting the blockchain wallet app began with analyzing features and screen flows against the existing app's source. Working alone, we both carried existing behavior over and reorganized the screen structure and interactions to suit the new platform. We designed an architecture that separates the responsibilities of screens, screen state, and navigation, which kept the wallet, transfer, and transaction history screens from growing tangled.

Ported from source alone, with screens rebuilt the new platform's way
02 / 04

Recovery that restores a wallet from the existing app to the same addresses

The blockchain wallet uses a hierarchical deterministic (HD) structure that derives many addresses from one wallet following a standard path rule. When moving these derivation rules to the new platform, we verified the paths, key management, and address generation one by one to make sure that creating, recovering, and deriving a wallet produced the same results as the existing app. If one wallet gave different addresses in the two apps, users could not find their own assets.

Recovery that restores a wallet from the existing app to the same addresses
03 / 04

Transfers with private keys and signing kept away from the screens

A crypto transfer runs in order: enter the recipient address and amount, sign the transaction, send it to the blockchain network, and check its status. The parts that handle private keys and signing were separated from screen logic, so changing a screen never touches the key and signing flow. We also handled the screens for the moments users are most sensitive to, such as a slow or failed network response, or a transaction moving from pending to complete.

Transfers with private keys and signing kept away from the screens
04 / 04

Balance, address, and transaction list re-laid out for each screen size

Wallet screens pack in information that has to be read at once: balance, address, transfer inputs, and the transaction list. We laid out the main screens anew to fit each device's screen size and safe area, the edges at the top and bottom of the screen that can be covered. Tapping an entry in the transaction list opens that transaction's details.

Balance, address, and transaction list re-laid out for each screen size

Highlights

01

Ported single-handed to another platform from the existing app's source alone

02

HD wallet creation and recovery that yields the same addresses as the existing app

03

A transfer design that keeps private keys and signing apart from screen logic

Insights

Read the blog