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

Feature, Subtract fee from amount + RBF, Important for privacy. Offering 1.5m sat. ($350) #6783

Closed
Transisto opened this issue Nov 26, 2020 · 11 comments · Fixed by #7026
Closed
Labels
topic-wallet 👛 related to wallet.py, or maybe address_synchronizer.py/coinchooser.py

Comments

@Transisto
Copy link

image

Somewhere on this tab could be a "Subtract fees from amount" checkbox.

@SomberNight SomberNight added the topic-wallet 👛 related to wallet.py, or maybe address_synchronizer.py/coinchooser.py label Dec 7, 2020
@SomberNight SomberNight changed the title Feature, Substract fee from amount. Feature, Subtract fee from amount. Dec 7, 2020
@ecdsa
Copy link
Member

ecdsa commented Dec 18, 2020

@Transisto what do you mean?

@Transisto
Copy link
Author

Transisto commented Dec 19, 2020

image
BTCPAY

image
Bitcoin Core

It would be extremely useful for when a customer is asking to increase his transaction priority via RBF and has already paid with cash and left.

Having the option in RBF panel would also increase privacy chain wide by removing the general assumption that the extra fee for the new RBF transaction is taken from the change.

I'm offering a tip of 100 000 sat for that feature as an option in the RBF panel.

@Transisto
Copy link
Author

Sorry I meant 1m sat, bumping it to 1.5m sat (~350USD at of now)

@Transisto Transisto changed the title Feature, Subtract fee from amount. Feature, Subtract fee from amount + RBF, Important for privacy. Offering 1.5m sat. ($350) Dec 24, 2020
@SomberNight
Copy link
Member

To be clear, do you mean there could be an option for this in the "bump fee dialog"? So only when increasing the fee of an existing tx? -- as opposed to during initial construction of a tx

@Transisto
Copy link
Author

Transisto commented Dec 24, 2020

I mean it'd be great if fee could be taken from amount when creating the first transaction, like the wallets above, but for us that can already be calculated easily, What's more useful for us is to make the customer pay after he left but call to request a speed up.

But yeah, the option doesn't need to be part of the fee increase dialog if the wallet just remember where to take the fee when it was first created.

BTW Bitcoin core take into account pay to many and will take the fee evenly from all outputs.

@SomberNight
Copy link
Member

BTW Bitcoin core take into account pay to many and will take the fee evenly from all outputs.

What does "evenly" mean?
Is the amount taken away linearly scaled according to the output values,
or are all outputs decreased by the same value?

@Transisto
Copy link
Author

Transisto commented Dec 26, 2020 via email

@SomberNight
Copy link
Member

I think adding this "subtract fee from payment amount" option to the Send tab for normal tx creation is overkill. The Send tab is already versatile enough that you can achieve the same effect manually.

However, you can not achieve this currently with bump_fee. I think we could add such an option to the bump_fee dialog.
We could add a checkbox to either the dialog itself, or to Preferences, e.g. "decrease payment amounts".
If there is only one non-ismine output, it is clear what it should do.

So then the question is, what to do if there are multiple non-ismine outputs -- so for Pay to many / batched payments.
I am afraid that whatever answer we come up with, there will be users who complain that they want something else. So at least we should come up with an answer that we expect would satisfy most users.
(Maybe in the future we could have some complex expert screen that allows manually editing all amounts, but until then...)

@Transisto
Copy link
Author

I'm not sure what non-isimine means but if it means, of different amount then I'd say only data weight of the output matters.

Transactions should be able to pay for their own weight and when batching someone buying for 50$ pays the same network fee as someone buying for 5000$

@SomberNight
Copy link
Member

the question is, what to do if there are multiple non-ismine outputs -- so for Pay to many / batched payments.

I'm not sure what non-isimine means but if it means, of different amount then I'd say only data weight of the output matters.

An address is ismine if it belongs to the wallet. A tx input or a tx output is ismine if the corresponding address is ismine.

So what I meant there is: the question is what to do if there are multiple external/foreign outputs.

@SomberNight
Copy link
Member

I think a variant of this is now implemented with #7026.
That PR also made it easier to add more "strategies" later, if we can come up with ones that are useful.

Feel free to test and say if it does what you wanted.
If you like it, I can share an address or LN invoice privately for your bounty :P -- it's up to you though; I think it was a useful change either way.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
topic-wallet 👛 related to wallet.py, or maybe address_synchronizer.py/coinchooser.py
Projects
None yet
3 participants