Return-Path: Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id B3CEFC016F for ; Wed, 10 Jun 2020 10:58:12 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id AF9E188227 for ; Wed, 10 Jun 2020 10:58:12 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CLPh4KnjQl0l for ; Wed, 10 Jun 2020 10:58:10 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-40130.protonmail.ch (mail-40130.protonmail.ch [185.70.40.130]) by whitealder.osuosl.org (Postfix) with ESMTPS id 8FE8F88220 for ; Wed, 10 Jun 2020 10:58:10 +0000 (UTC) Date: Wed, 10 Jun 2020 10:58:03 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail; t=1591786688; bh=9ankB9fXa1jpe+wYlDQZWIeYS9cw7tr7FYYIKjDrCGU=; h=Date:To:From:Cc:Reply-To:Subject:In-Reply-To:References:From; b=toqP2wHTPm3X2Wnc37ZAKDXCh2nvxSTQ4DzWC2HlxBXU1TW/WBQNtbanO8zNfW2MY fAhsMvtgrYEvEKO/ITAQXDLEekWDKjuduV7zCsDqqFKAZuIv8NraTA13tmKf+DsVXP m7S9QUhy/NxwnmhR54X6ewPlC5QO8IpnL1kyQpi4= To: Chris Belcher From: ZmnSCPxj Reply-To: ZmnSCPxj Message-ID: In-Reply-To: <27f05cf1-08b2-a281-75b7-5c035317d030@riseup.net> References: <82d90d57-ad07-fc7d-4aca-2b227ac2068d@riseup.net> <5LiZqpFxklAAbGFiiAE3ijRbIteODXKcHrXvGJ-qabgQj5hG8beFtHNbVZ-XUxETVwduJYz94UYuJGAPxBrbGeZpSClUtXYsPJBABfr03KM=@protonmail.com> <27f05cf1-08b2-a281-75b7-5c035317d030@riseup.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cc: Bitcoin Protocol Discussion Subject: Re: [bitcoin-dev] Design for a CoinSwap implementation for massively improving Bitcoin privacy and fungibility X-BeenThere: bitcoin-dev@lists.linuxfoundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Bitcoin Protocol Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Jun 2020 10:58:12 -0000 Good morning Chris, > > Let me propose an alternative: swap-on-receive+swap-on-change. > > That's an interesting point, thanks for the thought. This scheme might > not be appropriate for every threat model and use case. > For example, if someone wants to use bitcoin just as a foreign currency > for its privacy and censorship-resistant properties. So for example if > they want to pay for a VPN anonymously, so they buy bitcoins and > immediately send all of them to the VPN merchant. The swap-on-receive > wouldn't be appropriate for them because they'll be doing a coinswap > straight away to the VPN merchant. So perhaps this plan could be an > optional mode of operation (which may or may not be the default). The > scheme obviously is useful when bitcoin is being used more as a > day-to-day money. No, I think you misunderstand my proposal. If the user is doing swap-on-receive, the user already has an anonymous UTX= O, they can just transfer it directly in full to the VPN without using a Co= inSwap. The number of CoinSwaps involved is the same: one. So the difference is: * swap-on-receive: * I get some coins from an exchange, giving them my contact information a= nd bank information and all the places I have ever inhabited in my entire e= xistence and an unfertilized egg sample and an archive of my diary and let = them invasively scan my cognitive substrate. * I send the coins to my CoinSwap wallet. * The CoinSwap wallet automaticaly CoinSwaps the coins into a new UTXO. * One CoinSwap. * I tell the CoinSwap wallet to send it all to the VPN. * My CoinSwap wallet knows my coins are already cleaned, so it creates = a plain 1-input 1-output transaction directly to the VPN address. * swap-on-pay: * I get some coins from an exchange, giving them my contact information a= nd bank information and all the places I have ever inhabited in my entire e= xistence and an unfertilized egg sample and an archive of my diary and let = them invasively scan my cognitive substrate. * I send the coins to my CoinSwap wallet. * I tell the CoinSwap wallet to send it all to the VPN. * My CoinSwap wallet automatically arranges a CoinSwap into the VPN add= ress. * One CoinSwap. So in both cases the same expected number of CoinSwaps is done, i.e. one. Note that there are still details like how much onchain fees are and how mu= ch CoinSwap maker fees are and etc etc but they exist for both flows anyway= . So I would still be buying slightly more than my target amount, and if ther= e is any change I could just designate it to be added to the mining fees or= a donation to ZmnSCPxj, because ZmnSCPxj is so awesome. What swap-on-receive+swap-on-change instead does is just amortize the timin= g of the CoinSwaps, so that you CoinSwap as soon as you receive, instead of= as soon as you have to pay, so that sending payments is as fast as non-Coi= nSwap onchain wallets. Regards, ZmnSCPxj