TLDR: The goal of this post is to get feedback on our first user-flow models on synchronous and asynchronous transactions. This will help move our wallet design forward. We’re specifically looking for feedback on:
Thanks everyone for your help and engagement. We’re excited to move the project forward.
Schedule Note: We'll get into a regular posting rhythm within the next week or so.
@gavinmcdermott and I have been working on a user interaction model for the Grin wallet. We’re focused on designing a desktop wallet for the “next 10%” of users. These people may have a light technical understanding but are not necessarily developers, and they’re people that may have completed a cryptocurrency transaction in the past.
Early Design Principles
1. Abstract away complexity. Grin transactions are actually quite complex compared to Bitcoin transactions, but most users don’t need to be exposed to the details.
2. Design for the next 10% of users. Enable others that may not be as technically competent to transact in easy, seamless ways that are still trust-less.
Practical Assumptions (that impact UX)
1. Most transactions will happen asynchronously. (Implications: this will require an external transaction relayer service)
2. Accepting inbound transactions should happen automatically.
The user-flow diagrams (below) surface the minimum required user inputted information and actions to complete a transaction. There’s a lot of assumptions we’ve made here and many questions we have. We'd appreciate your feedback and questions.
Transaction 1: Synchronous transactions. Both sender and receivers wallets are online.

Transaction 2: Asynchronous transactions.
We believe most transactions will happen this way because sender and receiver may not be online at the same time, or users don’t have access to static IP addresses, and firewalls or secure networks getting in the way, etc. All that is to say, asynchronous transactions require a relayer between the sender and receiver.

Questions
- Are there any other types of transactions that we should consider in the design?
- For the two transactions we’ve illustrated, are some of our assumptions correct? Are we any data at any step that a user would be required to input?
- Are our assumptions correct? Where are there gaps in our understanding?
- The fact that there are relayers required for asynchronous transactions, makes us think now is the time to settle on a standard for relayers? Should we set a standard for something like a Grin Relay Interface (GRI)?
- How can we engage in setting this standard?
- There are important user-centered questions for the GRI, such as:
- When a user opens their wallets, can it poll relayer for any partially completed transaction sent from that wallet that are still in a pending state?
- Can a user cancel a pending transaction that’s sitting at the relayer?
- Can (and should) a wallet interface with many relayers?
TLDR: The goal of this post is to get feedback on our first user-flow models on synchronous and asynchronous transactions. This will help move our wallet design forward. We’re specifically looking for feedback on:
Thanks everyone for your help and engagement. We’re excited to move the project forward.
Schedule Note: We'll get into a regular posting rhythm within the next week or so.
@gavinmcdermott and I have been working on a user interaction model for the Grin wallet. We’re focused on designing a desktop wallet for the “next 10%” of users. These people may have a light technical understanding but are not necessarily developers, and they’re people that may have completed a cryptocurrency transaction in the past.
Early Design Principles
1. Abstract away complexity. Grin transactions are actually quite complex compared to Bitcoin transactions, but most users don’t need to be exposed to the details.
2. Design for the next 10% of users. Enable others that may not be as technically competent to transact in easy, seamless ways that are still trust-less.
Practical Assumptions (that impact UX)
1. Most transactions will happen asynchronously. (Implications: this will require an external transaction relayer service)
2. Accepting inbound transactions should happen automatically.
The user-flow diagrams (below) surface the minimum required user inputted information and actions to complete a transaction. There’s a lot of assumptions we’ve made here and many questions we have. We'd appreciate your feedback and questions.
Transaction 1: Synchronous transactions. Both sender and receivers wallets are online.
Transaction 2: Asynchronous transactions.
We believe most transactions will happen this way because sender and receiver may not be online at the same time, or users don’t have access to static IP addresses, and firewalls or secure networks getting in the way, etc. All that is to say, asynchronous transactions require a relayer between the sender and receiver.
Questions