I think that if we don’t re-linearize what is left of the old clusters, that we might open the door to some RBF pinning scenarios that otherwise wouldn’t exist.
Imagine you are doing an RBF where you are swapping out one low fee parent with another. Old tx graph (feerates in parens, all txs same size):
graph TD
P1("P1(1)") --> A("A (19)")
P2("P2(9)") --> X("X(1)")
P1 --> X
P3("P3(1)")
This 2-cluster tx graph would have mempool chunks with feerates [10, 9, 1, 1].
And then you want to consider replacing A with B:
graph TD
P1("P1(1)")
P2("P2(9)") --> X("X(1)")
P1 --> X
P3("P3(1)")--> B("B(?)")
Assuming B’s feerate is going up, then if we didn’t relinearize the cluster containing A, the mempool chunks we’d get from this graph would have feerates: [(R(B)+1)/2, 5, 1]. If you were to relinearize, you’d instead get [(R(B)+1)/2, 9, 1, 1].
Using the feerate diagram test as our RBF metric, if we don’t relinearize, then I think you could just increase the size of P2 (and leave it at the same feerate) in order to increase the feerate required for B to be accepted. Not sure exactly what the mathematical relationship is, but this strikes me as a bad outcome?
Update:
I did a quick check to see how high I could get the required feerate of B based on the (a) size of P2 (holding feerate constant), and (b) the feerate of P2 (in the range of 1-9), assuming we do/do not relinearize the old cluster when processing an RBF.
Changing P2’s size, fixing P2 at feerate 9:
P2’s size | Min fee bump with relinearization | Min fee bump without relinearization |
---|---|---|
1 | 1 | 4 |
2 | 1 | 6 |
3 | 1 | 6 |
4 | 1 | 7 |
8 | 1 | 8 |
9 & higher | 1 | 8 |
Changing P2’s feerate, fixing P2 at size 1:
P2’s feerate | Min fee bump with relinearization | Min fee bump without relinearization |
---|---|---|
1 | 1 | 1 |
4 | 1 | 2 |
6 | 1 | 3 |
8 | 1 | 4 |
My conclusion from this is that we ought to relinearize the old clusters, to avoid artificially increasing the fee bump needed due to unrelated transactions like P2 (and X, which is the only reason that P2 is relevant in the graph).