<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:2023-09-25&#xA;🗒️ Summary of this message: Payment pools and channel factories face limitations in interactivity, affecting the security of user funds. Proposed solutions include introducing a coordinator or partitioning balances, but these may not be economically practical. A potential solution is to prevent off-chain group equivocation by editing the funding utxo in a way that allows for the registration of new off-chain subgroups. CoinPool&#39;s idea of including user pubkeys and balance amounts in Taproot leaves could be utilized for privacy-preserving payments and contracts.&#xA;📝 Original message:&#xA;Payment pools and channel factories are afflicted by severe interactivity&#xA;constraints worsening with the number of users owning an off-chain balance&#xA;in the construction. The security of user funds is paramount on the ability&#xA;to withdraw unilaterally from the off-chain construction. As such any&#xA;update applied to the off-chain balances requires a signature contribution&#xA;from the unanimity of the construction users to ensure this ability is&#xA;conserved along updates.&#xA;&#xA;As soon as one user starts to be offline or irresponsive, the updates of&#xA;the off-chain balances must have to be halted and payments progress are&#xA;limited among subsets of 2 users sharing a channel. Different people have&#xA;proposed solutions to this issue: introducing a coordinator, partitioning&#xA;or layering balances in off-chain users subsets. I think all those&#xA;solutions have circled around a novel issue introduced, namely equivocation&#xA;of off-chain balances at the harm of construction counterparties [0].&#xA;&#xA;As ZmnSCPxj pointed out recently, one way to mitigate this equivocation&#xA;consists in punishing the cheating pre-nominated coordinator on an external&#xA;fidelity bond. One can even imagine more trust-mimized and decentralized&#xA;fraud proofs to implement this mitigation, removing the need of a&#xA;coordinator [1].&#xA;&#xA;However, I believe punishment equivocation to be game-theory sound should&#xA;compensate a defrauded counterparty of the integrity of its lost off-chain&#xA;balance. As one cheating counterparty can equivocate in the worst-case&#xA;against all the other counterparties in the construction, one fidelity bond&#xA;should be equal to ( C - 1 ) * B satoshi amount, where C is the number of&#xA;construction counterparty and B the initial off-chain balance of the&#xA;cheating counterparty.&#xA;&#xA;Moreover, I guess it is impossible to know ahead of a partition or&#xA;transition who will be the &#34;honest&#34; counterparties from the &#34;dishonest&#34;&#xA;ones, therefore this ( C - 1 ) * B-sized fidelity bond must be maintained&#xA;by every counterparty in the pool or factory. On this ground, I think this&#xA;mitigation and other corrective ones are not economically practical for&#xA;large-scale pools among a set of anonymous users.&#xA;&#xA;I think the best solution to solve the interactivity issue which is&#xA;realistic to design is one ruling out off-chain group equivocation in a&#xA;prophylactic fashion. The pool or factory funding utxo should be edited in&#xA;an efficient way to register new off-chain subgroups, as lack of&#xA;interactivity from a subset of counterparties demands it.&#xA;&#xA;With CoinPool, there is already this idea of including a user pubkey and&#xA;balance amount to each leaf composing the Taproot tree while preserving the&#xA;key-path spend in case of unanimity in the user group. Taproot leaves can&#xA;be effectively regarded as off-chain user accounts available to realize&#xA;privacy-preserving payments and contracts.&#xA;&#xA;I think one (new ?) idea can be to introduce taproot leaves &#34;cut-through&#34;&#xA;spends where multiple leaves are updated with a single witness,&#xA;interactively composed by the owners of the spent leaves. This spend sends&#xA;back the leaves amount to a new single leaf, aggregating the amounts and&#xA;user pubkeys. The user leaves not participating in this &#34;cut-through&#34; are&#xA;inherited with full integrity in the new version of the Taproot tree, at&#xA;the gain of no interactivity from their side.&#xA;&#xA;Let&#39;s say you have a CoinPool funded and initially set with Alice, Bob,&#xA;Caroll, Dave and Eve. Each pool participant has a leaf L.x committing to an&#xA;amount A.x and user pubkey P.x, where x is the user name owning a leaf.&#xA;&#xA;Bob and Eve are deemed to be offline by the Alice, Caroll and Dave subset&#xA;(the ACD group).&#xA;&#xA;The ACD group composes a cut-through spend of L.a + L.c + L.d. This spends&#xA;generates a new leaf L.(acd) leaf committing to amount A.(acd) and P.(acd).&#xA;&#xA;Amount A.(acd) = A.a + A.c + A.d and pubkey P.(acd) = P.a + P.c + P.d.&#xA;&#xA;Bob&#39;s leaf L.b and Eve&#39;s leaf L.e are left unmodified.&#xA;&#xA;The ACD group generates a new Taproot tree T&#39; = L.(acd) + L.b + L.e, where&#xA;the key-path K spend including the original unanimity of pool&#xA;counterparties is left unmodified.&#xA;&#xA;The ACD group can confirm a transaction spending the pool funding utxo to a&#xA;new single output committing to the scriptpubkey K + T&#39;.&#xA;&#xA;&gt;From then, the ACD group can pursue off-chain balance updates among the&#xA;subgroup thanks to the new P.(acd) and relying on the known Eltoo&#xA;mechanism. There is no possibility for any member of the ACD group to&#xA;equivocate with Bob or Eve in a non-observable fashion.&#xA;&#xA;Once Bob and Eve are online and ready to negotiate an on-chain pool&#xA;&#34;refresh&#34; transaction, the conserved key-path spend can be used to&#xA;re-equilibrate the Taproot tree, prune out old subgroups unlikely to be&#xA;used and provision future subgroups, all with a compact spend based on&#xA;signature aggregation.&#xA;&#xA;Few new Taproot tree update script primitives have been proposed, e.g [2].&#xA;Though I think none with the level of flexibility offered to generate&#xA;leaves cut-through spends, or even batch of &#34;cut-through&#34; where M subgroups&#xA;are willing to spend N leaves to compose P new subgroups fan-out in Q new&#xA;outputs, with showing a single on-chain witness. I believe such a&#xA;hypothetical primitive can also reduce the chain space consumed in the&#xA;occurrence of naive mass pool withdraws at the same time.&#xA;&#xA;I think this solution to the high-interactivity issue of payment pools and&#xA;factories shifts the burden on each individual user to pre-commit fast&#xA;Taproot tree traversals, allowing them to compose new pool subgroups as&#xA;fluctuations in pool users&#39; level of liveliness demand it. Pool efficiency&#xA;becomes the sum of the quality of user prediction on its counterparties&#39;&#xA;liveliness during the construction lifetime. Recursive taproot tree spends&#xA;or more efficient accumulator than merkle tree sounds ideas to lower the&#xA;on-chain witness space consumed by every pool in the average&#xA;non-interactive case.&#xA;&#xA;Cheers,&#xA;Antoine&#xA;&#xA;[0]&#xA;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-April/020370.html&#xA;[1]&#xA;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-August/004043.html&#xA;[2]&#xA;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019420.html&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230925/77e3936d/attachment.html&gt;</html></oembed>