Cannot send money; Bitcoin-qt can’t do maths #2555

issue Timwi opened this issue on April 23, 2013
  1. Timwi commented at 2:55 PM on April 23, 2013: none

    In my wallet I have 0.005 BTC.

    I’m trying to send these to another address. I made sure that the transaction fees are set to zero:

    http://screencast.com/t/NX1PJ9Ov

    Yet when I try to send them, I get this erroneous message:

    http://screencast.com/t/UWF9nO4hKp

    Please fix this bug as soon as possible so that I can send my bitcoins.

  2. sipa commented at 8:24 PM on April 23, 2013: member

    Working as intended. You're trying to make a transaction that needs a fee (as the network would consider it spam otherwise), but don't have the balance to pay for that fee.

  3. Timwi commented at 12:05 AM on April 24, 2013: none

    I don’t understand what you’re saying. Firstly, I thought Bitcoin was supposed to be free. Now I have to pay to send money??

    Secondly, the error message gives no explanation whatsoever. Perhaps it could be improved to explain what’s going on, instead of leaving the user to think that it’s just broken?

  4. luke-jr commented at 12:39 AM on April 24, 2013: member

    It is free. Free means you are not restricted in what you can do with it. You're confusing it with gratis or "free of charge" I think - but even then, you could modify the source code to not include a fee (note that miners also have the freedom to never confirm your transaction... so that's usually a bad idea)

  5. Timwi commented at 12:48 AM on April 24, 2013: none

    Ahem? I’m trying to send 0.005 BTC and I can’t because the client demands a transaction fee — clearly I am restricted in what I can do with it!! This is called hypocricy... :(

  6. robbak commented at 12:57 AM on April 24, 2013: contributor

    No, it is called refusal to understand.

    You can use the client to send a transaction that is against the rules, like a transaction with many small inputs and no fee. If you did, no miner would ever include it, most other clients would refuse to even forward it, and the transaction would never confirm. You would do this, if you were foolish enough to try, from the command line, or from the console in the debug window. Or you could edit the source code and build a client to do it yourself. You are free to do that, and the rest of the world is free to call you an idiot for it.

    I suspect that you have gained that 0.005 coins from pay-to-click 'faucet' sites, in little tiny amounts that cost more to transfer than they are worth. Us here at these forums keep telling them to stop, but they keep refusing to listen. But they, like you, are free to do whatever you want.

    Freedom. Freedom to do something stupid, and freedom to call someone stupid for doing it.

    On 24 April 2013 10:48, Timwi notifications@github.com wrote:

    Ahem? I’m trying to send 0.005 BTC and I can’t because the client demands a transaction fee — clearly I AM restricted in what I can do with it!! This is called hypocricy... :(

    — Reply to this email directly or view it on GitHubhttps://github.com/bitcoin/bitcoin/issues/2555#issuecomment-16901693 .

  7. Timwi commented at 1:42 AM on April 24, 2013: none

    I don’t see what I am “refusing to understand”. You are clearly stating that the system is designed to make what I’m asking impossible, so I am limited in what I can do with my Bitcoins. I cannot pay someone 0.005 BTC, currently 0.50 € — a reasonable price for, say, a marsbar, or a perfectly acceptable sum to want to donate to a charity. The ability to do this is one of the claimed benefits of Bitcoin (compared to the old system with credit cards, where paying (or donating) a sum like 0.50 € is just impossible and/or outrageously expensive). Yet you are stating that I have to pay a horrendous fee of 10% to the people running the system (miners). Thus the claimed benefit of Bitcoin is a fantasy and the resulting system is no better than what we already have.

    To call someone an idiot for wanting to pay or donate small amounts and not incur an unreasonable fee is, frankly, bossy and unproductive. You are hurting the credibility of Bitcoin this way and you are giving the impression that the new system has no benefit compared to the old one. :(

  8. Timwi commented at 1:48 AM on April 24, 2013: none

    Besides, we lost track of what this bugreport was about. If it is genuinely impossible to send 0.005 BTC from a wallet that has only 0.005 BTC in it, then the UI should say so. Right now, the UI gives the impression that one can set the transaction fee to 0 but then it tries to apply a transaction fee. This is a bug, one way or the other. If anything, it should refuse to commit the translation not because I have insufficient funds for the transaction fee, but because I set the fee to zero. It should show a message box explaining this.

  9. luke-jr commented at 2:11 AM on April 24, 2013: member

    I agree the message could be clearer.

  10. robbak commented at 2:25 AM on April 24, 2013: contributor

    OK, I will say that the fee calculation stuff does break when emptying an account. I've noticed that, but have not been able to think of a good solution.

    And, you have picked up on one of the issues that bitcoin has: that it is possible to create transaction outputs that are uneconomical to spend. This is a problem, and one possible fix is to alter the fee system so it is based on the size of outputs, not the size of the whole transaction.

    I also think that the fee, at current bitcoin values, is too high. But we still don't know where the price will settle down at following last months madness. Anywhere between $20 and $200 is possible! When a bit of sanity returns to the market, the community of miners and users will work out what is a reasonable fee amount.

    Also, there is a growing list of 'things that should be changed'. Structural things about the way bitcoin works. These are being actively considered, and there is a system that allows these sort of changes to be make.

    So, yes, we accept that your complaint is based on some things that should be changed. Simple things first - the text in the message for setting the fee should make clear that this is the optional fee only - there are mandatory fees calculated around the technical, internal details about the transaction - namely, the size, in bytes (which is related to the value of all the transactions that make up the input), the number and value of the outputs. These points are difficult to express in less than 100 words! We need some way to demonstrate that, other than letting the user enter the transaction, and say "No , you can't" when they click 'send'. but I can offer no suggestions how.

    On 24 April 2013 11:48, Timwi notifications@github.com wrote:

    Besides, we lost track of what this bugreport was about. If it is genuinely impossible to send 0.005 BTC from a wallet that has only 0.005 BTC in it, then the UI should say so. Right now, the UI gives the impression that one can set the transaction fee to 0 but then it tries to apply a transaction fee. This is a bug, one way or the other. If anything, it should refuse to commit the translation not because I have insufficient funds for the transaction fee, but because I set the fee to zero. It should show a message box explaining this.

    — Reply to this email directly or view it on GitHubhttps://github.com/bitcoin/bitcoin/issues/2555#issuecomment-16903780 .

  11. sipa commented at 8:32 AM on April 24, 2013: member

    I think it's a bit unfair to attack someone who simply made a wrong assumption about the system. @Timwi It is true that Bitcoin is designed to be cheap (and to some extent, even free). But there is a fee built into the system. It's used both as an incentive for miners to prioritize your transactions (so you can pay to have your transaction confirmed quickly), and as a way to combat attacks on the system. Smallish transactions or those that use too little and too young coins as input, will be regarded as spam by the network and dropped/ignored. The client software uses the same rules as most network nodes, so can detect this, and will refuse to create such a transaction without a fee.

    It's not true that in general you can't send 0.005 BTC, but such a small transaction will likely always need a fee to get relayed. It's also not true that in general a fee is required, only for certain transactions. When required, the fee is always calculated per kilobyte of data, and has nothing to do with the amounts in it, as the load on the system for a single transaction is independent of whether it's small or large (in amount). This means that transactions below a certain value will be uneconomical to do.

    It's fair to say that fees are an unsolved issue right now. They cause some confusing, and are also outdated. There are definitely suggests to deal with this in a better way, like have the software suggesting how much is reasonable for the transaction you're created, to have it confirmed relatively quickly. Allowing users to bypass this 'required' fee is also frequently requested, but is seen as too dangerous as the client right now does not deal well with transactions that do not confirm. This is considered a bug, though.

  12. rstarkov commented at 8:59 AM on April 24, 2013: none

    I personally feel there needs to be a "send anyway" button, preceded by an explanation of what is most likely to happen. Tell the user that this happens because their transaction will look spammy. Tell them it's the "bad guys" who are, as always, the reason why we can't have nice things. Tell them what's probably going to happen if you press "send anyway".

    Bitcoin-qt should certainly warn the user, but preventing the payment based on what's probably going to happen is not nice. This is entirely up to the miners, and bitcoin-qt cannot know for sure that such a transaction requires a certain fee (nor how much).

  13. sipa commented at 9:12 AM on April 24, 2013: member

    I agree, as soon as we can deal reasonably with non-confirming transactions.

  14. gavinandresen commented at 2:38 PM on April 24, 2013: contributor

    A special case to detect when the user is trying to send their entire balance somewhere is a good idea, a dialog box that says something like "Fee required; send (balance-fee) instead?" would be nice.

    If (balance-fee) is negative.... then I'm not sure what to tell the user. If you have less than a dollar's worth of bitcoin in your wallet it may be impossible to spend it.

  15. laanwj commented at 8:03 AM on October 22, 2013: member

    More accurate messages for the fee have been implemented. As for adding an option to make the fee inclusive, that's still a good idea. Closing as duplicate of #2724

  16. laanwj closed this on Oct 22, 2013

  17. mkonecny commented at 4:33 AM on February 11, 2014: none

    I just got bit by this problem. I emptied my entire wallet (about one bitcoin), and it let me send it. Now here I am 10 hours later seeing my unconfirmed transaction constantly pushed back in some queue. I only learned about this transaction fee after researching why it was taking so long, and if there had been a dialog box warning me before sending, I would have definitely paid it.

  18. MiRAGE-101 commented at 10:00 PM on March 30, 2014: none

    on the mycelium android app there is an option to send MAX which i haven't extensively tested but i assume it sends the extra "millipence" to the miner as well as the regular fee amount just to clear your wallet. it does however display 0BTC after.

    i have in the past imported my private key to an android device running Mycelium to use this feature and "close my account"

    but as far as sending those small denominations i quickly accepted it is not possible without paying the miners.

    one thing i don't understand is this.

    i have a butterfly labs miner plugged in 24/7 could i in theory run a charity miner to pick up transactions with no fee.

    what i mean by this is, is it even possible to set your miner to accept transactions with no fee? as i have never seen anything about configuring a miner to do this (not surprisingly i guess as it would be a drain on funds to do so) if you cant tell the miner to do it then there is no possible way for the transaction to be confirmed and so the minimum fee should surely always be mandatory.

  19. christophebiocca commented at 10:32 PM on March 30, 2014: none

    @MiRAGE-101

    If you run a real miner (not part of a pool) there are bitcoind cli flags to make this happen:

     -blockminsize=<n>      Set minimum block size in bytes (default: 0)
     -blockmaxsize=<n>      Set maximum block size in bytes (default: 750000)
     -blockprioritysize=<n> Set maximum size of high-priority/low-fee transactions in bytes (default: 50000)
    
  20. bitcoin locked this on Sep 8, 2021

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-05-19 14:56 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me