When you say that a special relay network might be more "smart about replacement" in the context of ANYPREVOUT*, do you mean these nodes could RBF parts of a package like this: Given: - Package A = UpdateTx_A(n=1): txin: AnchorTx, txout: SettlementTx_A(n=1) -> HtlcTxs(n=1)_A -> .chain of transactions that pin UpdateTx_A(n=1) with high total fee, etc. And a new package with higher fee rate versions of ANYPREVOUT* transactions in the package, but otherwise lower total fee: - Package B = UpdateTx_B(n=1): txin: AnchorTx, txout: SettlementTx_B(n=1) -> HtlcTxs(n=1)_B -> low total fee package Relay just the higher up-front fee-rate transactions from package B which get spent by the high absolute fee child transactions from package A: - Package A' = UpdateTx_B(n=1): txin: AnchorTx, txout: SettlementTx_B(n=1) -> HtlcTxs(n=1)_A -> ...chain of up to 25 txs that pin UpdateTx(n=1) with high total fee, etc. On Thu, Aug 6, 2020 at 5:59 PM Matt Corallo via bitcoin-dev < bitcoin-dev@lists.linuxfoundation.org> wrote: > In general, SIGHASH_NOINPUT makes these issues much, much simpler to > address, but only if we assume that nodes can > somehow be "smart" about replacement when they see a SIGHASH_NOINPUT spend > which can spend an output that something else > in the mempool already spends (potentially a different input than the > relaying node thinks the transaction should > spend). While ideally we'd be able to shove that (significant) complexity > into the Bitcoin P2P network, that may not be > feasible, but we could imagine a relay network of lightning nodes doing > that calculation and then passing the > transactions to their local full nodes.