clifordsymack / Electron-Cash

Electrum; Bitcoin thin client
MIT License
6 stars 3 forks source link

Blame -> Temp Ban is coming! Needs some UI changes. #76

Open cculianu opened 5 years ago

cculianu commented 5 years ago

Since @zquestz said he's going to be thinking about implementing some banning logic on the server for bad actors in the shuffle, the UI needs some changes.

IF and only if it's the case that aborting a shuffle mid-shuffle because you closed the app and/or closed cash shuffle THEN

  1. Don't allow users to close right away, but instead present them with a Waiting for shuffle to complete... Phase X with a small button Abort and Exit Now (sort of how the Windows OS doesn't always let you do anything if it's busy -- except this would be less annoying, faster, and has an override!)

If you are banned:

  1. Provide UX/feedback in UI (Josh said a stats port field might get added) so user knows why it stopped working.

The only thing I don't know for (1) above is whether it's true that users can accumulate blame for aborting a shuffle/disconnecting mid-shuffle. I'm not sure that's the case. So (1) only happens if it is. (More research needed here of me digging the code/protocol rules).

zquestz commented 5 years ago

I think the window should just show the status and block till they are done with the shuffle. We are talking a few seconds. We don't need the abort imho.

imaginaryusername commented 5 years ago

@zquestz the abort button might be useful anyway if they really want to shut down EC for some reason (for example, they suspect some malicious program might be attempting to steal decrypted wallet and are panicking; or their boss is walking in and they really can't afford to wait). Imo it's better UX to give user this option instead of making them kill -9.

zquestz commented 5 years ago

Gotcha, makes sense.

cculianu commented 5 years ago

@zquestz

I think the window should just show the status and block till they are done with the shuffle. We are talking a few seconds. We don't need the abort imho.

It could take up to a minute.

FWIW: I don't like apps that don't let me quit when I feel like it. They tend to not live very long on my system. it's a pet peeve of mine..

(Microsoft Outlook comes to mind...)

cculianu commented 5 years ago

I'm lowering the priority on this because right now I haven't seen banScore go up as a result of premature disconnect so likely blame/ban can't happen as a result of that (yet).

Correct me if I'm wrong, though. :)

emergent-reasons commented 5 years ago

Just to document my perspective from another discussion, I support simply shutting down the app immediately on request. I see the following scenarios:

Letting the user get a silent, temporary, minor ban seems a very low cost to pay compared to the risk of making users nervous by holding up the shut down, pushing them to keep the app open, etc.

zquestz commented 5 years ago

Just to document my perspective from another discussion, I support simply shutting down the app immediately on request. I see the following scenarios:

  • pool is still building up --> user leaves --> no issue at all
  • pool is full, round has started --> user leaves --> worst case gets full blame and +1 ban score. But If they have been a well-behaved shuffler otherwise, the server ban will not be triggered. They will only be temporarily banned from shuffling with the other players in the pool. No big deal.

Letting the user get a silent, temporary, minor ban seems a very low cost to pay compared to the risk of making users nervous by holding up the shut down, pushing them to keep the app open, etc.

I agree with this thought process. Absolute worst case is a 15 minute ban from repeatedly opening and closing the app after a shuffle begins. Having a nag screen on exit makes the user more likely to find it annoying and turn the feature off imho.

cculianu commented 5 years ago

Just to chime in in agreement:

I think we want to make shuffling as painless and unobtrusive as possible. Ideally it's a background task that "just works". Maybe some users don't even know it exists -- yet they contribute to the liquidity pool.

Annoying users that "hey your background task that just works needs your attention now" when they are about to quit.. is anathema to that. It may decrease participation ...

As an aside: It is an inconvenience to the other shufflers (slightly) since they get delayed by 1 min (or does the server realize the other shuffler died and it kills the pool)? But regardless if liquidity is high (by not annoying users so they keep CashShuffle enabled) the benefit outweighs the cost, IMHO.

Just my two cents.. in agreement here. :)

emergent-reasons commented 5 years ago

As an aside: It is an inconvenience to the other shufflers (slightly) since they get delayed by 1 min (or does the server realize the other shuffler died and it kills the pool)? But regardless if liquidity is high (by not annoying users so they keep CashShuffle enabled) the benefit outweighs the cost, IMHO.

Before the round starts, it's a complete non-issue.

After the full-announcement goes out, they will probably get blamed but that doesn't matter as mentioned above and the server just announces a new round so they should wait for the replacement player. In other words, I think roughly a complete non-issue also.