#11094 adds pre-signed (SIGHASH_DEFAULT) second-level HTLC txs for aux channels. The parent carries a fixed fee of 1.1x the relay floor plus a CPFP anchor, since the peer's signature commits to the whole tx and the sweeper cannot rebuild it. Fee adaptation is the anchor child's job.
Today the parent is broadcast standalone and the anchor is only offered to the sweeper after that broadcast succeeds. If the dynamic mempool minimum rises above ~1.1 sat/vB (any time the mempool is full and evicting), the parent is rejected and the child never gets a chance to attach, exactly when timely confirmation matters most.
Proposed fix: submit the parent and its anchor child together via package submission (bitcoind submitpackage, walletrpc.SubmitPackage already exists). Package feerate evaluation rescues the below-minimum parent without changing the tx format or the signing protocol. What's missing is wiring the second-level publish path and the sweeper's anchor handling together so the pair is submitted atomically, plus a fallback to today's standalone publish for backends without package support (btcd).
Longer term, once the sweeper and itest infrastructure can handle it, the parent can become zero-fee with a zero-value P2A anchor (TRUC/ephemeral dust). That removes the fee constant entirely and would let taproot-assets shrink the fixed HTLC carrier value (see the TODO in taproot-assets rfqmath/convert.go).
Refs: #11094, lightninglabs/taproot-assets#1994
#11094 adds pre-signed (SIGHASH_DEFAULT) second-level HTLC txs for aux channels. The parent carries a fixed fee of 1.1x the relay floor plus a CPFP anchor, since the peer's signature commits to the whole tx and the sweeper cannot rebuild it. Fee adaptation is the anchor child's job.
Today the parent is broadcast standalone and the anchor is only offered to the sweeper after that broadcast succeeds. If the dynamic mempool minimum rises above ~1.1 sat/vB (any time the mempool is full and evicting), the parent is rejected and the child never gets a chance to attach, exactly when timely confirmation matters most.
Proposed fix: submit the parent and its anchor child together via package submission (bitcoind
submitpackage,walletrpc.SubmitPackagealready exists). Package feerate evaluation rescues the below-minimum parent without changing the tx format or the signing protocol. What's missing is wiring the second-level publish path and the sweeper's anchor handling together so the pair is submitted atomically, plus a fallback to today's standalone publish for backends without package support (btcd).Longer term, once the sweeper and itest infrastructure can handle it, the parent can become zero-fee with a zero-value P2A anchor (TRUC/ephemeral dust). That removes the fee constant entirely and would let taproot-assets shrink the fixed HTLC carrier value (see the TODO in taproot-assets
rfqmath/convert.go).Refs: #11094, lightninglabs/taproot-assets#1994