Skip to content

Transaction decoding v1: design decisions

Sasha Postnikova edited this page Nov 6, 2020 · 3 revisions

Links
1 - Owners don’t know what they’re signing 📆

Mobile
Show decoded function & params on tx details v1 #329 🐱
Data decoding v2 - Special handling for multisends #350 🐱
Data decoding v3 - More info in Multisends #351 🐱
Data decoding v2 and v3 - Special handling for multisends 📆
Multisend Miro board 📌

Web
Transaction context #244 🐱
Transaction context #338 🐱
Decoding Transaction Information in Tx List #882 🐱
Decode multiSend tx details #1106 🐱
Add "Action" details in transaction list #1134 🐱

Platform: mobile, web

App version: Android 2.2.0, web v2.9.0

Which problem do we solve?
Owners don’t know what they’re signing (see 1 - Owners don’t know what they’re signing 📆). Transaction data is cryptic.

How does the feature fit into the product and larger product decisions?
This feature changes the way data is displayed in contract interactions and custom transactions. Before we displayed hex data without decoding (on mobile - with amount of bytes):

This feature allows to show function names and parameters in a human readable way. This is the first step. Web and mobile are not quite aligned on this. Multisend is not included in v1.

What are the metrics and KPIs we will be measuring for this feature?
Track screen ‘Action details’.

Is there user research or quantitative data informing decisions made here?
Data from discovery interviews Q1 2020 💡
Insights from discovery interviews Q1 2020 💡
Roadmap Q3/Q4 2020 📆

Screens

1. Web – transaction details

2. Mobile – transaction details

Main design decisions

1. Action vs function vs operation

We call it Action, because web interface and Etherscan do so, and there was no negative feedback.

2. Show Action in tx details or on separate screen

We chose the separate screen instead of expandable view because it’s less crowded. The same structure will be used for multisend.

3. How to show possible parameter types

Possible parameter types are: address, integer, boolean, hex data, array (of addresses, integers, boolean, hex data), empty array, nested array. We use simple lists and reuse existing layouts for addresses.

4. Parameters with or without indentation

Show action name (safeTransferFrom) in the nav bar instead of ‘Action details’ because it looks cleaner and no additional work to implement indentation required.

5. How to display parameter without name

Show ‘empty’ because it can’t be null. If empty string is returned then that's “shown”.

6. How to display the method with no parameters

Show ‘empty’.

7. How many levels to nested arrays

Limit nesting levels to 10. Strings or values are not cut-off or ellipsized, they’re displayed in full (squeezed, in a very deep level of nesting).

User tests – insights, changes after user tests

tbd

Changes after release, metrics

V2 added special decoding for multisends (see Transaction decoding v2: design decisions).

Clone this wiki locally