Tables for mapping validation criteria to protoype

One table structuring questions and validation criteria.
One table mapping the criteria to each prototype.
This commit is contained in:
Daniel Karzel 2020-11-20 17:23:08 +11:00
parent 978a72f113
commit f1da5126fa

View File

@ -1,48 +1,117 @@
# XMR<>BTC Atomic Swap - User Interface Prototype Validation
This document sums up the questions that we would like to validated with mocks.
This document:
1. Collects the validation criteria.
2. Lists the created user interface prototypes, and link to Figma.
3. Maps the protoypes to the validation criteria.
This document will be updated with new information during the course of the project.
## Questions
The questions are split between maker (liquidity provider) and taker (normal user), because the objectives are somewhat different.
Is a `taker` happy to...
1. run a bitcoind full-node
1. run a monerod full-node
1. use a webpage for discovering makers
1. open "random" (tor) website found on various media (forums, chat) to access a single market maker
1. download software (swap execution daemon) before being able to do a swap
1. keep a GUI/CLI open for the whole length of the swap execution
1. keep a computer running (that host the daemon) for the whole length of the swap execution
1. Swap funds held in monero-wallet (monerod)
1. Swap funds held in bitcoind wallet
1. give control over the bitcoin and monero wallets to the swap execution daemon
1. keep the browser open for the whole length of the swap execution
1. have different steps (locking first vs second) depending on the direction of the swap
1. to not use tor
... to do an XMR<>BTC swap?
Is a `maker` happy to...
1. run a bitcoind full-node
1. run a monerod full-node
1. set up a webpage where takers get a price
1. publicly advertise being a maker
1. have different steps (locking first vs second) depending on the direction of the swap
1. run the swap execution daemon without using Tor
... to do an XMR<>BTC swap?
The questions are split between `M`aker (liquidity provider) and `T`aker (normal user), because the objectives are somewhat different.
| **Topic** | **High Level Questions** | **More specific question** | **User is happy to...** | **Actor** |
| --- | --- | --- | --- | --- |
| Node & Wallet Management | How do users monitor the Bitcoin and Monero blockchain? | Is a user fine with trusting a third party to monitor transactions? | use a service like blockchain.com to retrieve blocks for validation | TM |
| | | | run his own Bitcoin node, third party service for Monero | TM |
| | | | run his own Monero node, third party service for Bitcoin | TM |
| | | | run both his own Bitcoin and Monero node | TM |
| | How do users brodcast transactions to Bitcoin and Monero? | Is a user fine with trusting a third party to broadcast transactions? | use a wallet that connects to third party nodes | TM |
| | | | send signed transactions through third part nodes | TM |
| | | | run his own Bitcoin node, third party service for Monero | TM |
| | | | run his own Monero node, third party service for Bitcoin | TM |
| | | | run both his own Bitcoin and Monero node | TM |
| | How do users manage their wallets to interace with other software? | Do users want to use already existing wallets? | fund and redeem from existing wallets | TM |
| | | | fund from existing Monero wallet, redeem to new Bitcoin wallet | TM |
| | | | fund from existing Bitcoin wallet, redeem to new Monero wallet | TM |
| | | | fund and redeem into new wallets (explicitly used for swap execution) | TM |
| | | What level of control does the user give to the execution daemon? | give the execution daemon control over the wallets (no user interaction, fully automated) | TM |
| | | | use a Bitcoin transaction to give funds to the swap application | TM |
| | | | use a Monero transaction to give funds to the swap application | TM |
| | | | explicitly sign each transaction | TM |
| Discovery | How do users discover trading partners? | Do users care about privacy? | go to website and take price from there | T |
| | | | set up website (publicly) to advertise price (and connection information) | M |
| | | | open "random" (tor) website found on various media (forums, chat) to access a single market maker. | T |
| | | | configure Tor for trading | TM |
| | | Do users care about P2P? | use a centralized service to find makers | TM |
| | | | user a decentralized service to find makers | TM |
| Software Setup | | | download software (swap execution daemon) before being able to do a swap | T |
| | | | keep a GUI/CLI open for the whole length of the swap execution | T |
| | | | keep a computer running (that hosts the daemon) for the whole length of the swap execution | T |
| | | | keep the browser open for the whole length of a swap | T |
| Protocol | | | have different steps (locking first vs second) depending on the direction of the swap | TM |
## Prototypes
This section lists the created user interface prototypes to the questions they should validate.
In the initial project description we distinguished product `A` a single market-maker product and product `B` a product including peer-to-peer discovery and multiple makers.
### A-1 Single-Maker Webpage and CLI
```
P ... Prototype that showcases a complete swap setup flow.
D ... Prototype that focuses on a specific detail of swap setup / execution.
{}-A ... Prototype for product A (single market maker)
{}-B ... Prototype for product B (decentralized trading platform)
```
Example:
`D-A2-1`: Mock showing detail 1 for prototype `P-A1`
### Figma Links
* [P-A1](https://www.figma.com/proto/QdvmbRYuBpEpFI3D1R4qyM/XMR-BTC_SingleMaker_LowFidelity?node-id=54%3A4894&viewport=1503%2C-52%2C0.5576764941215515&scaling=min-zoom): Webpage for discovery, CLI for execution
* [P-A2](https://www.figma.com/proto/QdvmbRYuBpEpFI3D1R4qyM/XMR-BTC_SingleMaker_LowFidelity?node-id=7%3A4377&viewport=696%2C-250%2C0.362735778093338&scaling=min-zoom): Webpage for discovery, GUI for execution
* [D-A2-1](https://www.figma.com/proto/QdvmbRYuBpEpFI3D1R4qyM/XMR-BTC_SingleMaker_LowFidelity?node-id=235%3A1374&viewport=1336%2C-1825%2C0.7878535389900208&scaling=min-zoom): GUI swap execution steps for `send` `BTC`, `receive` `XMR`
* [D-A2-2](https://www.figma.com/proto/QdvmbRYuBpEpFI3D1R4qyM/XMR-BTC_SingleMaker_LowFidelity?node-id=128%3A8016&viewport=1404%2C-1158%2C0.66261225938797&scaling=min-zoom): GUI swap execution steps for `send` `XMR`, `receive` `BTC`
### Mapping of Prototype to validation criteria
| **User is happy to...** | **Actor** | **P-A1** | **P-A2** | **D-A2-1** | **D-A2-2** |
| --- | --- | --- | --- | --- | --- |
| use a service like blockchain.com to retrieve blocks for validation | TM | | | | |
| run his own Bitcoin node, third party service for Monero | TM | | | | |
| run his own Monero node, third party service for Bitcoin | TM | | | | |
| run both his own Bitcoin and Monero node | TM | T | T | | |
| use a wallet that connects to third party nodes | TM | | | | |
| send signed transactions through third part nodes | TM | | | | |
| run his own Bitcoin node, third party service for Monero | TM | | | | |
| run his own Monero node, third party service for Bitcoin | TM | | | | |
| run both his own Bitcoin and Monero node | TM | T | T | | |
| fund and redeem from existing wallets | TM | T | T | | |
| fund from existing Monero wallet, redeem to new Bitcoin wallet | TM | | | | |
| fund from existing Bitcoin wallet, redeem to new Monero wallet | TM | | | | |
| fund and redeem into new wallets (explicitly used for swap execution) | TM | | | | |
| give the execution daemon control over the wallets (no user interaction, fully automated) | TM | T | T | | |
| use a Bitcoin transaction to give funds to the swap application | TM | | | | |
| use a Monero transaction to give funds to the swap application | TM | | | | |
| explicitly sign each transaction | TM | | | | |
| go to website and take price from there | T | | | | |
| set up website (publicly) to advertise price (and connection information) | M | M | M | | |
| open "random" (tor) website found on various media (forums, chat) to access a single market maker. | T | | | | |
| configure Tor for trading | TM | | | | |
| use a centralized service to find makers | TM | T | T | | |
| user a decentralized service to find makers | TM | | | | |
| download software (swap execution daemon) before being able to do a swap | T | | | | |
| keep a GUI/CLI open for the whole length of the swap execution | T | | | T | T |
| keep a computer running (that hosts the daemon) for the whole length of the swap execution | T | T | T | T | T |
| keep the browser open for the whole length of a swap | T | | | | |
| have different steps (locking first vs second) depending on the direction of the swap | TM | | | T (M) | T (M) |
Legend:
```
T ... Taker
M ... Maker
TM ... Taker and Maker
T (M) ... Taker showcased, Maker implicitly concerned as well
```
## Interviews
Through user interviews we plan to collect more information on the current setup of users, and how it could be used in a potential product.
Specific prototypes showcase specific answers to the questions listed above. We may use the prototypes in interviews to showcase scenarios.
### A-1 Single-Maker Webpage and CLI