get10101 / 10101-PoC

The world needs more Lightning!
MIT License
17 stars 2 forks source link

Create user journey for the TenTenOne wallet #16

Closed holzeis closed 1 year ago

holzeis commented 1 year ago

A lowfi set of user interfaces depicting the user journey through the app including the following flows.

holzeis commented 1 year ago

we might skip the edge cases and unhappy paths for now.

da-kami commented 1 year ago

I suggest to use Miro's App Wireframe toolkit for modelling.

I created 10101 Wireframe board within the CoBloX Miro team. You should all be able to see it as you are part of the CoBloX team.

I did not start modelling yet, but would start tomorrow.

da-kami commented 1 year ago

I am using Figma to create the wirefames. Here's the board:

https://www.figma.com/file/zUBJpQ0v8cx6DHivS10OeI/TenTenOneWireFrame?node-id=0%3A1

Note: Initially started with Miro, but their Layer hierarchy system and the limited functionality for layouting resulted in quite some pain so I switched back to Figma. Cursing counter has gone significantly down with Figma :)

da-kami commented 1 year ago

The bigger picture

⬅️ Unfold here to see a big table with things that we could do that goes beyond the tournament In and attempt to think about pain-points that users have I came up with the table below to sum up domain / use-case and potential features that we have been mentioning in the past. This table is not complete, but might help to think about who we want to target and what we could do. The table is not perfect in mapping abstraction perfectly, but it still helped me to think in multiple dimensions and structure my thoughts. This does not mean that we have to build all tools ourselves, we could also integrate others (if we ever want to be an app-platform) like e.g. Breez does. | Domain | Use-Case | Feature | Copy 🐱 | Comments | |-------------------------------------|-------------------------------|------------------------------------------------------|--------------------|-----------------------------------------------------------------------------------------------| | Wallet | On-/Off-boarding | Enter/Exit with BTC | Phoenix Wallet | | | | | Enter/Exit with Fiat | | This requires trust and Licenses | | | | Accounting / TAX | | Once we do off-ramp it would be very nice to have this, might even consider it earlier. | | | Payments | Send/Receive Lightning | Phoenix Wallet | | | | Wallet Stuff | Standard Wallet Setup/Backup (12/24 seed words) | Phoenix Wallet | | | | | Currency Switch (display in my currency) | Phoenix Wallet | | | | | Lightning Node as a Service Auto Channel management | | The user only holds the keys but does not have to run nodes / manage opening channels | | | | Multiple wallets | Blue Wallet | | | | | Plug into your own setup (self souvereign) | Blue Wallet | | | Trading short term, high frequency | Derivatives | CFDs | (ItchySats) | | | | | Options | | Taro? | | | | Hedging Risk | Atomic Finance (?) | Can tailor an e.g. option solution to specific use-cases for risk mitigation through hedging. | | | | Futures | | | | | Spot | DEX | (UniSwap) | Taro? | | Investing long-term, less frequency | "Savings Product" | Liquidity Pool | | A liquidity pool is to some extent a lending market. | | | | Lending Market | | | | | | "Dividend Stocks" | | Issue stock + dividend in crypto | | | Companies (Investment Portal) | | | "List your company on 10101 (...)" - Build up a token economy? | | | Funds (ETFs, ...) | | | | | General "Bets" | Sports Bets | Simple Binary Sports Bet | | Sports bets (and bets in general) also have a social aspect! | | | ESport Bets | | | | | | Bets on political events | | | | | Marketplace | Buy/Sell stuff with Bitcoin | | | | | Social | Forum / Chat / Social Media | | Stackernews | | | | Tipping | | | | | | Identity | | | | | Rewards / Coupons | Cashback | | Satsback | | | Crypto Infra | Watchtower | | | | | | Oracle | | | |

Feel free to unfold the details below and have a look for inspiration.

The tournament

The initial ticket description mentioned and my thought about them

I would like to see this in a bit more high-level context. The following table is what I think we will focus on during the tournament when wireframing / mocking. This does not mean we have to build all of this :)

Domain Use-Case Feature Copy 🐱 Comments
Wallet On-/Off-boarding Enter/Exit with BTC Phoenix Wallet
Payments Send/Receive Lightning Phoenix Wallet
Wallet Stuff Standard Wallet Setup/Backup (12/24 seed words) Phoenix Wallet
Currency Switch (display in my currency) Phoenix Wallet
Lightning Node as a Service Auto Channel management Phoenix Wallet The user only holds the keys but does not have to run nodes / manage opening channels
Trading short term, high frequency Derivatives CFDs (ItchySats)
General "Bets" Sports Bets Simple Binary Sports Bet Sports bets (and bets in general) also have a social aspect!

Pain Points

With the above tournament feature set in mind I am trying to derive pain points that the user has to focus on them in the wireframe. Generally I am trying to get the navigation right first (i.e. how does the user navigate within the app to achieve solving/overcoming a painpoint) before focusing on UI in detail.

Best experience Lightning Wallet:

Phoenix, we can copy most of what they do for onboarding and payments. We might be able to improve the flow slightly, but their experience is already quite optimized when it comes to nr. of steps and convenience.

bonomat commented 1 year ago

@da-kami : thanks for the great write-up. I'll go into some of the questions you've raised:

  • ❓ Are we expecting the setup to include that the Lightning Node runs on your phone? I would prefer to have a Phoenix setup where we run it for the user but they hold the keys. Is that feasible?

Ideally everything runs on the phone, i.e. the whole lightning node runs on the phone. This should be resource efficient enough. The only challenge I see is the online requirement: This is a thing we can outsource, i.e. Watchtowers. Afaik Phoenix is a full node running on your phone as well. I'm not sure how they solve the online requirement.

  • ❓When we fund a position, how will the validation look? This will be on Layer 2, i.e. in a channel. Is there some form of explorer that we can use to show credability of the non-custodial setup; similar to what we use mempool.space for at the moment to show the multisig on chain? @bonomat

The channel opening will be visible on chain, i.e. a 2-of-2 multisig with your counterparty. From there everything else is off-chain. This means, opening a new CFD will be an off-chain transaction and there is nothing to monitor on-chain. The same goes for closing a position: it will be closed into the channel, which means, there is no transaction to link to

Pain Points

....

  • Onboarding:
    • How many steps are needed until I can use the wallet?

Imho there should be 0-steps to start the app and a wallet should be created by default. Only if the user wants to import existing seeds we could show a little wizard.

  • How do I backup the seed words of a new wallet?

I like what I saw in the wireframes: a warning sign that he hasn't gone through the back-up procedure yet.

  • How to handle the Lightning Node setup?

What do you think of going for Simple and Advanced. Simple opens a channel with us and Advanced allows the user to open a channel manually to anyone. The latter one we don't have to implement right away.

  • How do I get initial money into the wallet?
    • Use existing lightning wallet

Do you mean by paying from an existing LN wallet? I don't think this is possible if he does not have a channel yet.

  • Allow funding with BTC (non-custodial)

πŸ‘

bonomat commented 1 year ago

@da-kami : thanks for the great write-up. I'll go into some of the questions you've raised:

  • ❓ Are we expecting the setup to include that the Lightning Node runs on your phone? I would prefer to have a Phoenix setup where we run it for the user but they hold the keys. Is that feasible?

Ideally everything runs on the phone, i.e. the whole lightning node runs on the phone. This should be resource efficient enough. The only challenge I see is the online requirement: This is a thing we can outsource, i.e. Watchtowers. Afaik Phoenix is a full node running on your phone as well. I'm not sure how they solve the online requirement.

After looking into Phoenix with @da-kami and @luckysori it looks like they are not running the full node on your phone. It's more likely they use a similar setup like BlueWallet with LNDHub

da-kami commented 1 year ago

@da-kami : thanks for the great write-up. I'll go into some of the questions you've raised:

  • ❓ Are we expecting the setup to include that the Lightning Node runs on your phone? I would prefer to have a Phoenix setup where we run it for the user but they hold the keys. Is that feasible?

Ideally everything runs on the phone, i.e. the whole lightning node runs on the phone. This should be resource efficient enough. The only challenge I see is the online requirement: This is a thing we can outsource, i.e. Watchtowers. Afaik Phoenix is a full node running on your phone as well. I'm not sure how they solve the online requirement.

After looking into Phoenix with @da-kami and @luckysori it looks like they are not running the full node on your phone. It's more likely they use a similar setup like BlueWallet with LNDHub

I think they do run a node on the phone, but I am not sure about the exact setup; see: https://phoenix.acinq.co/faq#is-phoenix-a-real-lightning-node As far as my understanding goes they run Eclair with Electrum (that by default points to their infra) as Bitcoin backend and channel management via their node infrastructure; would have to dig into code to understand the exact setup.

da-kami commented 1 year ago

See https://github.com/itchysats/10101/pull/42 for more detailed wallet comparison that collects information around setup and feature set.

holzeis commented 1 year ago

@da-kami can we close that issue? I think the most part of it is already done, and the rest will be covered in follow up tickets?

da-kami commented 1 year ago

Yeah, Create payment channel with maker is actually missing, but I am adding the screens as part of the specific feature tickets.