[bisq-network/projects] Prototype for offer book and create offer UX for Bisq 2.0 (Misq) (#57)

chimp1984 notifications at github.com
Sun May 9 04:41:57 CEST 2021


> _This is a Bisq Network project. Please familiarize yourself with the [project management process](https://bisq.wiki/Project_management)._

## Description
A click dummy prototype to demonstrate the UX for the offerbook and create offer screen for multiple trade protcols.
It should include an on-chain and one off-chain protocol (e.g.MultiSig based protocol and Reputation based protocol)

## Rationale
We should find out early how we meet the UX challenges with the multi protocol design. 

## Criteria for delivery
A clickdummy is provided demonstating the UX of offerbook and create offer screen.

## Measures of success
A clickdummy fulfilling the described requirements is delivered.

## Risks
Clickdummy does not meet requirements.

## Tasks
TBD

## Estimates
TBD

## Notes

The added complexity by multiple options should be turned into a positive aspect by using it as a way to educate users.
The ledger wallet desktop application has done a great UX job in that regards (very clear guidance with good explainations at each step, using the mental model of "apps" for features like loans, exchange, support for many diff. coins).

Beside that we intent to bring more social aspects into Misq, so that should be kep in mind as well and might be a useful tool to combat the challenges. But that aspect is not much developed yet.

Of course privacy and security are the highest priorities, but as both come with some trade-offs (costs for security, limitation to on-chain, convenience,...) we want to provide more flexibility.
E.g. for small amounts the high security of Bitcoin is not always needed. With fiat trades the bank details are exposed to the peer, so privacy is already weakened in that context.

That said we have to take care to not create the wrong impression that we move away from our core principles. We just need to bring things into the right context and show the trade-offs and allow users to choose their trade-offs.

## Data model
I think it is useful for a UX designer to know the basic data model to see where are multiple options required.

- Offers can have different contract types (asset exchange, loand, options,... Initially we only support asset exchange).
- Each different contract types will have its dedicated offerbook
- An offer has one or multiple protocol types (ATOMIC_CROSS_CHAIN_SWAP, LN_SWAP, MULTISIG, BSQ_BOND, REPUTATION,...). If there are multiple the taker will select the one used for the trade.
- A offer for asset exchange (SwapOffer) has 2 assets for the ask/bid side. It can have an optional market based price. If not defined the fix price is derived from the amounts of the 2 assets.
- An asset has the currency code, an amount and 0-n transfer type(s) (in case the asset is transferred out of band of the protocol)
- A transfer type is an enum (e.g. SEPA account,..). Based on that we can derive properties like duration,...
- Depending on the protocol type there can be optional fields (e.g. for a MultiSig protocol: % of security deposit)

Current POC data model is here (but no need for a UX designer to check that out):
https://github.com/chimp1984/misq/tree/master/finance/src/main/java/misq/finance

## Offerbook
Here is an attempt to triangle the UX requirements for the multiple protocol support in Bisq 2.0/Misq.

This is based on current Bisq UX, but if anyone has a better UX model in mind it is very welcome.

## Offerbook
We do not use the BUY/SELL concept as with a trade between assets of the same class like EUR-USD there is no money/commodity distinction so buy/sell is not intuitive.
Rather we should use the ASK/BID (I want/I have) terminology.
Derived from that the offerbook will not have a buy/sell side but filter options to narrow down the displayed offers.
In the following I handle only exchange contracts, but we should keep in mind the plans for other contract types like loans, options,... 

The offerbook is a table with the min. set of common fields and with an option for expanding the details.

| Ask		| Ask amount| Price 				| Bid 	| Bid amount | Protocol		| {Button} 	| {Button} 		| 
| --------- |:---------:| ---------------------:| -----:| ----------:| ------------:| --------:| -------------:|
| EUR		| 5000 		| 56235 BTC/EUR (1.2%) 	| BTC	| 0.0913	 | MultiSig		| INFO		| TAKE OFFER	| 
| EUR		| 3333 		| 1.21 USD/EUR (2.2%) 	| USD	| 3555	 	 | BSQ Bond		| INFO		| TAKE OFFER	| 
| BTC		| 2 		| 250 XMR/BTC (0%) 		| XMR	| 500	 	 | Atomic swap 	| INFO		| TAKE OFFER	| 	

At click on info (or selecting the table row) the row expands to shows the details and optional contact button to open a privat chat with the maker.
Those details are specific to the protocol used in the offer.


### Filter
We could offer 2 types of filter: One more technical with checkboxes, search strings,... and another one more dialog orientated for new users (e.g. What do you want {EUR, BTC,...} -> Which protocol -> ...
I have not though much about the details of the filter but the create offer scree might serve as model as there we are required to guide the user through the options and a similar challenge need to be met at the offer book filter.

The user can define in settings their preference for filtering (e.g. hide all reputaton based offers, only  show BTC offers, allow contact,...).


## Create offer
It guides the user through a minimal set of stages which will depend on the context (e.g. selected asset, protocol).
 

1. Select contract type {Dropdown [Currency exchange, Loan, Option trade,...]}  - as long we only have Currency exchange that step is omitted.
Different contracts will have different screens, for now we cover only currency exchange. 

2. Select Assets:
ASK (I want): {Dropdown [BTC, XMR, EUR, USD,....]} 
BID (I give): {Dropdown [BTC, XMR, EUR, USD,....]} 

3. Set amount / price: 
Once both assets are selected the screen shows 2 input text fields for amounts of both assets and in the middle the price (fix + percentage). This can be done similar as in current Bisq.


4. Select protocol

Table with protocols and properties:
| Protocol 						| Security 		| Requirements 			| Fees 	| Min. Duration		 | Transfer					|
| ----------------------------- |:-------------:| ---------------------:| -----:| ------------------:| ------------------------:|
| Atomic swap 					| Best 			| Funds in XMR Wallet	| 0.2% 	|  1 block (10 min.) | on-chain <-> on-chain	| 
| Lightning Network based 		| High 			| Fund in LN Wallet		| 0.3% 	|  Instant 			 | Layer 2 <-> off-chain	|
| MultiSig based				| High 			| 0.15% Collateral		| 0.3% 	|  1 block (10 min.) | on-chain <-> off-chain	|
| BSQ Bond based 				| Medium 		| BSQ bond				| 0.3% 	|  Instant 			 | off-chain <-> off-chain	|
| Reputation based 				| Low 			| Reputation			| 0 % 	|  Instant			 | off-chain <-> off-chain	|

On row selection (and row rollover) an info text is displayed explaining the protocol, requirements and risks.
Details in the table could be shown as icons instead of details as well. Intention is to show trade-offs of all protocols, e.g. security vs. convenience/costs.
Not available protocols for the selected assets are hidden. In case there is only one possible protocol the whole stage is skipped.

5. Protocol specific inputs
Cusom forms for protocol specific options if required, otherwise that stage is skipped.

Example for MultiSig based protocol:
- Set % of security deposit
- Fee options
- Shows required funds for wallet.

Connects to wallet and make sure the required funds for collateral is available. 
The offer would become inactive in case the wallet does not have enough funds.

Example for Reputation based protocol:
Which form of reputation can I provide?  {Dropdown [Social media, WoT,...]} or define custom in textfield. Multiple selections are possible as well.
Which form of reputation do I accept from peer?  {Dropdown [Social media, WoT,...]} or define custom in textfield. Multiple selections are possible as well.

6. Protocol specific transfer/payment accounts
Similar to payment selection in current Bisq but instead we have the pre-condition of an existing account we allow the user here to define an offer and in case there is no account/wallet set up yet the user will be promted at that stage to do so. After setup they will return and will find their offer like before they left for wallet/account setup (or that setup is done in a popup and after closing it its filled in here). 

Example for MultiSig based protocol:
If I sell BTC:
How do I send BTC? {Dropdown [Bitcoin core wallet, Electrum wallet, Ledger....]} - if no wallet set up yet the user can do it here. Only 1 wallet supported per offer as we need to check wallet balance. 
How do I want to receive EUR? {Dropdown [My SEPA Account, My Revolut account,...]} - if no account set up yet the user can do it here. Multiple options allowed

If I buy BTC:
How do I receive BTC? {Dropdown [Bitcoin core wallet, Electrum wallet, Ledger....]} - if no wallet set up yet the user can do it here.
How do I send EUR? {Dropdown [My SEPA Account, My Revolut account,...]} - if no account set up yet the user can do it here. Multiple options allowed

Example for Reputation based protocol:
If I ask EUR and bid USD:
How do I send USD? {Dropdown [My ZELLE Account,....]} - if no account set up yet the user can do it here.
How do I receive EUR? {Dropdown [My SEPA Account, My Revolut account,...]} - if no account set up yet the user can do it here.



 




-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/bisq-network/projects/issues/57
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bisq.network/pipermail/bisq-github/attachments/20210508/18fcf5a1/attachment-0001.htm>


More information about the bisq-github mailing list