<oembed><type>rich</type><version>1.0</version><title>darosior [ARCHIVE] wrote</title><author_name>darosior [ARCHIVE] (npub1pj…x22xp)</author_name><author_url>https://yabu.me/npub1pj9022f74rzq7d5x7gnxje6wpsgk4r5jgeck8y5awd423ydhan3q7x22xp</author_url><provider_name>njump</provider_name><provider_url>https://yabu.me</provider_url><html>📅 Original date posted:2020-01-30&#xA;📝 Original message:&#xA;&gt; Yes that&#39;s the reason I wrote the initiator can just announce its own and receiver use it to sign the funding tx, even if receiver tip is backward. Funding tx won&#39;t propagate from receiver mempool but that&#39;s fine if it does from the initiator one.&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;Ah, then we are back to my first response where niftynei proposed to accord on setting it to tip-6 so that reorg is not a problem (or if it is, there are bigger).&#xA;\-------- Original Message --------&#xA;On Jan 30, 2020, 19:45, Antoine Riard &lt; antoine.riard at gmail.com&gt; wrote:&#xA;&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt; &gt; The funding transaction sig would actually fail verification if tip differs between funder and fundee&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt; Yes that&#39;s the reason I wrote the initiator can just&#xA;&gt;&#xA;&gt;&#xA;&gt; announce its own and receiver use it to sign the funding tx,&#xA;&gt;&#xA;&gt;&#xA;&gt; even if receiver tip is backward. Funding tx won&#39;t propagate&#xA;&gt;&#xA;&gt;&#xA;&gt; from receiver mempool but that&#39;s fine if it does from the initiator&#xA;&gt;&#xA;&gt; one.&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt; Or are you talking about the commitment tx (different issue and there is&#xA;&gt;&#xA;&gt;&#xA;&gt; broader privacy leaks there) ?&#xA;&gt;&#xA;&gt; &gt; Darosior ( i&#39;ll stick with my pseudo, first names definitely don&#39;t have enough entropy :-) )&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt; Ahaha yeah this pseudo-random-name-generator is definitely not trustworthy :p&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt; Le jeu. 30 janv. 2020 à 13:19, darosior &lt;[darosior at protonmail.com][darosior_protonmail.com]&gt; a écrit :&#xA;&gt;&#xA;&gt;&#xA;&gt; &gt; Sorry I wasn&#39;t clear enough in the \`(cdecker)\` paragraph.&#xA;&gt; &gt;&#xA;&gt; &gt;&#xA;&gt; &gt;&#xA;&gt; &gt;&#xA;&gt; &gt;&#xA;&gt; &gt;&#xA;&gt; &gt;&#xA;&gt; &gt; The funding transaction sig would actually fail verification if tip differs between funder and fundee.&#xA;&gt; &gt;&#xA;&gt; &gt;&#xA;&gt; &gt;&#xA;&gt; &gt;&#xA;&gt; &gt;&#xA;&gt; &gt;&#xA;&gt; &gt;&#xA;&gt; &gt; Darosior ( i&#39;ll stick with my pseudo, first names definitely don&#39;t have enough entropy :-) )&#xA;&gt; &gt; \-------- Original Message --------&#xA;&gt; &gt; On Jan 30, 2020, 19:09, Antoine Riard &lt; [antoine.riard at gmail.com][antoine.riard_gmail.com]&gt; wrote:&#xA;&gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt; Hey Darosior,&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt; You don&#39;t need a strict synchronization between both peers,&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt; just let nLocktime picked up by initiator and announce it at&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt; same time than feerate or at \`tx\_complete\`. Worst-case,&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt; a slow-block-processing receiver may not be able to get&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt; the transaction accepted by its local mempool, but IMO that&#39;s&#xA;&gt; &gt; &gt; fine if at least the initiator is able to do so. We are requiring peers&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt; to be weakly in sync before operating channel anyway (\`funding\_locked\`&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt; exchange).&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt; Funding\_tx can already be drop from mempool for others&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt; reasons like mempool shrinks or expiry so broadcaster&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt; should always be ready to re-send it or bump feerate.&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt; Or are you describing another issue ?&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt; Le jeu. 30 janv. 2020 à 04:06, darosior &lt;[darosior at protonmail.com][darosior_protonmail.com]&gt; a écrit :&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; Hi Antoine and all,&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; About nLockTime fun thing is Lisa, Cdecker and I had this conversation to integrate it to C-lightning just yesterday.&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; Unfortunately you need to add a &#34;My tip is xxxx&#34; to the openchannel msg, otherwise if you set nLockTime to tip. (cdecker)&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; Moreover in case of reorg the funding tx (now non-final) would be dropped from mempool ? But you could set nLockTime to, say, tip - 6. (niftynei)&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; Antoine&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; \-------- Original Message --------&#xA;&gt; &gt; &gt; &gt; On Jan 30, 2020, 01:21, Antoine Riard &lt; [antoine.riard at gmail.com][antoine.riard_gmail.com]&gt; wrote:&#xA;&gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; Hey thanks for this proposal!&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; 2 high-level questions:&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; What about multi-party tx construction ? By multi-party, let&#39;s define&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; Alice initiate a tx construction to Bob and then Bob announce a&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; construction to Caroll and &#34;bridge&#34; all inputs/outputs additions/substractions&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; in both directions. I think the current proposal hold, if you are a bit more&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; tolerant and bridge peer don&#39;t send a tx\_complete before receiving ones&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; from all its peers.&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; What about transactions format ? I think we should coordinate with Coinjoin&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; people to converge to a common one to avoid leaking protocol usage when&#xA;&gt; &gt; &gt; &gt; &gt; we can hinder under Taproot. Like setting the nLocktime or sorting inputs&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; in some protocol-specific fashion. Ideally we should have a BIP for format&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; but every layer 2 protocols its own set of messages concerning the construction.&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; nLocktime is always set to 0x000000&#xA;&gt; &gt; &gt; &gt; &gt; Maybe we can implement anti-fee sniping and mask among wallet core&#xA;&gt; &gt; &gt; &gt; &gt; txn set: [https://github.com/bitcoin/bitcoin/blob/aabec94541e23a67a9f30dc2c80dab3383a01737/src/wallet/wallet.cpp\#L2519][https_github.com_bitcoin_bitcoin_blob_aabec94541e23a67a9f30dc2c80dab3383a01737_src_wallet_wallet.cpp_L2519] ?&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; In the case of a close, a failed collaborative close would result in an error and a uninlateral close&#34;&#xA;&gt; &gt; &gt; &gt; &gt; Or can we do first a mutual closing tx, hold tx broadcast for a bit if &#34;opt\_dual\_fund&#34;&#xA;&gt; &gt; &gt; &gt; &gt; is signaled to see if a tx\_construction + add\_funding\_input for the channel is received&#xA;&gt; &gt; &gt; &gt; &gt; soon ? At least that would be a dual opt-in to know than one party can submit a funding-outpoint&#xA;&gt; &gt; &gt; &gt; &gt; as part of a composed tx ?&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; Antoine&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; Le lun. 27 janv. 2020 à 20:51, lisa neigut &lt;[niftynei at gmail.com][niftynei_gmail.com]&gt; a écrit :&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; Some of the feedback I received from the check-in for the dual-funding proposal this past Monday was along the lines that we look at simplifying for breaking it into smaller, more manageable chunks.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; The biggest piece of the dual-funding protocol update is definitely the move from a single peer constructing a transaction to two participants. We&#39;re also going to likely want to reuse this portion of the protocol for batched closings and splicing. To that extent, it seemed useful to highlight it in a separate email.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; This is a change from the existing proposal in the dual-funding [PR \#524][PR _524] \-- it allows for the removal of inputs and outputs.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; The set of messages are as follows.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; Note that the &#39;initiation&#39; of this protocol will be different depending on the case of the transaction (open, close or splice):&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 1. type:   440 \`tx\_add\_input\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 2. data:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`32\*byte\`:\`channel\_identifier\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u64\`:\`sats\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`sha256\`:\`prevtx\_txid\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u32\`:\`prevtx\_vout\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u16\`:\`prevtx\_scriptpubkey\_len\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`prevtx\_scriptpubkey\_len\*byte\`:\`prevtx\_scriptpubkey\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u16\`:\`max\_witness\_len\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u16\`:\`scriptlen\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`scriptlen\*byte\`:\`script\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`byte\`:\`signal\_rbf\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 1. type: 442 \`tx\_add\_output\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 2. data:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`32\*byte\`:\`channel\_identifier\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u64\`:\`sats\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u16\`:\`scriptlen\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`scriptlen\*byte\`:\`script\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 1. type: 444 \`tx\_remove\_input\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 2. data:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`32\*byte\`:\`channel\_identifier\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`sha256\`:\`prevtx\_txid\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u32\`:\`prevtx\_vout\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 1. type: 446 \`tx\_remove\_output\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 2. data:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`32\*byte\`:\`channel\_identifier\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u64\`:\`sats\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u16\`:\`scriptlen\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`scriptlen\*byte\`:\`script\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 1. type: 448 \`tx\_complete\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 2. data:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`32\*byte\`:\`channel\_identifier\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u16\`:\`num\_inputs\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u16\`:\`num\_outputs\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 1. type:  448 \`tx\_sigs\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 2. data:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`channel\_id\`:\`channel\_identifier\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u16\`:\`num\_witnesses\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`num\_witnesses\*witness\_stack\`:\`witness\_stack\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 1. subtype: \`witness\_stack\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 2. data:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`sha256\`:\`prevtx\_txid\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u32\`:\`prevtx\_vout\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u16\`:\`num\_input\_witness\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`num\_input\_witness\*witness\_element\`:\`witness\_element\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 1. subtype: \`witness\_element\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 2. data:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`u16\`:\`len\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     \* \[\`len\*byte\`:\`witness\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \#\# General Notes&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Validity of inputs/outputs is not checked until both peers have sent consecutive \`tx\_complete\`  messages.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Duplicate inputs or outputs is a protocol error.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Feerate is set by the initiator, or in the case of a closing transaction, negotiated before the transaction construction is initiated.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Every peer pays fees for the inputs + outputs they contribute, plus enough to cover the maximum estimate of their witnesses. Overpayment of fees is permissible.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Initiator is responsible for contributing the output/input in question, i.e. the &#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;   funding output in the case of an opening, or the funding input in the case of a close. &#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;   (This means that the opener will pay for the opening output). In the case of a splice,&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;   the initiator of the splice pays for the funding tx&#39;s inclusion as an input and the&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;   new &#39;funding tx&#39; output.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Any contributor may signal that their input is RBF&#39;able. The nSequence for this input should be set to 0xFEFF FFFF, 0xFFFFFFFF otherwise.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- The initiating peer is understood to be paying the fee for the shared transaction fields (nVersion \[4\], segwit marker + flag \[2\], input + output counts \[2-18\], witness count \[1-9\], nLocktime \[4\]; total \[13-40bytes\])&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Inputs MUST be segwit compatible (PW\* or P2SH-PW\*)&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- All output scripts must be standard&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- nLocktime is always set to 0x00000000.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- The \`num\_inputs\` and \`num\_outputs\` in \`tx\_complete\` is a count of that peer’s final input and output contributions, net any removals.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Either peer may add or remove inputs and outputs until both peers have successfully&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;   exchanged a \`tx\_complete\` message in succession.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Either peer may only add or remove their own input or output.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- In the case that a \`tx\_complete\` agreement cannot be reached, either peer may&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;   fail the channel or open protocol (whatever is reasonable for the particular case)&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;   - In the case of a splice, this would be a soft error (channel returns to normal operation until      &#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     otherwise failed or closed.)&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;   - In the case of an open, this would be a failure to open the channel.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;   - In the case of a close, a failed collaborative close would result in an error and a unilateral close.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \#\#\# Considering the Simple Open case (2 parties)&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Both peers signal \`opt\_dual\_fund\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Opener initiates a channel open with \`open\_channel2\` message, indicating the feerate for the opening transaction&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Accepter signals acceptance of channel open as proposed, including proposed feerate, via \`accept\_channel2\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Opener sends \`tx\_add\_output\`, with the funding output for the sum of both peer’s funding\_amount&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Opener sends \`tx\_add\_input\` for each input the wish to add to the funding transaction&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Opener sends \`tx\_add\_output\` for their change &#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Opener sends \`tx\_complete\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Accepter sends \`tx\_add\_input\` for each input they wish to add to the funding transaction&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Accepter sends \`tx\_add\_output\` for their change.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Accepter sends \`tx\_complete\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Opener sends \`tx\_complete\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Opener and accepter exchange commitment signatures; etc.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \#\#\# Considering the Splice case:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Both peers signal \`opt\_splice\_ok\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- One peer initiates a splice, also signaling the feerate for the transaction. Exact protocol unspecified herein.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Initiator sends \`tx\_add\_input\` with the original funding output&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Initiator sends \`tx\_add\_output\` with the new, post-splice funding output&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Initiator sends \`tx\_add\_input/output\` as needed to add all desired inputs + outputs&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Initiator sends \`tx\_complete\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Peer sends \`tx\_add\_input/output\` as needed to add all desired inputs + outputs&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Initiator sends \`tx\_complete\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Peer sends \`tx\_complete\`&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Initiator + peer exchange commitment signatures, etc.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \#\#\# Considering the Close case:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Both peers signal \`opt\_collaborative\_close\` in their \`node\_announcement\`.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- A peer initiates a close sending a \`shutdown\`, as per usual. &#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- A feerate is negotiated. Out of band for this particular portion of the protocol.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \-The closing initiator (peer which first sent \`shutdown\`), sends \`tx\_add\_input\` to spend the funding output and \`tx\_add\_output\` to add their output for the channel closure.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- The peer responds with \`tx\_add\_output\`, adding their output to the close transaction.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- If \`option\_upfront\_shutdown\_script\` is flagged but no such output with a value at or within a reasonable feerate gap of the peer&#39;s funding output is present, then the peer must fail the channel. &#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \#\# Updating a collaborative transaction with RBF:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- If any input is flagged as RBF’able, then the transaction is considered eligible for RBF&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- RBF can be initiated by either party, and serves as an initiation for another round of transaction composition, as outlined above.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \- Note that this section has been cribbed and re-purposed from the original RBF proposal for splicing, see https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-November/001621.html&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 1. type: 45 (\`init\_rbf\`) (\`option\_collaborative\_rbf\`)&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 2. data:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;    \* \[\`32\`:\`channel\_id\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;    \* \[\`4\`:\`fee\_step\`\]&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; Each \`fee\_step\` adds 1/4 (rounded down) to the initial &#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; transaction feerate. eg. if the initial feerate was 512 satoshis per kiloweight, \`fee\_step\` 1&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; is  512 + 512 / 4 = 640, \`fee\_step\` 2 is 640 + 640 / 4 = 800.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; The sender:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;   - MUST set \`fee\_step\` greater than zero and greater than any prior \`fee\_step\`.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; The recipient:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;   - if the new fee exceeds the sender&#39;s current balance minus reserve&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     after it is applied to the splice transaction:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;     - MUST error.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;   &#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; NOTES:&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 1. 1/4 is a reasonable minimal RBF, but as each one requires more&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;    tracking by the recipient, serves to limit the number you can create.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 2. Rule 4 of BIP125 requires a feerate increase to at least surpass the minimum transaction relay setting. Ratcheting by 25% should satisfy this requirement&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; 3. An additional rule will be added to the checks of an RBF transaction that it must include at least one identical, replaceable input as the original transaction.&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&gt; &gt; &gt; &gt; &gt; &gt; \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_&#xA;&gt; &gt; &gt; &gt; &gt; &gt; Lightning-dev mailing list&#xA;&gt; &gt; &gt; &gt; &gt; &gt; [Lightning-dev at lists.linuxfoundation.org][Lightning-dev_lists.linuxfoundation.org]&#xA;&gt; &gt; &gt; &gt; &gt; &gt; https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#xA;&gt; &gt; &gt; &gt; &gt; &gt;&#xA;&#xA;&#xA;[darosior_protonmail.com]: mailto:darosior at protonmail.com&#xA;[antoine.riard_gmail.com]: mailto:antoine.riard at gmail.com&#xA;[https_github.com_bitcoin_bitcoin_blob_aabec94541e23a67a9f30dc2c80dab3383a01737_src_wallet_wallet.cpp_L2519]: https://github.com/bitcoin/bitcoin/blob/aabec94541e23a67a9f30dc2c80dab3383a01737/src/wallet/wallet.cpp#L2519&#xA;[niftynei_gmail.com]: mailto:niftynei at gmail.com&#xA;[PR _524]: https://github.com/lightningnetwork/lightning-rfc/pull/524&#xA;[Lightning-dev_lists.linuxfoundation.org]: mailto:Lightning-dev at lists.linuxfoundation.org&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20200130/3aac971c/attachment-0001.html&gt;&#xA;-------------- next part --------------&#xA;A non-text attachment was scrubbed...&#xA;Name: signature.asc&#xA;Type: application/pgp-signature&#xA;Size: 489 bytes&#xA;Desc: OpenPGP digital signature&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20200130/3aac971c/attachment-0001.sig&gt;</html></oembed>