Return-Path: <alicexbt@protonmail.com>
Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136])
 by lists.linuxfoundation.org (Postfix) with ESMTP id ACF0AC002A
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Tue, 23 May 2023 12:34:29 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by smtp3.osuosl.org (Postfix) with ESMTP id 9415260F62
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Tue, 23 May 2023 12:34:27 +0000 (UTC)
DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 9415260F62
Authentication-Results: smtp3.osuosl.org;
 dkim=pass (2048-bit key) header.d=protonmail.com header.i=@protonmail.com
 header.a=rsa-sha256 header.s=protonmail3 header.b=kIKftkJJ
X-Virus-Scanned: amavisd-new at osuosl.org
X-Spam-Flag: NO
X-Spam-Score: -0.103
X-Spam-Level: 
X-Spam-Status: No, score=-0.103 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
 DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,
 PDS_OTHER_BAD_TLD=1.999, RCVD_IN_MSPIKE_H2=-0.001,
 SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=no autolearn_force=no
Received: from smtp3.osuosl.org ([127.0.0.1])
 by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id MxxiIWY33gGU
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Tue, 23 May 2023 12:34:24 +0000 (UTC)
X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0
DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org CB35F60FE7
Received: from mail-40137.protonmail.ch (mail-40137.protonmail.ch
 [185.70.40.137])
 by smtp3.osuosl.org (Postfix) with ESMTPS id CB35F60FE7
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Tue, 23 May 2023 12:34:19 +0000 (UTC)
Date: Tue, 23 May 2023 12:34:03 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
 s=protonmail3; t=1684845256; x=1685104456;
 bh=8azS5k+bgymsy/qUnQGlWFjyU+LRQACJw+4XKUxRQRA=;
 h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References:
 Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
 Message-ID:BIMI-Selector;
 b=kIKftkJJsJlJ2STnW4BDmFP/DsUuVpXWnyjHzxIO2c/inPyrslnfBpjjivkz85zI1
 hJCRur+s2LJ/Cvmmti75it+LlcM2p8gZBRw2btHXQFxmt4ByPu6XDsBLym9wToK9O7
 RBrxZjEsIYEa0HVMtkMfPXZ0aOpgyDcVT7MbaL7VWPbId9Gwznxu9l2WzAarxmCipS
 X/S3711SGMTDFphtc0kI0HEWh4h2OCvXVxAOj8ANJReGtvXSWtWUcQkRg5aHXRcnhX
 vnF+3RlDLLSGnSMlCB7bCZISEW8dQjgnVJn+1Xcy+s0OIiHqbWAM4jGRE65cr6ld9m
 xcONGxNIm1Uzg==
To: Ben Carman <benthecarman@live.com>
From: alicexbt <alicexbt@protonmail.com>
Message-ID: <WEKSZ7Q3Eloj2wIrMIjdLPpvmhKq9nvcZz5Agb6CvnpOAGrkRXatFogui9N7XnSorQ4BymhISqAHjss90M1F-H-HIaGKvbfaCTXDCVHQsqM=@protonmail.com>
In-Reply-To: <SJ1P223MB0531D7D62140F0516A25897AA1439@SJ1P223MB0531.NAMP223.PROD.OUTLOOK.COM>
References: <EWAXAmgFlZ8XQJOYO8VTH7Zj0tTAftwy-ylaGvf3Giealz1FFb97CbcxjP0q-Zu85XoAzOG0ivdYIKa_kG77ooHqBvCP7YOZOkb6yHmX75s=@protonmail.com>
 <SJ1P223MB0531D7D62140F0516A25897AA1439@SJ1P223MB0531.NAMP223.PROD.OUTLOOK.COM>
Feedback-ID: 40602938:user:proton
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Mailman-Approved-At: Tue, 23 May 2023 13:04:22 +0000
Cc: Bitcoin Protocol Discussion <bitcoin-dev@lists.linuxfoundation.org>
Subject: Re: [bitcoin-dev] Coinjoin with less steps using ALL|ANYONECANPAY
X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Bitcoin Protocol Discussion <bitcoin-dev.lists.linuxfoundation.org>
List-Unsubscribe: <https://lists.linuxfoundation.org/mailman/options/bitcoin-dev>, 
 <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=unsubscribe>
List-Archive: <http://lists.linuxfoundation.org/pipermail/bitcoin-dev/>
List-Post: <mailto:bitcoin-dev@lists.linuxfoundation.org>
List-Help: <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=help>
List-Subscribe: <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>, 
 <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=subscribe>
X-List-Received-Date: Tue, 23 May 2023 12:34:29 -0000

Hi Ben,

Thanks for the feedback.

> -   Coordinator adds its own inputs, you still get your outputs but effec=
tively paid fees for no privacy gain

What will be the incentive for a coordinator to add its inputs in coinjoin?=
 Is this possible without ALL|ANYONECANPAY as well? Even if there is an inc=
entive its unlikely to work in joinstr as there is no centralized coordinat=
or. Multiple common relays are used to coordinate a coinjoin round.

> -   The inputs added could be paying at a lower fee rate than expected, c=
ausing the tx to take longer than what you paid for
> -   Different input types or amount are added so you no longer have the s=
ame uniformity across the inputs

> This is the code in ln-vortex that verifies the psbt on the client side i=
f you are curious
>=20
> https://github.com/ln-vortex/ln-vortex/blob/master/client/src/main/scala/=
com/lnvortex/client/VortexClient.scala#L616

These 2 are important things and could be managed with client side validati=
on by keeping min-max amounts for inputs in a round and disallow different =
types of inputs. Thanks for sharing the code that validates PSBT.

Joinstr will also use NIP38/48 channels for coinjoin rounds so that only pa=
rticipants in a coinjoin round are aware of details.

/dev/fd0
floppy disk guy

Sent with Proton Mail secure email.

------- Original Message -------
On Tuesday, May 23rd, 2023 at 4:21 AM, Ben Carman <benthecarman@live.com> w=
rote:


> The problem with using ALL|ANYONECANPAY is that you cannot verify beforeh=
and that the other inputs are the inputs you want added to the transaction.
>=20
> Some examples of bad things that could happen:
>=20
>=20
> -   Coordinator adds its own inputs, you still get your outputs but effec=
tively paid fees for no privacy gain
> -   The inputs added could be paying at a lower fee rate than expected, c=
ausing the tx to take longer than what you paid for
> -   Different input types or amount are added so you no longer have the s=
ame uniformity across the inputs
> -   (if you care) An input from a sanctioned address is added, causing yo=
u to get "tainted" coins.
>    =20
>=20
> This is the code in ln-vortex that verifies the psbt on the client side i=
f you are curious
>=20
> https://github.com/ln-vortex/ln-vortex/blob/master/client/src/main/scala/=
com/lnvortex/client/VortexClient.scala#L616
>=20
>=20
> Best,
>=20
> benthecarman
>=20
>=20
>=20
> From: bitcoin-dev <bitcoin-dev-bounces@lists.linuxfoundation.org> on beha=
lf 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
>=20
> Hi Bitcoin Developers,
>=20
> I recently experimented with different sighash flags, PSBTs and realized =
ALL|ANYONECANPAY could be used to reduce some steps in coinjoin.
>=20
> Steps:
>=20
> - 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.
>=20
> Proof of Concept (Aice and Bob):=C2=A0https://gitlab.com/-/snippets/25422=
97
>=20
> Tx: https://mempool.space/testnet/tx/c6dd626591dca7e25bbd516f01b23171eb0f=
2b623471fcf8e073c87c1179c492
>=20
> I plan to use this in joinstr if there are no major drawbacks and it can =
even be implemented by other coinjoin implementations.
>=20
> /dev/fd0
> floppy disk guy
>=20
> Sent with Proton Mail secure email.
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev