Hello,
I have a question that I think is becoming more and more relevant in these
days of systematically full blocks and where getting transactions confirmed
is increasingly becoming a total crapshoot.
Say someone sends me bitcoins. I discover this because coins are sent to
an addie I control and therefore my wallet latches on to it and displays it
in my transaction ledger.
However, upon close examination of the transaction, it becomes clear that
the cheapskate who sent it included way too little fees and the TX will take
ages to confirm, if ever.
At that point, if it's essential enough for me to get the funds that were sent,
I would not mind actually paying the fees *myself* to lubricate the confirmation
of this TX.
Three questions:
- is this theoretically even possible ? Can I somehow dissect the already broadcasted TX
to reassemble it into a larger one with addt'l inputs (say an input from an addie *I*
control) so as to pay higher fees ? And once that is done, broadcast this newly
constructed TX, which would hopefully get prioritized before the old one and make
it a double spend.
- if possible, is there a tool / wallet out there that would let me do this, or, barring that,
is there a way to pull it off via the satoshi client RPC interface.
- also, if possible, in the scenario where:
- old TX is stuck
- I construct new, higher prio version
- I broadcast new version
- old TX gets included in a block, making the new one a double spend
then what happens to the "extra" input I added ? Can that signed input somehow
be reclaimed by someone ?
Any wisdom on the topic is welcome
What you are proposing is entirely impossible. It is not possible to "dissect and reassemble" an already broadcasted transaction without having the private keys that spend the inputs. You cannot add inputs or outputs to the transaction because the signatures for each input ensure that the transaction has not been modified in any way. Otherwise anyone would be able to steal other people's Bitcoin.
The solution to your problem is called Child Pays For Parent (CPFP). A CPFP transaction is a transaction that has some inputs that spend from unconfirmed transactions. It may also have other inputs from confirmed transactions. The idea is that that transaction will have a significantly higher fee than a normal transaction. This high fee would cover the fee of the unconfirmed transaction and the CPFP transaction itself, hence the Child Pays For Parent. Then, any miner with CPFP enabled will pick up the CPFP transaction and the unconfirmed one and confirm them both at the same time.