
UX · Product Design · Case Study
Daoing
Daoing
Daoing is a Web3 community app built around group chats, DMs, and a community around every DAO. I designed its self-custody wallet so transfer works the same way the rest of the app does — no address to copy, no app to leave.
UX Designer
Mar – Jun 2023
Designing wallet interaction for Daoing
A brand-new wallet feature, no prior version. Daoing's users already move value inside conversations — DAO reimbursements, bounty payouts, one member paying another — so transfer had to be something chat could call directly, not a page buried in a separate wallet tab.
Confirm the amount in chat → Copy the wallet address → Switch to a separate wallet app → Select the right chain and token → Paste the address → Complete the transaction → Screenshot or copy the tx hash back into chat
Copied addresses get mistyped
The wrong network gets selected
Users bounce between chat and a separate wallet app, losing context each time
Checked against the market, then against real people
Benchmarking wallets, exchanges, social payment apps, and DAO tools showed no single category solves this — the opportunity is a chat-native crypto flow for Web3 social communities. Then it went in front of 7 real participants.
4
Competitor categories analyzed — none chat-native
7
Participants, from Web3 beginners to founders
6/7
Completed the send flow unassisted
3.2 → 4.1
Avg. confidence score, before → after iteration
See the competitive benchmark, the V1 prototype and full test results
What the testing actually changed
✓ Shipped — the confirmation screen now leads with From / To / Amount / Fee / Total, after users hesitated right before confirming
✓ Shipped — gas fee uses progressive disclosure: a simple default, with Advanced Options underneath for anyone who wants more control
◇ Future, not yet built — extending the same flow to ERC-20 and NFT (ERC-721) transfers, sketched but not yet tested
The flow today, without a chat-native option:
Confirm the amount in chat → Copy the wallet address → Switch to a separate wallet app → Select the right chain and token → Paste the address → Complete the transaction → Screenshot or copy the tx hash back into chat
Copied addresses get mistyped
The wrong network gets selected
Users bounce between chat and a separate wallet app, losing context each time
The complete Send path, from entry to result
Chat first — the wallet tab works too
Send starts from any chat: open the + menu next to the message input, and Image, Contact Card, Transfer, Red Packet sit alongside each other. Tapping Transfer opens a bottom sheet listing "Transfer Token" and "Request Token." The recipient is already the person you're talking to — no address to type or paste. The wallet tab has its own Send button too, with no chat context at all — same flow either way, none of it changes based on which door was used.
From Chat menu

John Doe
Lorem ipsum dolor sit amet consectetur. Venenatis sodales sollicitudin ut sagittis urna vel lectus pulvinar et. Fermentum lobortis bibendum ac amet nunc malesuada sed ultricies.


sdf[pakgk[sdkg[ksdgoksp
John Doe

❤️
5
Say something...
Image
Contact Card
Transfer
Red Packet
Yesterday 9:21 PM



Image
Contact Card
Transfer
Function List
TestDAO

From wallet tab
Tokens
NFTs
DApps
39,420.72 MATIC
≈$3942.72

0x2358d...22a2y
Send
Receive
Tokens

Ethereum
1.32
≈$2178.22
USDT
1,203
≈$1,208

USDC
558
≈$556.5
Recent Activities
View
Contract Interaction
(0xe5...a1473)
Success
12 days ago
Received tokens
(0xe5...a1473)
Success
12 days ago
Sent tokens
(0xe5...a1473)
Success
12 days ago
Home
Discover
Wallet
Profile
0x235...22a2y


Send Token form
Before the To field is filled, the estimated fee shows 0 MATIC. The moment the address is entered, the fee jumps to a real estimate (0.0000647 MATIC). There's no address field to validate here — the recipient was already chosen from chat, not typed.
Component 1
Cancel
Submit

Polygon Mainnet
From
0x74426B056C04b49e...F7C1C
To
Select, paste an address
Paste
MATIC
0.00
Balance : 39,420.72 MATIC
Total
0 MATIC
Max amount:
0.000108
ETH
Likely in < 30 seconds
Max fee:
0.000108
ETH
Estimated gas fee
0 MATIC
Advance Options

Cancel
Submit

Polygon Mainnet
From
0x12E26B056C04b4e...dcE48
To
0x74426B056C0493...1e7C1C
Paste
MATIC
100.00MATIC
Balance : 39,420.72 MATIC
Total
0.0000647 MATIC
Max amount:
0.000108
MATIC
Likely in < 30 seconds
Max fee:
0.000108
MATIC
Estimated gas fee
0.0000647 MATIC
Advance Options

Risk
Edit Priority
For most transfers, nobody touches this screen's details. A Low / Medium / High slider defaults to Medium, paired with one line of plain confirmation: "~0.001363 ETH, likely in < 30 seconds." That's enough for most people to read and continue. Advance Options sits underneath for the minority who want to set Gas limit, Max priority fee, and Max fee by hand.
Component 2
Cancel
Submit

Polygon Mainnet
From
0x12E26B056C04b4e...dcE48
To
0x74426B056C0493...1e7C1C
Paste
MATIC
100.00 MATIC
Balance : $951.35
Total
0.0000647 MATIC
Max amount:
0.000108
MATIC
Likely in < 30 seconds
Max fee:
0.000108
MATIC
Estimated gas fee
0.0000647 MATIC
Advance Options
M
mydapp.com

Ethereum
Method Name
100.00 MATIC
$ 99.10

Account 1 (0xggGg...4422)
Balance : 39,420.72 MATIC
0.0000647 ETH
Total
Max fee:
0.000108
ETH
Max Amount:
0.000108
ETH
Likely in < 30 seconds
0.0000647 ETH
Estimated gas fee
View Data
Cancel
Confirm

Cancel
Submit

Polygon Mainnet
From
0x12E26B056C04b4e...dcE48
To
0x74426B056C0493...1e7C1C
Paste
MATIC
100.00 MATIC
Balance : $951.35
Total
0.0000647 MATIC
Max amount:
0.000108
MATIC
Likely in < 30 seconds
Max fee:
0.000108
MATIC
Estimated gas fee
0.0000647 MATIC
Advance Options
~0.001363 ETH
Max fee: 0.001775 ETH ($2.93)
Likely in < 30 seconds
Low
Medium
High
Advance Options
Save

Cancel
Submit

Polygon Mainnet
From
0x12E26B056C04b4e...dcE48
To
0x74426B056C0493...1e7C1C
Paste
MATIC
100.00 MATIC
Balance : $951.35
Total
0.0000647 MATIC
Max amount:
0.000108
MATIC
Likely in < 30 seconds
Max fee:
0.000108
MATIC
Estimated gas fee
0.0000647 MATIC
Advance Options
~0.001363 ETH
Max fee: 0.001775 ETH ($2.93)
Likely in < 30 seconds
Low
Medium
High
Advance Options
Gas limit
Estimate:
0.5 GWEI
21000
Max priority fee
Estimate:
0.5 GWEI
0.5 GWEI
≈0.000011 ETH
Max fee
Estimate:
82.426423313 GWEI
75.443381857 GWEI
≈0.001735 ETH
Save

Risk
If reaching the confirm screen required understanding Gas mechanics first, a large share of users would abandon the transfer right here — the default isn't a convenience, it's what keeps an entire category of users from getting stuck.
Insufficient balance
When the balance isn't enough, the form fields themselves turn red (the MATIC row reads "Insufficient balance" inline), and a dialog appears with Cancel and Deposit.
Component 3
Cancel
Submit

Polygon Mainnet
From
0x12E26B056C04b4e...dcE48
To
0x74426B056C0493...1e7C1C
Paste
MATIC
100.00MATIC
Balance : 39,420.72 MATIC
Total
0.0000647 MATIC
Max amount:
0.000108
MATIC
Likely in < 30 seconds
Max fee:
0.000108
MATIC
Estimated gas fee
0.0000647 MATIC
Advance Options


Polygon Network
From
0x12E26B056C04b4e...dcE48
MATIC
40,000.00 MATIC
Balance : 39,420.72 MATIC
Insufficient balance
Total
-
Max amount:
0.000108
ETH
Likely in < 30 seconds
Max fee:
0.000108
ETH
Estimated gas fee
-
Advance Options
Cancel
Submit

Risk
Catching this after signing means every step before it — filling the form, setting the fee, confirming, entering the PIN — was wasted effort.
The point of no return
Each screen restates that this is final, a different way each time: the confirm sheet's own line, the Sign-message warning's plain language, and a PIN in place of the usual wallet signature, since this wallet is built-in. Once sent, Pending shows the same From, To, Amount, and fee — nothing new to check, just a status that hasn't resolved yet.
Component 4
Cancel
Submit

Polygon Mainnet
From
0x12E26B056C04b4e...dcE48
To
0x74426B056C0493...1e7C1C
Paste
MATIC
100.00 MATIC
Balance : $951.35
Total
0.0000647 MATIC
Max amount:
0.000108
MATIC
Likely in < 30 seconds
Max fee:
0.000108
MATIC
Estimated gas fee
0.0000647 MATIC
Advance Options
From:

Account 1 (0x12E2...dcE48)
Balance : 39,420.72 MATIC
To:

0xggGg...4422
$99.56
Total
100.00 MATIC
Amount
0.0000647 ETH
Estimated gas fee
⚠️ Make sure the address and network are correct.
Crypto transfers cannot be reversed.
Cancel
Confirm

Cancel
Submit

Polygon Mainnet
From
0x12E26B056C04b4e...dcE48
To
0x74426B056C0493...1e7C1C
Paste
MATIC
100.00 MATIC
Balance : $951.35
Total
0.0000647 MATIC
Max amount:
0.000108
MATIC
Likely in < 30 seconds
Max fee:
0.000108
MATIC
Estimated gas fee
0.0000647 MATIC
Advance Options
M
mydapp.com

Ethereum
Sign this message?

Account 1 (0x12E2...dcE48)
Balance : 39,420.72 MATIC
⚠️ Confirming this transfer is final.
Crypto transactions can't be reversed once sent — there's no bank to call, no "undo" button. Double-check the recipient and amount below before signing.
Cancel
Sign

Cancel
Submit

Polygon Mainnet
From
0x12E26B056C04b4e...dcE48
To
0x74426B056C0493...1e7C1C
Paste
MATIC
100.00 MATIC
Balance : $951.35
Total
0.0000647 MATIC
Max amount:
0.000108
MATIC
Likely in < 30 seconds
Max fee:
0.000108
MATIC
Estimated gas fee
0.0000647 MATIC
Advance Options

0
WXYZ
9
TUV
8
PQRS
7
MNO
6
JKL
5
GHI
4
DEF
3
ABC
2
1
Enter Wallet Pin
Enter wallet pin to confirm transaction
8
8
|
Cancel

Risk
Saying "final" once and having it skipped past does nothing — repeating it is what makes it land.
Crypto transfer is not just a wallet action
The final design keeps Send, Request, Receive, wallet confirmation, and transaction status inside the chat context. My key takeaway was that users do not only need a faster transfer flow; they need enough clarity and confidence to confirm a transaction involving real assets.




