32

I've sent a transaction from blockchain.info, but accidentally included too little fee. What can I do to cancel the transaction or speed up the transaction's confirmation?


This is a complementary question to Why is my transaction not getting confirmed and what can I do about it? which answers the question's broader implications and proposes mitigation mostly focused on Bitcoin Core.

10 Answers 10

29

There are several approaches that may work. I'm not sure which methods are most easily available for a user of a blockchain.info-wallet, but probably #0a and #2, followed by #3, #0b and #1b.

0) Wait it out.

0a) Wait for the transaction to go through. Most likely there will be free capacity in the network after some hours, some days or a week. In periods with free capacity, even low-fee transactions will pass. Rarely one has to wait longer than the next Sunday evening.

0b) Wait for the transaction to be forgotten, and then create a new transaction with a higher fee. In some few exceptional cases (notably around new year 2017/2018) several weeks or even months have passed without any free capacity. The original transaction may eventually be forgotten by the network. Some wallets will then offer to create a new transaction, Mycelium will offer to delete the old transaction, and with some luck a "double spend" will be possible - though this is very unreliable as the original transaction may be purposely or accidentally rebroadcast both by the sender, receiver and any third-party.

0c) While you're anyway waiting for it to go through you may try to actively rebroadcast the transaction (not sure if the blockchain.info-wallet supports it - it may be done through external software though). This probably won't help at all, and it's the exact opposite of 0b, so it's probably not a good idea (from some wallets this may be the most intuitive panic action, therefore I think it still ought to be mentioned).

1) Double spend with a higher fee (RBF).

1a) Using the "Replace by Fee"-protocol - this probably does not apply to you, but I'll still leave it here as it arguably is the best way to "unstick" transactions. If the original transaction was marked up with "RBF allowed", most of the network will accept the new transaction and discard the old one. Not all wallets supports setting this flag, I don't believe the Blockchain-wallet supports it - and even if the Blockchain-wallet supports it, it's even less likely the RBF-flag was turned on by default. RBF can be used for reverting an unconfirmed transaction (though very few wallets supports creating such an "undo-transaction") - so using the RBF-flag is a terrible idea if you want something done by a zero-conf, say, buying a coffee - you may end up not getting the coffee until it's cold. (the RBF-feature has been removed from most Bitcoin Cash software, as they deem it both "harmful" and "not needed").

1b) Doing RBF/"Double spend" even if the original transaction was not marked as RBF. Miners (and nodes) are supposed to ignore the double spend transaction - but you may be lucky. You may need to use some other wallet or even specialized software to perform such a double spend. It may work, either because the original transaction has ended up in a "ghost-like" state where it's known by some nodes but not others - maybe some miners are unaware that you're doing a double-spend - or it may work because some miners deliberately accepts double-spent transactions as they can earn more fees on it.

2) Child Pays for Parent (CPFP). if a new transaction is made with a high fee, building on top of the old transaction, most of the miners will include the whole chain of transaction in the block they're mining at. A normal transaction has two "outputs" (aka "UTXO"s), one going to the receiver of the funds, the other going back to the same wallet. Making a new transaction with any of those two UTXOs will help. One notable exception, if all funds in the wallet was sent, there won't be any change-UTXO, and 2b below will not apply.

2a) Get the receiver of the funds to spend the funds they received on a new transaction, with high fee. This may of course not always be possible, but ...

2b) Spend the "change UTXO". Some wallets has a menu option for "accelerating" the transaction through "CPFP". If that's not supported, you can always send all the funds in the wallet (the funds can be sent back to an address belonging to the same wallet). One problem with this is that the fees may become very high (particularly if you've been using your wallet for a while and never emptied it completely - then it's most likely filled up with "dust" making such a transaction big and costly). Some wallets let you hand-craft the transaction so you may send just the "change UTXO" back to youself. In worst case you may move the private key or the wallet seed to some other wallet. Electrum does support spending some specific UTXO, and Mycelium has the "CPFP" acceleration button.

3) Ask the pools for help. viabtc has their "transaction accelerator" at https://pool.viabtc.com/tools/txaccelerator/, antpool.com also has some similar service, there even exists services where one can pay by credit card to get the transaction prioritized.

4

It looks like your transaction finally went through. I've had a transaction take longer than 24 hours due to not including a large enough miner's fee

And currently there's no way to cancel a transaction after it's already sent, even if it's still unconfirmed. So it's a good idea to triple check the amount you're sending, the transaction fee and that it's going to the correct address.

I think it would be helpful if bitcoin had this feature in the future: cancelling transactions while they're still unconfirmed

  • I've merged the question this answer was posted on originally into this more canonical topic. Please check if you should edit it to adapt it to this topic. – Murch Jun 7 '17 at 16:36
4

Basically, you can double spend the input and add transaction fees. Firstly, this sounds crazy but it works! Somebody also made an introduction video on how to do this: https://www.youtube.com/watch?v=ycq7O48aPvQ

  • I've merged the question this answer was posted on originally into this more canonical topic. Please check if you should edit your answer to adapt it to this topic. – Murch Jun 7 '17 at 16:42
  • u cant as balance already reduced – Boris Ivanov Nov 21 '17 at 12:53
4

I want to delete my unconfirmed transactions from Blockchain.info?

Unconfirmed transaction means that your transaction is being broadcast through the network until some miner write it down into a block. If the unconfirmed transaction is not confirmed into the blockchain after some days, it is deleted from the network.

Nowadays, there is no easy way to delete your unconfirmed transaction. Unless you broadcast it again with a higher fee. In that case, the one that enters first into the blockchain (probably the one with higher fee) will automatically delete the other one from the unconfirmed pool (after a propagation delay).


Is there any way I can recover my bitcoins?

While your transaction has not being written into the blockchain, it means that you haven't spent your bitcoins yet. Theoretically, you could still write a transaction into the blockchain spending such bitcoins the way you like it.

However, the problem is that not the entire network accept that. Probably, you would have to broadcast it via the console of a bitcoin client.

  • I've merged the question this answer was posted on originally into this more canonical topic. Please check if you should edit your answer to adapt it to this topic. – Murch Jun 7 '17 at 16:42
4

If you're one of the recipients of the transaction (i.e. via change output), you can create a child-pays-for-parent transaction by spending the unconfirmed output in a new transaction with a sufficiently high fee.

From what I hear, you can specifically select the inputs for transactions on blockchain.info, so it should be easy enough to craft a transaction to that end.

If you're comfortable doing so, you might want to try to export the private keys corresponding to the unconfirmed transaction and export it into another wallet in order to create a doublespend transaction to recover the funds.

Finally, you'd always have the option wait it out, or to get in touch with blockchain.info's customer support.

Note: I've never used blockchain.info myself, so please provide feedback to improve this answer if you have better insight.

1

If transaction is unconfirmed you may just double spend it. It would probably require creating a transaction manually (I have used node.js with BitcoinJS for it), and then submitting it via the console of the bitcoin client. I would suggest also paying a bit higher fee (for the new transaction being confirmed before the old one) and not reusing any of source addresses used by either the old or new transaction, as double spend is easy to detect and people may not trust you.

If the point is to just make the original transaction confirmed you may just try to resend it (using console). It sometime helps as unconfirmed transactions are broadcasted by the network only for limited time.

  • no, is not double spent - You can see the transaction at blockchain.info/tx/… only unconfirmed after around 30 hours + the money is deducted from my balance - i cant re-send it, i cant send it again my question was how do I cancel the unconfirmed transaction and get back my coins? – enockofori Jul 17 '15 at 21:24
  • @enockofori that link doesn't work. It looks like your Tx may have dropped out – Wizard Of Ozzie Jul 18 '15 at 2:52
  • Yeah, submit a higher fee double-spend transaction. – Erik Aronesty Jan 15 '16 at 18:36
  • I've merged the question this answer was posted on originally into this more canonical topic. Please check if you should edit it to adapt it to this topic. – Murch Jun 7 '17 at 16:36
1

I am in the same situation. I contacted my wallet provider and this was the responce.

"Hello,

The bitcoin mempool is currently backlogged, which is causing a delay with transaction confirmations. You can follow it live on this chart, which shows all pending bitcoin transactions on the bitcoin network - https://blockchain.info/charts/mempool-count. This is impacting the entire bitcoin network, not just Blockchain.info.

An unconfirmed transaction will eventually be accepted into a block by whichever mining pool mines the block, or the transaction will eventually be rejected by the bitcoin network after an estimated one to seven days. If it eventually is rejected, then the funds would remain at the bitcoin address they were sent from. The only thing you can do at this point is to wait and see if the transaction is accepted into a block. Like all wallet providers, Blockchain.info has absolutely no control over this, and cannot expedite transactions. This is always dependent upon the bitcoin network of miners, which we are not a part of.

Blockchain.info wallets utilize dynamic fees. The following link explains how this works - https://blog.blockchain.com/2016/03/16/introducing-dynamic-fees/."

  • I appreciate and i think the best thing to do right now is to wait and see what will happen – Adedeji2012 May 11 '17 at 19:05
  • Mine have now confirmed, took 4 days, so its worth waiting, chances are it will confirm soon. – David Wyness May 13 '17 at 11:48
  • I've merged the question this answer was posted on originally into this more canonical topic. Please check if you can edit it to adapt it to this topic. – Murch Jun 7 '17 at 16:31
1

If you have access to the core API and there is 'change' from the txn, spend the change with a high fee:

you will need

  • the stuck txn id
  • the change private key

vout is the output for the change address. Lookup the txn, the change address is the zero based output from the spend. ( if you don't know, ask - people will help)

1 Get the private key of the change address bitcoin-cli dumpprivkey <Change Addr>

2 Spend the change

this spends 1.0 BTC adjust as reqd. For your own amount - figure the change amount minus a large fee. Make sure you understand the fee will be the change from original txn minus the spend to the address. Normally protections are in place to prevent fee bloat - this method ignores them. calculate the amount carefully

bitcoin-cli createrawtransaction '[{ "txid": "the stuck txn", "vout": 1 }]' '{ "<address to send to>": 1.000 }'

you will get a result like this:

0200000001fae ... 088ac00000000

3 Sign the spend with the priv key of the change address

using the ouput from step 2 and the priv key from step 1 ...

the [] below indictaes we don't want to add any new txns into the spend (keep it simple)

bitcoin-cli signrawtransaction "0200000001fae ... 088ac00000000" "[]" '[ "<my change address PK>"]'

result will be ...

{ "hex": "020000000 ..... 8ac00000000", "complete": true }

4 Submit the txn to the network

in Step 3 we got a raw data transaction .... let's send it

bitcoin-cli sendrawtransaction "020000000 ..... 8ac00000000"

0

up until a transaction has been mined into a block it is not set in stone. therefore you can just issue a new transaction which spends the same txout as your original but which sends the funds to a different address.

would this be classed as doublespending? not technically because nothing at all has been spent until the transaction appears in a block.

this may be tricky (impossible?) to do in the standard client as it knows about the transaction you just created and so has deducted the funds in anticipation of them being mined into a block. but you can create your second transaction by:

  • downloading your private key from your wallet and loading it into a bitcoin client that knows nothing about your first transaction (note: never paste your private key into a website), or
  • manually creating a transaction using bitcoin-cli, and broadcasting it to the network
  • This is technically exactly the definition of a double spending. – tobixen Oct 10 '15 at 14:57
  • 1
    no. doublespending would be if the same txout went to 2 or more txins in the blockchain itself. no txouts should ever be considered spent until there is a txin corresponding to them in the blockchain. – mulllhausen Oct 11 '15 at 7:18
  • The qt client has an option now (-zapwallettxes=2) that will reload your transactions from the blockchain and give your balance back so that you can re-attempt the transactions that didn't confirm. – Brian Gordon Jan 20 '16 at 5:57
  • I've merged the question this answer was posted on originally into this more canonical topic. Please check if you should edit it to adapt it to this topic. – Murch Jun 7 '17 at 16:36
0

The only thing you can do is to wait for the transaction confirmation, like me now. This link show that more than 120.000 transaction unconfirmed including ours https://blockchain.info/unconfirmed-transactions

  • I've merged the question this answer was posted on originally into this more canonical topic. Please check if you can edit it to adapt it to this topic. – Murch Jun 7 '17 at 16:31

protected by Community Jun 23 '17 at 1:20

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.