At the time of writing, almost 100MvB worth of transactions has been dumped into the mempool. If you had lower-fee transactions waiting to be confirmed, there's a risk they'll be purged from the global mempool. If that happens, you might have to recreate the transaction, which can be painful, especially if you're using a multi-sig wallet or an offline, air-gapped wallet.
I'll explain how to alleviate this pain.
Getting the raw transaction hex
First thing you'll need is the raw transaction hex. It'll allow you to to rebroadcast the transaction later on. Your wallet might have an option to export the transaction hex. If that's your case, you can skip this section. Otherwise, keep reading.
Both options below require having the
txid
, the id of the transaction.# Using bitcoin-cli $ bitcoin-cli getrawtransaction <txid> >my-transaction.hex # Using curl $ curl https://blockstream.info/api/tx/<txid>/hex >my-transaction.hex
Alternatively, you can use your day-to-day browser. Just navigate to
https://blockstream.info/api/tx/<txid>/hex
.Save this data somewhere safe. You'll need it later on.
Rebroadcasting the transaction
If you can't see your transaction in the mempool or in your wallet anymore, it means it has been purged.
To rebroadcast it, you can either:
- Use
bitcoin-cli
, or - Use a third-party service
Using bitcoin-cli
You can use
bitcoin-cli
's sendrawtransaction
, but there are privacy concerns:Note that the transaction will be sent unconditionally to all peers, so using this for manual rebroadcast may degrade privacy by leaking the transaction's origin, as nodes will normally not rebroadcast non-wallet transactions already in their mempool.
If you still want to use
bitcoin-cli
, here's how:$ xargs bitcoin-cli sendrawtransaction <my-transaction.hex
Using a third-party
By using a third-party you don't expose the relationship between your node and your transaction. This is especially interesting when using a VPN to even hide your IP address.
There are two way to use a third-party:
- Using the cli
- Using the browser
Using the cli
xargs curl https://blockstream.info/api/tx -X POST --data-raw <my-transaction.hex
Using the browser
Navigate to the URL below, paste in your transaction's raw hex data, and click "Broadcast transcation" (d'oh).
What if it says "mempool error: fee too low"?
If the mempool is full and won't accept your transaction due to it having a low-fee, you can use Replace-By-Fee (RBF) or Child-Pays-For-Parent (CPFP). However, you'll rather just keep waiting until 1sat/vB is enough, just keep your transaction's raw hex data somewhere save and retry rebroadcasting it whenever the mempool is not so full anymore.
maxmempool=1000
and some with2000
. Also much raisedmaxorphantx
andmempoolexpiry
. And of course there are much more such higher-limit-nodes. And some even keep manually rebroadcasting each transaction in the big mempool they keep, like if it was comming from them using a script like following:busybox ash
and should run with OpenBSD'spdksh
as well.xdotool
for automation).xargs curl … <input
does :) It's great to learn from everyone! Thanks!xargs
(run it with--show-limits
).