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