Hi Lucas, > In some coinjoin implementations inputs are registered first because in that > way, if the user fails or refuses to sign the transaction the input is banned > and denial of service is made a bit more expensive, in the sense that an > attacker needs more and more utxos to keep the attack going.
DoS attacks are even possible in later stages of a coinjoin round. Example: Double spend inputs after signing Inputs could be banned in second step if ALL|ANYONECANPAY sighash flag is used and outputs are registered initially. /dev/fd0 floppy disk guy Sent with Proton Mail secure email. ------- Original Message ------- On Tuesday, May 23rd, 2023 at 5:47 PM, Lucas Ontivero <lucasontiv...@gmail.com> wrote: > Hi all, > In some coinjoin implementations inputs are registered first because in that > way, if the user fails or refuses to sign the transaction the input is banned > and denial of service is made a bit more expensive, in the sense that an > attacker needs more and more utxos to keep the attack going. > > Your proposal can work if you find an alternative mechanism for mitigating > the DoS attacks or when DoS attacks are not a problem (I can imagine there > are scenarios where it is not really important). > Best > - Lucas > > > > On Mon, May 22, 2023 at 7:53 PM Ben Carman via bitcoin-dev > <bitcoin-dev@lists.linuxfoundation.org> wrote: > > > The problem with using ALL|ANYONECANPAY is that you cannot verify > > beforehand that the other inputs are the inputs you want added to the > > transaction. > > > > Some examples of bad things that could happen: > > > > > > - Coordinator adds its own inputs, you still get your outputs but > > effectively paid fees for no privacy gain > > - The inputs added could be paying at a lower fee rate than expected, > > causing the tx to take longer than what you paid for > > - Different input types or amount are added so you no longer have the > > same uniformity across the inputs > > - (if you care) An input from a sanctioned address is added, causing you > > to get "tainted" coins. > > > > > > This is the code in ln-vortex that verifies the psbt on the client side if > > you are curious > > > > https://github.com/ln-vortex/ln-vortex/blob/master/client/src/main/scala/com/lnvortex/client/VortexClient.scala#L616 > > > > > > Best, > > > > benthecarman > > > > > > > > From: bitcoin-dev <bitcoin-dev-boun...@lists.linuxfoundation.org> on behalf > > of alicexbt via bitcoin-dev <bitcoin-dev@lists.linuxfoundation.org> > > Sent: Monday, May 22, 2023 7:51 AM > > To: Bitcoin Protocol Discussion <bitcoin-dev@lists.linuxfoundation.org> > > Subject: [bitcoin-dev] Coinjoin with less steps using ALL|ANYONECANPAY > > > > Hi Bitcoin Developers, > > > > I recently experimented with different sighash flags, PSBTs and realized > > ALL|ANYONECANPAY could be used to reduce some steps in coinjoin. > > > > Steps: > > > > - Register outputs. > > - One user creates a signed PSBT with 1 input, all registered outputs and > > ALL|ANYONECANPAY sighash flag. Other participants keep adding their inputs > > to PSBT. > > - Finalize and broadcast the transaction. > > > > Proof of Concept (Aice and Bob): https://gitlab.com/-/snippets/2542297 > > > > Tx: > > https://mempool.space/testnet/tx/c6dd626591dca7e25bbd516f01b23171eb0f2b623471fcf8e073c87c1179c492 > > > > I plan to use this in joinstr if there are no major drawbacks and it can > > even be implemented by other coinjoin implementations. > > > > /dev/fd0 > > floppy disk guy > > > > Sent with Proton Mail secure email. > > _______________________________________________ > > bitcoin-dev mailing list > > bitcoin-dev@lists.linuxfoundation.org > > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev > > > > _______________________________________________ > > bitcoin-dev mailing list > > bitcoin-dev@lists.linuxfoundation.org > > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev _______________________________________________ bitcoin-dev mailing list bitcoin-dev@lists.linuxfoundation.org https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev