Return-Path: Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 1AAD6C004D for ; Tue, 11 Aug 2020 00:14:35 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 09B4886031 for ; Tue, 11 Aug 2020 00:14:35 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ntyS0PBa8Dfu for ; Tue, 11 Aug 2020 00:14:33 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mail.as397444.net (mail.as397444.net [69.59.18.99]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 7CF7386008 for ; Tue, 11 Aug 2020 00:14:33 +0000 (UTC) Received: by mail.as397444.net (Postfix) with ESMTPSA id CD5F02D4A4C; Tue, 11 Aug 2020 00:14:30 +0000 (UTC) X-DKIM-Note: Keys used to sign are likely public at https://as397444.net/dkim/ DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mattcorallo.com; s=1597102863; t=1597104871; bh=4NagTHYJdmc5gTSNFnNWetJVIg180+jMLPcElkC6YCA=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=GT2iWoGGxiN/GMfomIsijO9aquHgBV33jzmeGTmWND1fZGOz1aZm4oiVyX/AqT/Yx U+LOSJ9Y7y8SBuBvE7hdu4x91Bpxj3m+x5BkYopY7YW49V1hLHrEHaS4L+JSgGMOhb TQ5Z5D1goRhQmTcpEoz/UZOgSTbj4O6hzNtj11YattdqVssAjGiA6gDIL5KVBHbogV KkvnXe5X9H8MI6ayEe0jdwcCw7Uw9YU10T1vl7CtwOHBV3iaGVLKZoTp+jlwF6jlV2 hFna1e5gpOhSSkIDPqy6UOF32uT0gnFZGTBOq8M5gtUCp2QPczSli/ml0insQ8lk5O Ix0YOOtosg3fA== To: Richard Myers , Bitcoin Protocol Discussion References: <735E5B6A-785E-408B-8658-FA36200923C7@mattcorallo.com> <94bb2092-6d53-0e46-45ac-a1f8e04dafba@mattcorallo.com> From: Matt Corallo Message-ID: Date: Mon, 10 Aug 2020 20:14:29 -0400 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [bitcoin-dev] BIP 118 and SIGHASH_ANYPREVOUT 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: Tue, 11 Aug 2020 00:14:35 -0000 I was assuming, largely, that Bitcoin Core will eventually get what you describe here (which is generally termed "package relay", implying we relay, and process, groups of transactions as one). What we'd need for SIGHASH_ANYPREVOUT is a relay network that isn't just smart about fee calculation, but can actually rewrite the transactions themselves before passing them on to a local bitcoind. eg such a network would need to be able to relay "I have transaction A, with one input, which is valid for any output-idx-0 in a transaction spending output B". and then have the receiver go look up which transaction in its mempool/chain spends output B, then fill in the input with that outpoint and hand the now-fully-formed transaction to their local bitcoind for processing. Matt On 8/7/20 11:34 AM, Richard Myers wrote: > When you say that a special relay network might be more "smart about replacement" in the context of ANYPREVOUT*, do you > mean these nodes could RBF parts of a package like this: > > > Given: >  - Package A = UpdateTx_A(n=1): txin: AnchorTx, txout: SettlementTx_A(n=1) -> HtlcTxs(n=1)_A -> .chain of  transactions > that pin UpdateTx_A(n=1) with high total fee, etc. > > > And a new package with higher fee rate versions of ANYPREVOUT* transactions in the package, but otherwise lower total fee: > >  - Package B = UpdateTx_B(n=1): txin: AnchorTx, txout: SettlementTx_B(n=1) -> HtlcTxs(n=1)_B -> low total fee package > > > Relay just the higher up-front fee-rate transactions from package B which get spent by the high absolute fee child > transactions from package A: > >  - Package A' = UpdateTx_B(n=1): txin: AnchorTx, txout: SettlementTx_B(n=1) -> HtlcTxs(n=1)_A -> ...chain of up to 25 > txs that pin UpdateTx(n=1) with high total fee, etc. > > On Thu, Aug 6, 2020 at 5:59 PM Matt Corallo via bitcoin-dev > wrote: > > In general, SIGHASH_NOINPUT makes these issues much, much simpler to address, but only if we assume that nodes can > somehow be "smart" about replacement when they see a SIGHASH_NOINPUT spend which can spend an output that something else > in the mempool already spends (potentially a different input than the relaying node thinks the transaction should > spend). While ideally we'd be able to shove that (significant) complexity into the Bitcoin P2P network, that may not be > feasible, but we could imagine a relay network of lightning nodes doing that calculation and then passing the > transactions to their local full nodes. > >