Welcome to the zero fee playground. Click to read an explainer.
This page showcases a recent upgrade to bitcoin in version 28. Before v28, all nodes refused, by default, to relay transactions that paid zero fees, and miners refused to mine them. Also, nodes and miners rejected transactions that *did* pay a fee if it was below a "minimum fee" threshold. The "minimum fee" threshold varied on a node-by-node basis, but it was related to the average fee paid by the transactions in each node's copy of the mempool.
V28 changed the rules. A transaction can now pay zero fees (or a fee below the "minimum fee" threshold) if it is paired with a second transaction that pays *extra* fees. To follow the new rule, the second transaction has to pay enough fees that, when the two transactions are considered together, their "combined feerate" is above the old "minimum fee" threshold. There are also several other conditions they have to follow; for example, the two transactions have to have version number 3, and the "first" one can't spend an unconfirmed utxo. The full rules are outlined in Bip 431 and Bip 331.
If you follow the steps below, you will *create* a pair of transactions that follows the new rules. The first of your two transactions will pay zero fees, but nodes will still relay it (and miners will still mine it) as long as it is paired with the second transaction.
Step 1
Send funds to the following address on testnet4 -- this will constitute your "funding transaction."
You can use this faucet if you don't have any testnet4 funds:
Choose whether or not you want to use the new "P2A" address type. (P2A means pay-to-anchor.) This new address type is unique in several ways: first, it has a new dust limit of only 240 sats; second, it's less than half the size of a "regular" bitcoin address; third, there's only *one* address in the entire P2A category, so every transaction that uses it "reuses" the same address; fourth, it's an anyone-can-spend address, meaning it has no private key and you can spend money from it without signing anything. It's not required to use P2A addresses in zero-fee transactions but this address type was created for use in these types of transactions, so consider using it just for fun.
Step 4
Hit submit. A pair of two transactions will be generated; the first pays no fees and will send your money to a "passthrough" address. The second pays "double" fees and moves your money out of the passthrough address and into the address you chose as a final destination. A box called "step 5" will appear containing the two transactions in "raw" format (aka hex format) and it will also explain what to do next.
Step 5
Here are your two transactions in raw (hex) format:
Tx1:
Tx2:
Now you have a choice about what to do with them. In my opinion, it is fun to compare "errors" with "successes." So I recommend causing a few errors first, and then do things the "right" way to see how that looks.
There are two errors you can cause:
Try to broadcast either transaction (or both) before your funding transaction confirms. Do this by clicking this link and pasting tx1 or tx2 into the field that says "Broadcast Transaction," and then hitting the Broadcast Transaction button. This should fail; by default, nodes won't relay tx1 (and miners won't mine it) if it tries to spend an unconfirmed utxo (meaning, your funding transaction has to confirm *first*), and similarly, nodes won't relay tx2 (and miners won't mine it) unless it's paired with tx1 (they'll also do it if tx1 confirms somehow, e.g. if you bribe a miner to mine it anyway).
Wait til your funding transaction confirms and then try to broadcast either tx1 or tx2 by itself. This should fail; tx1 pays zero fees, and by default, nodes will only relay a zero fee transaction (and miners will only mine it) if it is paired with a transaction that pays *double* fees -- which means broadcasting tx1 and tx2 together as a "package." And if you try to broadcast tx2 by itself, that shouldn't work because it has tx1 as a "dependency" -- meaning it tries to spend a utxo created by tx1, so if tx1 doesn't come first, tx2 is invalid.
Once you've had fun causing errors, you can do things the *right* way, which means (1) waiting til your funding transaction confirms and (2) then broadcasting tx1 and tx2 together as a package. Ready? First wait until the following transaction confirms:
Next, turn tx1 and tx2 into a package. This is very easy, it just means you put them next to one another with a comma between them, and it's so easy I've already done it for you. Here they are:
Your two transactions formatted as a package
Copy the transaction package and then visit this page:
Then paste your packaged transactions into the field that says "Submit Package." You can leave the other two fields blank (Maximum Fee Rate and Maximum Burn Amount). Then just hit the Submit Package button. As long as your funding transaction confirmed, you should see a success message indicating that you successfully broadcasted tx1 and tx2 -- even though tx1 paid zero fees. After you've broadcasted them, you can click here to view them:
Tx1:
Tx2:
Note that the above links won't work til AFTER you've broadcasted your package.