<oembed><type>rich</type><version>1.0</version><title>Antoine Riard [ARCHIVE] wrote</title><author_name>Antoine Riard [ARCHIVE] (npub1vj…4x8dd)</author_name><author_url>https://yabu.me/npub1vjzmc45k8dgujppapp2ue20h3l9apnsntgv4c0ukncvv549q64gsz4x8dd</author_url><provider_name>njump</provider_name><provider_url>https://yabu.me</provider_url><html>📅 Original date posted:2021-06-10&#xA;📝 Original message:&gt; So something like&#xA;`or(and(pk(FB),pk(A)),and(pk(FB),pk(B)),and(pk(FB),pk(C)))` with each `or`&#xA;in their own leaf? I think it works, but only if the keys `A`, `B`, `C` are&#xA;&#34;hot&#34;, as in available to the&#xA;fee-bumper. For Revault it means introducing a key for each watchtower in&#xA;the vaults descriptors, which is meh but technically feasible since they&#xA;are identified. This kinda break our replication&#xA;model though. On the other end for Lightning... You&#39;d need to know what&#xA;watchtower (or your node) is going to be willing to feebump? The descriptor&#xA;can very quickly get very convoluted:&#xA;`or(and(pk(FB),pk(A_NODE)),and(pk(FB),pk(A_WT1)),and(pk(FB),pk(A_WT2)),and(pk(FB),pk(B_NODE)),and(pk(FB),pk(B_WT1)),and(pk(FB),pk(B_WT2)))`&#xA;for only 2 participants in a channel&#xA;where one of either the node or two watchtowers (identified beforehand !!)&#xA;can feebump.&#xA;&#xA;I&#39;m not sure if we agree on the purpose of the finalizing key ? Its goal is&#xA;to finalize the transaction state once another fee-bumping input has been&#xA;attached and should be part of the witnessScript of the &#34;main&#34; input. If a&#xA;third-party try to attach a malicious pinning input, doing so breaks the&#xA;finalizing signature and the transaction will be rejected as invalid by&#xA;network mempools.&#xA;&#xA;This key doesn&#39;t secure funds and as such can be shared to any fee-bumper&#xA;entity (contract source, sourced towers, outsourced towers ?). Of course,&#xA;it means an outsourced tower can re-introduce malicious transaction&#xA;malleability but at least it&#39;s moving away malleability from the&#xA;contract-level and it&#39;s now a holder tower policy decision ?&#xA;&#xA;Overall I agree any fee-bumping techniques comparison should also account&#xA;tower key management complexity (and this one was missing).&#xA;&#xA;&gt; Yes. That&#39;s a bit concerning, but i guess it&#39;s a tradeoff. Amusingly the&#xA;incentive is at odds with routing: you want to keep your channels&#xA;unbalanced if you run on fractional fee-bumping reserves&#xA;so that if things go south you can still salvage most of your funds by&#xA;focusing your fee-bumping on the unbalanced (to you) channels :p .&#xA;&#xA;That&#39;s a good point! Switching to anchor now rebalances a security matter,&#xA;not sure if it was an intended effect of the design :) Also, you might take&#xA;HTLC forwarding acceptance decisions holistically instead of a per-channel&#xA;level. If your number of HTLC in-flight expressed as outputs on one&#xA;commitment transaction goes up, don&#39;t accept anymore HTLC on other&#xA;channels, otherwise, you might run short of fee-bumping reserve...&#xA;&#xA;Le ven. 28 mai 2021 à 18:25, darosior &lt;darosior at protonmail.com&gt; a écrit :&#xA;&#xA;&gt;&#xA;&gt; Oh yes, I should have mentioned this pinning vector. The witnessScript&#xA;&gt; I&#39;ve in mind to make secure that type of chain of transactions would be one&#xA;&gt; MuSig key for all contract participants, where signature are committed with&#xA;&gt; SIGHASH_ANYPREVOUT | SIGHASH_IOMAP, one pubkey per participant to lockdown&#xA;&gt; the transaction with SIGHASH_ALL. I think it works and prevents malicious&#xA;&gt; in-flight attachment of input/output to a multi-party transaction ?&#xA;&gt;&#xA;&gt;&#xA;&gt; So something like&#xA;&gt; `or(and(pk(FB),pk(A)),and(pk(FB),pk(B)),and(pk(FB),pk(C)))` with each `or`&#xA;&gt; in their own leaf? I think it works, but only if the keys `A`, `B`, `C` are&#xA;&gt; &#34;hot&#34;, as in available to the&#xA;&gt; fee-bumper. For Revault it means introducing a key for each watchtower in&#xA;&gt; the vaults descriptors, which is meh but technically feasible since they&#xA;&gt; are identified. This kinda break our replication&#xA;&gt; model though. On the other end for Lightning... You&#39;d need to know what&#xA;&gt; watchtower (or your node) is going to be willing to feebump? The descriptor&#xA;&gt; can very quickly get very convoluted:&#xA;&gt; `or(and(pk(FB),pk(A_NODE)),and(pk(FB),pk(A_WT1)),and(pk(FB),pk(A_WT2)),and(pk(FB),pk(B_NODE)),and(pk(FB),pk(B_WT1)),and(pk(FB),pk(B_WT2)))`&#xA;&gt; for only 2 participants in a channel&#xA;&gt; where one of either the node or two watchtowers (identified beforehand !!)&#xA;&gt; can feebump.&#xA;&gt;&#xA;&gt; I see, so you spread your bumping UTXO pool in two ranges : at least one&#xA;&gt; bumping utxo per contract, and a subpool of emergency smaller coins, ready&#xA;&gt; to be attached on any contract. I think this strategy makes sense for&#xA;&gt; vaults as you can afford a bunch of small coins at different feerates,&#xA;&gt; spending the ones not used afterwards. And higher cells of feerate reserve&#xA;&gt; as the worst historical feerate are relatively not that much compared to&#xA;&gt; locked-in vaults value. That said, I&#39;m more dubious about LN, where node&#xA;&gt; operators might not keep the worst-case fee-bumping reserve, as the time&#xA;&gt; value of the coins aren&#39;t worth the channel liquidity at stake.&#xA;&gt;&#xA;&gt;&#xA;&gt; Yes. That&#39;s a bit concerning, but i guess it&#39;s a tradeoff. Amusingly the&#xA;&gt; incentive is at odds with routing: you want to keep your channels&#xA;&gt; unbalanced if you run on fractional fee-bumping reserves&#xA;&gt; so that if things go south you can still salvage most of your funds by&#xA;&gt; focusing your fee-bumping on the unbalanced (to you) channels :p .&#xA;&gt;&#xA;&gt; Yes, input-based bumping targeting the tail of the chain works at the&#xA;&gt; transaction level. But if you assume bounded visibility of network&#xA;&gt; mempools, one of your counterparties might have broadcast a concurrent&#xA;&gt; state, thus making your CPFP irrelevant for propagation. Though smarter&#xA;&gt; tx-relay techniques such as &#34;attach-on-contract-utxo-root&#34; CPFP (or also&#xA;&gt; known as &#34;blinded CPFP&#34;) might solve this issue.&#xA;&gt;&#xA;&gt;&#xA;&gt; Oh, yes, good point.&#xA;&gt;&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210610/19a75ce7/attachment-0001.html&gt;</html></oembed>