I wasted way too much time on this, but my second attempt works—I just needed a fifth transaction.
Arrow points from child to parent. Dotted line with ball and socket, the socket is on the side of the replacement.
You have two confirmed UTXOs C1 and C2. Let’s say 20 s/vB is the bottom of the first block.
You create a large low-feerate transaction tx_LL with 100,000 vB at 1 s/vB (fee: 100,000 s). It spends the confirmed output C1 and has an output tx_LL:0.
You attach a small low-feerate transaction tx_LS as a child with 100 vB at 1 s/vB (fee: 100 s) by spending tx_LL:0.
You RBF tx_LS with a high-feerate transaction that spends C2 and tx_LL:0 in a new transaction tx_HS. tx_HS has 5000 vB and pays 21 s/vB, but since it spends an output from a low-feerate parent, it’s mining score is only 1.95 s/vB.
You RBF tx_LL and tx_HS with tx_LM that has 100,000 vB and pays 3.05 s/vB (fee: 305,000 s) by spending the outputs C1 and C2. This is permitted, since only tx_LL is a direct conflict, so the feerate of tx_HS does not have to be beat directly.
You use the new RBFr rules to replace tx_LM with a small high feerate transaction tx_RBFr with 100 vB paying 20 s/vB (fee: 2000 s) that spends C2 and makes it into the top block of the mempool. tx_LM was not going to be in the next block, and tx_RBFr pays more than 1.25× the feerate of tx_LM. So this is permitted under the new rules.
You immediately replace both tx_LS and tx_RBFr with tx_HS. tx_HS has a feerate of 21 s/vB which is higher than tx_RBFr (20 s/vB) and tx_LS (1 s/vB), and pays more absolute fees than both (105,000 s vs 2000 s + 100 s). But since it’s a child of tx_LL it only has a mining score of 1.95 s/vB.
Repeat 4.–7. to make every node on the network cycle the same five transactions ad nauseam. Roll the locktimes or sequences to make the transaction have a new TXIDs in each iteration, while spending the same UTXOs. The only transaction that is ever in any danger of getting mined is tx_RBFr which costs you 2000 s. If it it does get included in a block, just start over with a new confirmed UTXO as your c2'.
I wasted way too much time on this, but my second attempt works—I just needed a fifth transaction.
Arrow points from child to parent. Dotted line with ball and socket, the socket is on the side of the replacement.
You have two confirmed UTXOs
C1andC2. Let’s say 20 s/vB is the bottom of the first block.tx_LLwith 100,000 vB at 1 s/vB (fee: 100,000 s). It spends the confirmed outputC1and has an outputtx_LL:0.tx_LSas a child with 100 vB at 1 s/vB (fee: 100 s) by spendingtx_LL:0.https://m.stacker.news/13360
tx_LSwith a high-feerate transaction that spendsC2andtx_LL:0in a new transactiontx_HS.tx_HShas 5000 vB and pays 21 s/vB, but since it spends an output from a low-feerate parent, it’s mining score is only 1.95 s/vB.https://m.stacker.news/13361
tx_LLandtx_HSwithtx_LMthat has 100,000 vB and pays 3.05 s/vB (fee: 305,000 s) by spending the outputsC1andC2. This is permitted, since onlytx_LLis a direct conflict, so the feerate oftx_HSdoes not have to be beat directly.https://m.stacker.news/13363
tx_LMwith a small high feerate transactiontx_RBFrwith 100 vB paying 20 s/vB (fee: 2000 s) that spendsC2and makes it into the top block of the mempool.tx_LMwas not going to be in the next block, andtx_RBFrpays more than 1.25× the feerate oftx_LM. So this is permitted under the new rules.https://m.stacker.news/13366
tx_LLandtx_LSbecauseC1is no longer being spent.https://m.stacker.news/13367
tx_LSandtx_RBFrwithtx_HS.tx_HShas a feerate of 21 s/vB which is higher thantx_RBFr(20 s/vB) andtx_LS(1 s/vB), and pays more absolute fees than both (105,000 s vs 2000 s + 100 s). But since it’s a child oftx_LLit only has a mining score of 1.95 s/vB.https://m.stacker.news/13374
Repeat 4.–7. to make every node on the network cycle the same five transactions ad nauseam. Roll the locktimes or sequences to make the transaction have a new TXIDs in each iteration, while spending the same UTXOs. The only transaction that is ever in any danger of getting mined is
tx_RBFrwhich costs you 2000 s. If it it does get included in a block, just start over with a new confirmed UTXO as yourc2'.