Author

Topic: transaction is over the size limit? (Read 848 times)

legendary
Activity: 4542
Merit: 3393
Vile Vixen and Miss Bitcointalk 2021-2023
October 31, 2013, 10:43:03 PM
#4
The size limit refers to the size of the transaction in kilobytes, ie, the amount of data required to store and transmit your transaction. It has absolutely nothing to do with the value of your transaction in BTC.

The size of your transaction depends on the number (not the value) of inputs, which are previous transactions sending bitcoins to your wallet, which you are now spending. For example, if you previously received several BTC1 transactions, then sending BTC2 would require two of those as inputs. If you received several BTC0.01 transactions, then sending BTC2 would require 200 inputs, making the transaction very large and requiring a large fee. This is similar to receiving a large number of payments in pennies, then getting charged a coin-sorting fee when you finally take your huge sack of pennies to the bank.
member
Activity: 77
Merit: 10
October 31, 2013, 02:39:42 AM
#3


I have no idea if the transaction is less than 10,000 bytes.. How am I to know this?

What does it mean when it says: "All outputs are 0.01 BTC or larger" (outputs? what is that?)


Besides the written explanation above, here is the rest of the info you need:

http://bitcoin.stackexchange.com/questions/7537/calculator-for-estimated-tx-fees
http://bitcoin.stackexchange.com/questions/1195/how-to-calculate-transaction-size-before-sending

In particular:  in*148 + out*34 + 10 plus or minus 'in'

Bitcoin addresses are not accounts.  The wallet metaphor is more appropriate.  You have a collection of individual payments, like a stash of banknotes of different sizes.  You can add them up, but they are still separate, just like putting two $20 bills in a wallet doesn't turn them into a $40 bill.

Inputs are these separate payments. Outputs are who you are paying.  Your change is an extra output coming back to you. Inputs are merged into outputs through this transaction.

If you have received 50 x 0.0001 payments, the total is 0.005. But to pay somebody 0.005, a transaction is created that sends all 50 inputs to one output.

In this case, we have:
148 bytes x 50 = 7400 bytes
34 bytes x 1, for a total of 7431.

However, the "output" is 0.005, which is less than 0.01 so a fee must be included.

The absolute minimum fee is 0.0001 per kb, so the absolute lowest fee you could pay is 0.0008 (~7.5k rounded up).

Change adds an interesting complication.  Suppose you wanted to pay 0.100 to somebody, but the best match of input amounts added up to 0.1003.  The transaction would be a collection of input amounts, to two outputs - 0.1 to the person you were paying, and 0.0003 back to you for change.  This also triggers the "output < 0.01" rule.

For what its worth, yes, most people agree this fee structure is far less than optimal, but its what we're stuck with for now.  Fixing it effectively requires everyone to upgrade.  If you look at http://luke.dashjr.org/programs/bitcoin/files/charts/branches.html we've still got people running 0.3.x through 0.7.x from years ago.  This is going to take a while.

You can see the work being done in 0.9 to make the 0.9 code self adjust to network health when deciding what the fee limits will be.

Make no mistake, this is about the bitcoin network and blockchain health.  It is denominated in bitcoin and was set up when spam was a bigger problem and bitcoin trading value was nothing like it is today.

BTW; you can coalesce small "dust" (what these tiny amounts are called) into larger ones.  It takes a bit of effort, and you already have to have a bunch of bitcoin to do it.  eg: if you have 0.01 btc and a collection of 0.00001's you can pay yourself 0.01 btc + a bunch of the 0.0000xx's.  So long as you don't hit 10kb, and the inputs have aged enough to not hit the priority trigger, then you can merge these into larger coins.  But, it is slow and you already have to have some btc to piggyback the dust onto.

TL;DR: don't generate dust like this.  It's nothing but a headache - even more so for the recipient than the sender.
staff
Activity: 4284
Merit: 8808
sr. member
Activity: 434
Merit: 250
October 30, 2013, 10:58:23 PM
#1
So, when I send 1btc somewhere it sends fine without a fee. When I send 2btc it says I need to pay a 0.0005btc fee. Did I miss something? I know that there was a limit on how low you can send to try to reduce the vandalism of the block chain but when was a .0005 fee implemented for anything over 1btc?

Also, how exactly does it work? Sending to multiple addresses = fine but sending over 1btc to one address = fee?
Jump to: