Author

Topic: Delaying a Bitcoin Transaction/ Reversing a Misspent Txt 0 Confirmation Input (Read 2059 times)

legendary
Activity: 1260
Merit: 1019
I think there was a proposition of "replace with a fee", that is
Yes, double-spending one of inputs is the only way to "cancel" transaction.
Miners already can select one of "concurrent" transactions ( need some programming, not a trivial setting )
sr. member
Activity: 333
Merit: 252
I think there was a proposition of "replace with a fee", that is,
if you broadcast a double-spend with a higher fee, other nodes would accept and relay it.
It certainly makes sense for miners to accept such a transaction (and of course discard the previous one).
donator
Activity: 1218
Merit: 1079
Gerald Davis
It would be trivial to add a "cancel" button to the bitcoin-core client (or any client) but it would be equally pointless.   Remember bitcoin is a network of nodes.  Sure you can change what your node does (i.e. forget a txn you created exists so you can double spend it) but you can't change what OTHER nodes do.

So you make txn A and it propagates the network.  Some % of other nodes (0% to 100%) accept and relay that txn.   Now you "cancel" txn A locally and create txn B.   For every node which knows of txn A they will simply reject B because it is a double spend of A.   Now if A has some issue that means it won't be included in a block (fee, txn size, dust, etc) then eventually all nodes will forget about A (drop it from the memory pool) IF you have deleted it locally.  If you have not deleted it locally your node will periodically rebroadcast it to ensure the network NEVER forgets about it permanently.  Once some nodes forget about A you can broadcast B and it may be included in a block first.  Once all nodes forget about A then it is as if "A" never occurred and B will propagate the entire network.

The simple version if bitcoin is an association of independent nodes.  You can control what your node does but you can't control what other nodes do.  It is very likely any "cancel" button could be very confusing to the user.  The user could "cancel" A and then A is still confirmed.  The user could "cancel" A and then broadcast B but no nodes (including the recipient) can see B.  Worse if B is not a double spend of A then the user could cancel "A" and then both A & B end up confirmed (double payment).
legendary
Activity: 1260
Merit: 1019
Quote
If you submit a transaction to the network and it hasn't yet be confirmed by a block, is it possible to cancel this transaction?

The probability is very low.
If all inputs of your transaction are confirmed, your transaction has enough fees and your client is well connected to a network - the transaction will be mined in next block and you can do nothing.

But sometimes it is possible.
For example, you created transaction with fee=0.00001000 and low bitcoin-days priority
All miners running 0.8.x client would reject it as "free/not enough fee" transaction
But miners on 0.9.x client will accept it to their memory memory pool.

So, your luck will depend of "Who will mine the next block?"
You can try to double-spend your utxos with higher fees and hope that the next block would be found by 0.8.x miners
legendary
Activity: 1834
Merit: 1094
Learning the troll avoidance button :)
Was searching through D@T for this answer but could not find the exact answer I was looking for.
Was not in the sticky
https://bitcointalksearch.org/topic/faq-all-about-unconfirmed-0-confirmation-transaction-fee-read-before-posting-232979

My question is:

If you submit a transaction to the network and it hasn't yet be confirmed by a block, is it possible to cancel this transaction?
(In general not just for Alternative Clients)

Simple scenario you have an address saved but then use the wrong one by accident and want to reverse it.
Assuming 0 Confirmations and your going crap I sent it to the wrong one is it possible to undo or would you be forced to attempt a double spend?

In addition is it possible to delay a Bitcoin transaction through a mobile app or client like the Blockchain or Core to send after a fixed period.

I recall that there is a Timed Send that sends it after a fixed time, but I forget how this is done.
Edit it was N-Timelock https://bitcointalksearch.org/topic/m.2185329

I do recall an alternative method where one can broadcast an off chain transaction from Cold Storage and ask someone to push it to the network as Dooglus did to ensure it is sent without error but my question is if there was a cancel button or code that you can insert if you accidentally misspent something and notice it right away if you make a mistake in the above steps.

http://blockr.io/tx/push
https://bitcointalksearch.org/topic/m.7560196
Jump to: