Author

Topic: Insanely huge transaction size - why? (Read 769 times)

newbie
Activity: 26
Merit: 0
May 08, 2017, 04:45:40 PM
#5
more inputs more size.  Smiley
member
Activity: 97
Merit: 10
May 07, 2017, 08:36:08 PM
#4
Your problem here is the transaction fees on your last payments. You've sent some very small transactions in the past. Your wallet is over compensating for the past transfers, that's why. Or your wallet is set to use a "best option" in which case it's setting your fees way too high.
legendary
Activity: 3472
Merit: 4801
May 05, 2017, 10:12:50 AM
#3
Each payment you received in the past will require at least 148 bytes to spend in a transaction.

So, for example, if you received 1000 payments of 0.0001 BTC, then you would have a total of 0.1 BTC.

However, if you then want to spend 0.05 BTC, you will need to spend at least 500 of those payments that you received:
500 X 0.0001 BTC = 0.05 BTC.

Since each of those payments require at least 148 bytes, that means your transaction will be at least:
500 X 148 bytes = 74000 bytes.

The current recommended fee for fast confirmation is 0.00000180 BTC per byte.

Therefore a 74000 byte transaction would require at least:
74000 bytes X 0.00000180 BTC per byte = 0.1332 BTC

That's 0.1332 BTC in transaction fees to spend 0.05 BTC.



On the other hand, if you had received that entire 0.05 BTC in a single payment, you could spend it with just 148 bytes.

In that case, your fee to spend 0.05 BTC would only be:
148 bytes X 0.00000180 BTC per byte = 0.0002664 BTC.



When people say that the money you get from faucets is worthless, they mean it literally.

A payment from a faucet of only 0.0003 BTC (about $0.45 at the current exchange rate) is actually only worth about 0.0000336 BTC (less than $0.05 at the current exchange rate) after you subtract out the fees you'll have to pay to spend it.

If a faucet pays you less than 0.0002664 BTC in a single payment, then it will cost you more in fees to spend it than it is actually worth.  Meaning, the visit to the faucet actually lost you money.

Lets use the transaction you posted as an example...

You previously received some payments.  Here's 3 of them:
  • You received 0.01137467 BTC on 2017-05-05 at 13:36:24 UTC (convert to your own timezone as necessary)
  • You received 0.00020439 BTC on 2017-05-03 at 16:14:52 UTC (convert to your own timezone as necessary)
  • You received 0.00013285 BTC on 2017-03-03 at 22:12:15 UTC (convert to your own timezone as necessary)

The 0.00020439 BTC and the 0.00013285 are going to be a problem for you.  Lets see why...

On 2017-05-05 at 13:45:51 UTC, you decided to send 0.01117106 BTC to 1tEwQveg2XV5GFS5iGUPfQsm1VM3E4qxr.

Every transaction has at least 10 bytes of overhead to supply the structure of the transaction.

A transaction can send to multiple places at once.  Each destination typically requires 34 bytes.  You are only sending to one place (1tEwQveg2XV5GFS5iGUPfQsm1VM3E4qxr), so that only adds 34 bytes to your transaction.

Your transaction is now 10 + 34 = 44 bytes.

Your wallet next searched through all the payments you've received in the past and found that the 0.01137467 BTC payment wasn't spent yet.  It used this payment to add funds to the transaction you were creating.  This added 148 bytes to your transaction.

Your transaction is now 44 + 148 = 192 bytes.

Since you supplied 0.01137467 BTC of value and you are sending 0.01117106 BTC, the transaction has 0.00020361 BTC remaining available to pay the transaction fee with.

According to https://bitcoinfees.21.co/  the recommended fee for fast confirmation right now is about 0.00000220 BTC per byte.  With 192 bytes that would be a fee of:
192 bytes * 0.00000220 per byte = 0.0004224 BTC.

Looks like you don't have enough value in the transaction yet to cover the cost of the fee. You only have 0.00020361 BTC remaining. If the payment that you had previously received had been 0.01159346 BTC, then you'd be done.  Your transaction would be 192 bytes in size and you'd have a recommended fee of only 0.0004224 BTC.

No problem, the wallet will just look to see what other payments you've received in the past that haven't been spent yet.  It can include those to add more funds to the transaction to cover the fee.

The highest value unspent payment remaining is the 0.00020439 BTC on 2017-05-03.  Your wallet uses this to add additional funds to the transaction to cover the fee.  This adds another 148 bytes.

Now the total funds available to the transaction are:
0.00020439 + 0.01137467 = 0.01157906 BTC

After sending the 0.01117106 BTC, there is 0.000408 BTC remaining for the fee.  The additional 148 bytes increases the size of your transaction from 192 bytes to 340 bytes. Now the fee needs to be:
340 bytes + 0.00000220 per byte = 0.000748 BTC.

Do you see the problem here?  Do you see what happened?  Prior to adding the 0.00020439 BTC payment to the transaction, you were only short:
0.0004224 BTC recommended - 0.00020361 BTC available = 0.00021879 BTC short

After your wallet added the 0.00020439 BTC payment to the transaction to try and increase the funds available to the transaction, the funds available increased by that amount, but the fee increased by 0.0003256 BTC!  Now the transaction is even farther in the hole.  You are now short:
0.000748 BTC recommended - 0.000408 BTC available = 0.00034 BTC short

Since your transaction still doesn't have enough funds to cover the fee, the wallet needs to add more.  It finds the ONLY remaining unspent payment, which is the 0.00013285 BTC that was received on 2017-03-03.  Can you see what's going to happen here?

The additional payment added to the transaction adds another 148 bytes (bringing your total to the 488 bytes that you were complaining about) and the required fee for fast confirmation increases even more than the 0.00013285 of value that you added.

Now your wallet is all out of funds to spend, and it doesn't have enough fee.  You send it anyhow, and you are stuck waiting a very long time for confirmation.
legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
May 05, 2017, 08:57:07 AM
#2
Click show scripts and coinbase.

You should see that there are 3 inputs and 1 output. The 3 inputs each occupies about 150 bytes and they contribute significantly to the transaction size. There is basically nothing you can do unless you can control the frequency of when the coins are sent to you. If you pay a high enough fee per unit size, you should expect it to confirm within a reasonable timeframe.
newbie
Activity: 26
Merit: 0
May 05, 2017, 08:50:41 AM
#1
I see ~95% of transactions are around 225 bytes, and mine are over 400 every freaking time.
Right now it's 584 and of course it'll take freaking hours to confirm.

Why is this happening Huh
https://blockchain.info/tx/11a51b8d71aee5689da25bb22fd685f8c70d82a7d4d4a8afd37ba8c412d8c7e9
Jump to: