Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2][startailcoon][1.5][svk] Withdraw should take into account both FEE and GATEWAY FEE #530

Closed
wmbutler opened this issue Oct 9, 2017 · 38 comments
Labels
[3] Feature Classification indicating the addition of novel functionality to the design [4c] High Priority Priority indicating significant impact to system/user -OR- workaround is prohibitivly expensive
Milestone

Comments

@wmbutler
Copy link
Contributor

wmbutler commented Oct 9, 2017

This is a high priority bug.

Tonight, I withdrew .2060 BTC to Coinbase. As you can see from the screenshot, only .2057 arrived. That appears to be correlated with the .0003 Openledger gateway fee. To manage expectations, our wallet should ensure that the amount the user intends to withdraw is the amount that appears in the destination wallet.

screen shot 2017-10-09 at 12 49 19 am

@wmbutler wmbutler added [3] Bug Classification indicating the existing implementation does not match the intention of the design [4c] High Priority Priority indicating significant impact to system/user -OR- workaround is prohibitivly expensive labels Oct 9, 2017
@wmbutler wmbutler added this to the 171015 milestone Oct 9, 2017
@wmbutler wmbutler changed the title Withdraw should take into account both FEE and GATEWAY FEE [.25] Withdraw should take into account both FEE and GATEWAY FEE Oct 9, 2017
@btsfav
Copy link

btsfav commented Oct 9, 2017

and how do you monitor the fees? what if they change?

@wmbutler
Copy link
Contributor Author

wmbutler commented Oct 9, 2017

The gateway fee is present in the withdrawal form. This is just a math issue.

@svk31
Copy link
Contributor

svk31 commented Oct 9, 2017

I don't think we should do the math for them, but we can add a "You will receive" field.

@wmbutler
Copy link
Contributor Author

wmbutler commented Oct 9, 2017

We are already doing the math for the BTS fee. We should be consistent and extract all fees. This will also solve instances where they are attempting to deduct all funds from their account.

If I plan to move 101.234 BTS to another location, the other location should receive exactly 101.234 BTS.

Following this protocol will also make it impossible for a user to attempt to withdraw more funds than they have because we can actually show the total available for withdrawal with the exchange fee and the gateway fee factored in.

I disagree with having a "You will receive" field that disagrees with the value entered by the user.

@tbone-bts
Copy link

I totally agree with Bill on this. I really don't think we should be making users do the math. Most of the time they will not realize they were supposed to take the fee into account. And sometimes they might realize it but simply miscalculate. This is just an unnecessary UX mine field. I can't think of a wallet that doesn't add the fee on top of the amount the user wishes to send.

@svk31
Copy link
Contributor

svk31 commented Oct 10, 2017

I just don't like how this complicates things in the other direction. Say the fee is 0.03 and I want to withdraw exactly 100 from my account, I will then need to actually enter 99.97.

We can't modify the input field while the user is typing, so adding the fee will need to happen when you try to submit the withdrawal. So you'll enter 100, get a confirmation screen that says 100.03, then become confused. Or say you type something that exceeds your balance once the fee is added, now we need to add a warning explaining that. So in order to withdraw, you have to start doing math again. Or if your balance is 100 and you type 100, you will receive 99.97 which is the current behaviour.

This is why a "You will receive" field is a much better solution, since it saves you from having to do any math yourself and sidesteps all the potential corner-cases that doing the math the way you want introduces.

@wmbutler
Copy link
Contributor Author

I'm really confused about your statement above. If the user has to manually add back the gateway fee, they are doing math. Here's an example.

I needed to send exactly .12887 BTC to gyft for a card. I sent it twice and it underpaid twice. I had to wait a day for the refund. If I enter .12887, the net result on the send should be that amount. If there is a btc fee of .003, the user will be expected to manually add .003 resulting in a total of 13187. Even if I have a separate field telling me the net send amount, I can't come up with a good reason for forcing the user to calculate this.

Currently, if the user is attempting to empty their account, I think we take the gateway fee into effect and reduce the overall amount as expected. Why not continue with this pattern?

I'm not suggesting that we modify the input screen while the user is typing. The user knows how much they want to withdraw. If the user exceeds their balance, we can display that as they type. This means that the form will not pass validation and we will not need to submit an error message.

@tbone-bts
Copy link

In your scenario below, the user is not withdrawing 100. They are withdrawing 97 and paying a fee of 3. This is what users would expect to happen if they enter 97 as the withdrawal amount.

While I can imagine scenarios where the user would want to reduce their balance by some specific amount regardless of how much that means they'd actually be withdrawing, that's clearly not the typical behavior, which is why every wallet out there adds the fee to the withdrawal amount entered by the user. I highly recommend going this route.

Btw, it might make sense to put the fee directly below the withdrawal amount and show the just total below that. Then when someone clicks to withdraw full balance they will see the total (withdrawal + fee) matching their available balance.

Finally, if the user manually enters an amount that is more than available balance minus fee, then they can simply get insufficient funds warning.

I just don't like how this complicates things in the other direction. Say the fee is 0.03 and I want to withdraw exactly 100 from my account, I will then need to actually enter 99.97.

@svk31
Copy link
Contributor

svk31 commented Oct 10, 2017

If I enter 97 I expect to withdraw 97, not 100 as it would be if we change this as you want and the fee is 3.

@tbone-bts
Copy link

@svk. If you enter 97, you are NOT withdrawing 100. You are withdrawing 97 and paying a fee of 3. Your balance will be debited by 100, but you are withdrawing 97.

@wmbutler
Copy link
Contributor Author

@svk31 if I tell you to pay me 97, I need to receive 97. I'm not going to cover your gateway fees and bts fees.

@btsfav
Copy link

btsfav commented Oct 11, 2017

Centralized exchanges like Bittrex subtract on withdraw too, which makes more sense in my opinion.

If you want to send full amount - which you would do after you're done trading in most cases - you don't want to start some weird math to calculate fees on top just to get max out

@calvinfroedge
Copy link
Contributor

@btsfav @wmbutler @tbone-bts @svk31 So what is the consensus here? Do we add the fee to the amount that is checked against balance availability and what is sent to the API server?

I.e. do we want the scenario where withdraw amount is 100, fee is 3, so receiver gets 100, and sender gets debited 103, or do we want the receiver to get 97 and the sender gets debited 100?

@wmbutler
Copy link
Contributor Author

When I go to the ATM to take out $20. I get $20. There are all kinds of fees including the $3 fee that I'm told about, but I get $20, because that's what I asked for. I hate that @svk31 and I disagree on this topic, but I don't understand the counter argument.

@wmbutler
Copy link
Contributor Author

If we don't fix this issue now, we are going to keep hearing complaints about it until it's fixed.

@svk31
Copy link
Contributor

svk31 commented Oct 12, 2017

If you don't understand the counterargument, try thinking about calvin's scenario. I personally would prefer to be charged 100 when I try to withdraw 100, not 103, but it appears I'm in the minority here.

@wmbutler
Copy link
Contributor Author

wmbutler commented Oct 12, 2017

But if the vendor is asking you to pay 100, you need to give the vendor 100. This is complicated immensely with fractional values where the vendor wants .0122456 and the fee is .0045 and the gateway fee is .0214.

Now I have to back-calculate the withdrawal amount as shown here:

Label Amount
Amount .0381456
Fee .0045
Gateway Fee .0214
Net .0122456

@wmbutler
Copy link
Contributor Author

If you agree to make this change, I have a thought to address this with new UX as I work on this screens. My idea would be to allow the user to enter the value either way (i.e. they could choose to deliver that exact amount to the vendor or they could choose to remove that exact amount from their account. I think it will be pretty slick and I understand that particular need.

@btsfav
Copy link

btsfav commented Oct 12, 2017

withdraw is an exchange withdraw, it's not meant for business or regular wallet use

@svk31
Copy link
Contributor

svk31 commented Oct 12, 2017

withdraw is an exchange withdraw, it's not meant for business or regular wallet use

That's how I view it too and I guess that's the cause of our disagreement.

@wmbutler
Copy link
Contributor Author

It has nothing to do with terminology. This is about managing expectations.

@wmbutler
Copy link
Contributor Author

I withdraw to Bitpay and Coinbase all the time. I use those services to pay for things with online forms. Every time, my bitshares wallet underpays them, so I move my btc to a different wallet just so I don't have to do the math. I'm technical enough to know what's going on, but most of our users aren't.

@calvinfroedge
Copy link
Contributor

calvinfroedge commented Oct 12, 2017

Since you guys are clearly in disagreement, maybe make this a poll on twitter and survey those in the dex channel? @wmbutler @btsfav @svk31

I can see both sides.

@wmbutler
Copy link
Contributor Author

I can make it work from a UI perspective to satisfy both sides... but I'm asking for a concession to go ahead and put this in place for now and I'll UX this for 11/1

@btsfav
Copy link

btsfav commented Oct 13, 2017

@calvinfroedge everyone interested in development should be here already

@wmbutler
Copy link
Contributor Author

wmbutler commented Oct 14, 2017

screen shot 2017-10-16 at 7 59 31 pm

@wmbutler wmbutler modified the milestones: 171015, 171101 Oct 14, 2017
@startailcoon
Copy link
Contributor

Reading your conversation and disagreement on the subject, I think one solution could be to add a field at the bottom stating something like the following:

Total to Withdraw from account: 356.78 (w/Fees 357.58)

If you wish to empty your account you should be able to tell the wallet with clicking the maximum wallet value and it should automatically take all the amount including fees.

@landry314
Copy link

landry314 commented Oct 16, 2017

The people have spoken... I agree it is best that the final amount received by the recipient is the amount you initially put in and the fees are tacked onto that, displayed, then charged to the sender. This is how bank ATMs work, they give you the amount you request but then they withdraw more from your account including the ATM fee. They don't give you $97 when you ask for $100, they give you $100 and deduct $103 from your balance.

@happyconcepts
Copy link
Contributor

I would say something but tbone will just call me a troll and get me banned from the telegram chat again. This is actually the issue I mentioned to Stan and then tbone and everyone shit on me for being noob.

@wmbutler
Copy link
Contributor Author

wmbutler commented Oct 17, 2017

Speak freely @happyconcepts. @tbone-bts doesn't have banning privileges here.

@tbone-bts
Copy link

I don't have banning privileges anywhere, so I never banned anyone. I'm not ever sure who this person is. If it's SparkToken from Telegram, then I merely pointed out that he was trolling and disrupting the chat again, at which point he self-destructed, got banned, and had posts deleted by one of the moderators (I believe it was BTSWolf) who was aware of his prior shenanigans (such as insisting Bitshares is not open source, throwing a tantrum because he was allegedly being ignored on Github, and otherwise deriding Bitshares, the UI, the community, etc). But yeah, speak freely @happyconcepts. I'm sure you really just want to help.

@happyconcepts
Copy link
Contributor

tbone-bts commented 7 minutes ago
I don't have banning privileges anywhere, so I never banned anyone. I'm not ever sure who this person is. If it's SparkToken from Telegram, then I merely pointed out that he was trolling and disrupting the chat again, at which point he self-destructed, got banned, and had posts deleted by one of the moderators (I believe it was BTSWolf) who was aware of his prior shenanigans (such as insisting Bitshares is not open source, throwing a tantrum because he was allegedly being ignored on Github, and otherwise deriding Bitshares, the UI, the community, etc). But yeah, speak freely @happyconcepts. I'm sure you really just want to help.

This toxic attitude based on insistence of calling me a troll based on 2 out-of-context chats. Wow I must 've covered a lot of ground in under 150 characters.

When you compare his tone here to his earlier on-topic posts about the withdraw amount, is the war-mongering, trolling, slandering, and hating from tbone-bts not obviously apparent?

Allowing this toxic attitude is disgusting and makes my participation quite painful to contribute to bitshares. It's a shame to have to do this here in the open but then there is stuff like he wrote above that are outright lies:

he was allegedly being ignored on Github

This is bullshit meant to slander me. While the sad truth is that a 170915 bounty was not bumped up, and a 171001 bounty has not been paid to me yet, I have not mentioned it to anyone. I have not chatted about it. I have instead been constructive about improving the code base.

So I will call out this stalker t-bone because look at how coincidentally he arrives here on github just at the moment he is slandering me as a troll in Telegram.

So this now gets really real, because it raises the notion that I have been ignored somehow.

@happyconcepts
Copy link
Contributor

Anyway, I came to this thread today to share an idea with everyone else about #530 and yes it took a few days to work up the courage to do this in the face of this bullying.

It has been touched upon earlier: the answer is to give the user the expected behavior based on how you prompted them. Prompting with different words like withdraw send net pay them back sets different expectations and there is no reason why we cannot offer a UX like Bill has alluded to where if I want to "pay someone" or "pay someone back" X.34552 amount of BTC I can go enter the X.34552 amount and click send or pay (or whatever word prompt is decided) and then look up from my screen with the confidence that the recipient is going to receive X.34552 amount of BTC and not a satoshi less.

@wmbutler wmbutler changed the title [.25] Withdraw should take into account both FEE and GATEWAY FEE [1.5] Withdraw should take into account both FEE and GATEWAY FEE Oct 23, 2017
@wmbutler
Copy link
Contributor Author

@happyconcepts send me the issue number for 171001 so I can look into why you didn't get paid.

@svk31 svk31 removed the [3] Bug Classification indicating the existing implementation does not match the intention of the design label Oct 23, 2017
@wmbutler wmbutler added the [3] Feature Classification indicating the addition of novel functionality to the design label Oct 23, 2017
@wmbutler wmbutler changed the title [1.5] Withdraw should take into account both FEE and GATEWAY FEE [2] Withdraw should take into account both FEE and GATEWAY FEE Oct 24, 2017
@startailcoon
Copy link
Contributor

I can claim this

@wmbutler
Copy link
Contributor Author

It's yours!! Test it carefully...

@wmbutler wmbutler changed the title [2] Withdraw should take into account both FEE and GATEWAY FEE [2][startailcoon] Withdraw should take into account both FEE and GATEWAY FEE Oct 27, 2017
@happyconcepts
Copy link
Contributor

happyconcepts commented Oct 29, 2017

send me the issue number for 171001 so I can look into why you didn't get paid.

@wmbutler thank you, it was pushed out from 10-01 to 10-15.
#575

svk31 pushed a commit that referenced this issue Nov 1, 2017
* Network Fees included in total transaction amount

- Add Fee amounts before submitting to network.
- Don't try to withdraw more than user owns.
- Increase width of "Network Fee" input selector
- Minor Code cleanup

* Minor changes to the way we check user balance

* Fixing Asset handling
@svk31 svk31 changed the title [2][startailcoon] Withdraw should take into account both FEE and GATEWAY FEE [2][startailcoon][1.5][svk] Withdraw should take into account both FEE and GATEWAY FEE Nov 1, 2017
svk31 added a commit that referenced this issue Nov 1, 2017
@svk31
Copy link
Contributor

svk31 commented Nov 1, 2017

I've merged the PR and added a similar logic to the modal used in the account portfolio view.

@svk31 svk31 closed this as completed Nov 1, 2017
CryptoBridge pushed a commit to CryptoBridge/cryptobridge-ui that referenced this issue Nov 21, 2017
* Network Fees included in total transaction amount

- Add Fee amounts before submitting to network.
- Don't try to withdraw more than user owns.
- Increase width of "Network Fee" input selector
- Minor Code cleanup

* Minor changes to the way we check user balance

* Fixing Asset handling
CryptoBridge pushed a commit to CryptoBridge/cryptobridge-ui that referenced this issue Nov 21, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[3] Feature Classification indicating the addition of novel functionality to the design [4c] High Priority Priority indicating significant impact to system/user -OR- workaround is prohibitivly expensive
Projects
None yet
Development

No branches or pull requests

8 participants