I am not sure that this "average transaction fee" works in practice. I tried several times the described CPFP method and it worked as a charm.
If 1st transaction 7000 bytes, so minimum fee for it 7000 satoshi (for legacy addresses, for segwit the min allowed fee is 30% less). The 2nd transaction has 192 bytes size, and paying for it 15000 satoshi means approx 78 sat/bye. If the blockchain average at that moment 25-30 sat/byte, transactions in my example are mined very fast (actually within the next 1-2 blocks). The 1nd transaction fee 2 times more than the average.
However considering the clever average approach, the actual average fee per byte is just (7000 + 15000)/(7000+192) = 3.05 sat/byte. The average fee is 10 times less than the average, so such transactions should be postponed by clever miners.
My assumption until now what that
HCP's theory is correct. It would be interesting to test your "
trick", by sending a second transaction from a confirmed input with slightly higher fee than the average. If you're right, the CPFP transaction should confirm before the second transaction. If that's correct, (some) miners are dumb and this would be a really cool trick to reduce fees.
Instead of making a second transaction, you could also look at all transactions in the same block, and see if there is any transaction that has a lower fee than your average.[/quote]
There must be something else that happened in your previous transactions like 'cleared mempool' due to faster blocks
or the "<1mb from tip" range is actually 3sat/B at that time.
Johoe's Bitcoin Mempool Size Statistics shows the fee can drop quite a lot once a single block has been minded, so I wouldn't be surprised to see a 3 sat/byte transaction included even when your wallet says 30 sat/byte is needed. In my experience, many wallets are just bad at fee estimates.
In general, to reduce fees:
- Consolidate your small inputs when you're not in a hurry.
- Use native SegWit (Bech32; addresses starting with bc1q....
- Use coin control: manually select which inputs you're going to use. Don't use more inputs than needed. This reduces the transaction size and thus the fee.