<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated></updated>
  <generator>https://nostr.ae</generator>

  <title>Nostr notes by </title>
  <author>
    <name></name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.ae/npub1jdl3plz00rvxwc6g2ckemzrgg0amx5wen4kfvs3laxtssxvk9cvsf3gh0m.rss" />
  <link href="https://nostr.ae/npub1jdl3plz00rvxwc6g2ckemzrgg0amx5wen4kfvs3laxtssxvk9cvsf3gh0m" />
  <id>https://nostr.ae/npub1jdl3plz00rvxwc6g2ckemzrgg0amx5wen4kfvs3laxtssxvk9cvsf3gh0m</id>
  <icon></icon>
  <logo></logo>




  <entry>
    <id>https://nostr.ae/nevent1qqs8aehhuy5qtpj9p6j76d69fa9etvxtss8awjrxgc28jwtd3vgj2qqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjdgacut</id>
    
      <title type="html">📅 Original date posted:2023-10-17 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8aehhuy5qtpj9p6j76d69fa9etvxtss8awjrxgc28jwtd3vgj2qqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjdgacut" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9psycvjlvvp65lxwtjmdllt6t3y9at0yph8wgremynlxvd9yt6ac4pzlfw&#39;&gt;nevent1q…zlfw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-10-17&lt;br/&gt;🗒️ Summary of this message: Batched splicing is risky because if an old state is broadcasted and confirmed before the splice, it can disrupt the process. It is important for batched splicing mechanisms to have a backout option.&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; I do not know if existing splice implementations actually perform such a&lt;br/&gt;check.&lt;br/&gt;Unless all splice implementations do this, then any kind of batched&lt;br/&gt;splicing is risky.&lt;br/&gt;&lt;br/&gt;As long as the implementation decides to splice again at some point when a&lt;br/&gt;prior&lt;br/&gt;splice isn&amp;#39;t confirming, it will self-resolve once any subsequent splice is&lt;br/&gt;confirmed.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Tue, Oct 17, 2023 at 1:04 PM ZmnSCPxj via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning Bastien,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I have not gotten around to posting it yet, but I have a write-up in my&lt;br/&gt;&amp;gt; computer with the title:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Batched Splicing Considered Risky&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The core of the risk is that if:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * I have no funds right now in a channel (e.g. the LSP allowed me to have&lt;br/&gt;&amp;gt; 0 reserve, or this is a newly-singlefunded channel from the LSP to me).&lt;br/&gt;&amp;gt; * I have an old state (e.g. for a newly-singlefunded channel, it could&lt;br/&gt;&amp;gt; have been `update_fee`d, so that the initial transaction is old state).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Then if I participate in a batched splice, I can disrupt the batched&lt;br/&gt;&amp;gt; splice by broadcasting the old state and somehow convincing miners to&lt;br/&gt;&amp;gt; confirm it before the batched splice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thus, it is important for *any* batched splicing mechanism to have a&lt;br/&gt;&amp;gt; backout, where if the batched splice transaction can no longer be confirmed&lt;br/&gt;&amp;gt; due to some participant disrupting it by posting an old commitment&lt;br/&gt;&amp;gt; transaction, either a subset of the splice is re-created or the channels&lt;br/&gt;&amp;gt; revert back to pre-splice state (with knowledge that the post-splice state&lt;br/&gt;&amp;gt; can no longer be confirmed).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I know that current splicing tech is to run both the pre-splice and&lt;br/&gt;&amp;gt; post-splice state simultaneously until the splicing transaction is&lt;br/&gt;&amp;gt; confirmed.&lt;br/&gt;&amp;gt; However we need to *also* check if the splicing transaction *cannot* be&lt;br/&gt;&amp;gt; confirmed --- by checking if the other inputs to the splice transaction&lt;br/&gt;&amp;gt; were already consumed by transactions that have deeply confirmed, and in&lt;br/&gt;&amp;gt; that case, to drop the post-splice state and revert to the pre-splice state.&lt;br/&gt;&amp;gt; I do not know if existing splice implementations actually perform such a&lt;br/&gt;&amp;gt; check.&lt;br/&gt;&amp;gt; Unless all splice implementations do this, then any kind of batched&lt;br/&gt;&amp;gt; splicing is risky.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20231017/831a1dfc/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20231017/831a1dfc/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-10-18T15:02:10&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgl8e058krt5zemjvwgpgvd6k0aqqpfw4yw47sjw4q6g0e0u2gxhgzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjnzdfwd</id>
    
      <title type="html">📅 Original date posted:2023-07-19 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgl8e058krt5zemjvwgpgvd6k0aqqpfw4yw47sjw4q6g0e0u2gxhgzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjnzdfwd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsw90cz0f6c3z9snmydkmlvrwst585xplagwf4yklg03zjrc9ksrfs440anh&#39;&gt;nevent1q…0anh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-07-19&lt;br/&gt;🗒️ Summary of this message: The complexity of the Lightning Network (LN) cannot be resolved with covenants alone. More than CTV is needed for significant gains, and there are other BOLTs to consider. Finding interesting primitives and working backwards from there may be a more productive approach. Covenants can contribute to LN&amp;#39;s maturity, but the prioritization is unclear.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hello Keagen,&lt;br/&gt;&lt;br/&gt;Most of the complexity of LN cannot be resolved with covenants. Of the&lt;br/&gt;things that can be simplified in my experience, you&amp;#39;re going to need more&lt;br/&gt;than CTV to get significant gains. And in the end, channels can only get so&lt;br/&gt;simple since we have many other BOLTs to deal with. And even then, you&amp;#39;re&lt;br/&gt;going to have to convince LN spec writers to include such changes, whatever&lt;br/&gt;they are, then get deployment.&lt;br/&gt;&lt;br/&gt;Step 1 is finding a primitive that seems interesting. It&amp;#39;s important to&lt;br/&gt;moderate enthusiasm for any primitive with reality, and probably by being&lt;br/&gt;concrete by writing specs that use a primitive, and code it up to discover&lt;br/&gt;what we&amp;#39;re overlooking. We&amp;#39;re always overlooking something! In my humble&lt;br/&gt;opinion these are step 2 and 3 of gathering mind-share.&lt;br/&gt;&lt;br/&gt;As a more productive tact, if we&amp;#39;re thinking beyond 2/small party channels,&lt;br/&gt;probably better to snap your fingers, pretend we have Simplicity, see what&lt;br/&gt;we can build, and work backwards from there to see if we can accomplish&lt;br/&gt;this within the confines of bitcoin script?&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Wed, Jul 19, 2023 at 3:59 PM Keagan McClelland via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Antoine,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thank you for the effort you&amp;#39;ve put towards this. I generally agree that a&lt;br/&gt;&amp;gt; smooth functioning Lightning Network is of greater importance than advanced&lt;br/&gt;&amp;gt; contracting capabilities. However, as I dive deeper into some of the more&lt;br/&gt;&amp;gt; ambitious goals for LN development I am learning that a great deal of&lt;br/&gt;&amp;gt; complexity of some current lightning (LN) proposals can be handily&lt;br/&gt;&amp;gt; discharged with CTV. While I am not intimately familiar with all of the&lt;br/&gt;&amp;gt; other covenant schemes to the same level of technical proficiency, I have a&lt;br/&gt;&amp;gt; suspicion that a number of them, if not all of them, are capable of&lt;br/&gt;&amp;gt; discharging the same flavor and amount of complexity as well. Others should&lt;br/&gt;&amp;gt; chime in if they can confirm this claim.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I have been publicly on the record as supporting the addition of some&lt;br/&gt;&amp;gt; covenant scheme into Bitcoin for some time and have long held on&lt;br/&gt;&amp;gt; theoretical grounds that the addition of such a mechanism is both necessary&lt;br/&gt;&amp;gt; and inevitable if Bitcoin is to survive in the long term. However, as I&amp;#39;ve&lt;br/&gt;&amp;gt; started to work more directly with the Lightning protocol, these&lt;br/&gt;&amp;gt; theoretical and purely logical arguments became far more concrete and&lt;br/&gt;&amp;gt; immediately beneficial.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I say this primarily to challenge the idea that covenants are a&lt;br/&gt;&amp;gt; distraction from lightning development. It may very well be that your areas&lt;br/&gt;&amp;gt; of focus on LN preclude you from splitting your attention and none of this&lt;br/&gt;&amp;gt; email should be interpreted as a criticism of you applying your efforts in&lt;br/&gt;&amp;gt; the highest leverage manner you can manage. That said, I don&amp;#39;t want&lt;br/&gt;&amp;gt; observers of this thread to walk away with the impression that they are two&lt;br/&gt;&amp;gt; independent efforts as covenants can significantly contribute to LN&amp;#39;s&lt;br/&gt;&amp;gt; maturity. When and how should they be prioritized? Unfortunately I don&amp;#39;t&lt;br/&gt;&amp;gt; feel able to comment on that at this time. All I know is that Lightning&lt;br/&gt;&amp;gt; would almost certainly benefit substantially from having a covenant&lt;br/&gt;&amp;gt; primitive.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Keags&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Tue, Jul 18, 2023 at 3:40 PM Antoine Riard via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Last year amid the failure of the CTV speedy trial activation and intense&lt;br/&gt;&amp;gt;&amp;gt; conversations about a rainbow of covenant proposals, I introduced the idea&lt;br/&gt;&amp;gt;&amp;gt; of a new community process to specify covenants [0]. This post is to resume&lt;br/&gt;&amp;gt;&amp;gt; the experiment so far and officially mark the process maintenance as &amp;#34;up&lt;br/&gt;&amp;gt;&amp;gt; for grabs&amp;#34;, as I won&amp;#39;t actively pursue it further (after wavering on such a&lt;br/&gt;&amp;gt;&amp;gt; decision a bit during May / June).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Few of the goals announced at that time were to build a consistent&lt;br/&gt;&amp;gt;&amp;gt; framework to evaluate covenant proposals, see the common grounds between&lt;br/&gt;&amp;gt;&amp;gt; proposals if they could be composed or combined by their authors, open the&lt;br/&gt;&amp;gt;&amp;gt; consensus  changes development process beyond the historical boundaries of&lt;br/&gt;&amp;gt;&amp;gt; Bitcoin Core and maintain high-quality technical archive as a consensus&lt;br/&gt;&amp;gt;&amp;gt; discussions have spawned half a decade from intellectual conception to&lt;br/&gt;&amp;gt;&amp;gt; activation in average (at least for segwit, schnorr, taproot).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Such effort was a speak-by-the-act answer to the issues in&lt;br/&gt;&amp;gt;&amp;gt; consensus development changes pointed out by Jeremy Rubin in April of last&lt;br/&gt;&amp;gt;&amp;gt; year [1]: namely the lack of a &amp;#34;codified checklist&amp;#34; for consensus changes,&lt;br/&gt;&amp;gt;&amp;gt; that &amp;#34;consensus is memoryless&amp;#34; and &amp;#34;bitcoin core is not bitcoin&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt; (independently of the technical concerns as I have as limited or&lt;br/&gt;&amp;gt;&amp;gt; non-adequate primitive for vaults / payment pools I expressed during the&lt;br/&gt;&amp;gt;&amp;gt; same time). Other complementary initiatives have been undertaken during the&lt;br/&gt;&amp;gt;&amp;gt; same period, AJ with the bitcoin-inquisition fork where the community of&lt;br/&gt;&amp;gt;&amp;gt; developers and contracting primitives of researchers on a consensus-enabled&lt;br/&gt;&amp;gt;&amp;gt; fork of core [2]. And Dave Harding with the careful archiving of all&lt;br/&gt;&amp;gt;&amp;gt; covenant proposals under the Optech umbrella [3].&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; About the Bitcoin Contracting Primitives WG, a Github repository was&lt;br/&gt;&amp;gt;&amp;gt; started and maintained to archive and document all the primitives (apo,&lt;br/&gt;&amp;gt;&amp;gt; tluv, ctv, the taproot annex, sighash_group, CSFS, cat, txhash, evict,&lt;br/&gt;&amp;gt;&amp;gt; check_output_covenant_verify, inherited ids, anyamount, singletons,&lt;br/&gt;&amp;gt;&amp;gt; op_vault) and the corresponding protocols (payment pools, vaults,&lt;br/&gt;&amp;gt;&amp;gt; drivechains, trust-minimized mining pools payouts). We had a total of 6&lt;br/&gt;&amp;gt;&amp;gt; monthly meetings on the Libera chat #bitcoin-contracting-primitives-wg for&lt;br/&gt;&amp;gt;&amp;gt; a number of more than 20 individual attendees representing most of the&lt;br/&gt;&amp;gt;&amp;gt; parts of the community. I think (missing march logs). Numerous in-depth&lt;br/&gt;&amp;gt;&amp;gt; discussions did happen on the repository and on the channel on things like&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;merkelized all the things&amp;#34; or &amp;#34;payment pools for miners payoffs&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; As I&amp;#39;ve been busy on the Lightning-side and other Bitcoin projects, I&amp;#39;ve&lt;br/&gt;&amp;gt;&amp;gt; not run an online meeting since the month of April, while still having a&lt;br/&gt;&amp;gt;&amp;gt; bunch of fruitful technical discussions with folks involved in the effort&lt;br/&gt;&amp;gt;&amp;gt; at conferences and elsewhere. I launched the effort as an experiment with&lt;br/&gt;&amp;gt;&amp;gt; the soft commitment to dedicate 20% of my time on it, after few successful&lt;br/&gt;&amp;gt;&amp;gt; sessions I think such a process has an interest of its own, however it&lt;br/&gt;&amp;gt;&amp;gt; comes with direct competition of my time to work on Lightning robustness.&lt;br/&gt;&amp;gt;&amp;gt; Getting my hands dirty on low-level LDK development recently made me&lt;br/&gt;&amp;gt;&amp;gt; realize we still have years of titan work to get a secure and reliable&lt;br/&gt;&amp;gt;&amp;gt; Lightning Network.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; As such, between extended covenant capabilities for advanced contracts&lt;br/&gt;&amp;gt;&amp;gt; coming as a reality for Bitcoin _or_ LN working smoothly at scale with&lt;br/&gt;&amp;gt;&amp;gt; 50-100M UTXO-sharing users on it during the next 5-7 years cycle, I think&lt;br/&gt;&amp;gt;&amp;gt; the latter goal is more critical for Bitcoin existential survival, and&lt;br/&gt;&amp;gt;&amp;gt; where on a personal title I&amp;#39;ll allocate the best of my time and energy (and&lt;br/&gt;&amp;gt;&amp;gt; somehow it match the &amp;#34;slow&amp;#34; technical activity on bitcoin-inquisition&lt;br/&gt;&amp;gt;&amp;gt; mostly done by Lightning hands).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This is my personal conclusion only on the state of Bitcoin technological&lt;br/&gt;&amp;gt;&amp;gt; momentum, and this is quite tainted by my deep background in Lightning&lt;br/&gt;&amp;gt;&amp;gt; development. If you&amp;#39;ve been working on covenant changes proposals, please&lt;br/&gt;&amp;gt;&amp;gt; don&amp;#39;t take it as a discouragement, I think Taproot (privacy-preserving&lt;br/&gt;&amp;gt;&amp;gt; script policies behind the taproot tree branches) and Schnorr (for native&lt;br/&gt;&amp;gt;&amp;gt; multi-sig) soft forks have shown how it can improve the building of&lt;br/&gt;&amp;gt;&amp;gt; self-custody solutions by one or two order of magnitude, and small&lt;br/&gt;&amp;gt;&amp;gt; incremental changes might be good enough to have a lower technical&lt;br/&gt;&amp;gt;&amp;gt; consensus bar.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On my side, I&amp;#39;ll pursue pure R&amp;amp;D works on CoinPool, notably coming with&lt;br/&gt;&amp;gt;&amp;gt; better solutions with the interactivity issue and mass-compression of&lt;br/&gt;&amp;gt;&amp;gt; withdrawal and design exotic advanced Bitcoin contracts based on the&lt;br/&gt;&amp;gt;&amp;gt; taproot annex, though more in a &amp;#34;l&amp;#39;art pour l&amp;#39;art&amp;#34; approach for the time&lt;br/&gt;&amp;gt;&amp;gt; being [4]. Additionally, I might start to submit an in-depth security&lt;br/&gt;&amp;gt;&amp;gt; review of consensus changes under pseudonyms, it has already been done in&lt;br/&gt;&amp;gt;&amp;gt; the past and somehow it&amp;#39;s good practice in terms of &amp;#34;message neutrality&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt; [5]. If folks wanna experiment in terms of payment pools deployment, Greg&lt;br/&gt;&amp;gt;&amp;gt; Maxwell&amp;#39;s old joinpool can be used today (and somehow it&amp;#39;s worthy of its&lt;br/&gt;&amp;gt;&amp;gt; own as a net advance for coinjoins).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I&amp;#39;ll honestly acknowledge towards the community, I might have&lt;br/&gt;&amp;gt;&amp;gt; overpromised with the kickstart of this new process aiming to move the&lt;br/&gt;&amp;gt;&amp;gt; frontlines in matters of Bitcoin consensus changes development process. On&lt;br/&gt;&amp;gt;&amp;gt; the other hand, I think enough sessions of the working group have been&lt;br/&gt;&amp;gt;&amp;gt; runned and enough marks of technical interests have been collected to&lt;br/&gt;&amp;gt;&amp;gt; demonstrate the minimal value of such a process, so I would estimate my&lt;br/&gt;&amp;gt;&amp;gt; open-source balance sheet towards the community to be in good standing ?&lt;br/&gt;&amp;gt;&amp;gt; (open-minded question).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I don&amp;#39;t think Bitcoin fundamentally lacks compelling technical proposals&lt;br/&gt;&amp;gt;&amp;gt; to advance the capabilities of Bitcoin Script today, nor the crowd of&lt;br/&gt;&amp;gt;&amp;gt; seasoned and smart protocol developers to evaluate mature proposals&lt;br/&gt;&amp;gt;&amp;gt; end-to-end and on multiple dimensions with a spirit of independence.&lt;br/&gt;&amp;gt;&amp;gt; Rather, I believe what Bitcoin is lacking is a small crowd of technical&lt;br/&gt;&amp;gt;&amp;gt; historians and archivist doing the work of assessing, collecting and&lt;br/&gt;&amp;gt;&amp;gt; preserving consensus changes proposals and QA devs to ensure any consensus&lt;br/&gt;&amp;gt;&amp;gt; change proposals has world-class battle-ground testing before to be&lt;br/&gt;&amp;gt;&amp;gt; considered for deployment, ideally with the best standards of Bitcoin&lt;br/&gt;&amp;gt;&amp;gt; decentralization and FOSS neutrality [6].&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If you would like to pursue the maintenance and nurturing of the Bitcoin&lt;br/&gt;&amp;gt;&amp;gt; Contracting Primitives WG (or the bitcoin-inquisition fork or collaborate&lt;br/&gt;&amp;gt;&amp;gt; with Optech to organize industry-wise workshop on covenants at the image of&lt;br/&gt;&amp;gt;&amp;gt; what has been done in 2019 for Taproot), that you&amp;#39;re willing to show&lt;br/&gt;&amp;gt;&amp;gt; proof-of-work and you estimate that operational ground, legal information&lt;br/&gt;&amp;gt;&amp;gt; or financial resources will anchor your individual work on the long-term,&lt;br/&gt;&amp;gt;&amp;gt; don&amp;#39;t hesitate to reach out, I&amp;#39;ll see what I can do with a disinterested&lt;br/&gt;&amp;gt;&amp;gt; mind [7].&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; With humility,&lt;br/&gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [0]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-July/020763.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-July/020763.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [1]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-April/020233.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-April/020233.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [2]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-September/020921.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-September/020921.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/bitcoinops/bitcoinops.github.io/pull/806&#34;&gt;https://github.com/bitcoinops/bitcoinops.github.io/pull/806&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [4] Version 0.2 of the CoinPool whitepaper addressing most of the&lt;br/&gt;&amp;gt;&amp;gt; remaining &amp;#34;Big Problems&amp;#34; is still pending on my visit to co-author Gleb&lt;br/&gt;&amp;gt;&amp;gt; Naumenko in Ukraine, which has been postponed few times in light of the&lt;br/&gt;&amp;gt;&amp;gt; conflict operational evolutions.&lt;br/&gt;&amp;gt;&amp;gt; [5] See&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-February/017614.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-February/017614.html&lt;/a&gt;.&lt;br/&gt;&amp;gt;&amp;gt; For the philosophical reasons of doing so, I invite you to read Foucault&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt; famous essay &amp;#34;Le philosophe masque&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt; [6] Somehow I come to share Jeremy&amp;#39;s thesis&amp;#39;s &amp;#34;Product management is not&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;my Job&amp;#34; it&amp;#39;s yours&amp;#34; in matters of consensus changes. I believe we might be&lt;br/&gt;&amp;gt;&amp;gt; past the technical complexity threshold where even simple consensus changes&lt;br/&gt;&amp;gt;&amp;gt; can be conducted from A to Z as a one man job or even by a group of 2/3&lt;br/&gt;&amp;gt;&amp;gt; elite devs.&lt;br/&gt;&amp;gt;&amp;gt; [7] I&amp;#39;ve been reached out multiple times and consistently by R&amp;amp;D&lt;br/&gt;&amp;gt;&amp;gt; non-profits, plebs whales and VC firms who were interested to commit&lt;br/&gt;&amp;gt;&amp;gt; resources to advance softforks and covenants in the Bitcoin space, no doubt&lt;br/&gt;&amp;gt;&amp;gt; when you&amp;#39;re reliable and with a track record, folks are ready to offer you&lt;br/&gt;&amp;gt;&amp;gt; opportunities to work full-time on consensus changes.&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230719/3995d4a3/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230719/3995d4a3/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-07-20T11:54:05&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0azlmcrr6xdzr4p3cypgc0ljkmw7fnvu95cq263wt0zpnsd6wjwqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjqasq4j</id>
    
      <title type="html">📅 Original date posted:2023-06-03 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0azlmcrr6xdzr4p3cypgc0ljkmw7fnvu95cq263wt0zpnsd6wjwqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjqasq4j" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyr75sq6gckh9awrcqh35e6rhkys9se4t7nv6hfs87q24e7mglxfs34shdc&#39;&gt;nevent1q…shdc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-06-03&lt;br/&gt;🗒️ Summary of this message: The issue of annex malleability in Bitcoin transactions could mislead developers into thinking their transactions are immune to replacement, warns a developer. The problem arises when a transaction is denied entry into the mempool because a counter-party has put in a strictly worse transaction for miners by bloating its weight, not adding fees.&lt;br/&gt;📝 Original message:&lt;br/&gt;No in this case the txid is identical. Only the wtxid is malleated, with&lt;br/&gt;annex data stuffed to max transaction size.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Sat, Jun 3, 2023, 8:36 AM Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt; Depending on policy to mitigate this annex malleability vector could&lt;br/&gt;&amp;gt;&amp;gt; mislead developers into believing their transactions are immune to&lt;br/&gt;&amp;gt;&amp;gt; replacement, when in fact they might not be.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The issue I&amp;#39;m talking about is where someone&amp;#39;s transaction is denied&lt;br/&gt;&amp;gt;&amp;gt; entry into the mempool entirely because a counter-party decided to put in a&lt;br/&gt;&amp;gt;&amp;gt; strictly worse transaction for miners by bloating the weight of it, not&lt;br/&gt;&amp;gt;&amp;gt; adding fees. A strictly worse &amp;#34;API&amp;#34; for paying miners for no gain seems&lt;br/&gt;&amp;gt;&amp;gt; like a bad trade to me, especially when there are reasonable methods for&lt;br/&gt;&amp;gt;&amp;gt; mitigating this.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Just to expand this, an example would be a transaction with inputs A&amp;#39; and&lt;br/&gt;&amp;gt; B&amp;#39; signed by two parties A and B. A has a fully signed transaction in&lt;br/&gt;&amp;gt; hands, but can&amp;#39;t publish it because B created and published an alternative&lt;br/&gt;&amp;gt; version of it with a large annex for input B&amp;#39;. Wouldn&amp;#39;t miners just accept&lt;br/&gt;&amp;gt; A&amp;#39;s version because it&amp;#39;s fee rate is higher? I am looking at this case&lt;br/&gt;&amp;gt; assuming the user has a direct connection to a miner, ignoring any&lt;br/&gt;&amp;gt; potential concerns related to p2p transport.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Joost&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230603/49e83857/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230603/49e83857/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-19T20:19:53&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsddcpm6kh33vv4ym9h6akwck8v953amx5suc25a75zj3y4nghwwmgzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpja26txa</id>
    
      <title type="html">📅 Original date posted:2023-06-03 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsddcpm6kh33vv4ym9h6akwck8v953amx5suc25a75zj3y4nghwwmgzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpja26txa" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2edqckklxz0652fe5xe95tl8au20qw5ztsthsa25e95zsgdcg6hghanktn&#39;&gt;nevent1q…nktn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-06-03&lt;br/&gt;🗒️ Summary of this message: The annex trick is used to publish the missing piece of the control block for the new taproot output, maintaining the node&amp;#39;s O(1) state. However, it could mislead developers into believing their transactions are immune to replacement. Mempool policy should bridge the gap between node anti-DoS and an entity&amp;#39;s ability to pay miners more via feerate-ordered queue.&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; I think this avoidance of a circular reference is also why LN-Symmetry&lt;br/&gt;uses the annex?&lt;br/&gt;&lt;br/&gt;The annex trick specifically is used to force the publication of the&lt;br/&gt;missing piece of the control block corresponding to the new taproot output.&lt;br/&gt;This is to maintain the node&amp;#39;s O(1) state while also keeping 0.5RTT channel&lt;br/&gt;updates. Could have also been done with a dangling OP_RETURN, with the&lt;br/&gt;associated restrictions on which sighashes you can use since you now have&lt;br/&gt;to commit to multiple outputs(disallows SIGHASH_SINGLE).&lt;br/&gt;&lt;br/&gt;There&amp;#39;s also a fair exchange protocol that obviates the need for it using&lt;br/&gt;signature adapters, but the requisite APIs don&amp;#39;t exist yet, and doesn&amp;#39;t&lt;br/&gt;lend itself naturally to 3&#43; party scenarios.&lt;br/&gt;&lt;br/&gt;&amp;gt; Depending on policy to mitigate this annex malleability vector could&lt;br/&gt;mislead developers into believing their transactions are immune to&lt;br/&gt;replacement, when in fact they might not be.&lt;br/&gt;&lt;br/&gt;The issue I&amp;#39;m talking about is where someone&amp;#39;s transaction is denied entry&lt;br/&gt;into the mempool entirely because a counter-party decided to put in a&lt;br/&gt;strictly worse transaction for miners by bloating the weight of it, not&lt;br/&gt;adding fees. A strictly worse &amp;#34;API&amp;#34; for paying miners for no gain seems&lt;br/&gt;like a bad trade to me, especially when there are reasonable methods for&lt;br/&gt;mitigating this.&lt;br/&gt;&lt;br/&gt;&amp;gt; It may thus be more prudent to permit the utilization of the annex&lt;br/&gt;without restrictions, inform developers of its inherent risks, and&lt;br/&gt;acknowledge that Bitcoin, in its present state, might not be ideally suited&lt;br/&gt;for certain types of applications?&lt;br/&gt;&lt;br/&gt;Mempool policy should be an attempt to bridge the gap between node anti-DoS&lt;br/&gt;and an entity&amp;#39;s ability to pay miners more via feerate-ordered queue. I&lt;br/&gt;don&amp;#39;t think the answer to this problem is to zero out all ability to limit&lt;br/&gt;the sizes of multi-party, multi-input transactions for speculative use&lt;br/&gt;cases.&lt;br/&gt;&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Sat, Jun 3, 2023 at 7:31 AM Joost Jager via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Sat, Jun 3, 2023 at 9:49 AM Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The removal of the need for a commitment transaction also enables the&lt;br/&gt;&amp;gt;&amp;gt; inclusion of data within a single transaction that relies on its own&lt;br/&gt;&amp;gt;&amp;gt; transaction identifier (txid). This is possible because the txid&lt;br/&gt;&amp;gt;&amp;gt; calculation does not incorporate the annex, where the data would be housed.&lt;br/&gt;&amp;gt;&amp;gt; This feature can be beneficial in scenarios that require the emulation of&lt;br/&gt;&amp;gt;&amp;gt; covenants through the use of presigned transactions involving an ephemeral&lt;br/&gt;&amp;gt;&amp;gt; signer.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think this avoidance of a circular reference is also why LN-Symmetry&lt;br/&gt;&amp;gt; uses the annex?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Joost&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230603/00985f2b/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230603/00985f2b/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-19T20:19:52&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgfft6djaz6pkda5veld8vy2x62ef0fzaxwcmeqfm7a477pk5l4dgzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjzj8egu</id>
    
      <title type="html">📅 Original date posted:2023-06-02 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgfft6djaz6pkda5veld8vy2x62ef0fzaxwcmeqfm7a477pk5l4dgzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjzj8egu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs28rx9gs08eu7l5w4c87q7gjhhwpn065vqmazmrtm3d5akqudzl5c5gu8yq&#39;&gt;nevent1q…u8yq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-06-02&lt;br/&gt;🗒️ Summary of this message: Greg Sanders is interested in using the annex data with LN-Symmetry, but there are concerns about the fact that BIP341/342 signature hashes do not cover other inputs&amp;#39; annex fields, which could lead to griefing. Possible solutions include limiting annex usage to opt-in inputs or having a field that limits the total transaction weight.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hello Joost, David,&lt;br/&gt;&lt;br/&gt;Thanks for the link to my ln-symmetry draft David. I&amp;#39;d also be curious as&lt;br/&gt;to the usage you have in&lt;br/&gt;mind Joost.&lt;br/&gt;&lt;br/&gt;It&amp;#39;s probably helpful to cite the most recent discussions on the topic,&lt;br/&gt;which is probably&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin-inquisition/bitcoin/pull/22&#34;&gt;https://github.com/bitcoin-inquisition/bitcoin/pull/22&lt;/a&gt; , where&lt;br/&gt;bitcoin-inquisition has included&lt;br/&gt;the `annexcarrier` option. I have a particular use for APO-enabled payment&lt;br/&gt;channel designs&lt;br/&gt;that doesn&amp;#39;t require consensus meaning, so some effort was put in to try&lt;br/&gt;something out there.&lt;br/&gt;&lt;br/&gt;Attempting to summarize the linked PR:&lt;br/&gt;&lt;br/&gt;I think the biggest remaining issue to this kind of idea, which is why I&lt;br/&gt;didn&amp;#39;t propose it for mainnet,&lt;br/&gt;is the fact that BIP341/342 signature hashes do not cover *other* inputs&amp;#39;&lt;br/&gt;annex fields, which we&lt;br/&gt;briefly discussed here&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin-inquisition/bitcoin/pull/22#discussion_r1143382264&#34;&gt;https://github.com/bitcoin-inquisition/bitcoin/pull/22#discussion_r1143382264&lt;/a&gt;&lt;br/&gt;.&lt;br/&gt;&lt;br/&gt;This means that in a coinjoin like scenario, even if the other joining&lt;br/&gt;parties prove they don&amp;#39;t have any&lt;br/&gt;crazy script paths, a malicious party can make the signed transaction into&lt;br/&gt;a maximum sized transaction&lt;br/&gt;package, causing griefing. The mitigation in the PR I linked was to limit&lt;br/&gt;it to 126 bytes, basically punting&lt;br/&gt;on the problem by making the grief vector small. Another solution could be&lt;br/&gt;to make annex usage &amp;#34;opt-in&amp;#34;&lt;br/&gt;by requiring all inputs to commit to an annex to be relay-standard. In this&lt;br/&gt;case, you&amp;#39;ve opted into a possible&lt;br/&gt;vector, but at least current usage patterns wouldn&amp;#39;t be unduly affected.&lt;br/&gt;For those who opt-in, perhaps the first&lt;br/&gt;order of business would be to have a field that limits the total&lt;br/&gt;transaction weight, by policy only?&lt;br/&gt;&lt;br/&gt;Some logs related to that here:&lt;br/&gt;&lt;a href=&#34;https://gist.github.com/instagibbs/7406931d953fd96fea28f85be50fc7bb&#34;&gt;https://gist.github.com/instagibbs/7406931d953fd96fea28f85be50fc7bb&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Related discussion on possible BIP118 modifications to mitigate this in&lt;br/&gt;tapscript-spending circumstances:&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin-inquisition/bitcoin/issues/19&#34;&gt;https://github.com/bitcoin-inquisition/bitcoin/issues/19&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Anyways, curious to hear what people think and want to make sure everyone&lt;br/&gt;is on the same page.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Fri, Jun 2, 2023 at 9:08 PM David A. Harding via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On 2023-06-02 05:00, Joost Jager via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &amp;gt; the benefits of making the annex available in a&lt;br/&gt;&amp;gt; &amp;gt; non-structured form are both evident and immediate. By allowing&lt;br/&gt;&amp;gt; &amp;gt; developers to utilize the taproot annex without delay, we can take&lt;br/&gt;&amp;gt; &amp;gt; advantage of its features today,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hi Joost,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Out of curiosity, what features and benefits are available today?  I&lt;br/&gt;&amp;gt; know Greg Sanders wants to use annex data with LN-Symmetry[1], but&lt;br/&gt;&amp;gt; that&amp;#39;s dependent on a soft fork of SIGHASH_ANYPREVOUT.  I also heard you&lt;br/&gt;&amp;gt; mention that it could allow putting arbitrary data into a witness&lt;br/&gt;&amp;gt; without having to commit to that data beforehand, but that would only&lt;br/&gt;&amp;gt; increase the efficiency of witness stuffing like ordinal inscriptions by&lt;br/&gt;&amp;gt; only 0.4% (~2 bytes saved per 520 bytes pushed) and it&amp;#39;d still be&lt;br/&gt;&amp;gt; required to create an output in order to spend it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Is there some other way to use the annex today that would be beneficial&lt;br/&gt;&amp;gt; to users of Bitcoin?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -Dave&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/lightning/bolts/compare/master...instagibbs:bolts:eltoo_draft#diff-156a655274046c49e6b1c2a22546ed66366d3b8d97b8e9b34b45fe5bd8800ae2R119&#34;&gt;https://github.com/lightning/bolts/compare/master...instagibbs:bolts:eltoo_draft#diff-156a655274046c49e6b1c2a22546ed66366d3b8d97b8e9b34b45fe5bd8800ae2R119&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230602/7ff6b96e/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230602/7ff6b96e/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-19T20:19:50&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd3rrawpk6dp8wxqvt58jmfz5df98a6y58vnnv55pehnjxk5qn5tszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj4vrzk7</id>
    
      <title type="html">📅 Original date posted:2022-12-08 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd3rrawpk6dp8wxqvt58jmfz5df98a6y58vnnv55pehnjxk5qn5tszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj4vrzk7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstvly3uz28dd3swgpwhu9c5gygwa2u3zm5jyyscnx8aw0lnxwlyms43lz7s&#39;&gt;nevent1q…lz7s&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-12-08&lt;br/&gt;📝 Original message:&lt;br/&gt;Antoine,&lt;br/&gt;&lt;br/&gt;&amp;gt; While the 2*to_self_delay sounds the maximum time delay in the state&lt;br/&gt;publication scenario where the cheating counterparty publishes a old state&lt;br/&gt;then the honest counterparty publishes the latest one, there could be the&lt;br/&gt;case where the cheating counterparty broadcast chain of old states, up to&lt;br/&gt;mempool&amp;#39;s `limitancestorcount`. However, this chain of eltoo transactions&lt;br/&gt;could be replaced by the honest party paying a higher-feerate (assuming&lt;br/&gt;something like nversion=3). I think there might still be an attack&lt;br/&gt;triggerable under certain economic conditions, where the attacker overbids&lt;br/&gt;with the higher-feerate transaction until the HTLC cltv expires. If this&lt;br/&gt;attack is plausible, it could be even opportun if you&amp;#39;re batching against&lt;br/&gt;multiple channels, where the victims are not able to coordinate response.&lt;br/&gt;&lt;br/&gt;Feel free to assume that we&amp;#39;ve worked around mempool pinning for all of&lt;br/&gt;these discussions, otherwise we&amp;#39;re pretty hosed regardless. I&amp;#39;m implicitly&lt;br/&gt;assuming V3&#43;ephemeral anchors, which disallows batched bumps, for example.&lt;br/&gt;You&amp;#39;ll need to give some room for &amp;#34;slippage&amp;#34;, but I think&lt;br/&gt;shared_delay/2*shared_delay is going to end up dominating UX in any&lt;br/&gt;non-layered scheme.&lt;br/&gt;&lt;br/&gt;&amp;gt; I wonder if the introduction of watchtower specific transactions doesn&amp;#39;t&lt;br/&gt;break the 2*to_self_delay assumption&lt;br/&gt;&lt;br/&gt;This architecture doesn&amp;#39;t suffer from 2*self_delay, and each transition&lt;br/&gt;aside from Slow/Settle/SX.y has no relative timelock so that relative&lt;br/&gt;timelock is all that matters. It does introduce a watchtower cycle, so it&amp;#39;s&lt;br/&gt;not longer a one-shot architecture, or even k-shot exactly, it ends up&lt;br/&gt;looking like vanilla eltoo for that single path.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Thu, Dec 8, 2022 at 2:14 PM Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt;&lt;br/&gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi AJ,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The eltoo irc channel is ##eltoo on Libera chat.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;  - 2022-10-21, eltoo/chia:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://twitter.com/bramcohen/status/1583122833932099585&#34;&gt;https://twitter.com/bramcohen/status/1583122833932099585&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On the eltoo/chia variant, from my (quick) understanding, the main&lt;br/&gt;&amp;gt; innovation aimed for is the limitation of the publication of eltoo states&lt;br/&gt;&amp;gt; more than once by a counterparty, by introducing a cryptographic puzzle,&lt;br/&gt;&amp;gt; where the witness can be produced once and only once ? I would say you&lt;br/&gt;&amp;gt; might need the inheritance of the updated scriptpubkey across the chain of&lt;br/&gt;&amp;gt; eltoo states, with a TLUV-like mechanism.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The basic idea is &amp;#34;if it&amp;#39;s a two party channel with just Alice and Bob,&lt;br/&gt;&amp;gt; &amp;gt; then if Alice starts a unilateral close, then she&amp;#39;s already had her say,&lt;br/&gt;&amp;gt; &amp;gt; so it&amp;#39;s only Bob&amp;#39;s opinion that matters from now on, and he should be&lt;br/&gt;&amp;gt; &amp;gt; able to act immediately&amp;#34;, and once it&amp;#39;s only Bob&amp;#39;s opinion that matters,&lt;br/&gt;&amp;gt; &amp;gt; you can simplify a bunch of things.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; From my understanding, assuming Eltoo paper terminology, Alice can publish&lt;br/&gt;&amp;gt; an update K transaction, and then after Bob can publish an update&lt;br/&gt;&amp;gt; transaction K&amp;lt;N or Alice can publish the settlement transaction N, or Bob&lt;br/&gt;&amp;gt; can publish an update transaction N. The main advantage of this&lt;br/&gt;&amp;gt; construction I can see is a strict bound on the shared_delay encumbered in&lt;br/&gt;&amp;gt; the on-chain publication of the channel ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; fast forwards: we might want to allow our channel partner&lt;br/&gt;&amp;gt; &amp;gt; to immediately rely on a new state we propose without needing a&lt;br/&gt;&amp;gt; &amp;gt; round-trip delay -- this potentially makes forwarding payments much&lt;br/&gt;&amp;gt; &amp;gt; faster (though with some risk of locking the funds up, if you do a&lt;br/&gt;&amp;gt; &amp;gt; fast forward to someone who&amp;#39;s gone offline)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; IIRC, there has already been a &amp;#34;fast-forward&amp;#34; protocol upgrade proposal&lt;br/&gt;&amp;gt; based on update-turn in the LN-penalty paradigm [0]. I think reducing the&lt;br/&gt;&amp;gt; latency of HTLC propagation across payment paths would constitute a UX&lt;br/&gt;&amp;gt; improvement, especially a link-level update mechanism upgrade deployment&lt;br/&gt;&amp;gt; might be incentivized by routing algorithms starting to penalize routing&lt;br/&gt;&amp;gt; hops HTLC relay latency. What is unclear is the additional risk of locking&lt;br/&gt;&amp;gt; the funds up. If you don&amp;#39;t receive acknowledgement the fast forward state&lt;br/&gt;&amp;gt; has been received, you should still be able to exit with the state N-1 ?&lt;br/&gt;&amp;gt; However, the fast-forward trade-off might sound acceptable, with time you&lt;br/&gt;&amp;gt; might expect reliable routing hops in the core of the graph, and flappy&lt;br/&gt;&amp;gt; spokes at the edge.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; doubled delays: once we publish the latest state we can, we want to&lt;br/&gt;&amp;gt; &amp;gt; be able to claim the funds immediately after to_self_delay expires;&lt;br/&gt;&amp;gt; &amp;gt; however if our counterparty has signatures for a newer state than we&lt;br/&gt;&amp;gt; &amp;gt; do (which will happen if it was fast forwarded), they could post that&lt;br/&gt;&amp;gt; &amp;gt; state shortly before to_self_delay expires, potentially increasing&lt;br/&gt;&amp;gt; &amp;gt; the total delay to 2*to_self_delay.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; While the 2*to_self_delay sounds the maximum time delay in the state&lt;br/&gt;&amp;gt; publication scenario where the cheating counterparty publishes a old state&lt;br/&gt;&amp;gt; then the honest counterparty publishes the latest one, there could be the&lt;br/&gt;&amp;gt; case where the cheating counterparty broadcast chain of old states, up to&lt;br/&gt;&amp;gt; mempool&amp;#39;s `limitancestorcount`. However, this chain of eltoo transactions&lt;br/&gt;&amp;gt; could be replaced by the honest party paying a higher-feerate (assuming&lt;br/&gt;&amp;gt; something like nversion=3). I think there might still be an attack&lt;br/&gt;&amp;gt; triggerable under certain economic conditions, where the attacker overbids&lt;br/&gt;&amp;gt; with the higher-feerate transaction until the HTLC cltv expires. If this&lt;br/&gt;&amp;gt; attack is plausible, it could be even opportun if you&amp;#39;re batching against&lt;br/&gt;&amp;gt; multiple channels, where the victims are not able to coordinate response.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; penalties: when you do a unilateral close, attempting to cheat comes&lt;br/&gt;&amp;gt; &amp;gt; with no cost to you and a possible benefit if you succeed, but&lt;br/&gt;&amp;gt; &amp;gt; potentially does cost your channel partner (either in forcing them&lt;br/&gt;&amp;gt; &amp;gt; to spend on-chain fees to update to the correct state, or in the risk&lt;br/&gt;&amp;gt; &amp;gt; of loss if their node malfunctions occassionally) -- a penalty could&lt;br/&gt;&amp;gt; &amp;gt; reduce this incentive to cheat&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think there has been a proposal in the past to enable penalties on top&lt;br/&gt;&amp;gt; of symmetric states by leveraging asymmetric witnesses [1]. Further, I&lt;br/&gt;&amp;gt; wonder if there is a game-theory interest for penalty-on-top-eltoo, it&lt;br/&gt;&amp;gt; could be an incentive against laziness, where a dysfunctional trusted&lt;br/&gt;&amp;gt; watchtower broadcasts an old state. On the qualification of the game-theory&lt;br/&gt;&amp;gt; soundness, I think one would have to run the empirical case study: select&lt;br/&gt;&amp;gt; channel counterparties randomly (no out-of-band assumptions), one set with&lt;br/&gt;&amp;gt; eltoo&#43;penalty and the other with vanilla eltoo, observe the broadcast of&lt;br/&gt;&amp;gt; revoked states over some period.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; trustless watchtowers: we may want to consider the possibility of a&lt;br/&gt;&amp;gt; &amp;gt; watchtower holding onto obsolete states and colluding with an&lt;br/&gt;&amp;gt; &amp;gt; attacker to attempt to cheat us&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In terms of pinning and other mempool games, I think honest participant&lt;br/&gt;&amp;gt; own states leveraged by a colluding watchtower might increase the attack&lt;br/&gt;&amp;gt; surface, especially post-anchor with the SIGHASH_SINGLE malleability on&lt;br/&gt;&amp;gt; second-stage HTLC transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; (I think for initial eltoo experimentation it doesn&amp;#39;t make sense to try&lt;br/&gt;&amp;gt; to&lt;br/&gt;&amp;gt; &amp;gt; deal with all (or perhaps any) of those constraints; simple and working&lt;br/&gt;&amp;gt; &amp;gt; is better than complex and theoretical. But having them written down so&lt;br/&gt;&amp;gt; &amp;gt; the ideas can be thought about and looked up later still seems useful)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I share the belief -- &amp;#34;simple and working&amp;#34; enable shorter iteration cycles&lt;br/&gt;&amp;gt; and hopefully fasten the protocol design learning curve. Beyond, I think&lt;br/&gt;&amp;gt; it&amp;#39;s also realistic in face of the state of the LN ecosystem, especially on&lt;br/&gt;&amp;gt; the watchtower issue. AFAICT, there is no even multi trusted watchtower&lt;br/&gt;&amp;gt; design covering the full execution of the protocol (i.e including&lt;br/&gt;&amp;gt; HTLC-preimage/ HTLC-timeout claim), and such implementation is far from&lt;br/&gt;&amp;gt; simple, as from now on you LN&amp;#39;s chain backend might have asynchronicity&lt;br/&gt;&amp;gt; issue to solve between your on-chain monitoring state machine (at least&lt;br/&gt;&amp;gt; speaking in knowledge of the LDK-architecture).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; * WA.n, WB.n : watchtower update to state n&lt;br/&gt;&amp;gt; &amp;gt;   - this is for an untrusted watchtower to correct attempted cheating&lt;br/&gt;&amp;gt; &amp;gt;     by Bob on behalf of Alice (or vice-versa). Spends UB.k or WA.k&lt;br/&gt;&amp;gt; &amp;gt;     (or UA.k/WB.k) respectively, provided k &amp;lt; n.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I wonder if the introduction of watchtower specific transactions doesn&amp;#39;t&lt;br/&gt;&amp;gt; break the 2*to_self_delay assumption (iiuc it&amp;#39;s a design goal of current&lt;br/&gt;&amp;gt; protocol) and what is the design rationale. Beyond that, there is a concern&lt;br/&gt;&amp;gt; with watchtower-specific transactions, it might leak your towers topology&lt;br/&gt;&amp;gt; (i.e the number of them and the distribution in the p2p network) to an&lt;br/&gt;&amp;gt; adversary.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; * SA.n, SB.n : slowly claim funds according to state n&lt;br/&gt;&amp;gt; &amp;gt;   - this is for Alice to claim her funds if Bob is completely offline&lt;br/&gt;&amp;gt; &amp;gt;     (or vice-versa). Spends UA.n, UB.n, WA.n or WB.n with relative&lt;br/&gt;&amp;gt; &amp;gt;     timelock of to_self_delay.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If I&amp;#39;m following correctly the description, this is logically equivalent&lt;br/&gt;&amp;gt; to the sweep of a `to_local`/`to_remote` output on a commitment transaction&lt;br/&gt;&amp;gt; though instead the waiting delay is eltoo shared_delay. There is no&lt;br/&gt;&amp;gt; to_self_delay, at the punishment seems only to happen on the update-level,&lt;br/&gt;&amp;gt; or maybe one should be also able to punish slow fund exit, and another&lt;br/&gt;&amp;gt; relative locktime should exist on the S* transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; * Alice and Bob&amp;#39;s watchtower collude, but Bob has many watchtowers:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     F -&amp;gt; UA.k1 -&amp;gt; WB.k2 -&amp;gt; WB.n -&amp;gt; (to_self_delay) -&amp;gt; SA.n -&amp;gt; money&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Could the punishment transactions R* be also delegated to watchtowers,&lt;br/&gt;&amp;gt; assuming they have been pre-signed to lockdown the exit scriptpubkeys ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In order to allow fast-forwards, when Alice proposes a new state,&lt;br/&gt;&amp;gt; &amp;gt; she needs to send her partial signatures to allow Bob to unilaterally&lt;br/&gt;&amp;gt; &amp;gt; accept the new state, ie sigs for: UB.n, CB.n, SB.n, RB.n. But she&lt;br/&gt;&amp;gt; &amp;gt; also needs to be able to claim the funds if Bob proposes the new state&lt;br/&gt;&amp;gt; &amp;gt; and broadcasts UB.n, she needs to be able broadcast CA.n. This can be&lt;br/&gt;&amp;gt; &amp;gt; achieved with an adaptor signature approach (spelt out a bit more fully&lt;br/&gt;&amp;gt; &amp;gt; in the gist) or a CTV-like approach, provided that UB.n reveals the&lt;br/&gt;&amp;gt; &amp;gt; state needed to calculate the the CTV commitment (see &amp;#34;EXPR_SETTLE&amp;#34; in&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&#34;&gt;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&lt;/a&gt;&lt;br/&gt;&amp;gt; ).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you would like to have fast forward of chain of transactions, I wonder&lt;br/&gt;&amp;gt; if there could be also the &amp;#34;sig-in-the-script&amp;#34; trick, where UB.n&lt;br/&gt;&amp;gt; scriptpubkey (or one of its tapscripts) contains the signature for CB.n,&lt;br/&gt;&amp;gt; SB.n, RB.n. Though you might have an issue of re-generating the&lt;br/&gt;&amp;gt; witnessscript in case of state loss.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; * how to add fees -- the U/W transactions are 1-in/1-out transactions&lt;br/&gt;&amp;gt; &amp;gt;   that can&amp;#39;t be trivially CPFPed by the proposer and need to have&lt;br/&gt;&amp;gt; &amp;gt;   fees added (either SINGLE/ANYONECANPAY signatures or having a 0-sat&lt;br/&gt;&amp;gt; &amp;gt;   ephemeral output and package relay might be workable); the C/S/R&lt;br/&gt;&amp;gt; &amp;gt;   transactions are 1-in/many-out transactions, but have balance outputs&lt;br/&gt;&amp;gt; &amp;gt;   that can be immediately spent to pay for fees via CPFP if package&lt;br/&gt;&amp;gt; &amp;gt;   relay is available.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Assuming something like nversion=3, the SINGLE/ANYONCANPAY could be a&lt;br/&gt;&amp;gt; viable fee-bumping mechanism, as ancestor-based pinning should be less of a&lt;br/&gt;&amp;gt; concern. Ephemeral anchor output could be a more efficient direction, if&lt;br/&gt;&amp;gt; the output value can be cooperatively inflated from the channel value,&lt;br/&gt;&amp;gt; rather than relying on external fee-bumping reserves. I think even more&lt;br/&gt;&amp;gt; efficient fee-bumping primitives can be introduced later.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; * how to pay watchtowers -- when a watchtower broadcasts a W&lt;br/&gt;&amp;gt; &amp;gt;   transaction, it needs to add fees, and it&amp;#39;s not clear (to me) how it&lt;br/&gt;&amp;gt; &amp;gt;   could fairly and reliably ensure it&amp;#39;s compensated for those costs,&lt;br/&gt;&amp;gt; &amp;gt;   particularly if multiple W transactions are broadcast for a single&lt;br/&gt;&amp;gt; &amp;gt;   unilateral close attempt, due to one or more watchtowers colluding&lt;br/&gt;&amp;gt; &amp;gt;   with an attacker, or simply having out of date information.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I wonder if paying a watchtower, or getting paid as a watchtower isn&amp;#39;t  a&lt;br/&gt;&amp;gt; &amp;#34;counterparty risk&amp;#34; similar to what is happening with jamming due to&lt;br/&gt;&amp;gt; non-covered HTLC forward risk. The watchtower has the risk of not being&lt;br/&gt;&amp;gt; paid a posteriori and the user has the risk of the tower not acting. There&lt;br/&gt;&amp;gt; is even a trade-off between tower costs and safety, as the more towers you&lt;br/&gt;&amp;gt; have, more robust if your Lightning channel (in theory, as you also have a&lt;br/&gt;&amp;gt; duplication of the key material).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; * lack of layered transactions -- while this prevents you having to&lt;br/&gt;&amp;gt; &amp;gt;   wait longer than to_self_delay before you can claim channel funds,&lt;br/&gt;&amp;gt; &amp;gt;   it still means that any htlc that is going to timeout sooner than that&lt;br/&gt;&amp;gt; &amp;gt;   may not be claimable on-chain, meaning you need to set&lt;br/&gt;&amp;gt; &amp;gt;   cltv_expiry_delta &amp;gt;= to_self_delay.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; From a security perspective, offsetting the cltv_expiry_delta to a value&lt;br/&gt;&amp;gt; superior to to_self_delay can be considered as an improvement, especially&lt;br/&gt;&amp;gt; if it gradually does it network-wide. On the other hand, if routing&lt;br/&gt;&amp;gt; algorithms start to penalize long-cltv-delta payment paths as the timevalue&lt;br/&gt;&amp;gt; of liquidity is priced in routing fees, this design rationale might not be&lt;br/&gt;&amp;gt; aligned with long-term LN network incentives (as of today even more&lt;br/&gt;&amp;gt; loosely-defined than miner incentives).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; * extending to multiparty channels -- penalising is hard if there&amp;#39;s&lt;br/&gt;&amp;gt; &amp;gt;   more than two parties, fast forwards are probably impossible since&lt;br/&gt;&amp;gt; &amp;gt;   you need multiple round-trips to coordinate signatures anyway, and if&lt;br/&gt;&amp;gt; &amp;gt;   you&amp;#39;re doing channels-within-channels to reduce your n-party channel&lt;br/&gt;&amp;gt; &amp;gt;   to an easier to update 2-party channel you&amp;#39;re probably forced to have&lt;br/&gt;&amp;gt; &amp;gt;   to_self_delay for each layer of channels. Also, just figuring out how&lt;br/&gt;&amp;gt; &amp;gt;   to coordinate multiparty state updates and even keeping everyone in&lt;br/&gt;&amp;gt; &amp;gt;   a multiparty channel online consistently to generate new signatures&lt;br/&gt;&amp;gt; &amp;gt;   seems potentially hard?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t know if penalising has been a solved issue for mulit-party, at&lt;br/&gt;&amp;gt; least in a trustless fashion in the same way we have with 2-party&lt;br/&gt;&amp;gt; LN-penalty (you could devise weird scheme based on timelock, taproot tree&lt;br/&gt;&amp;gt; and threshold signatures incentivizing towards the convergence of a&lt;br/&gt;&amp;gt; &amp;#34;consensus&amp;#34; punishment, still...) Figuring out coordinating multi-party&lt;br/&gt;&amp;gt; states updates sounds workable with modern consensus algorithms (e.g Raft),&lt;br/&gt;&amp;gt; though still conserving the fast forward effect is a high bar, it might be&lt;br/&gt;&amp;gt; better deferred to an uplifted layer of 2-of-2 LN channels. The only reason&lt;br/&gt;&amp;gt; you might have payments at the multi-party level (with the signature of the&lt;br/&gt;&amp;gt; N-of-N participants requested) only for privacy or liquidity allocation&lt;br/&gt;&amp;gt; reason. Though effectively, it sounds like your multiparty&lt;br/&gt;&amp;gt; channel coordination mechanism should encompass party eviction or&lt;br/&gt;&amp;gt; partitioning the offline parties. One or two orders of magnitude of&lt;br/&gt;&amp;gt; complexity beyond the 2-party eltoo channel case, I think.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0] &lt;a href=&#34;https://github.com/lightning/bolts/pull/867&#34;&gt;https://github.com/lightning/bolts/pull/867&lt;/a&gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/LLFourn/witness-asymmetric-channel&#34;&gt;https://github.com/LLFourn/witness-asymmetric-channel&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Le mer. 7 déc. 2022 à 00:36, Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On the eltoo irc channel we discussed optimising eltoo for the 2-party&lt;br/&gt;&amp;gt;&amp;gt; scenario; figured it was probably worth repeating that here.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This is similar to:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  - 2018-07-18, simplified eltoo:&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-July/001363.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-July/001363.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;  - 2021-09-17, IID 2Stage,&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019470.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019470.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;  - 2022-09-29, Daric: &lt;a href=&#34;https://eprint.iacr.org/2022/1295&#34;&gt;https://eprint.iacr.org/2022/1295&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;  - 2022-10-21, eltoo/chia:&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://twitter.com/bramcohen/status/1583122833932099585&#34;&gt;https://twitter.com/bramcohen/status/1583122833932099585&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The basic idea is &amp;#34;if it&amp;#39;s a two party channel with just Alice and Bob,&lt;br/&gt;&amp;gt;&amp;gt; then if Alice starts a unilateral close, then she&amp;#39;s already had her say,&lt;br/&gt;&amp;gt;&amp;gt; so it&amp;#39;s only Bob&amp;#39;s opinion that matters from now on, and he should be&lt;br/&gt;&amp;gt;&amp;gt; able to act immediately&amp;#34;, and once it&amp;#39;s only Bob&amp;#39;s opinion that matters,&lt;br/&gt;&amp;gt;&amp;gt; you can simplify a bunch of things.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; A &amp;#34;gist&amp;#34; for this idea is&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://gist.github.com/ajtowns/53e0f735f4d5c06a681429d937200aa5&#34;&gt;https://gist.github.com/ajtowns/53e0f735f4d5c06a681429d937200aa5&lt;/a&gt; (it&lt;br/&gt;&amp;gt;&amp;gt; goes into a little more detail in places, though doesn&amp;#39;t cover trustless&lt;br/&gt;&amp;gt;&amp;gt; watchtowers at all).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In particular, there are a few practical constraints that we might like&lt;br/&gt;&amp;gt;&amp;gt; to consider for 2-party channels with eltoo:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  - fast forwards: we might want to allow our channel partner&lt;br/&gt;&amp;gt;&amp;gt;    to immediately rely on a new state we propose without needing a&lt;br/&gt;&amp;gt;&amp;gt;    round-trip delay -- this potentially makes forwarding payments much&lt;br/&gt;&amp;gt;&amp;gt;    faster (though with some risk of locking the funds up, if you do a&lt;br/&gt;&amp;gt;&amp;gt;    fast forward to someone who&amp;#39;s gone offline)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  - doubled delays: once we publish the latest state we can, we want to&lt;br/&gt;&amp;gt;&amp;gt;    be able to claim the funds immediately after to_self_delay expires;&lt;br/&gt;&amp;gt;&amp;gt;    however if our counterparty has signatures for a newer state than we&lt;br/&gt;&amp;gt;&amp;gt;    do (which will happen if it was fast forwarded), they could post that&lt;br/&gt;&amp;gt;&amp;gt;    state shortly before to_self_delay expires, potentially increasing&lt;br/&gt;&amp;gt;&amp;gt;    the total delay to 2*to_self_delay.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  - penalties: when you do a unilateral close, attempting to cheat comes&lt;br/&gt;&amp;gt;&amp;gt;    with no cost to you and a possible benefit if you succeed, but&lt;br/&gt;&amp;gt;&amp;gt;    potentially does cost your channel partner (either in forcing them&lt;br/&gt;&amp;gt;&amp;gt;    to spend on-chain fees to update to the correct state, or in the risk&lt;br/&gt;&amp;gt;&amp;gt;    of loss if their node malfunctions occassionally) -- a penalty could&lt;br/&gt;&amp;gt;&amp;gt;    reduce this incentive to cheat&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  - trustless watchtowers: we may want to consider the possibility of a&lt;br/&gt;&amp;gt;&amp;gt;    watchtower holding onto obsolete states and colluding with an&lt;br/&gt;&amp;gt;&amp;gt;    attacker to attempt to cheat us&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; What follows is a rough approach for dealing with all those issues for&lt;br/&gt;&amp;gt;&amp;gt; two-party channels. It&amp;#39;s spelled out in a little more detail in the gist.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; (I think for initial eltoo experimentation it doesn&amp;#39;t make sense to try to&lt;br/&gt;&amp;gt;&amp;gt; deal with all (or perhaps any) of those constraints; simple and working&lt;br/&gt;&amp;gt;&amp;gt; is better than complex and theoretical. But having them written down so&lt;br/&gt;&amp;gt;&amp;gt; the ideas can be thought about and looked up later still seems useful)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In more detail: unilateral closes are handled by each channel participant&lt;br/&gt;&amp;gt;&amp;gt; maintaining five transactions, which we&amp;#39;ll call:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * UA.n, UB.n : unilaterally propose closing at state n&lt;br/&gt;&amp;gt;&amp;gt;    - this is for Alice or Bob to spend the funding tx for a unilater&lt;br/&gt;&amp;gt;&amp;gt;      close to state n. Spends the funding transaction.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * WA.n, WB.n : watchtower update to state n&lt;br/&gt;&amp;gt;&amp;gt;    - this is for an untrusted watchtower to correct attempted cheating&lt;br/&gt;&amp;gt;&amp;gt;      by Bob on behalf of Alice (or vice-versa). Spends UB.k or WA.k&lt;br/&gt;&amp;gt;&amp;gt;      (or UA.k/WB.k) respectively, provided k &amp;lt; n.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * CA.n, CB.n : cooperatively claim funds according to state n&lt;br/&gt;&amp;gt;&amp;gt;    - this is for Alice to confirm Bob&amp;#39;s unilateral close (or vice-versa).&lt;br/&gt;&amp;gt;&amp;gt;      Spends UB.k, WA.k (or UA.k/WB.k respectively), provided k &amp;lt;= n&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * SA.n, SB.n : slowly claim funds according to state n&lt;br/&gt;&amp;gt;&amp;gt;    - this is for Alice to claim her funds if Bob is completely offline&lt;br/&gt;&amp;gt;&amp;gt;      (or vice-versa). Spends UA.n, UB.n, WA.n or WB.n with relative&lt;br/&gt;&amp;gt;&amp;gt;      timelock of to_self_delay.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * RA.n, RB.n : claim funds with penalty after unilateral close to&lt;br/&gt;&amp;gt;&amp;gt;    revoked state&lt;br/&gt;&amp;gt;&amp;gt;    - this is for Alice to update the state if Bob attempted to cheat&lt;br/&gt;&amp;gt;&amp;gt;      (or vice-versa). Spends UB.k or WA.k (or UA.k/WB.k respectively)&lt;br/&gt;&amp;gt;&amp;gt;      conditional on k &amp;lt; n - 1; outputs are adjusted to transfer a fixed&lt;br/&gt;&amp;gt;&amp;gt;      penalty of penalty_msat from Bob&amp;#39;s balance to Alice&amp;#39;s (or vice-versa)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Each of these &amp;#34;transactions&amp;#34; requires a pre-signed signature; however&lt;br/&gt;&amp;gt;&amp;gt; the actual transaction/txid will vary in cases where a transaction has&lt;br/&gt;&amp;gt;&amp;gt; the possibility of spending different inputs (eg &amp;#34;Spends UB.k or WA.k&amp;#34;).&lt;br/&gt;&amp;gt;&amp;gt; In particular UA.n/UB.n can be constructed with known txids and non-APO&lt;br/&gt;&amp;gt;&amp;gt; signatures but WA.n/WB.n/CA.n/CB.n/SA.n/SB.n/RA.n/RB.n all require&lt;br/&gt;&amp;gt;&amp;gt; APO signatures.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; They&amp;#39;re named such that Alice can immediately broadcast all the *A.n&lt;br/&gt;&amp;gt;&amp;gt; transactions (provided a tx that it can spend has been broadcast) and&lt;br/&gt;&amp;gt;&amp;gt; Bob can likewise immediately broadcast all the *B.n transactions.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Scenarios where Alice decides to unilaterally close the channel might&lt;br/&gt;&amp;gt;&amp;gt; look like:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * if Alice/Bob can&amp;#39;t communicate directly, but both are online:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      F -&amp;gt; UA.n -&amp;gt; CB.n -&amp;gt; money&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;    (balances and htlcs claimed, no delay)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * if Bob has gone offline entirely:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      F -&amp;gt; UA.n -&amp;gt; (to_self_delay) -&amp;gt; SA.n -&amp;gt; money&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * Alice cheats, Bob punishes:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      F -&amp;gt; UA.k -&amp;gt; RB.n -&amp;gt; money[Alice pays Bob penalty]&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * Bob is offline, Alice cheats, but Bob has a watchtower:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      F -&amp;gt; UA.k -&amp;gt; WB.n -&amp;gt; (to_self_delay) -&amp;gt; SA.n -&amp;gt; money&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * Alice and Bob&amp;#39;s watchtower collude, but Bob&amp;#39;s not offline:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      F -&amp;gt; UA.k1 -&amp;gt; WB.k2 -&amp;gt; RB.n -&amp;gt; money[Alice pays Bob penalty]&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * Alice and Bob&amp;#39;s watchtower collude, but Bob has many watchtowers:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;      F -&amp;gt; UA.k1 -&amp;gt; WB.k2 -&amp;gt; WB.n -&amp;gt; (to_self_delay) -&amp;gt; SA.n -&amp;gt; money&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; For Alice to successfully cheat, she needs Bob to be offline for at least&lt;br/&gt;&amp;gt;&amp;gt; to_self_delay, and for all Bob&amp;#39;s watchtowers to either also be offline,&lt;br/&gt;&amp;gt;&amp;gt; or colluding.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This can be simplified somewhat, if you don&amp;#39;t care about all the features:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * If you don&amp;#39;t care about trustless watchtowers you can drop WA.n/WB.n&lt;br/&gt;&amp;gt;&amp;gt;    (and simplify SA.n/SB.n to not require an APO signature)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * If you don&amp;#39;t care about penalties you can set penalty_msat to 0 and&lt;br/&gt;&amp;gt;&amp;gt;    allow RA.n/RB.n to spend k&amp;lt;=n. In this case, you can either drop&lt;br/&gt;&amp;gt;&amp;gt;    CA.n/CB.n entirely, or you can have CA.n/CB.n only be used for directly&lt;br/&gt;&amp;gt;&amp;gt;    spending of UB.n/UA.n and thus not require APO signatures&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In order to allow fast-forwards, when Alice proposes a new state,&lt;br/&gt;&amp;gt;&amp;gt; she needs to send her partial signatures to allow Bob to unilaterally&lt;br/&gt;&amp;gt;&amp;gt; accept the new state, ie sigs for: UB.n, CB.n, SB.n, RB.n. But she&lt;br/&gt;&amp;gt;&amp;gt; also needs to be able to claim the funds if Bob proposes the new state&lt;br/&gt;&amp;gt;&amp;gt; and broadcasts UB.n, she needs to be able broadcast CA.n. This can be&lt;br/&gt;&amp;gt;&amp;gt; achieved with an adaptor signature approach (spelt out a bit more fully&lt;br/&gt;&amp;gt;&amp;gt; in the gist) or a CTV-like approach, provided that UB.n reveals the&lt;br/&gt;&amp;gt;&amp;gt; state needed to calculate the the CTV commitment (see &amp;#34;EXPR_SETTLE&amp;#34; in&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&#34;&gt;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; ).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Note that in this scenario Alice doesn&amp;#39;t provide WB.n to Bob&lt;br/&gt;&amp;gt;&amp;gt; immediately. This is okay, as if Alice proposes UA.(n-1) (her most&lt;br/&gt;&amp;gt;&amp;gt; recent state), Bob can still immediately claim via CA.n. If Bob did have&lt;br/&gt;&amp;gt;&amp;gt; WB.n; then if Alice proposed UA.(n-1) Bob could wait for an initial&lt;br/&gt;&amp;gt;&amp;gt; to_self_delay period and broadcast WB.n, forcing Alice to wait for an&lt;br/&gt;&amp;gt;&amp;gt; additional to_self_delay before being able to claim her funds via SA.n.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Note also that this is why RA.n/RB.n require &amp;#34;k &amp;lt; n - 1&amp;#34; -- otherwise&lt;br/&gt;&amp;gt;&amp;gt; Alice would only be able to broadcast UA.(n-1) and Bob would immediately&lt;br/&gt;&amp;gt;&amp;gt; be able to penalise by broadcasting RB.n.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Note that if you&amp;#39;re using a watchtower and wish to punish your&lt;br/&gt;&amp;gt;&amp;gt; counterparty if it attempts to cheat, you should only pass WA.(n-2)&lt;br/&gt;&amp;gt;&amp;gt; to your watchtowers, not WA.(n-1) or WA.n.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This doesn&amp;#39;t address any potential issues from:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * how to add fees -- the U/W transactions are 1-in/1-out transactions&lt;br/&gt;&amp;gt;&amp;gt;    that can&amp;#39;t be trivially CPFPed by the proposer and need to have&lt;br/&gt;&amp;gt;&amp;gt;    fees added (either SINGLE/ANYONECANPAY signatures or having a 0-sat&lt;br/&gt;&amp;gt;&amp;gt;    ephemeral output and package relay might be workable); the C/S/R&lt;br/&gt;&amp;gt;&amp;gt;    transactions are 1-in/many-out transactions, but have balance outputs&lt;br/&gt;&amp;gt;&amp;gt;    that can be immediately spent to pay for fees via CPFP if package&lt;br/&gt;&amp;gt;&amp;gt;    relay is available.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * how to pay watchtowers -- when a watchtower broadcasts a W&lt;br/&gt;&amp;gt;&amp;gt;    transaction, it needs to add fees, and it&amp;#39;s not clear (to me) how it&lt;br/&gt;&amp;gt;&amp;gt;    could fairly and reliably ensure it&amp;#39;s compensated for those costs,&lt;br/&gt;&amp;gt;&amp;gt;    particularly if multiple W transactions are broadcast for a single&lt;br/&gt;&amp;gt;&amp;gt;    unilateral close attempt, due to one or more watchtowers colluding&lt;br/&gt;&amp;gt;&amp;gt;    with an attacker, or simply having out of date information.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * lack of layered transactions -- while this prevents you having to&lt;br/&gt;&amp;gt;&amp;gt;    wait longer than to_self_delay before you can claim channel funds,&lt;br/&gt;&amp;gt;&amp;gt;    it still means that any htlc that is going to timeout sooner than that&lt;br/&gt;&amp;gt;&amp;gt;    may not be claimable on-chain, meaning you need to set&lt;br/&gt;&amp;gt;&amp;gt;    cltv_expiry_delta &amp;gt;= to_self_delay.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  * extending to multiparty channels -- penalising is hard if there&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt;    more than two parties, fast forwards are probably impossible since&lt;br/&gt;&amp;gt;&amp;gt;    you need multiple round-trips to coordinate signatures anyway, and if&lt;br/&gt;&amp;gt;&amp;gt;    you&amp;#39;re doing channels-within-channels to reduce your n-party channel&lt;br/&gt;&amp;gt;&amp;gt;    to an easier to update 2-party channel you&amp;#39;re probably forced to have&lt;br/&gt;&amp;gt;&amp;gt;    to_self_delay for each layer of channels. Also, just figuring out how&lt;br/&gt;&amp;gt;&amp;gt;    to coordinate multiparty state updates and even keeping everyone in&lt;br/&gt;&amp;gt;&amp;gt;    a multiparty channel online consistently to generate new signatures&lt;br/&gt;&amp;gt;&amp;gt;    seems potentially hard?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&amp;gt; aj&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221208/78e37af8/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221208/78e37af8/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:07:38&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsthtavf64gtq25s0ksyyn6kuhx44g0xfqeed42qmh92t8useav32qzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjfsvjf0</id>
    
      <title type="html">📅 Original date posted:2022-08-10 📝 Original message: In ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsthtavf64gtq25s0ksyyn6kuhx44g0xfqeed42qmh92t8useav32qzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjfsvjf0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswr747xzryptaegprq795qg83dnhn9vnvrmhzlte8sc6dcrk32drcuhqxnx&#39;&gt;nevent1q…qxnx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-08-10&lt;br/&gt;📝 Original message:&lt;br/&gt;In this vector, I&amp;#39;m pretty sure feerate/total fee pinning is the same&lt;br/&gt;issue. Even if you don&amp;#39;t have to increase feerate, you have to pay for&lt;br/&gt;100*1000=100,000 sats due to rule#3.&lt;br/&gt;&lt;br/&gt;There&amp;#39;s been some work trying to document the exact replacement behavior&lt;br/&gt;implemented in core since it has drifted so much, and the feerate one would&lt;br/&gt;be &amp;#34;rule#6&amp;#34; in the doc:&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/master/doc/policy/mempool-replacements.md&#34;&gt;https://github.com/bitcoin/bitcoin/blob/master/doc/policy/mempool-replacements.md&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Making sure inputs are confirmed completely mitigates this, so I&amp;#39;m guessing&lt;br/&gt;it&amp;#39;s not much of an issue.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Wed, Aug 10, 2022 at 2:03 PM Eugene Siegel &amp;lt;elzeigel at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; I quickly looked it up and it seems that bitcoind has a function&lt;br/&gt;&amp;gt; PaysMoreThanConflicts which checks that the tx pays a higher feerate than&lt;br/&gt;&amp;gt; the replaced tx. This isn&amp;#39;t a BIP125 rule AFAICT so I think that&amp;#39;s what&lt;br/&gt;&amp;gt; tripped me up. That means I&amp;#39;m wrong about the ancestor bulking variant as a&lt;br/&gt;&amp;gt; malicious counterparty can put a high feerate splice tx at the bottom of&lt;br/&gt;&amp;gt; the mempool, requiring a higher feerate to replace it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Wed, Aug 10, 2022 at 12:31 PM Greg Sanders &amp;lt;gsanders87 at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Your reading is correct.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; My example was that if TxB, size 100vB with feerate 1000 sat/vbyte, has&lt;br/&gt;&amp;gt;&amp;gt; an 100kvB ancestor paying 1 sat/vbyte. The effective package rate for those&lt;br/&gt;&amp;gt;&amp;gt; two transactions will be (100*1,000 &#43; 100,000*1)/(100,000 &#43; 100) = ~2&lt;br/&gt;&amp;gt;&amp;gt; sat/vybte&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This means TxB will not be picked up if the prevailing rate is &amp;gt; 2&lt;br/&gt;&amp;gt;&amp;gt; sat/byte.  Let&amp;#39;s say it&amp;#39;s 4 sat/vbyte prevailing rate. To replace it with&lt;br/&gt;&amp;gt;&amp;gt; TxB&amp;#39;, one still has to pay to evict TxB, at roughly 1000/4=250 times the&lt;br/&gt;&amp;gt;&amp;gt; normal feerate.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Sorry if I got the math wrong here, but at least trying to get the idea&lt;br/&gt;&amp;gt;&amp;gt; across.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Wed, Aug 10, 2022 at 12:20 PM Eugene Siegel &amp;lt;elzeigel at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Looking it up, rule 3 is &amp;#34;The replacement transaction pays an absolute&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; fee of at least the sum paid by the original transactions.&amp;#34; but here the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ancestors aren&amp;#39;t getting replaced so I don&amp;#39;t think the replacement has to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; pay for them? Or maybe your comment was just generally about how it can&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; matter in certain cases&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; On Wed, Aug 10, 2022 at 12:06 PM Greg Sanders &amp;lt;gsanders87 at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; I think the ancestor bulking variant of pinning only matters if you&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; are trying to add a new descendant and can&amp;#39;t due to the ancestor/descendant&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; limits.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Not quite. It also matters if you want to RBF that transaction, since&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; low feerate ancestor junk puts the transaction at the bottom of the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; mempool, so to speak, even if it has a high feerate itself. You are forced&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to pay &amp;#34;full freight&amp;#34; to replace it via bip125 rule#3 even though it&amp;#39;s not&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; going to be mined.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (I don&amp;#39;t know if that applies here, just noting the wrinkle)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On Wed, Aug 10, 2022 at 11:37 AM Eugene Siegel &amp;lt;elzeigel at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I think the ancestor bulking variant of pinning only matters if you&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; are trying to add a new descendant and can&amp;#39;t due to the ancestor/descendant&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; limits. In this  example, since all of the outputs are locked with `1&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; OP_CSV`, you can&amp;#39;t add a descendant to the splice tx. The ancestor bulking&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; also shouldn&amp;#39;t matter for RBF since you wouldn&amp;#39;t be replacing any of the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ancestors, only the splice tx. I think it might matter if the new funding&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; output isn&amp;#39;t encumbered.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; The new funding output can&amp;#39;t have `1 OP_CSV` unless we also change the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; commit tx format, and I&amp;#39;m not sure if it would work. The commit tx has the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; disable bit set in nSequence so it isn&amp;#39;t compatible with the sequence lock.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Enabling the bit might be tricky since then the commit tx may have a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; time-based or block-based locktime based on the lower bits of the obscured&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; commitment number, and it must be block-based (and non-zero) for the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; sequence lock to work. That means if it&amp;#39;s not encumbered, pinning exists&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; since an attacker can make a junk tree using the anchor output. It is&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; replaceable using RBF since you have your own commit tx (with anchor) to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; broadcast.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Eugene&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220810/ab81a7c1/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220810/ab81a7c1/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:06:41&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxlnfpr8zr75tnw9hkvarkgg5pwwpru26skm4dw5c89uysjyyaldszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj83860u</id>
    
      <title type="html">📅 Original date posted:2022-08-10 📝 Original message: Your ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxlnfpr8zr75tnw9hkvarkgg5pwwpru26skm4dw5c89uysjyyaldszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj83860u" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstg4gmc0u62mkeuc6ct0pu434jhgfa2ak3cqwjnvn32q20gyxcc2q9j60zn&#39;&gt;nevent1q…60zn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-08-10&lt;br/&gt;📝 Original message:&lt;br/&gt;Your reading is correct.&lt;br/&gt;&lt;br/&gt;My example was that if TxB, size 100vB with feerate 1000 sat/vbyte, has an&lt;br/&gt;100kvB ancestor paying 1 sat/vbyte. The effective package rate for those&lt;br/&gt;two transactions will be (100*1,000 &#43; 100,000*1)/(100,000 &#43; 100) = ~2&lt;br/&gt;sat/vybte&lt;br/&gt;&lt;br/&gt;This means TxB will not be picked up if the prevailing rate is &amp;gt; 2&lt;br/&gt;sat/byte.  Let&amp;#39;s say it&amp;#39;s 4 sat/vbyte prevailing rate. To replace it with&lt;br/&gt;TxB&amp;#39;, one still has to pay to evict TxB, at roughly 1000/4=250 times the&lt;br/&gt;normal feerate.&lt;br/&gt;&lt;br/&gt;Sorry if I got the math wrong here, but at least trying to get the idea&lt;br/&gt;across.&lt;br/&gt;&lt;br/&gt;On Wed, Aug 10, 2022 at 12:20 PM Eugene Siegel &amp;lt;elzeigel at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Looking it up, rule 3 is &amp;#34;The replacement transaction pays an absolute fee&lt;br/&gt;&amp;gt; of at least the sum paid by the original transactions.&amp;#34; but here the&lt;br/&gt;&amp;gt; ancestors aren&amp;#39;t getting replaced so I don&amp;#39;t think the replacement has to&lt;br/&gt;&amp;gt; pay for them? Or maybe your comment was just generally about how it can&lt;br/&gt;&amp;gt; matter in certain cases&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Wed, Aug 10, 2022 at 12:06 PM Greg Sanders &amp;lt;gsanders87 at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; I think the ancestor bulking variant of pinning only matters if you are&lt;br/&gt;&amp;gt;&amp;gt; trying to add a new descendant and can&amp;#39;t due to the ancestor/descendant&lt;br/&gt;&amp;gt;&amp;gt; limits.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Not quite. It also matters if you want to RBF that transaction, since low&lt;br/&gt;&amp;gt;&amp;gt; feerate ancestor junk puts the transaction at the bottom of the mempool, so&lt;br/&gt;&amp;gt;&amp;gt; to speak, even if it has a high feerate itself. You are forced to pay &amp;#34;full&lt;br/&gt;&amp;gt;&amp;gt; freight&amp;#34; to replace it via bip125 rule#3 even though it&amp;#39;s not going to be&lt;br/&gt;&amp;gt;&amp;gt; mined.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; (I don&amp;#39;t know if that applies here, just noting the wrinkle)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Wed, Aug 10, 2022 at 11:37 AM Eugene Siegel &amp;lt;elzeigel at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I think the ancestor bulking variant of pinning only matters if you are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; trying to add a new descendant and can&amp;#39;t due to the ancestor/descendant&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; limits. In this  example, since all of the outputs are locked with `1&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; OP_CSV`, you can&amp;#39;t add a descendant to the splice tx. The ancestor bulking&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; also shouldn&amp;#39;t matter for RBF since you wouldn&amp;#39;t be replacing any of the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ancestors, only the splice tx. I think it might matter if the new funding&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; output isn&amp;#39;t encumbered.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The new funding output can&amp;#39;t have `1 OP_CSV` unless we also change the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; commit tx format, and I&amp;#39;m not sure if it would work. The commit tx has the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; disable bit set in nSequence so it isn&amp;#39;t compatible with the sequence lock.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Enabling the bit might be tricky since then the commit tx may have a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; time-based or block-based locktime based on the lower bits of the obscured&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; commitment number, and it must be block-based (and non-zero) for the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; sequence lock to work. That means if it&amp;#39;s not encumbered, pinning exists&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; since an attacker can make a junk tree using the anchor output. It is&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; replaceable using RBF since you have your own commit tx (with anchor) to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; broadcast.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Eugene&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220810/7ae290f0/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220810/7ae290f0/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:06:40&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspa7y63mkqf6u5d69mlffx8l8g3cwd2dzhyck5hc6szsegpgkddhczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj7ggqc8</id>
    
      <title type="html">📅 Original date posted:2022-08-10 📝 Original message: &amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspa7y63mkqf6u5d69mlffx8l8g3cwd2dzhyck5hc6szsegpgkddhczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj7ggqc8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd6lgfqswkkr5g6lx38jw3cv585ksauqukhdq9yvrmq4q9glqzpkgrugwvw&#39;&gt;nevent1q…gwvw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-08-10&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; I think the ancestor bulking variant of pinning only matters if you are&lt;br/&gt;trying to add a new descendant and can&amp;#39;t due to the ancestor/descendant&lt;br/&gt;limits.&lt;br/&gt;&lt;br/&gt;Not quite. It also matters if you want to RBF that transaction, since low&lt;br/&gt;feerate ancestor junk puts the transaction at the bottom of the mempool, so&lt;br/&gt;to speak, even if it has a high feerate itself. You are forced to pay &amp;#34;full&lt;br/&gt;freight&amp;#34; to replace it via bip125 rule#3 even though it&amp;#39;s not going to be&lt;br/&gt;mined.&lt;br/&gt;&lt;br/&gt;(I don&amp;#39;t know if that applies here, just noting the wrinkle)&lt;br/&gt;&lt;br/&gt;On Wed, Aug 10, 2022 at 11:37 AM Eugene Siegel &amp;lt;elzeigel at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think the ancestor bulking variant of pinning only matters if you are&lt;br/&gt;&amp;gt; trying to add a new descendant and can&amp;#39;t due to the ancestor/descendant&lt;br/&gt;&amp;gt; limits. In this  example, since all of the outputs are locked with `1&lt;br/&gt;&amp;gt; OP_CSV`, you can&amp;#39;t add a descendant to the splice tx. The ancestor bulking&lt;br/&gt;&amp;gt; also shouldn&amp;#39;t matter for RBF since you wouldn&amp;#39;t be replacing any of the&lt;br/&gt;&amp;gt; ancestors, only the splice tx. I think it might matter if the new funding&lt;br/&gt;&amp;gt; output isn&amp;#39;t encumbered.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The new funding output can&amp;#39;t have `1 OP_CSV` unless we also change the&lt;br/&gt;&amp;gt; commit tx format, and I&amp;#39;m not sure if it would work. The commit tx has the&lt;br/&gt;&amp;gt; disable bit set in nSequence so it isn&amp;#39;t compatible with the sequence lock.&lt;br/&gt;&amp;gt; Enabling the bit might be tricky since then the commit tx may have a&lt;br/&gt;&amp;gt; time-based or block-based locktime based on the lower bits of the obscured&lt;br/&gt;&amp;gt; commitment number, and it must be block-based (and non-zero) for the&lt;br/&gt;&amp;gt; sequence lock to work. That means if it&amp;#39;s not encumbered, pinning exists&lt;br/&gt;&amp;gt; since an attacker can make a junk tree using the anchor output. It is&lt;br/&gt;&amp;gt; replaceable using RBF since you have your own commit tx (with anchor) to&lt;br/&gt;&amp;gt; broadcast.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Eugene&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220810/cedb54f6/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220810/cedb54f6/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:06:40&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvf46wqhxclfkv9eh56eyctsazaft3rrpn0yh8pl5qhq5dk9nzypszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj0e33qv</id>
    
      <title type="html">📅 Original date posted:2022-04-21 📝 Original message: I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvf46wqhxclfkv9eh56eyctsazaft3rrpn0yh8pl5qhq5dk9nzypszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj0e33qv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswnz0dx7pkeqq8rx83ymja0y2rr8kzqu6w2n3t3ksmq6xape6s9lc2a70ng&#39;&gt;nevent1q…70ng&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-04-21&lt;br/&gt;📝 Original message:&lt;br/&gt;I think I mentioned this out of band to Alex, but (b) is what Erlay&amp;#39;s&lt;br/&gt;proposal is for Bitcoin gossip, so it&amp;#39;s worth studying up.&lt;br/&gt;&lt;br/&gt;On Thu, Apr 21, 2022 at 9:18 AM Matt Corallo &amp;lt;lf-lists at mattcorallo.com&amp;gt;&lt;br/&gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Instead of trying to make sure everyone’s gossip acceptance matches&lt;br/&gt;&amp;gt; exactly, which as you point it seems like a quagmire, why not (a) do a sync&lt;br/&gt;&amp;gt; on startup and (b) do syncs of the *new* things. This way you aren’t stuck&lt;br/&gt;&amp;gt; staring at the same channels every time you do a sync. Sure, if you’re&lt;br/&gt;&amp;gt; rejecting a large % of channel updates in total you’re gonna end up hitting&lt;br/&gt;&amp;gt; degenerate cases, but we can consider tuning the sync frequency if that&lt;br/&gt;&amp;gt; becomes an issue.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Like eclair, we don’t bother to rate limit and don’t see any issues with&lt;br/&gt;&amp;gt; it, though we will skip relaying outbound updates if we’re saturating&lt;br/&gt;&amp;gt; outbound connections.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Apr 14, 2022, at 17:06, Alex Myers &amp;lt;alex at endothermic.dev&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ﻿&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hello lightning developers,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I’ve been investigating set reconciliation as a means to reduce bandwidth&lt;br/&gt;&amp;gt; and redundancy of gossip message propagation. This builds on some earlier work&lt;br/&gt;&amp;gt; from Rusty using the minisketch library [1]. The idea is that each node&lt;br/&gt;&amp;gt; will build a sketch representing it’s own gossip set. Alice’s node will&lt;br/&gt;&amp;gt; encode and transmit this sketch to Bob’s node, where it will be merged with&lt;br/&gt;&amp;gt; his own sketch, and the differences produced. These differences should&lt;br/&gt;&amp;gt; ideally be exactly the latest missing gossip of both nodes. Due to size&lt;br/&gt;&amp;gt; constraints, the set differences will necessarily be encoded, but Bob’s&lt;br/&gt;&amp;gt; node will be able to identify which gossip Alice is missing, and may then&lt;br/&gt;&amp;gt; transmit exactly those messages.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This process is relatively straightforward, with the caveat that the sets&lt;br/&gt;&amp;gt; must otherwise match very closely (each sketch has a maximum capacity for&lt;br/&gt;&amp;gt; differences.) The difficulty here is that each node and lightning&lt;br/&gt;&amp;gt; implementation may have its own rules for gossip acceptance and&lt;br/&gt;&amp;gt; propagation. Depending on their gossip partners, not all gossip may&lt;br/&gt;&amp;gt; propagate to the entire network.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Core-lightning implements rate limiting for incoming channel updates and&lt;br/&gt;&amp;gt; node announcements. The default rate limit is 1 per day, with a burst of&lt;br/&gt;&amp;gt; 4. I analyzed my node’s gossip over a 14 day period, and found that, of&lt;br/&gt;&amp;gt; all publicly broadcasting half-channels, 18% of them fell afoul of our&lt;br/&gt;&amp;gt; spam-limiting rules at least once. [2]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Picking several offending channel ids, and digging further, the majority&lt;br/&gt;&amp;gt; of these appear to be flapping due to Tor or otherwise intermittent&lt;br/&gt;&amp;gt; connections. Well connected nodes may be more susceptible to this due to more&lt;br/&gt;&amp;gt; frequent routing attempts, and failures resulting in a returned channel&lt;br/&gt;&amp;gt; update (which otherwise might not have been broadcast.) A slight&lt;br/&gt;&amp;gt; relaxation of the rate limit resolves the majority of these cases.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A smaller subset of channels broadcast frequent channel updates with minor&lt;br/&gt;&amp;gt; adjustments to htlc_maximum_msat and fee_proportional_millionths&lt;br/&gt;&amp;gt; parameters. These nodes appear to be power users, with many channels and&lt;br/&gt;&amp;gt; large balances. I assume this is automated channel management at work.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Core-Lightning has updated rate-limiting in the upcoming release to&lt;br/&gt;&amp;gt; achieve a higher acceptance of incoming gossip, however, it seems that a&lt;br/&gt;&amp;gt; broader discussion of rate limits may now be worthwhile. A few immediate&lt;br/&gt;&amp;gt; ideas:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - A common listing of current default rate limits across lightning&lt;br/&gt;&amp;gt; network implementations.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - Internal checks of RPC input to limit or warn of network propagation&lt;br/&gt;&amp;gt; issues if certain rates are exceeded.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - A commonly adopted rate-limit standard.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; My aim is a set reconciliation gossip type, which will use a common,&lt;br/&gt;&amp;gt; simple heuristic to accept or reject a gossip message. (Think one channel&lt;br/&gt;&amp;gt; update per block, or perhaps one per block_height &amp;lt;&amp;lt; 5.) See my github&lt;br/&gt;&amp;gt; for my current draft. [3] This solution allows tighter consensus, yet suffers&lt;br/&gt;&amp;gt; from the same problem as original anti-spam measures – it remains&lt;br/&gt;&amp;gt; somewhat arbitrary. I would like to start a conversation regarding gossip&lt;br/&gt;&amp;gt; propagation, channel_update and node_announcement usage, and perhaps even&lt;br/&gt;&amp;gt; bandwidth goals for syncing gossip in the future (how about a million&lt;br/&gt;&amp;gt; channels?) This would aid in the development of gossip set&lt;br/&gt;&amp;gt; reconciliation, but could also benefit current node connection and&lt;br/&gt;&amp;gt; routing reliability more generally.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alex&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/sipa/minisketch&#34;&gt;https://github.com/sipa/minisketch&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [2]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/endothermicdev/lnspammityspam/blob/main/sampleoutput.txt&#34;&gt;https://github.com/endothermicdev/lnspammityspam/blob/main/sampleoutput.txt&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [3]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/endothermicdev/lightning-rfc/blob/gossip-minisketch/07-routing-gossip.md#set-reconciliation&#34;&gt;https://github.com/endothermicdev/lightning-rfc/blob/gossip-minisketch/07-routing-gossip.md#set-reconciliation&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220421/ba5e3e5e/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220421/ba5e3e5e/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:05:53&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswskez7v6ncgzxucz06m0dwn2lsrtqlnrstj3gr99azl858d7su7qzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjt763k6</id>
    
      <title type="html">📅 Original date posted:2018-05-08 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswskez7v6ncgzxucz06m0dwn2lsrtqlnrstj3gr99azl858d7su7qzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjt763k6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqst7a2l6jpeahy0upyhmpzq7a5cvcaql33vhfrme42937c9kcmf2xggnse0g&#39;&gt;nevent1q…se0g&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-05-08&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt;From what I understand talking to folks, the linear properties of these&lt;br/&gt;signature tricks are maintained under a number of post-quantum schemes.&lt;br/&gt;&lt;br/&gt;On Tue, May 8, 2018 at 8:44 AM, Benjamin Mord &amp;lt;ben at mord.family&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If I&amp;#39;m not mistaken, the scriptless scripts concept (as currently&lt;br/&gt;&amp;gt; formulated) falls to Schor&amp;#39;s algorithm, and at present there is no&lt;br/&gt;&amp;gt; alternative implementation of the concept to fall back on. Correct? Lest we&lt;br/&gt;&amp;gt; build a house of cards, I&amp;#39;d strongly urge everyone to not depend on&lt;br/&gt;&amp;gt; functional concepts whose underlying cryptographic primitives cannot be&lt;br/&gt;&amp;gt; swapped in an emergency.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Sure, we use ecdsa for example (which is also vulnerable to Schor&amp;#39;s&lt;br/&gt;&amp;gt; algorithm), but in contrast to scriptless scripts we have a variety of&lt;br/&gt;&amp;gt; backup primitives at our disposal that fulfill the same functional&lt;br/&gt;&amp;gt; objective.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If scriptless scripts are found possible under lattice-based cryptography&lt;br/&gt;&amp;gt; for example, that would be something I suppose. The functional concept of&lt;br/&gt;&amp;gt; scriptless scripts is indeed very awesome - we just need to add some&lt;br/&gt;&amp;gt; cryptographic conservatism before we build on it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20180508/5b5bfa6b/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20180508/5b5bfa6b/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T14:50:40&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdfemzqhqjr3wrrdnmzexd8zp9f0r7dc75r9dlrcxr2c3g30d7pdczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjjyd7z7</id>
    
      <title type="html">📅 Original date posted:2015-11-19 📝 Original message: The ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdfemzqhqjr3wrrdnmzexd8zp9f0r7dc75r9dlrcxr2c3g30d7pdczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjjyd7z7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp3mcnfmx4ejqwva9mkfh9r80wx56hhdd0209fa6nuh75rux5grvgt040pd&#39;&gt;nevent1q…40pd&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-11-19&lt;br/&gt;📝 Original message:&lt;br/&gt;The hardfork variant is quite simple, if I understood it correctly. You&lt;br/&gt;just stick the signatures in another parallel merkle tree. So if you don&amp;#39;t&lt;br/&gt;want to validate signatures, just don&amp;#39;t download them, and validate&lt;br/&gt;everything else. TXIDs don&amp;#39;t use the signature at all. Nothing to malleate,&lt;br/&gt;AFAIK. Not sure what the softfork plan is, but it will be a talk at Scaling&lt;br/&gt;Bitcoin HK.&lt;br/&gt;&lt;br/&gt;On Thu, Nov 19, 2015 at 10:28 AM, Glenn Tarbox, PhD &amp;lt;glenn at tarbox.org&amp;gt;&lt;br/&gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Thu, Nov 19, 2015 at 4:33 AM, sickpig at gmail.com &amp;lt;sickpig at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi Pierre&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; you could start here&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/ElementsProject/elementsproject.github.io#segregated-witness&#34;&gt;https://github.com/ElementsProject/elementsproject.github.io#segregated-witness&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://people.xiph.org/~greg/blockstream.gmaxwell.elements.talk.060815.pdf&#34;&gt;https://people.xiph.org/~greg/blockstream.gmaxwell.elements.talk.060815.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/ElementsProject/elements&#34;&gt;https://github.com/ElementsProject/elements&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There was a brief blip on Reddit:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://www.reddit.com/r/Bitcoin/comments/3ngtx5/could_the_segregated_witness_part_of_the/cwnthlh&#34;&gt;https://www.reddit.com/r/Bitcoin/comments/3ngtx5/could_the_segregated_witness_part_of_the/cwnthlh&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Its weird how little information there is on Segregated Witness.  I&amp;#39;m&lt;br/&gt;&amp;gt; guessing its a simple concept and those working on it (sipa / gmaxwell)&lt;br/&gt;&amp;gt; haven&amp;#39;t felt the need to write it up.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That it &amp;#34;apparently&amp;#34; can be done with a soft fork similar to P2SH is good&lt;br/&gt;&amp;gt; news... I guess...&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; Glenn H. Tarbox, PhD&lt;br/&gt;&amp;gt;  =]|[=&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20151119/630dbc4e/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20151119/630dbc4e/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T14:45:08&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2888nmprcpewm2qmmw2junndxh9cq3uhnq4udqjdnwyhrkv9aepgzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj9jvllh</id>
    
      <title type="html">📅 Original date posted:2023-03-14 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2888nmprcpewm2qmmw2junndxh9cq3uhnq4udqjdnwyhrkv9aepgzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj9jvllh" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxu74rdm7qunh0q973fa0kln3lay80fdh2u4mm9fven70l6wgavpch30plc&#39;&gt;nevent1q…0plc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-03-14&lt;br/&gt;🗒️ Summary of this message: Discussion on privacy and efficiency in Bitcoin vaults, including rotating trigger authorization keys and batching multiple inputs with different internal keys.&lt;br/&gt;📝 Original message:Hi Brandon,&lt;br/&gt;&lt;br/&gt;Thank you for chiming in, causing me to think a bit more deeply on the&lt;br/&gt;privacy issues&lt;br/&gt;and what seems possible.&lt;br/&gt;&lt;br/&gt;&amp;gt; I like that in James&amp;#39; current PR proposal we can explicitly batch via&lt;br/&gt;the implied input/output summation rules while avoiding address reuse.&lt;br/&gt;If we can retain some or all of that, I think it would be good for on&lt;br/&gt;chain efficiency and potentially privacy.&lt;br/&gt;&lt;br/&gt;Rotating trigger authorization keys maintains batchability and stops&lt;br/&gt;address reuse.&lt;br/&gt;Remember that anytime you share any path, like recovery path, for batching,&lt;br/&gt;it becomes&lt;br/&gt;obvious at spend-time. Rotating inner pubkeys only doesn&amp;#39;t seem to help&lt;br/&gt;much.&lt;br/&gt;&lt;br/&gt;Coinjoins being the other batching scenario which could benefit perhaps are&lt;br/&gt;quite a heavy&lt;br/&gt;lift. You&amp;#39;d need the recovery policy(every other branch) to be agreed upon,&lt;br/&gt;have everyone unvault&lt;br/&gt;to this new joint vault, then mix, and withdrawal back to the original&lt;br/&gt;vault. If someone is going through&lt;br/&gt;all that effort, I suspect they&amp;#39;ll just use a NUMS to reduce fingerprinting.&lt;br/&gt;&lt;br/&gt;&amp;gt; Many inputs with different internal keys can be combined to satisfy the&lt;br/&gt;total output value for a single output, as long as their scriptpubkeys&lt;br/&gt;with FLU and NUMS internal key are equal This enables avoiding address&lt;br/&gt;reuse within the vault.&lt;br/&gt;&lt;br/&gt;To reiterate, we can just cycle any key in the $trigger branch with OP_FLU,&lt;br/&gt;which accomplishes the same thing.&lt;br/&gt;Or in authorization-less $trigger, add a random number which is dropped.&lt;br/&gt;&lt;br/&gt;&amp;gt; Many inputs with the same scriptpubkey can be combined to satisfy a&lt;br/&gt;single CTV output template. This allows a user to unfsck themselves if&lt;br/&gt;they initiate a withdrawal that cannot be satisfied because they didn&amp;#39;t&lt;br/&gt;send enough sats to satisfy their template.&lt;br/&gt;&lt;br/&gt;I think that would fit the deprecated OP_FORWARD_OUTPUTS, but OP_CTV&lt;br/&gt;commits to total&lt;br/&gt;number of inputs to remove txid malleability. I think the real solution to&lt;br/&gt;this mistake would be to hit&lt;br/&gt;the big red RECOVERY button that you&amp;#39;re relying on for vault security&lt;br/&gt;anyways.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Mon, Mar 13, 2023 at 3:04 PM Brandon Black &amp;lt;freedom at reardencode.com&amp;gt;&lt;br/&gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Gents,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; I don&amp;#39;t think replacing the internal-public-key makes sense -- if it&lt;br/&gt;&amp;gt; &amp;gt; was immediately spendable via the keypath before there&amp;#39;s no reason for&lt;br/&gt;&amp;gt; &amp;gt; it not to be immediately spendable now.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Slavishly following the current proposal was the idea to make sure all&lt;br/&gt;&amp;gt; &amp;gt; functionality was captured; I agree with this change.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think we do need to replace the internal key with a hardcoded NUMS&lt;br/&gt;&amp;gt; point to allow us to batch multiple vault inputs which might have&lt;br/&gt;&amp;gt; different internal keys but the same OP_FLU/OP_VAULT_TRIGGER script to&lt;br/&gt;&amp;gt; the same time&#43;template-restricted output.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I like that in James&amp;#39; current PR proposal we can explicitly batch via&lt;br/&gt;&amp;gt; the implied input/output summation rules while avoiding address reuse.&lt;br/&gt;&amp;gt; If we can retain some or all of that, I think it would be good for on&lt;br/&gt;&amp;gt; chain efficiency and potentially privacy.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; My thoughts on batching:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Many inputs with different internal keys can be combined to satisfy the&lt;br/&gt;&amp;gt; total output value for a single output, as long as their scriptpubkeys&lt;br/&gt;&amp;gt; with FLU and NUMS internal key are equal This enables avoiding address&lt;br/&gt;&amp;gt; reuse within the vault.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Many inputs with the same scriptpubkey can be combined to satisfy a&lt;br/&gt;&amp;gt; single CTV output template. This allows a user to unfsck themselves if&lt;br/&gt;&amp;gt; they initiate a withdrawal that cannot be satisfied because they didn&amp;#39;t&lt;br/&gt;&amp;gt; send enough sats to satisfy their template.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --Brandon&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230314/b2e848e8/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230314/b2e848e8/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:20:08&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgsk40ju2z2qn5j2vccr8kllpdalqxemzuj5ylssmstwwl3kzg34czyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjc63lz0</id>
    
      <title type="html">📅 Original date posted:2023-03-09 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgsk40ju2z2qn5j2vccr8kllpdalqxemzuj5ylssmstwwl3kzg34czyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjc63lz0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0jrgasa3thaqwny3ynfh8egapa93gk0dfkclkyszdcky2tmkce0cz4xn56&#39;&gt;nevent1q…xn56&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-03-09&lt;br/&gt;🗒️ Summary of this message: New opcodes proposed for Bitcoin&amp;#39;s OP_VAULT concept allow rate-limiting of two-step unvaulting and single-step vaulting, reducing theft risk during watchtower outages.&lt;br/&gt;📝 Original message:AJ,&lt;br/&gt;&lt;br/&gt;Interesting stuff! Just a couple thoughts on these proposed opcodes, at&lt;br/&gt;least one we discussed elsewhere:&lt;br/&gt;&lt;br/&gt;1) OP_FORWARD_SELF is a JET of OP_FLU in the revaulting common case. Maybe&lt;br/&gt;obvious but I missed this initially and thought it was useful to be pointed&lt;br/&gt;out.&lt;br/&gt;&lt;br/&gt;2)  Using these extended primitives, you can do rate-limiting of the two&lt;br/&gt;step unvaulting, or just a single step vault by committing to the partial&lt;br/&gt;values. For the single stage case it&amp;#39;s something like:&lt;br/&gt;&lt;br/&gt;$recovery = Same As Before&lt;br/&gt;&lt;br/&gt;$withdrawal = &amp;lt;deposit-delay&amp;gt; OP_CSV OP_DROP &amp;lt;pubkey&amp;gt; OP_CHECKSIG OP_DUP&lt;br/&gt;&amp;lt;V&amp;gt; OP_LESSTHANOREQUAL OP_VERIFY OP_FORWARD_PARTIAL OP_FORWARD_TARGET&lt;br/&gt;OP_FORWARD_SELF&lt;br/&gt;&lt;br/&gt;$withdrawal is spent by:&lt;br/&gt;&lt;br/&gt;&amp;lt;self-idx&amp;gt; &amp;lt;target-idx&amp;gt; &amp;lt;spk&amp;gt; &amp;lt;0&amp;lt;=v&amp;lt;=V&amp;gt; &amp;lt;signature&amp;gt;&lt;br/&gt;&lt;br/&gt;where &amp;#34;V&amp;#34;  is the max allowed withdrawal value, and &amp;#34;deposit-delay&amp;#34; the&lt;br/&gt;required gap in withdrawals&lt;br/&gt;&lt;br/&gt;Due to the OP_LEQ, you are bound to ~21 BTC in value for this operation,&lt;br/&gt;but for larger vaults it&amp;#39;s pretty trivial to add larder fixed denominations&lt;br/&gt;to &amp;#34;peel out&amp;#34; value until you get to your final ~21 BTC.&lt;br/&gt;&lt;br/&gt;This rate-limiting(in either the two-stage or one-stage scheme) can limit&lt;br/&gt;the risk of theft during a watchtower outage to a constant value per utxo&lt;br/&gt;per time period of watchtower failure. As we&amp;#39;ve seen in the past with LN&lt;br/&gt;infrastructure, software risks are often correlated, so it&amp;#39;s a good idea to&lt;br/&gt;build in belt and suspenders where we can or at least have them available&lt;br/&gt;when possible.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Tue, Mar 7, 2023 at 7:45 AM Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Mon, Mar 06, 2023 at 10:25:38AM -0500, James O&amp;#39;Beirne via bitcoin-dev&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; What Greg is proposing above is to in essence TLUV-ify this proposal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; FWIW, the way I&amp;#39;m thinking about this is that the &amp;#34;OP_VAULT&amp;#34; concept is&lt;br/&gt;&amp;gt; introducing two things:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  a) the concept of &amp;#34;forwarding&amp;#34; the input amount to specified&lt;br/&gt;&amp;gt;     outputs in a way that elegantly allows merging/splitting&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  b) various restrictions on the form of the output scripts&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; These concepts go together well, because restricting an output script is&lt;br/&gt;&amp;gt; only an interesting thing to do if you&amp;#39;re moving value from this input&lt;br/&gt;&amp;gt; into it. And then it&amp;#39;s just a matter of figuring out a nice way to pick&lt;br/&gt;&amp;gt; opcodes that combine those two concepts in interesting ways.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is different from TLUV, in that TLUV only did part (b), and&lt;br/&gt;&amp;gt; assumed you&amp;#39;d do part (a) manually somehow, eg via &amp;#34;OP_IN_OUT_AMOUNT&amp;#34;&lt;br/&gt;&amp;gt; and arithmetic opcodes. The advantage of this new approach over that&lt;br/&gt;&amp;gt; one is that it makes it really easy to get the logic right (I often&lt;br/&gt;&amp;gt; forgot to include the IN_OUT_AMOUNT checks at all, for instance), and&lt;br/&gt;&amp;gt; also makes spending multiple inputs to a single output really simple,&lt;br/&gt;&amp;gt; something that would otherwise require kind-of gnarly logic.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think there are perhaps four opcodes that are interesting in this class:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    idx sPK OP_FORWARD_TARGET&lt;br/&gt;&amp;gt;      -- sends the value to a particular output (given by idx), and&lt;br/&gt;&amp;gt;         requires that output have a particular scriptPubKey (given&lt;br/&gt;&amp;gt;         by sPK).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    idx [...] n script OP_FORWARD_LEAF_UPDATE&lt;br/&gt;&amp;gt;      -- sends the value to a particular output (given by idx), and&lt;br/&gt;&amp;gt;         requires that output to have almost the same scriptPubKey as this&lt;br/&gt;&amp;gt;         input, _except_ that the current leaf is replaced by &amp;#34;script&amp;#34;,&lt;br/&gt;&amp;gt;         with that script prefixed by &amp;#34;n&amp;#34; pushes (of values given by [...])&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    idx OP_FORWARD_SELF&lt;br/&gt;&amp;gt;      -- sends the value to a particular output (given by idx), and&lt;br/&gt;&amp;gt;         requires that output to have the same scriptPubKey as this input&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    amt OP_FORWARD_PARTIAL&lt;br/&gt;&amp;gt;      -- modifies the next OP_FORWARD_* opcode to only affect &amp;#34;amt&amp;#34;,&lt;br/&gt;&amp;gt;         rather than the entire balance. opcodes after that affect the&lt;br/&gt;&amp;gt;         remaining balance, after &amp;#34;amt&amp;#34; has been subtracted. if &amp;#34;amt&amp;#34; is&lt;br/&gt;&amp;gt;         0, the next OP_FORWARD_* becomes a no-op.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Then each time you see OP_FORWARD_TARGET or OP_FORWARD_LEAF_UPDATE, you&lt;br/&gt;&amp;gt; accumulate the value that&amp;#39;s expected to be forwarded to the output by&lt;br/&gt;&amp;gt; each input, and verify that the amount for that output is greater-or-equal&lt;br/&gt;&amp;gt; to the accumulated value.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ## Required opcodes&lt;br/&gt;&amp;gt; &amp;gt; - OP_VAULT: spent to trigger withdrawal&lt;br/&gt;&amp;gt; &amp;gt; - OP_VAULT_RECOVER: spent to recover&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Naming here is OP_VAULT ~= OP_FORWARD_LEAF_UPDATE; OP_VAULT_RECOVER ~=&lt;br/&gt;&amp;gt; OP_FORWARD_TARGET.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; For each vault, vaulted coins are spent to an output with the taproot&lt;br/&gt;&amp;gt; &amp;gt; structure&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;   taproot(internal_key, {$recovery_leaf, $trigger_leaf, ...})&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; where&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;   $trigger_leaf =&lt;br/&gt;&amp;gt; &amp;gt;     &amp;lt;trigger&amp;gt; &amp;lt;auth&amp;gt; &amp;lt;script&amp;gt; &amp;lt;spend-delay&amp;gt; OP_VAULT&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With the opcodes above, the trigger_leaf (for spending some of the&lt;br/&gt;&amp;gt; vaulted funds via your hot wallet) script might look like:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    OP_FORWARD_PARTIAL OP_FORWARD_SELF&lt;br/&gt;&amp;gt;    1 &amp;#34;288 OP_CSV OP_DROP OP_CTV&amp;#34; OP_FORWARD_LEAF_UPDATE&lt;br/&gt;&amp;gt;    key CHECKSIG&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So if you have 2.0 BTC in a vault utxo, you might spend 0.4 BTC by&lt;br/&gt;&amp;gt; supplying the witness data:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   160000000  (1.6BTC in sats)&lt;br/&gt;&amp;gt;   0 (output 0 puts 1.6BTC goes back into the vault)&lt;br/&gt;&amp;gt;   &amp;lt;ctvhash&amp;gt; (the outputs where you want the remaining 0.4 BTC to end up)&lt;br/&gt;&amp;gt;   1 (the output idx that will be spend via the CTV path once the CSV&lt;br/&gt;&amp;gt;      delay is done)&lt;br/&gt;&amp;gt;   &amp;lt;sig&amp;gt; (a signature of this transaction via the hot wallet &amp;#34;key&amp;#34;)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That is, the script becomes:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   160000000 FORWARD_PARTIAL&lt;br/&gt;&amp;gt;   0 FORWARD_SELF&lt;br/&gt;&amp;gt;   1 &amp;lt;ctvhash&amp;gt; 1 &amp;#34;288 CSV DROP CTV&amp;#34; FORWARD_LEAF_UPDATE&lt;br/&gt;&amp;gt;   sig key CHECKSIG&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Output 1 would then have a tapscript of &amp;#34;&amp;lt;ctvhash&amp;gt; 288 OP_CSV OP_DROP&lt;br/&gt;&amp;gt; OP_CTV&amp;#34;, satisfied with an empty witness stack (along with the recovery&lt;br/&gt;&amp;gt; path, etc).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Output 0 is just 1.6BTC back in your vault, and immediately available&lt;br/&gt;&amp;gt; for use.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Other inputs/outputs (for fees etc) would still be committed to by &amp;lt;sig&amp;gt;,&lt;br/&gt;&amp;gt; so nothing here is malleable. The script here is about 45 bytes (compared&lt;br/&gt;&amp;gt; to 34 for a simple &amp;#34;key CHECKSIG&amp;#34;) and the witness data is about 105 bytes&lt;br/&gt;&amp;gt; (compared to 65 bytes for just a signature), which seems pretty nice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;   ... =&lt;br/&gt;&amp;gt; &amp;gt;     other (optional) leaves in the taptree&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This would allow you to have multiple hot wallets (if any of them are&lt;br/&gt;&amp;gt; compromised you can still use the recovery path to avoid loss of funds;&lt;br/&gt;&amp;gt; but if some hot wallet becomes temporarily *inaccessible* you can still&lt;br/&gt;&amp;gt; easily spend the funds via one of the alternative hot wallets), or,&lt;br/&gt;&amp;gt; if you have multiple watchtowers validating your spends and recovering&lt;br/&gt;&amp;gt; funds to your cold wallet on a violation, you could have multiple recovery&lt;br/&gt;&amp;gt; paths to provide some auditability for who triggered the recovery.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Happens via script-path spend to $expr_withdraw, i.e. a timelocked&lt;br/&gt;&amp;gt; &amp;gt; OP_CTV.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note that if you calculated the OP_CTV incorrectly (eg, you don&amp;#39;t set a&lt;br/&gt;&amp;gt; correct nSequence timelock, so that any tx that passes OP_CTV won&amp;#39;t pass&lt;br/&gt;&amp;gt; the OP_CSV check, and vice-versa) then this spend path becomes invalid,&lt;br/&gt;&amp;gt; and the funds can only be reclaimed via some other path (key path spend,&lt;br/&gt;&amp;gt; recovery tapscript, potentially an alternative hotwallet script path).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; OP_FORWARD_LEAF_UPDATE is equivalent to a very specific form of TLUV,&lt;br/&gt;&amp;gt; namely &amp;#34;FALSE &amp;lt;h&amp;gt; 2 TLUV&amp;#34;, where &amp;#34;&amp;lt;h&amp;gt;&amp;#34; is calculated by building the&lt;br/&gt;&amp;gt; script, prefixing the pushes, then doing the Hash_TapLeaf calculation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Not being able to tweak the internal public key (&amp;#34;FALSE&amp;#34; rather than&lt;br/&gt;&amp;gt; &amp;#34;&amp;lt;x&amp;gt;&amp;#34;) means this can&amp;#39;t be used to build a coinpool with unilateral&lt;br/&gt;&amp;gt; exit -- you can&amp;#39;t remove your key from the key path, which screws over&lt;br/&gt;&amp;gt; everyone who&amp;#39;s still in the coinpool.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On the other hand, not tweaking the internal public key avoids introducing&lt;br/&gt;&amp;gt; all the x-only pubkey complications, and keeps it relatively simple,&lt;br/&gt;&amp;gt; which is nice, and keeping things simple and targeted now means there&amp;#39;s&lt;br/&gt;&amp;gt; still plenty of OP_SUCCESS opcodes available later for something more&lt;br/&gt;&amp;gt; general, if that turns out to be desirable.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; aj&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230309/7c5a5e29/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230309/7c5a5e29/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:20:00&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrrp7n4v5hn7nhrcwe2va6zt4wq0n3k3e3sdvnjfj0gqeujxmv5hgzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj6m6tg7</id>
    
      <title type="html">📅 Original date posted:2023-03-06 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrrp7n4v5hn7nhrcwe2va6zt4wq0n3k3e3sdvnjfj0gqeujxmv5hgzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj6m6tg7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspdcr2d4ywa0l2n7ux2em43xlurfq303wlty5nry9nya9lu4ldg4g97qqrn&#39;&gt;nevent1q…qqrn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-03-06&lt;br/&gt;🗒️ Summary of this message: Greg proposes to TLUV-ify the proposal for withdrawal authorization, using OP_FORWARD_LEAF_UPDATE to avoid recursive script execution and ensure secure spending.&lt;br/&gt;📝 Original message:Hi James,&lt;br/&gt;&lt;br/&gt;I think everything except the hinted &amp;#34;withdrawal authorization&amp;#34; is spot on.&lt;br/&gt;&lt;br/&gt;For withdrawal authorization, I think we&amp;#39;ll have to go deeper into the TLUV&lt;br/&gt;direction&lt;br/&gt;as AJ suggested for at least a couple reasons:&lt;br/&gt;&lt;br/&gt;1) You need the withdrawal authorization committed at deposit time&lt;br/&gt;2) You need to make sure cheeky opcodes cannot be prepended to the script&lt;br/&gt;at spend time&lt;br/&gt;&lt;br/&gt;OP_FORWARD_LEAF_UPDATE(OP_FLU) seems to fit the bill, at the cost of maybe&lt;br/&gt;adding another opcode for &amp;#34;refunds&amp;#34; as he notes.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Mon, Mar 6, 2023 at 10:25 AM James O&amp;#39;Beirne &amp;lt;james.obeirne at gmail.com&amp;gt;&lt;br/&gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; I&amp;#39;m glad to see that Greg and AJ are forming a habit of hammering&lt;br/&gt;&amp;gt; this proposal into shape. Nice work fellas.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To summarize:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; What Greg is proposing above is to in essence TLUV-ify this proposal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I.e. instead of relying on hashed commitments and recursive script&lt;br/&gt;&amp;gt; execution (e.g. &amp;lt;trigger-sPK-hash&amp;gt; &#43; later presentation of preimage&lt;br/&gt;&amp;gt; script for execution), OP_VAULT would instead move through its&lt;br/&gt;&amp;gt; withdrawal process by swapping out tapleaf contents according to&lt;br/&gt;&amp;gt; specialized rules. If this is opaque (as it was to me), don&amp;#39;t fret -&lt;br/&gt;&amp;gt; I&amp;#39;ll describe it below in the &amp;#34;mechanics&amp;#34; section.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The benefits of this TLUVification are&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - we can avoid any nested/recursive script execution. I know the&lt;br/&gt;&amp;gt;   recursive stuff rankles some greybeards even in spite of it being&lt;br/&gt;&amp;gt;   bounded to a single call. I&amp;#39;m not sure I share the concern but&lt;br/&gt;&amp;gt;   maintaining the status quo seems good.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - the spec is easier to reason about, more or less. The opcodes&lt;br/&gt;&amp;gt;   introduced don&amp;#39;t have variadic witness requirements, and each opcode&lt;br/&gt;&amp;gt;   is only consumed in a single way.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - there&amp;#39;s less general indirection. Instead of saying &amp;#34;okay, here&amp;#39;s the&lt;br/&gt;&amp;gt;   hash of the script I&amp;#39;m going to use to authorize trigger&lt;br/&gt;&amp;gt;   transactions,&amp;#34; we&amp;#39;re just outright including the trigger auth script&lt;br/&gt;&amp;gt;   in the tapleaf at the birth of the vault as regular &amp;#39;ol script that is&lt;br/&gt;&amp;gt;   evaluated before execution of the OP_VAULT instruction.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   Similarly, instead of relying on an implicit rule that an OP_VAULT can&lt;br/&gt;&amp;gt;   be claimed by a recovery flow, we&amp;#39;re relying on a specific tapleaf that&lt;br/&gt;&amp;gt;   facilitates that recovery with OP_VAULT_RECOVER, described below.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Basically, OP_VAULT would just be implemented in a way that feels&lt;br/&gt;&amp;gt; more native to Taproot primitives.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Greg also introduces different opcodes to facilitate consistent&lt;br/&gt;&amp;gt; witness structure, rather than the variable ones we have now&lt;br/&gt;&amp;gt; since OP_VAULT and OP_UNVAULT can each be spent in two different&lt;br/&gt;&amp;gt; contexts. I&amp;#39;ve changed those a little here; instead of the three general&lt;br/&gt;&amp;gt; ones Greg gave, we whittled it down to two: OP_VAULT and&lt;br/&gt;&amp;gt; OP_VAULT_RECOVER.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So I think that, barring significant implementation complexity - which&lt;br/&gt;&amp;gt; I&amp;#39;ll find out about soon and don&amp;#39;t expect - this is a good change to the&lt;br/&gt;&amp;gt; proposal. As Greg noted, it doesn&amp;#39;t really change anything about the&lt;br/&gt;&amp;gt; usage or expressiveness... other than the fact that, as a bonus, it&lt;br/&gt;&amp;gt; might allow an optional withdrawal authorization script (i.e. trigger&lt;br/&gt;&amp;gt; output =&amp;gt; final target), which could be useful if e.g. some kind of&lt;br/&gt;&amp;gt; size-limiting opcode (e.g. OP_TX_MAXSIZE or something) came around in&lt;br/&gt;&amp;gt; the future as a kind of pinning fix.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If that last bit lost you, don&amp;#39;t worry - that is speculative, but the&lt;br/&gt;&amp;gt; point is that this rework composes well with other stuff.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # CTV use&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Another thing that has dawned on us is that we might as well just reuse&lt;br/&gt;&amp;gt; OP_CHECKTEMPLATEVERIFY for withdrawal target spends. Ben Carmen and&lt;br/&gt;&amp;gt; others realized early on that you can synthesize CTV-like behavior by&lt;br/&gt;&amp;gt; spending to a 0-delay OP_UNVAULT output, so something CTVish has always&lt;br/&gt;&amp;gt; implicitly been a part of the proposal. But CTV is better studied and&lt;br/&gt;&amp;gt; basically as simple as the OP_UNVAULT spend semantics, so the thought is&lt;br/&gt;&amp;gt; that we might as well reuse all the existing work (and scrutiny) from&lt;br/&gt;&amp;gt; CTV.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As a concrete example, an issue with the existing proposal is that the&lt;br/&gt;&amp;gt; existing CTVish OP_UNVAULT behavior has txid malleability, since it&lt;br/&gt;&amp;gt; doesn&amp;#39;t commit to nVersion or nLockTime or the input sequences. Using&lt;br/&gt;&amp;gt; CTV solves this issue. Otherwise we&amp;#39;d basically reinvent it - &amp;#34;something&lt;br/&gt;&amp;gt; something convergent evolution.&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think this is a satisfying development, because there&amp;#39;s clearly demand&lt;br/&gt;&amp;gt; for CTV use in other contexts (DLC efficiency, e.g.), and if it&amp;#39;s&lt;br/&gt;&amp;gt; required behavior for practical vaults, I think pulling in the existing&lt;br/&gt;&amp;gt; BIP-119 that&amp;#39;s been worked over for years reduces the conceptual&lt;br/&gt;&amp;gt; surface area added by OP_VAULT.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # New mechanics of the proposal&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So here I&amp;#39;m going to describe my rendering of Greg and AJ&amp;#39;s suggestions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Required opcodes&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - OP_VAULT: spent to trigger withdrawal&lt;br/&gt;&amp;gt; - OP_VAULT_RECOVER: spent to recover&lt;br/&gt;&amp;gt; - OP_CHECKTEMPLATEVERIFY: spent into final withdrawal target&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Creating an initial deposit&lt;br/&gt;&amp;gt; ---------------------------&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For each vault, vaulted coins are spent to an output with the taproot&lt;br/&gt;&amp;gt; structure&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   taproot(internal_key, {$recovery_leaf, $trigger_leaf, ...})&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; where&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   internal_key =&lt;br/&gt;&amp;gt;     unchanged from original proposal (some very safe recovery key)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   $recovery_leaf =&lt;br/&gt;&amp;gt;     [&amp;lt;opt.&amp;gt; &amp;lt;recovery&amp;gt; &amp;lt;auth&amp;gt;] &amp;lt;recovery sPK hash&amp;gt; OP_VAULT_RECOVER&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   $trigger_leaf =&lt;br/&gt;&amp;gt;     &amp;lt;trigger&amp;gt; &amp;lt;auth&amp;gt; &amp;lt;script&amp;gt; &amp;lt;spend-delay&amp;gt; OP_VAULT&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   ... =&lt;br/&gt;&amp;gt;     other (optional) leaves in the taptree&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Triggering a withdrawal request&lt;br/&gt;&amp;gt; -------------------------------&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To trigger the start of the withdrawal process, an output of the above&lt;br/&gt;&amp;gt; form is spent with a witness that contains&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   - Taproot control block pointing to $trigger_leaf.&lt;br/&gt;&amp;gt;   - &amp;lt;trigger-vout-idx&amp;gt;, indicating the trigger output which must abide&lt;br/&gt;&amp;gt;     by the rules given below.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Output structure&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   taproot(internal_key, {$recovery_leaf, $expr_withdraw, ...})&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; where&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   $recovery_leaf is preserved exactly&lt;br/&gt;&amp;gt;   $expr_withdraw =&lt;br/&gt;&amp;gt;     &amp;lt;spend-delay&amp;gt; OP_CSV OP_DROP &amp;lt;target-ctv-hash&amp;gt; OP_CTV&lt;br/&gt;&amp;gt;   ... is preserved exactly&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (Spoiler: note here that the only thing that is changing is&lt;br/&gt;&amp;gt; s/expr_trigger/expr_withdrawl/ from the initial vault ouput.)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Of course $expr_withdraw *could* be prefixed by an optional &amp;#34;withdrawal&lt;br/&gt;&amp;gt; authorization&amp;#34; script, if some sensible use for that is found.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The validation rules are essentially unchanged from the existing&lt;br/&gt;&amp;gt; proposal:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - The total amount of all OP_VAULT inputs with matching $recovery_leaf&lt;br/&gt;&amp;gt;   values must be reflected in output &amp;lt;trigger-vout-idx&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - &amp;lt;trigger-vout-idx&amp;gt; must correspond to an output that is identical to&lt;br/&gt;&amp;gt;   the input taptree but with the spent tapleaf (OP_VAULT) swapped out&lt;br/&gt;&amp;gt;   for the timelocked CTV constructed using &amp;lt;target-ctv-hash&amp;gt; and&lt;br/&gt;&amp;gt;   &amp;lt;spend-delay&amp;gt; as extracted from the spent tapleaf&lt;br/&gt;&amp;gt;   - internal_key is preserved&lt;br/&gt;&amp;gt;   - the whole rest of the taptree is preserved&lt;br/&gt;&amp;gt;   - (this is what ensures the parameters of the vault are forwarded)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; All batching, fee management characteristics are the same.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Finalizing withdrawal&lt;br/&gt;&amp;gt; ---------------------&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Happens via script-path spend to $expr_withdraw, i.e. a timelocked&lt;br/&gt;&amp;gt; OP_CTV.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Recovery&lt;br/&gt;&amp;gt; --------&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Can happen from any of the above outputs using the $recovery_leaf&lt;br/&gt;&amp;gt; script path in a way very similar to the existing OP_VAULT proposal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ---&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To reiterate, all aspects of the existing OP_VAULT proposal are either&lt;br/&gt;&amp;gt; preserved or improved upon in terms of malleability reduction,&lt;br/&gt;&amp;gt; composability, and flexibility. So big thanks to AJ and Greg.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;ll undertake implementing these changes in the coming days to verify&lt;br/&gt;&amp;gt; that they are, as expected, workable.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; James&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230306/3e92a245/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230306/3e92a245/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:19:59&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszjw8hk7vp7dd0w2855squx87swyray0w2gkyuf5myvxsd9vem93gzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjwex92c</id>
    
      <title type="html">📅 Original date posted:2023-03-02 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszjw8hk7vp7dd0w2855squx87swyray0w2gkyuf5myvxsd9vem93gzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjwex92c" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8xrx5m6zpezezvy4m44f257s0a5cfhrsc4qu5jv78l3l59vwkczg9w7ve4&#39;&gt;nevent1q…7ve4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-03-02&lt;br/&gt;🗒️ Summary of this message: Greg proposes a new script for the EXPR_TRIGGER opcode, allowing for withdrawal authorization and introducing a refund path.&lt;br/&gt;📝 Original message:Greetings AJ,&lt;br/&gt;&lt;br/&gt;Glad I could resurrect the idea!&lt;br/&gt;&lt;br/&gt;&amp;gt; Then instead of `idx hash delay OP_TRIGGER_FORWARD` you&lt;br/&gt;write `idx hash delay 2 &amp;#34;OP_CSV OP_DROP OP_FORWARD_OUTPUTS&amp;#34;&lt;br/&gt;OP_FORWARD_LEAF_UPDATE`&lt;br/&gt;&lt;br/&gt;Interesting idea! (I&amp;#39;ll let you be the one to scope creep the proposal :) )&lt;br/&gt;&lt;br/&gt;To be pedantic, EXPR_TRIGGER would become:&lt;br/&gt;&lt;br/&gt;&amp;lt;trigger&amp;gt; &amp;lt;auth&amp;gt; &amp;lt;stuff&amp;gt; &amp;lt;spend-delay&amp;gt; &amp;lt;2&amp;gt; &amp;lt;OP_CSV OP_DROP&lt;br/&gt;OP_FORWARD_OUTPUTS&amp;gt; OP_FORWARD_LEAF_UPDATE&lt;br/&gt;&lt;br/&gt;and at spend time the idx and hash are put into the witness stack.&lt;br/&gt;&lt;br/&gt;To be clear, &amp;lt;spend-delay&amp;gt; could be embedded in the &amp;lt;script&amp;gt; too, right,&lt;br/&gt;making &amp;lt;2&amp;gt; a &amp;lt;1&amp;gt; in the above? Any reason for one or the other?&lt;br/&gt;&lt;br/&gt;Another bonus from this is that you can introduce withdrawal authorization&lt;br/&gt;as well as part of the &amp;lt;script&amp;gt;. Current proposal has no withdrawal&lt;br/&gt;authorization, from what I understand. So each transition in a vault&lt;br/&gt;construct can have authorization, if it desires it.&lt;br/&gt;&lt;br/&gt;&amp;gt; I do recognise that it makes it take a variable number of stack elements&lt;br/&gt;though :)&lt;br/&gt;&lt;br/&gt;Just when I thought I was out, they pulled me back in.&lt;br/&gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t think replacing the internal-public-key makes sense -- if it&lt;br/&gt;was immediately spendable via the keypath before there&amp;#39;s no reason for&lt;br/&gt;it not to be immediately spendable now.&lt;br/&gt;&lt;br/&gt;Slavishly following the current proposal was the idea to make sure all&lt;br/&gt;functionality was captured; I agree with this change.&lt;br/&gt;&lt;br/&gt;&amp;gt; Having OP_FORWARD_OUTPUTS not leave its input on the stack would let&lt;br/&gt;you move the OP_CSV to the end and drop the OP_DROP too, saving 1 WU.&lt;br/&gt;&lt;br/&gt;Previously setting CSV timeout to 0 would result in it not being&lt;br/&gt;satisfiable, if I&amp;#39;m understanding the suggestion correctly. I suppose this&lt;br/&gt;was a side-effect of having OP_UNVAULT take this value directly. Indeed&lt;br/&gt;with `OP_FORWARD_OUTPUTS` being split out there&amp;#39;s not really a reason to&lt;br/&gt;use a 0 value?&lt;br/&gt;&lt;br/&gt;&amp;gt; I think the existing OP_VAULT cleverness would work here, allowing you&lt;br/&gt;to spend two inputs to the same output, accumulating their values.&lt;br/&gt;&lt;br/&gt;Yes I think batching story should be same hopefully. I am assuming all the&lt;br/&gt;accounting OP_VAULT is doing is being done here. We match against the hash&lt;br/&gt;passed in, and fits into the &amp;#34;deferred checks&amp;#34; IIUC.&lt;br/&gt;&lt;br/&gt;&amp;gt; OP_FORWARD_REFUND&lt;br/&gt;&lt;br/&gt;Again, to be pedantic EXPR_TRIGGER becomes:&lt;br/&gt;&lt;br/&gt;&amp;lt;trigger&amp;gt; &amp;lt;auth&amp;gt; &amp;lt;stuff&amp;gt; &amp;lt;spend-delay&amp;gt; &amp;lt;2&amp;gt; &amp;lt;OP_CSV OP_DROP&lt;br/&gt;OP_FORWARD_OUTPUTS&amp;gt; OP_FORWARD_LEAF_UPDATE OP_FORWARD_REFUND&lt;br/&gt;&lt;br/&gt;Resulting in 2 more WU at spend time(for small idx). So *up front*&lt;br/&gt;committing to a refund path, perhaps with value explicitly passed in.&lt;br/&gt;&lt;br/&gt;Totally forgot about the refund path; will need to mull the issue over, see&lt;br/&gt;how it interacts with BYOF schemes, etc.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Wed, Mar 1, 2023 at 11:46 PM Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Wed, Mar 01, 2023 at 10:05:47AM -0500, Greg Sanders via bitcoin-dev&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; Below is a sketch of a replacement for the two opcodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I like this! I tried to come up with something along similar lines for&lt;br/&gt;&amp;gt; similar reasons, but I think I tried too hard to reduce it to two opcodes&lt;br/&gt;&amp;gt; or something and got myself confused.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; `OP_TRIGGER_FORWARD`: Takes exactly three arguments:&lt;br/&gt;&amp;gt; &amp;gt; 1) output index to match against (provided at spend time normally)&lt;br/&gt;&amp;gt; &amp;gt; 2) target-outputs-hash: 32 byte hash to be forwarded to output given at&lt;br/&gt;&amp;gt; (1)&lt;br/&gt;&amp;gt; &amp;gt; (provided at spend time normally)&lt;br/&gt;&amp;gt; &amp;gt; 3) spend-delay: value to be forwarded to output given at (1)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think you could generalise this as follows:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    idx .. npush script OP_FORWARD_LEAF_UPDATE&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (OP_FLU :) with the behaviour being:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    pop script from the stack&lt;br/&gt;&amp;gt;    pop npush from the stack (error if non-minimal or &amp;lt;0)&lt;br/&gt;&amp;gt;    pop npush entries from the stack,&lt;br/&gt;&amp;gt;      prefix script with a minimal push of that entry&lt;br/&gt;&amp;gt;    pop idx off the stack (error if idx is not a valid output)&lt;br/&gt;&amp;gt;    calculate the spk corresponding to taking the current&lt;br/&gt;&amp;gt;      input&amp;#39;s spk and replacing the current leaf with the&lt;br/&gt;&amp;gt;      given script&lt;br/&gt;&amp;gt;    check the output at idx matches this spk, and the&lt;br/&gt;&amp;gt;      value from this input accumulates to that output&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Then instead of `idx hash delay OP_TRIGGER_FORWARD` you&lt;br/&gt;&amp;gt; write `idx hash delay 2 &amp;#34;OP_CSV OP_DROP OP_FORWARD_OUTPUTS&amp;#34;&lt;br/&gt;&amp;gt; OP_FORWARD_LEAF_UPDATE`&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That&amp;#39;s an additional 5 witness bytes, but a much more generic/composable&lt;br/&gt;&amp;gt; opcode.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Being able to prefix a script with push opcodes avoids the possibility&lt;br/&gt;&amp;gt; of being able to add OP_SUCCESS instructions, so I think this is a fairly&lt;br/&gt;&amp;gt; safe way of allowing a TLUV-ish script to be modified, especially compared&lt;br/&gt;&amp;gt; to OP_CAT.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I do recognise that it makes it take a variable number of stack elements&lt;br/&gt;&amp;gt; though :)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; As the derived tapscript, embedded in a output scriptpubkey of the form:&lt;br/&gt;&amp;gt; &amp;gt; `tr(NUMS,{...,EXPR_WITHDRAW})`, meaning we literally take the control&lt;br/&gt;&amp;gt; block&lt;br/&gt;&amp;gt; &amp;gt; from the spending input, swap the inner pubkey for `NUMS`, use&lt;br/&gt;&amp;gt; &amp;gt; `EXPR_WITHDRAW` as the tapleaf, reconstruct the merkle root. If the&lt;br/&gt;&amp;gt; output&lt;br/&gt;&amp;gt; &amp;gt; scriptpubkey doesnt match, fail.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t think replacing the internal-public-key makes sense -- if it&lt;br/&gt;&amp;gt; was immediately spendable via the keypath before there&amp;#39;s no reason for&lt;br/&gt;&amp;gt; it not to be immediately spendable now.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Could save 2 WU having OP_FORWARD_OUTPUTS take the &amp;lt;spend-delay&amp;gt; directly&lt;br/&gt;&amp;gt; &amp;gt; as an argument, or keep it more general as I did.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Having OP_FORWARD_OUTPUTS not leave its input on the stack would let&lt;br/&gt;&amp;gt; you move the OP_CSV to the end and drop the OP_DROP too, saving 1 WU.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Would love to know what you and others think about this direction. I&lt;br/&gt;&amp;gt; &amp;gt; apologies for any misunderstandings I have about the current OP_VAULT&lt;br/&gt;&amp;gt; BIP!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think the existing OP_VAULT cleverness would work here, allowing you&lt;br/&gt;&amp;gt; to spend two inputs to the same output, accumulating their values.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t think it quite gives you a way to &amp;#34;refund&amp;#34; values though -- so&lt;br/&gt;&amp;gt; that you can take a vault with 3 BTC, start the &amp;lt;delay&amp;gt; wait to spend&lt;br/&gt;&amp;gt; 1.4 BTC, and then immediately decide to spend an additional 0.8 BTC on&lt;br/&gt;&amp;gt; something else, without the 0.8 BTC effectively having a doubled delay.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think you could fix that with something as simple as an additional&lt;br/&gt;&amp;gt; &amp;#34;idx OP_FORWARD_REFUND&amp;#34; opcode, though -- then the restriction is just&lt;br/&gt;&amp;gt; that the output at the refund idx has the same sPK as this input, and&lt;br/&gt;&amp;gt; the total value of this input is accumulated amongst all the outputs&lt;br/&gt;&amp;gt; specified by OP_FORWARD opcodes. (Maybe you need to specify the refund&lt;br/&gt;&amp;gt; amount explicitly as well, to keep verification easy)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That would make maybe three new opcodes to cover the &amp;#34;accumulate value&lt;br/&gt;&amp;gt; from one or more inputs into specified outputs&amp;#34;:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  - OP_FORWARD_LEAF_UPDATE --&amp;gt; forward input value to modified spk&lt;br/&gt;&amp;gt;  - OP_FORWARD_DESTINATION --&amp;gt; forward input value to given spk&lt;br/&gt;&amp;gt;  - OP_FORWARD_REFUND --&amp;gt; forward part of input value to same spk&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; along with OP_CTV:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  - OP_FORWARD_OUTPUTS --&amp;gt; pay to specific outputs&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; OP_VAULT&amp;#39;s &amp;#34;accumulate value&amp;#34; behaviour here makes the OP_IN_OUT_AMOUNT&lt;br/&gt;&amp;gt; things from TLUV more implicit and automatic, which is nice. I think&lt;br/&gt;&amp;gt; doing TLUV payment pools wouldn&amp;#39;t require much more than the ability to&lt;br/&gt;&amp;gt; combine OP_FLU and OP_FDEST in a single script, explicitly specifying&lt;br/&gt;&amp;gt; how much value is extracted via OP_FDEST with the rest assigned to OP_FLU.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; aj&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230302/59e4f0f8/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230302/59e4f0f8/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:19:56&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyvg6wdj2yckm73eg5wq5a7te3xqj7ynxha8882q9qhg5myvwptlszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjhgnaev</id>
    
      <title type="html">📅 Original date posted:2023-03-01 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyvg6wdj2yckm73eg5wq5a7te3xqj7ynxha8882q9qhg5myvwptlszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjhgnaev" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxgl78mwwwvkv4xhqfy8m6qay57ysn5zemv354rv5ha9lqqny8rrsedeype&#39;&gt;nevent1q…eype&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-03-01&lt;br/&gt;🗒️ Summary of this message: A proposal to decouple the functionalities of `OP_VAULT` and `OP_UNVAULT` into their constituent functions with names, to improve legibility and remove recursive evaluation functionality. The proposal aims to be a drop-in replacement for the existing opcodes.&lt;br/&gt;📝 Original message:Hello James,&lt;br/&gt;&lt;br/&gt;First off, thank you for crafting an interesting idea like this that is&lt;br/&gt;aimed at solving a serious problem. I see a lot of excitement about the use&lt;br/&gt;cases, and I think it&amp;#39;s worth iterating on.&lt;br/&gt;&lt;br/&gt;Attempting to keep the idealized functionality constant, I&amp;#39;d like to&lt;br/&gt;explore a design detour. I&amp;#39;m attempting to decouple the 3 functionalities&lt;br/&gt;of `OP_VAULT` and `OP_UNVAULT` into their constituent functions with names&lt;br/&gt;I just made up.&lt;br/&gt;&lt;br/&gt;The goals of this e-mail:&lt;br/&gt;&lt;br/&gt;1) Removing variable number of arguments based on values of arguments for&lt;br/&gt;the opcodes.&lt;br/&gt;To me as a spec reader, I find it very difficult to parse what&amp;#39;s precisely&lt;br/&gt;happening when. I think the only/last opcode to support this behavior was&lt;br/&gt;OP_CHECKMULTISIG(could be wrong), and now I know another reason why OP_CSA&lt;br/&gt;construct is nicer going forward with taproot.&lt;br/&gt;&lt;br/&gt;2) Remove the recursive evaluation functionality used for authentication,&lt;br/&gt;without reducing the efficacy of the targeted solution. Recursive&lt;br/&gt;evaluation has a fraught history in Bitcoin script, makes composing&lt;br/&gt;functionality with tooling likely more difficult, and has a lot of&lt;br/&gt;templated behavior. If we can rely on regular old tapscript to get us where&lt;br/&gt;we need to go, I&amp;#39;d prefer that.&lt;br/&gt;&lt;br/&gt;3) Increase legibility of the spec. There&amp;#39;s a ton going on, breaking things&lt;br/&gt;up and naming them based on the method rather than the goal may help here.&lt;br/&gt;&lt;br/&gt;4) Not (greatly) increase the expressiveness of the proposal. It&amp;#39;s a&lt;br/&gt;targeted proposal, and I&amp;#39;d like to respect that. These covenant opcodes are&lt;br/&gt;intended to be drop-in replacements for the OP_(UN)VAULT opcodes.&lt;br/&gt;&lt;br/&gt;To recap, there are three things happen in idealized OP_VAULT scenario:&lt;br/&gt;1) Money comes out, then has to wait (trigger transaction)&lt;br/&gt;2) Money waits long enough, then withdrawals to dynamic set of outputs that&lt;br/&gt;are declared at trigger time (withdrawal transaction)&lt;br/&gt;3) Money to single specified output script picked up front, with no wait&lt;br/&gt;(recovery)&lt;br/&gt;&lt;br/&gt;Below is a sketch of a replacement for the two opcodes. Ignore my&lt;br/&gt;inconsistency on VERIFY/non-VERIFY behavior, seeing if people agree with&lt;br/&gt;this general direction:&lt;br/&gt;&lt;br/&gt;`OP_TRIGGER_FORWARD`: Takes exactly three arguments:&lt;br/&gt;1) output index to match against (provided at spend time normally)&lt;br/&gt;2) target-outputs-hash: 32 byte hash to be forwarded to output given at (1)&lt;br/&gt;(provided at spend time normally)&lt;br/&gt;3) spend-delay: value to be forwarded to output given at (1)&lt;br/&gt;&lt;br/&gt;Fails script immediately if there aren&amp;#39;t enough inputs or they&amp;#39;re the wrong&lt;br/&gt;format.&lt;br/&gt;&lt;br/&gt;These last two arguments are &amp;#34;forwarded&amp;#34; to output at index declared in&lt;br/&gt;first argument, resulting in:&lt;br/&gt;&lt;br/&gt;`EXPR_WITHDRAW: &amp;lt;spend-delay&amp;gt; OP_CHECKSEQUENCEVERIFY OP_DROP&lt;br/&gt;&amp;lt;target-outputs-hash&amp;gt; OP_FORWARD_OUTPUTS`&lt;br/&gt;&lt;br/&gt;As the derived tapscript, embedded in a output scriptpubkey of the form:&lt;br/&gt;`tr(NUMS,{...,EXPR_WITHDRAW})`, meaning we literally take the control block&lt;br/&gt;from the spending input, swap the inner pubkey for `NUMS`, use&lt;br/&gt;`EXPR_WITHDRAW` as the tapleaf, reconstruct the merkle root. If the output&lt;br/&gt;scriptpubkey doesnt match, fail.&lt;br/&gt;&lt;br/&gt;This TLUV-ish script/inner pubkey replacement is meant to allow arbitrary&lt;br/&gt;other conditions, which is where the &amp;#34;recovery&amp;#34; path comes in for typical&lt;br/&gt;usage.&lt;br/&gt;&lt;br/&gt;If output at the target output index doesn&amp;#39;t match the constructed script,&lt;br/&gt;the evaluation fails.&lt;br/&gt;&lt;br/&gt;`OP_FORWARD_DESTINATION`: Takes exactly two arguments:&lt;br/&gt;1) `dest-vout-idx`: index of output that contains the so-called &amp;#34;recovery&amp;#34;&lt;br/&gt;path&lt;br/&gt;2) &amp;lt;recovery sPK tagged hash (32 bytes)&amp;gt;: the hash of the script destination&lt;br/&gt;&lt;br/&gt;Fails immediately if the reconstructed output script doesn&amp;#39;t match.&lt;br/&gt;&lt;br/&gt;`OP_FORWARD_OUTPUTS` takes exactly one argument:&lt;br/&gt;1) target-outputs-hash: commits to all outputs&amp;#39; scripts and values&lt;br/&gt;&lt;br/&gt;Fails immediately if transaction&amp;#39;s outputs(including value) hash doesn&amp;#39;t&lt;br/&gt;match.&lt;br/&gt;&lt;br/&gt;**Typical usage**:&lt;br/&gt;```&lt;br/&gt;DEPOSITING TO VAULT SCRIPT:&lt;br/&gt;&lt;br/&gt;EXPR_RECOVERY:   &amp;lt;recovery&amp;gt; &amp;lt;auth&amp;gt; &amp;lt;stuff&amp;gt; &amp;lt;recovery sPK tagged hash (32&lt;br/&gt;bytes)&amp;gt; OP_FORWARD_DESTINATION&lt;br/&gt;EXPR_TRIGGER:     &amp;lt;trigger&amp;gt; &amp;lt;auth&amp;gt; &amp;lt;stuff&amp;gt; &amp;lt;spend-delay&amp;gt; OP_TRIGGER_FORWARD&lt;br/&gt;&lt;br/&gt;tr(KEY, {EXPR_RECOVERY, EXPR_TRIGGER})&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;EXPR_WITHDRAW: &amp;lt;spend-delay&amp;gt; OP_CHECKSEQUENCEVERIFY OP_DROP&lt;br/&gt;&amp;lt;target-outputs-hash&amp;gt; OP_FORWARD_OUTPUTS&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;TRIGGERING WITHDRAWAL TIMER SCRIPT:&lt;br/&gt;&lt;br/&gt;tr(NUMS, {EXPR_RECOVERY,EXPR_WITHDRAW}) &amp;lt;--- note EXPR_RECOVERY is forced&lt;br/&gt;by the OP_TRIGGER_FORWARD TLUV action&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;Could save 2 WU having OP_FORWARD_OUTPUTS take the &amp;lt;spend-delay&amp;gt; directly&lt;br/&gt;as an argument, or keep it more general as I did.&lt;br/&gt;&lt;br/&gt;Would love to know what you and others think about this direction. I&lt;br/&gt;apologies for any misunderstandings I have about the current OP_VAULT BIP!&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Mon, Feb 13, 2023 at 4:09 PM James O&amp;#39;Beirne via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Since the last related correspondence on this list [0], a number of&lt;br/&gt;&amp;gt; improvements have been made to the OP_VAULT draft [1]:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * There is no longer a hard dependence on package relay/ephemeral&lt;br/&gt;&amp;gt;   anchors for fee management. When using &amp;#34;authorized recovery,&amp;#34; all&lt;br/&gt;&amp;gt;   vault-related transactions can be bundled with unrelated inputs and&lt;br/&gt;&amp;gt;   outputs, facilitating fee management that is self contained to the&lt;br/&gt;&amp;gt;   transaction. Consequently, the contents of this proposal are in theory&lt;br/&gt;&amp;gt;   usable today.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Specific output locations are no longer hardcoded in any of the&lt;br/&gt;&amp;gt;   transaction validation algorithms. This means that the proposal is now&lt;br/&gt;&amp;gt;   compatible with future changes like SIGHASH_GROUP, and&lt;br/&gt;&amp;gt;   transaction shapes for vault operations are more flexible.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ---&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;ve written a BIP that fully describes the proposal here:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/jamesob/bips/blob/jamesob-23-02-opvault/bip-vaults.mediawiki&#34;&gt;https://github.com/jamesob/bips/blob/jamesob-23-02-opvault/bip-vaults.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The corresponding PR is here:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   &lt;a href=&#34;https://github.com/bitcoin/bips/pull/1421&#34;&gt;https://github.com/bitcoin/bips/pull/1421&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; My next steps will be to try for a merge to the inquisition repo.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks to everyone who has participated so far, but especially to AJ and&lt;br/&gt;&amp;gt; Greg for all the advice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; James&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-January/021318.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-January/021318.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [1]: &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/26857&#34;&gt;https://github.com/bitcoin/bitcoin/pull/26857&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230301/067e5b0d/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230301/067e5b0d/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:19:55&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvaag9nasekyrc7anvutymjtle2vvl7mzahr7dmr0jdkalw0nzcuczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjn6pwx3</id>
    
      <title type="html">📅 Original date posted:2023-02-02 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvaag9nasekyrc7anvutymjtle2vvl7mzahr7dmr0jdkalw0nzcuczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjn6pwx3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx4phnmw6mh73jusfd5juyprkmdyu6lpswnyh5a9md5czzpxwajfgefwcht&#39;&gt;nevent1q…wcht&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-02-02&lt;br/&gt;🗒️ Summary of this message: OP_2 fails standardness tests in Bitcoin Core unit/functional tests. It was Luke Jr&amp;#39;s idea in 2017, and changing test vectors is a concern.&lt;br/&gt;📝 Original message:Quickly checked, it fails a number of standardness tests in unit/functional&lt;br/&gt;tests in Bitcoin Core, at least.&lt;br/&gt;&lt;br/&gt;OP_2 was actually Luke Jr&amp;#39;s idea circa 2017 for about the same reasons, I&lt;br/&gt;just independently arrived at the same conclusion.&lt;br/&gt;&lt;br/&gt;On Thu, Feb 2, 2023 at 10:06 AM Peter Todd &amp;lt;pete at petertodd.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Thu, Feb 02, 2023 at 09:59:09AM -0500, Greg Sanders wrote:&lt;br/&gt;&amp;gt; &amp;gt; Hi Peter,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; For the most principled of reasons:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Because I have to change test vectors everywhere!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Specifically, you mean you&amp;#39;d have to change tests that test something is&lt;br/&gt;&amp;gt; non-standard?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://petertodd.org&#34;&gt;https://petertodd.org&lt;/a&gt; &amp;#39;peter&amp;#39;[:-1]@petertodd.org&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230202/48dcb48f/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230202/48dcb48f/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:19:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsf8xr8dvzlcs3ay90cgza9k5w44n7ljd39ggx0lf4r9ma0tssxd9szyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjycxa2r</id>
    
      <title type="html">📅 Original date posted:2023-02-02 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsf8xr8dvzlcs3ay90cgza9k5w44n7ljd39ggx0lf4r9ma0tssxd9szyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjycxa2r" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxczud6t377s9c5rt3cy5x4lc7h3lpwwu58auxnkv79hgyg9xdlpcam66tr&#39;&gt;nevent1q…66tr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-02-02&lt;br/&gt;🗒️ Summary of this message: Greg Sanders proposes the Ephemeral Anchors idea in a short draft BIP, with a refreshed pull request, and suggests using OP_2 instead of OP_TRUE in test vectors.&lt;br/&gt;📝 Original message:Hi Peter,&lt;br/&gt;&lt;br/&gt;For the most principled of reasons:&lt;br/&gt;&lt;br/&gt;Because I have to change test vectors everywhere!&lt;br/&gt;&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Thu, Feb 2, 2023 at 9:52 AM Peter Todd &amp;lt;pete at petertodd.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Fri, Jan 27, 2023 at 09:05:20AM -0500, Greg Sanders via bitcoin-dev&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; Hello again dev,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Due to the interest in the proposal and the prodding of certain folks,&lt;br/&gt;&amp;gt; I&amp;#39;ve&lt;br/&gt;&amp;gt; &amp;gt; written up a short draft BIP of the Ephemeral Anchors idea here:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/instagibbs/bips/blob/ephemeral_anchor/bip-ephemeralanchors.mediawiki&#34;&gt;https://github.com/instagibbs/bips/blob/ephemeral_anchor/bip-ephemeralanchors.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The pull request at &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/26403&#34;&gt;https://github.com/bitcoin/bitcoin/pull/26403&lt;/a&gt; has&lt;br/&gt;&amp;gt; been&lt;br/&gt;&amp;gt; &amp;gt; refreshed on top of the latest V3 proposal, but the BIP itself is&lt;br/&gt;&amp;gt; &amp;gt; unaffected.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The BIP states that:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     Why OP_2 not OP_TRUE? OP_TRUE is often used in test vectors, using&lt;br/&gt;&amp;gt; OP_2 has&lt;br/&gt;&amp;gt;     the same benefits and none of these common collisions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Why is a &amp;#34;collision&amp;#34; harmful in this case?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://petertodd.org&#34;&gt;https://petertodd.org&lt;/a&gt; &amp;#39;peter&amp;#39;[:-1]@petertodd.org&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230202/d53025db/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230202/d53025db/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:19:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfflj6tya53ln5rhgwfvjn7gmjmz5942vc42xtp0cksevf4m6elkczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjzeln0y</id>
    
      <title type="html">📅 Original date posted:2023-01-31 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfflj6tya53ln5rhgwfvjn7gmjmz5942vc42xtp0cksevf4m6elkczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjzeln0y" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2pv03elmtfec46pf8ml0xqagz3qh5drhpt5th23f4znjz84t3suq5eh6r0&#39;&gt;nevent1q…h6r0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-31&lt;br/&gt;🗒️ Summary of this message: Sending funds to future segwit versions is risky, so most exchanges won&amp;#39;t enable it. Updating to new versions should be straightforward, and popular open source libraries should support it.&lt;br/&gt;📝 Original message:Hi David,&lt;br/&gt;&lt;br/&gt;&amp;gt;From practical experience, I think you&amp;#39;ll find that most exchanges will not&lt;br/&gt;enable sends to future segwit versions,&lt;br/&gt;as from a risk perspective it&amp;#39;s likely a mistake to send funds there. That&lt;br/&gt;said, as long as we don&amp;#39;t change&lt;br/&gt;the checksum again(!), updating to new versions should be fairly straight&lt;br/&gt;forward. Every update will be a matter&lt;br/&gt;of allowing a new version and a new length instead of requiring&lt;br/&gt;library updates. Making sure the most popular&lt;br/&gt;open source libraries support it is probably the best way to spend energy&lt;br/&gt;ensuring that future upgrades go smoothly.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Mon, Jan 30, 2023 at 8:25 PM David A. Harding via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi y&amp;#39;all!,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One of the benefits proposed for bech32 (and, by extension, bech32m) is&lt;br/&gt;&amp;gt; that spender wallets shouldn&amp;#39;t need to be upgraded to pay segwit outputs&lt;br/&gt;&amp;gt; defined in future soft forks.  For example, Bitcoin Core today can pay a&lt;br/&gt;&amp;gt; bech32m address for a segwit v2 output, even though no meaning has been&lt;br/&gt;&amp;gt; assigned to output scripts matching a segwit v2 template.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, testing this behavior in production[1] can create an annoyance&lt;br/&gt;&amp;gt; for developers of future soft forks.  They will need to deal with any&lt;br/&gt;&amp;gt; existing outputs paid to the templates used in that proposed soft fork.&lt;br/&gt;&amp;gt; See, for example, some discussion by developer 0xB10C about payments to&lt;br/&gt;&amp;gt; segwit v1 addresses before activation of the taproot soft fork:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://b10c.me/blog/007-spending-p2tr-pre-activation/&#34;&gt;https://b10c.me/blog/007-spending-p2tr-pre-activation/&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I was wondering if it would be useful to have a canonical examples of&lt;br/&gt;&amp;gt; future segwit addresses that are designed to be very unlikely to&lt;br/&gt;&amp;gt; interfere with future soft forks but which would still reasonably&lt;br/&gt;&amp;gt; exercise wallets supporting bech32m.  I think of this as the rough&lt;br/&gt;&amp;gt; equivalent of the RFC2606 domain &amp;#34;example.com&amp;#34; which has been reserved&lt;br/&gt;&amp;gt; for examples in documentation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Specifically, I&amp;#39;m thinking of the following addresses, one each for&lt;br/&gt;&amp;gt; mainnet and testnet:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - HRP: bc for mainnet; tb for testent&lt;br/&gt;&amp;gt; - Witness version: 16 (the last segwit version)&lt;br/&gt;&amp;gt; - Witness program: 0x0000.  Two bytes is the minimum allowed&lt;br/&gt;&amp;gt;    by BIP141, but it&amp;#39;s far too small to make any sort of secure&lt;br/&gt;&amp;gt; commitment,&lt;br/&gt;&amp;gt;    so I&amp;#39;m hoping it won&amp;#39;t conflict with any future use&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think we should try to start with just one reserved address per&lt;br/&gt;&amp;gt; network, but if that isn&amp;#39;t enough, I think we could allow any two-byte&lt;br/&gt;&amp;gt; witness program with witness version 16.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Outputs paid to reserved addresses will still be anyone-can-spend, so&lt;br/&gt;&amp;gt; there&amp;#39;s no change required to Bitcoin Core or other software and those&lt;br/&gt;&amp;gt; outputs can still be cleaned out of the UTXO set.  Additionally, if we&lt;br/&gt;&amp;gt; ever *really* need that address space for a soft fork, it will be&lt;br/&gt;&amp;gt; available.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Are there any objections to this idea, or suggestions for a better way&lt;br/&gt;&amp;gt; to go about it?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks!,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -Dave&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] Testing in production should be avoided because it uses block space&lt;br/&gt;&amp;gt; that could otherwise be used by actual value transfers.  Also, it costs&lt;br/&gt;&amp;gt; money and pollutes the UTXO set (at least temporarily).  However, when&lt;br/&gt;&amp;gt; testing whether proprietary third-party software, such as an exchange,&lt;br/&gt;&amp;gt; supports payments to future segwit versions, sometimes the only&lt;br/&gt;&amp;gt; convenient method is to actually pay the address for a future segwit&lt;br/&gt;&amp;gt; version.  Additionally, my specific use case is just to write&lt;br/&gt;&amp;gt; documentation&lt;br/&gt;&amp;gt; about bech32m---but I worry that people will pay my example of a future&lt;br/&gt;&amp;gt; segwit&lt;br/&gt;&amp;gt; version address.&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230131/28cd677c/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230131/28cd677c/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:18:51&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxcqn3qvt92prfl9vqm7euxs86p4t3z4ur8zgp4q392gpc6sd4pmqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjt0796p</id>
    
      <title type="html">📅 Original date posted:2023-01-09 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxcqn3qvt92prfl9vqm7euxs86p4t3z4ur8zgp4q392gpc6sd4pmqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjt0796p" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszkces3adg5dfd2x23pmvk79c02hhkg36a4rghq4uc3nx542rp4dqnanjap&#39;&gt;nevent1q…njap&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-09&lt;br/&gt;🗒️ Summary of this message: Proposal for a fix to make OP_UNVAULT compatible with scripthashes by requiring an additional witness data item during OP_VAULT spend.&lt;br/&gt;📝 Original message:Hi James and co,&lt;br/&gt;&lt;br/&gt;Currently there is no way to make this compatible with scripthashes of any&lt;br/&gt;kind, since the script interpreter has no insight into the OP_UNVAULT&lt;br/&gt;outputs&amp;#39; &amp;#34;execution script&amp;#34;, and one of the arguments of OP_UNVAULT is&lt;br/&gt;freeform, resulting in an unpredictable output scriptpubkey.&lt;br/&gt;&lt;br/&gt;I think the fix is just requiring a single additional witness data item&lt;br/&gt;during OP_VAULT spend(for unvault path), mandating the&lt;br/&gt;&amp;lt;target-outputs-hash&amp;gt; to be included in the witness stack as an input to&lt;br/&gt;OP_VAULT opcode, and transaction introspection then checks to make sure the&lt;br/&gt;witness item and the corresponding output script template matches the&lt;br/&gt;expected.&lt;br/&gt;&lt;br/&gt;This would only be necessary for the unvaulting path, and not for the&lt;br/&gt;recovery path.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Mon, Jan 9, 2023 at 2:10 PM rot13maxi via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hey James,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Really cool proposal. I’ve been thinking a lot lately about script paths&lt;br/&gt;&amp;gt; for inheritance. In a lot of the “have a relative time lock that allows a&lt;br/&gt;&amp;gt; different key to spend coins, or allows a smaller threshold of a multisig&lt;br/&gt;&amp;gt; to spend” schemes, you have the problem of needing to “refresh” all of your&lt;br/&gt;&amp;gt; coins when the timelock is close to maturation. In a lot of the “use&lt;br/&gt;&amp;gt; multisig with ephemeral keys to emulate covenants” schemes, you have to&lt;br/&gt;&amp;gt; pre-commit to the terminal destination well in advance of the spend-path&lt;br/&gt;&amp;gt; being used, which leads to all kinds of thorny questions about security and&lt;br/&gt;&amp;gt; availability of *those* keys. In other words, you either have to have&lt;br/&gt;&amp;gt; unbound destinations but a timer that needs resetting, or you have unbound&lt;br/&gt;&amp;gt; time but fixed destinations. This design gets you the best of both because&lt;br/&gt;&amp;gt; the destination SPKs aren’t committed to until the unvaulting process&lt;br/&gt;&amp;gt; starts. This (or something like this with destination binding at&lt;br/&gt;&amp;gt; unvault-time) would be an incredibly useful tool for inheritance designs in&lt;br/&gt;&amp;gt; wallets.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I need to think a bit more about the recovery path not having any real&lt;br/&gt;&amp;gt; encumbrances on it. Maybe in practice if you’re worried about DoS, you have&lt;br/&gt;&amp;gt; UTXOs that commit to multiple vault paths that have tweaked recovery&lt;br/&gt;&amp;gt; destinations or something, or maybe it really is the right move to say that&lt;br/&gt;&amp;gt; if recovery is triggered, you probably do want it for all of your inflight&lt;br/&gt;&amp;gt; unvaultings.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Looking forward to reading this a few more times and talking more about&lt;br/&gt;&amp;gt; it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks!&lt;br/&gt;&amp;gt; rijndael&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Mon, Jan 9, 2023 at 11:07 AM, James O&amp;#39;Beirne via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For the last few years, I&amp;#39;ve been interested in vaults as a way to&lt;br/&gt;&amp;gt; substantially derisk custodying Bitcoin, both at personal and commercial&lt;br/&gt;&amp;gt; scales. Instead of abating with familiarity, as enthusiasm sometimes&lt;br/&gt;&amp;gt; does, my conviction that vaults are an almost necessary part of bitcoin&amp;#39;s&lt;br/&gt;&amp;gt; viability has only grown over the years.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Since people first started discussing vaults, it&amp;#39;s been pretty clear that&lt;br/&gt;&amp;gt; some kind of covenant-enabling consensus functionality is necessary to&lt;br/&gt;&amp;gt; provide the feature set necessary to make vault use practical.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Earlier last year I experimented with using OP_CTV[1], a limited covenant&lt;br/&gt;&amp;gt; mechanism, to implement a &amp;#34;minimum-viable&amp;#34; vault design. I found that the&lt;br/&gt;&amp;gt; inherent limitations of a precomputed covenant scheme left the resulting&lt;br/&gt;&amp;gt; vault implementation wanting, even though it was an improvement over&lt;br/&gt;&amp;gt; existing strategies that rely on presigned transactions and (hopefully)&lt;br/&gt;&amp;gt; ephemeral keys.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But I also found proposed &amp;#34;general&amp;#34; covenant schemes to be&lt;br/&gt;&amp;gt; unsuitable for this use. The bloated scriptPubKeys, both in size and&lt;br/&gt;&amp;gt; complexity, that would result when implementing something like a vault&lt;br/&gt;&amp;gt; weren&amp;#39;t encouraging. Also importantly, the social-consensus quagmire&lt;br/&gt;&amp;gt; regarding which covenant proposal to actually deploy feels at times&lt;br/&gt;&amp;gt; intractable.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As a result, I wanted to explore a middle way: a design solely concerned&lt;br/&gt;&amp;gt; with making the best vault use possible, with covenant functionality as a&lt;br/&gt;&amp;gt; secondary consideration. In other words, a proposal that would deliver&lt;br/&gt;&amp;gt; the safety benefits of vaults to users without getting hung up on&lt;br/&gt;&amp;gt; trying to solve the general problem of covenants.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; At first this design, OP_VAULT, was just sort of a pipe dream. But as I&lt;br/&gt;&amp;gt; did more thinking (and eventually implementing) I became more convinced&lt;br/&gt;&amp;gt; that, even if it isn&amp;#39;t considered for soft-fork, it is a worthwhile&lt;br/&gt;&amp;gt; device to serve as a standard benchmark against which other proposals&lt;br/&gt;&amp;gt; might be judged.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I wrote a paper that summarizes my findings and the resulting proposal:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://jameso.be/vaults.pdf&#34;&gt;https://jameso.be/vaults.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; along with an accompanying draft implementation:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/26857&#34;&gt;https://github.com/bitcoin/bitcoin/pull/26857&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I might work on a BIP if there&amp;#39;s interest.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; James&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]: &lt;a href=&#34;https://github.com/jamesob/simple-ctv-vault&#34;&gt;https://github.com/jamesob/simple-ctv-vault&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230109/7ca41bc5/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230109/7ca41bc5/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:18:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsggd4y9xygn74ktjwxlh4ue3x9pys5e3r0efvxevsmrvfuug4dhsgzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj4z34s6</id>
    
      <title type="html">📅 Original date posted:2022-12-05 📝 Original message:This ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsggd4y9xygn74ktjwxlh4ue3x9pys5e3r0efvxevsmrvfuug4dhsgzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj4z34s6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsygzngdc6psjjfn7pp2svy2h9338t3ath6c098qlsyem2kz26z89qupuuxa&#39;&gt;nevent1q…uuxa&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-12-05&lt;br/&gt;📝 Original message:This will greatly centralize the network as well as not actually achieve&lt;br/&gt;the intended goal which is literally impossible.&lt;br/&gt;&lt;br/&gt;On Mon, Dec 5, 2022, 8:27 AM El_Hoy via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; The only option I see against the attack Peter Todd is doing to opt-in RBF&lt;br/&gt;&amp;gt; and 0Conf bitcoin usage is working on a bitcoin core implementation that&lt;br/&gt;&amp;gt; stops propagation of full-rbf replaced blocks. Running multiple of such&lt;br/&gt;&amp;gt; nodes on the network will add a risk to miners that enable full-rbf that&lt;br/&gt;&amp;gt; would work as an incentive against that.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Obviously that would require adding an option on bitcoin core (that is not&lt;br/&gt;&amp;gt; technically but politically difficult to implement as Petter Todd already&lt;br/&gt;&amp;gt; have commit access to the main repository).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That said, a sufficiently incentivized actor (like Daniel Lipshitz or Muun&lt;br/&gt;&amp;gt; wallet developers) could work on a fork and run several nodes with such&lt;br/&gt;&amp;gt; functionality. As far as I understand the percolation model, with 10 to 20&lt;br/&gt;&amp;gt; nodes running such a rule would create a significant risk for full-rbf&lt;br/&gt;&amp;gt; miners.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ---  Eloy&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Tue, Nov 15, 2022 at 11:43 AM Peter Todd via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Tue, Nov 15, 2022 at 03:36:08PM &#43;1000, Anthony Towns via bitcoin-dev&lt;br/&gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; On Tue, Nov 08, 2022 at 01:16:13PM -0500, Peter Todd via bitcoin-dev&lt;br/&gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; FYI I&amp;#39;ve gotten a few hundred dollars worth of donations to this&lt;br/&gt;&amp;gt;&amp;gt; effort, and&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; have raised the reward to about 0.02 BTC, or $400 USD at current&lt;br/&gt;&amp;gt;&amp;gt; prices.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Seems like this has been mostly claimed (0.014btc / $235, 9238sat/vb):&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I&amp;#39;m turning it back on when (if) the mempool settles down. I&amp;#39;ve got more&lt;br/&gt;&amp;gt;&amp;gt; than&lt;br/&gt;&amp;gt;&amp;gt; enough donations to give another run at it (the majority was donated&lt;br/&gt;&amp;gt;&amp;gt; privately&lt;br/&gt;&amp;gt;&amp;gt; FWIW). There&amp;#39;s a risk of the mempool filling up again of course; hard to&lt;br/&gt;&amp;gt;&amp;gt; avoid&lt;br/&gt;&amp;gt;&amp;gt; that.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Right now of course it&amp;#39;s really easy to double spend with the obvious&lt;br/&gt;&amp;gt;&amp;gt; low-fee/high-fee method as the min relay fee keeps shifting.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://mempool.space/tx/397dcbe4e95ec40616e3dfc4ff8ffa158d2e72020b7d11fc2be29d934d69138c&#34;&gt;https://mempool.space/tx/397dcbe4e95ec40616e3dfc4ff8ffa158d2e72020b7d11fc2be29d934d69138c&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; The block it was claimed in seems to have been about an hour after the&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; default mempool filled up:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://twitter.com/murchandamus/status/1592274621977477120&#34;&gt;https://twitter.com/murchandamus/status/1592274621977477120&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; That block actually seems to have included two&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; alice.btc.calendar.opentimestamps.org txs, the other paying $7.88&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; (309sat/vb):&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://mempool.space/tx/ba9670109a6551458d5e1e23600c7bf2dc094894abdf59fe7aa020ccfead07cf&#34;&gt;https://mempool.space/tx/ba9670109a6551458d5e1e23600c7bf2dc094894abdf59fe7aa020ccfead07cf&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The second is because I turned down the full-rbf reward to more normal fee&lt;br/&gt;&amp;gt;&amp;gt; levels. There&amp;#39;s also another full-rbf double-spend from the Bob calendar,&lt;br/&gt;&amp;gt;&amp;gt; along&lt;br/&gt;&amp;gt;&amp;gt; the same lines:&lt;br/&gt;&amp;gt;&amp;gt; 7e76b351009326a574f3120164dbbe6d85e07e04a7bbdc40f0277fcb008d2cd2&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I double-spent the txin of the high fee tx that got mined. But I&lt;br/&gt;&amp;gt;&amp;gt; mistakenly had&lt;br/&gt;&amp;gt;&amp;gt; RBF enabled in that double-spend, so while it propagated initially, I&lt;br/&gt;&amp;gt;&amp;gt; believe&lt;br/&gt;&amp;gt;&amp;gt; it was replaced when something (someone?) rebroadcast the high-fee 397dcb&lt;br/&gt;&amp;gt;&amp;gt; tx.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Timeline (utc) to me looks like:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  - 13:12 - block 763148 is mined: last one that had a min fee &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt; 1.5sat/vb&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  - 13:33 -&lt;br/&gt;&amp;gt;&amp;gt; f503868c64d454c472859b793f3ee7cdc8f519c64f8b1748d8040cd8ce6dc6e1&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;            is announced and propogates widely (1.2sat/vb)&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  - 18:42 -&lt;br/&gt;&amp;gt;&amp;gt; 746daab9bcc331be313818658b4a502bb4f3370a691fd90015fabcd7759e0944&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;            is announced and propogates widely (1.2sat/vb)&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  - 21:52 - ba967010 tx is announced and propogates widely, since&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;            conflicting tx 746daab9 has been removed from default&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;          mempools&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  - 21:53 - murch tweets about default mempool filling up&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  - 22:03 - 397dcbe4 tx is announced and propogates widely, since&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;            conflicting tx f503868 has already been removed from default&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;          mempools&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Is that 22:03 time for 397 from your node&amp;#39;s logs? It was originally&lt;br/&gt;&amp;gt;&amp;gt; announced&lt;br/&gt;&amp;gt;&amp;gt; hours earlier. From one of my full-rbf nodes:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;     2022-11-14T14:08:37Z [mempool] replacing tx&lt;br/&gt;&amp;gt;&amp;gt; 764867062b67fea61810c3858d587da83a28290545e882935a32285028084317 with&lt;br/&gt;&amp;gt;&amp;gt; 397dcbe4e95ec40616e3dfc4ff8ffa158d2e72020b7d11fc2be29d934d69138c for&lt;br/&gt;&amp;gt;&amp;gt; 0.00468 additional fees, -1 delta bytes&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  - 22:35 - block 763189 is mined&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  - 22:39 - block 763190 is mined&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  - 23:11 - block 763191 is mined&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  - 23:17 - block 763192 is mined including 397dcbe4&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; miningpool.observer reports both 397dcbe4 and ba967010 as missing in the&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; first three blocks, and gives similar mempool ages for those txs to what&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; my logs report:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://miningpool.observer/template-and-block/0000000000000000000436aba59d8430061e0e50592215f7f263bfb1073ccac7&#34;&gt;https://miningpool.observer/template-and-block/0000000000000000000436aba59d8430061e0e50592215f7f263bfb1073ccac7&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://miningpool.observer/template-and-block/00000000000000000005600404792bacfd8a164d2fe9843766afb2bfbd937309&#34;&gt;https://miningpool.observer/template-and-block/00000000000000000005600404792bacfd8a164d2fe9843766afb2bfbd937309&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://miningpool.observer/template-and-block/00000000000000000004a3073f58c9eae40f251ea7aeaeac870daeac4b238fd1&#34;&gt;https://miningpool.observer/template-and-block/00000000000000000004a3073f58c9eae40f251ea7aeaeac870daeac4b238fd1&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; That presumably means those pools (AntPool twice and &amp;#34;unknown&amp;#34;) are&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; running with large mempools that didn&amp;#39;t kept the earlier 1.2sat/vb txs.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; To be clear, you think that AntPool and that other exchange is running&lt;br/&gt;&amp;gt;&amp;gt; with a&lt;br/&gt;&amp;gt;&amp;gt; larger than normal max mempool size limit? You mean those miners *did*&lt;br/&gt;&amp;gt;&amp;gt; keep the&lt;br/&gt;&amp;gt;&amp;gt; earlier 1.2sat/vb tx?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; The txs were mined by Foundry:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://miningpool.observer/template-and-block/00000000000000000001382a226aedac822de80309cca2bf1253b35d4f8144f5&#34;&gt;https://miningpool.observer/template-and-block/00000000000000000001382a226aedac822de80309cca2bf1253b35d4f8144f5&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; This seems to be pretty good evidence that we currently don&amp;#39;t have any&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; significant hashrate mining with fullrbf policies (&amp;lt;0.5% if there was a&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; high fee replacement available prior to every block having been mined),&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; despite the bounty having been collected.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Oh, we can put much lower bounds on that. I&amp;#39;ve been running OTS calendars&lt;br/&gt;&amp;gt;&amp;gt; with&lt;br/&gt;&amp;gt;&amp;gt; full-rbf replacements for a few months without clear evidence of a&lt;br/&gt;&amp;gt;&amp;gt; full-rbf&lt;br/&gt;&amp;gt;&amp;gt; replacement.  While there was good reason to think some miners were mining&lt;br/&gt;&amp;gt;&amp;gt; full-rbf before a few years back, they probably didn&amp;#39;t bother to reapply&lt;br/&gt;&amp;gt;&amp;gt; their&lt;br/&gt;&amp;gt;&amp;gt; patches each upgrade. `mempoolfullrbf=1` is much simpler to use.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://petertodd.org&#34;&gt;https://petertodd.org&lt;/a&gt; &amp;#39;peter&amp;#39;[:-1]@petertodd.org&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221205/ce59b2c5/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221205/ce59b2c5/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:17:19&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2mlxqfxs04cmgh59dlvmlsqaz2ckvlu3mdrlnellz3v2wakrcexczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjr54zzl</id>
    
      <title type="html">📅 Original date posted:2022-11-02 📝 Original message:&amp;gt; I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2mlxqfxs04cmgh59dlvmlsqaz2ckvlu3mdrlnellz3v2wakrcexczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjr54zzl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2swuxg78qak5qfnd6csaqqlgdmny2m5zftx0chcxk9eaajp49d5gxw947r&#39;&gt;nevent1q…947r&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-11-02&lt;br/&gt;📝 Original message:&amp;gt; I think that&amp;#39;s a huge oversimplification of &amp;#34;rational&amp;#34; -- otherwise&lt;br/&gt;you might as well say that deliberately pinning txs is also rational,&lt;br/&gt;because it allows the person doing the pinning to steal funds from their&lt;br/&gt;counterparty by forcing a timeout to expire.&lt;br/&gt;&lt;br/&gt;To be clear, a pinner is attempting to *not* pay&lt;br/&gt;the most fees, by definition. If we&amp;#39;re somehow sure something is a pin,&lt;br/&gt;we should not allow it, because miners rationally do not want it vs&lt;br/&gt;an &amp;#34;honest&amp;#34; bid for fees. V3 design is one attempt to carve out a safe&lt;br/&gt;space for fee bidding. Carving out a safe space for *non-bidding* is not the&lt;br/&gt;same thing.&lt;br/&gt;&lt;br/&gt;I think this mostly boils down having knobs or not. I&amp;#39;m fine with knobs&lt;br/&gt;with paternalistic defaults, especially when a non-zero percentage of users&lt;br/&gt;disagree with a value in either direction.&lt;br/&gt;&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Tue, Nov 1, 2022 at 11:07 PM Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Mon, Oct 31, 2022 at 12:25:46PM -0400, Greg Sanders via bitcoin-dev&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; For 0-conf services we have potential thieves who are willing&lt;br/&gt;&amp;gt; &amp;gt; to *out-bid themselves* to have funds come back to themselves. It&amp;#39;s not a&lt;br/&gt;&amp;gt; &amp;gt; &amp;#34;legitimate&amp;#34; use-case, but a rational one.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think that&amp;#39;s a huge oversimplification of &amp;#34;rational&amp;#34; -- otherwise&lt;br/&gt;&amp;gt; you might as well say that deliberately pinning txs is also rational,&lt;br/&gt;&amp;gt; because it allows the person doing the pinning to steal funds from their&lt;br/&gt;&amp;gt; counterparty by forcing a timeout to expire.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There&amp;#39;s no need for us as developers, or us as node operators, to support&lt;br/&gt;&amp;gt; every use case that some individual might find rational at some point in&lt;br/&gt;&amp;gt; time. After all, it might be individually rational for someone to want the&lt;br/&gt;&amp;gt; subsidy to stop decreasing, or to include 8MB of transactions per block.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note that it&amp;#39;s also straightforwardly rational and incentive compatible&lt;br/&gt;&amp;gt; for miners to not want this patch to be available, under the following&lt;br/&gt;&amp;gt; scenario:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  - a significant number of on-chain txs are for zeroconf services&lt;br/&gt;&amp;gt;  - fee income would be reduced if zeroconf services went away&lt;br/&gt;&amp;gt;    (both directly due to the absence of zeroconf payments, and by&lt;br/&gt;&amp;gt;    reducing mempool pressure, reducing fee income from the on-chain txs&lt;br/&gt;&amp;gt;    that remain)&lt;br/&gt;&amp;gt;  - miners adopting fullrbf would cause zeroconf services to go away,&lt;br/&gt;&amp;gt;    (and won&amp;#39;t enable a comparable volume of new services that generates&lt;br/&gt;&amp;gt;    comparable transaction volume)&lt;br/&gt;&amp;gt;  - including the option in core would make other miners adopting&lt;br/&gt;&amp;gt;    fullrbf more likely&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think the first three of those are fairly straightforward and objective,&lt;br/&gt;&amp;gt; at least at this point in time. The last is just a risk; but without&lt;br/&gt;&amp;gt; any counterbalancing benefit, why take it?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Gaining a few thousand sats due to high feerate replacement txs from&lt;br/&gt;&amp;gt; people exploiting zeroconf services for a few months before all those&lt;br/&gt;&amp;gt; services shutdown doesn&amp;#39;t make up for the lost fee income over the months&lt;br/&gt;&amp;gt; or years it might have otherwise taken people to naturally switch to&lt;br/&gt;&amp;gt; some better alternative.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Even if fullrbf worked for preventing pinning that likely doesn&amp;#39;t directly&lt;br/&gt;&amp;gt; result in much additional fee income: once you know that pinning doesn&amp;#39;t&lt;br/&gt;&amp;gt; work, you just don&amp;#39;t try it, which means there&amp;#39;s no opportunity for&lt;br/&gt;&amp;gt; miners to profit from a bidding war from the pinners counterparties&lt;br/&gt;&amp;gt; repeatedly RBFing their preferred tx to get it mined.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That also excludes second order risks: if you can&amp;#39;t do zeroconf with BTC&lt;br/&gt;&amp;gt; anymore, do you switch to ERC20 tokens, and then trade your BTC savings&lt;br/&gt;&amp;gt; for ETH or USDT, and do enough people do that to lower the price of BTC?&lt;br/&gt;&amp;gt; If investors see BTC being less used for payments, does that lower their&lt;br/&gt;&amp;gt; confidence in bitcoin&amp;#39;s future, and cause them to sell?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Removing a&lt;br/&gt;&amp;gt; &amp;gt; quite-likely-incentive-compatible option from the software just&lt;br/&gt;&amp;gt; encourages&lt;br/&gt;&amp;gt; &amp;gt; miners to adopt an additional patch&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Why shouldn&amp;#39;t miners adopt an additional patch if they want some unusual&lt;br/&gt;&amp;gt; functionality?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Don&amp;#39;t we want/expect miners to have the ability to change the code in&lt;br/&gt;&amp;gt; meaningful ways, at a minimum to be able to cope with the scenario where&lt;br/&gt;&amp;gt; core somehow gets coopted and releases bad code, or to be able to deal&lt;br/&gt;&amp;gt; with the case where an emergency patch is needed?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Is there any evidence miners even want this option? Peter suggested&lt;br/&gt;&amp;gt; that some non-signalling replacements were being mined already [0], but&lt;br/&gt;&amp;gt; as far as I can see [1] all of those are simply due to the transaction&lt;br/&gt;&amp;gt; they replaced not having propagated in the first place (or having been&lt;br/&gt;&amp;gt; evicted somehow? hard to tell without any data on the original tx).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-October/021012.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-October/021012.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/26287#issuecomment-1292692367&#34;&gt;https://github.com/bitcoin/bitcoin/pull/26287#issuecomment-1292692367&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 2) Forcing miners to honor fees left on the table with respect to 0-conf,&lt;br/&gt;&amp;gt; &amp;gt; or forcing them to run a custom patchset to go around it, is a step&lt;br/&gt;&amp;gt; &amp;gt; backwards.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As you already acknowledged, any miner that wants this behaviour can just&lt;br/&gt;&amp;gt; pick up the patch (or could run Knots, which already has the feature&lt;br/&gt;&amp;gt; enabled by default). It&amp;#39;s simply false to say miners are being forced&lt;br/&gt;&amp;gt; to do anything, no matter what we do here.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If the direction you&amp;#39;re facing is one where you&amp;#39;re moving towards making&lt;br/&gt;&amp;gt; life easier for people to commit fraud, and driving away businesses&lt;br/&gt;&amp;gt; that aren&amp;#39;t doing anyone harm, without achieving anything much else;&lt;br/&gt;&amp;gt; then taking a step backwards seems like a sensible thing to do to me.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (I remain optimistic about coming up with better RBF policy, and willing&lt;br/&gt;&amp;gt; to be gung ho about everyone switching over to it even if it does kill&lt;br/&gt;&amp;gt; off zeroconf, provided it actually does some good and we give people 6&lt;br/&gt;&amp;gt; months or more notice that it&amp;#39;s definitely happening and what exactly&lt;br/&gt;&amp;gt; the new rules will be, though)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; aj&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221102/a1614798/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221102/a1614798/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:16:15&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0p0sgkfqxtsjyh7zclqvuplkez6a5kr8qf37tk3k4tv435hn2msczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjq4kwff</id>
    
      <title type="html">📅 Original date posted:2022-11-02 📝 Original message:My ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0p0sgkfqxtsjyh7zclqvuplkez6a5kr8qf37tk3k4tv435hn2msczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjq4kwff" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs06n6t8tqzr2gag3xsu3tffm40zhpynsqenhzd6uavd4hc8uekp8sv2wyzz&#39;&gt;nevent1q…wyzz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-11-02&lt;br/&gt;📝 Original message:My idea, which I hated and didn&amp;#39;t propose, was to mark utxos specifically&lt;br/&gt;for this exact purpose, but this is extremely ugly from a wallet/consensus&lt;br/&gt;perspective. nVersion is cleaner(well, except the below issue), at the cost&lt;br/&gt;of forcibly marking all utxos in a transaction the same way.&lt;br/&gt;&lt;br/&gt;&amp;gt; On the validation-side, there is one engineering issue, as I think there&lt;br/&gt;is no access to the spent nversion fields by the mempool logic.&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t think Core tracks this value in the utxo set either, because&lt;br/&gt;currently there&amp;#39;s no use-case for it today? Am I mistaken?&lt;br/&gt;&lt;br/&gt;/**&lt;br/&gt; * A UTXO entry.&lt;br/&gt; *&lt;br/&gt; * Serialized format:&lt;br/&gt; * - VARINT((coinbase ? 1 : 0) | (height &amp;lt;&amp;lt; 1))&lt;br/&gt; * - the non-spent CTxOut (via TxOutCompression)&lt;br/&gt; */&lt;br/&gt;&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Wed, Nov 2, 2022 at 6:27 AM Antoine Riard via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Reading Suhas&amp;#39;s post on mempool policy consistency rules, and the grounded&lt;br/&gt;&amp;gt; suggestion that as protocol developers we should work on special policy&lt;br/&gt;&amp;gt; rules to support each reasonable use case on the network rather to arbiter&lt;br/&gt;&amp;gt; between class of use-cases in the design of an&lt;br/&gt;&amp;gt; unified set of rules, reminded me there is another solution to solve&lt;br/&gt;&amp;gt; multi-party funding pinning rather than wide deployment of fullrbf. This&lt;br/&gt;&amp;gt; was communicated to me a while back, and it was originally dismissed&lt;br/&gt;&amp;gt; because of the privacy trade-offs (and potential slight fees overhead&lt;br/&gt;&amp;gt; cost). However, if widely adopted, they might sound acceptable to&lt;br/&gt;&amp;gt; contracting protocol developers and operators.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## The Problem: Pinning Contracting Protocols Funding Flows with Opt-out&lt;br/&gt;&amp;gt; Double-Spend&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As originally laid out [0], multi-party collaborative flows&lt;br/&gt;&amp;gt; (coinjoin/dual-funding/swaps/splicing/etc), where every participant&lt;br/&gt;&amp;gt; contributes at least one input, are suffering from a low-cost and&lt;br/&gt;&amp;gt; high-success DoS vector with asymmetric damages. E.g with lightning&lt;br/&gt;&amp;gt; interactive transaction construction protocols limits of 252 inputs, 1&lt;br/&gt;&amp;gt; single input can bleed the timevalue of the remaining 251 inputs, or engage&lt;br/&gt;&amp;gt; in a MEV attack where the fee-bumping entity is lured to inflate feerate&lt;br/&gt;&amp;gt; beyond the current blockspace demand. The attack can be hidden and a&lt;br/&gt;&amp;gt; posteriori assigning blame consistently stays an open question in the lack&lt;br/&gt;&amp;gt; of a consensus mechanism between participants on the network mempools&lt;br/&gt;&amp;gt; states.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The issue lies in the fact that participants joining inputs together don&amp;#39;t&lt;br/&gt;&amp;gt; have control, or even view, of the replacement signaling of any potential&lt;br/&gt;&amp;gt; double-spend of the other participants inputs. Indeed the opt-in fullrbf&lt;br/&gt;&amp;gt; signaling is enforced based on the nSequence field, and this one is fully&lt;br/&gt;&amp;gt; malleable by the UTXO spender. There is no current mechanism to require&lt;br/&gt;&amp;gt; replacement signaling provable to a third-party only on the knowledge of&lt;br/&gt;&amp;gt; the UTXO spents.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # The Solution: Opt-in Full-Replace-by-Fee Spent-nVersion Signaling&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A new policy is specified in a new way a transaction can signal that it is&lt;br/&gt;&amp;gt; replaceable.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. A confirmed transaction is considered to have opted in to allowing&lt;br/&gt;&amp;gt; replacement of any of its spends (or their descendants), if the last bit of&lt;br/&gt;&amp;gt; the nVersion field is set.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Rational: The future replacement status of any UTXO spend can be&lt;br/&gt;&amp;gt; determined by inspecting the nVersion, therefore protecting the&lt;br/&gt;&amp;gt; collaborative participants of a multi-party flows that the target&lt;br/&gt;&amp;gt; transaction should propagate to the miners, if the fee/feerate offered are&lt;br/&gt;&amp;gt; the best ones without opt-out based pinning. It can be required the UTXOs&lt;br/&gt;&amp;gt; to have few confirmations in case of shallow reorgs to increase DoS&lt;br/&gt;&amp;gt; protection.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Solution trade-offs&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On the validation-side, there is one engineering issue, as I think there&lt;br/&gt;&amp;gt; is no access to the spent nversion fields by the mempool logic. This would&lt;br/&gt;&amp;gt; presume we add some new cache of all the confirmed UTXOs, so ~50M * 4bytes,&lt;br/&gt;&amp;gt; 300 MB of additional state for policy-enforcing full-nodes. I don&amp;#39;t know if&lt;br/&gt;&amp;gt; there is another strong drawback, even the reorg logic the replaceable&lt;br/&gt;&amp;gt; spends shouldn&amp;#39;t be evicted if the confirmed ancestor is back to the&lt;br/&gt;&amp;gt; mempool, as mempool validity shouldn&amp;#39;t be reevaluated before a replacement&lt;br/&gt;&amp;gt; candidate shows up. A fee penalty could be requested for nVersion-signaling&lt;br/&gt;&amp;gt; transactions to compensate for the additional state stored by full-node&lt;br/&gt;&amp;gt; operators (even if obviously they&amp;#39;re not the ones earning the fees).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For the contracting protocols wallets, as you don&amp;#39;t know in advance which&lt;br/&gt;&amp;gt; coins are going to be used for a collaborative flow, you&amp;#39;re better off to&lt;br/&gt;&amp;gt; mark all your coins nVersion fields opting fullrbf. Otherwise, you will&lt;br/&gt;&amp;gt; have to go through an on-chain fee cost to change the replacement status of&lt;br/&gt;&amp;gt; the spends of your coins. However, this policy bookmarking comes as a&lt;br/&gt;&amp;gt; protocol fingerprint leak for an observer of the transaction logs. If all&lt;br/&gt;&amp;gt; the second-layers used by default, this is constituting a single anonymity&lt;br/&gt;&amp;gt; set, though it might still be the privacy gains we&amp;#39;re harvesting from&lt;br/&gt;&amp;gt; Taproot output usage in the optimistic case (e.g in Lightning no commitment&lt;br/&gt;&amp;gt; &#43; HTLC transactions broadcast).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For the zeroconf operators, assuming they have access to the UTXO set,&lt;br/&gt;&amp;gt; they can inspect the receiving transactions ancestors nVersion fields, and&lt;br/&gt;&amp;gt; sort those transactions in the wider set of the replaceable ones, as&lt;br/&gt;&amp;gt; they&amp;#39;re currently doing for BIP125 opt-in ones.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Long-term, the annoying privacy issue and the assumption that any wallet&lt;br/&gt;&amp;gt; will be a Lightning one could lead to the majority of wallets signaling RBF&lt;br/&gt;&amp;gt; for their spends. Therefore making those wallets incompatible with zeroconf&lt;br/&gt;&amp;gt; services, slowly economically outlawing them. From my perspective, though&lt;br/&gt;&amp;gt; it might be a simplification, it sounds an alternative full rbf way&lt;br/&gt;&amp;gt; forward, where rather than having miners deciding on the policy&lt;br/&gt;&amp;gt; enforcement, we let the users decide with their coins. However, this new&lt;br/&gt;&amp;gt; policy enforcement efficiency is still dependent on the existence of relay&lt;br/&gt;&amp;gt; paths and support at the endpoints that matter, the miner mempools. So in&lt;br/&gt;&amp;gt; fine we might have to realize incentive alignment with hashrate is what&lt;br/&gt;&amp;gt; matters in terms of transaction-relay rules ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Credit to Greg Maxwell for this idea.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-May/003033.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-May/003033.html&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221102/70b6a272/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221102/70b6a272/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:16:11&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd7l4vj3p99seydwdgf7rzrnwq5tfqq2pllh39czy842sveve3vwczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjaqu9t0</id>
    
      <title type="html">📅 Original date posted:2022-10-27 📝 Original message:To add ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd7l4vj3p99seydwdgf7rzrnwq5tfqq2pllh39czy842sveve3vwczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjaqu9t0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq7q5w8nkd4q89mrf26e7d42p6apwadurcsux8qmgr53gu8q9umvs05k3e4&#39;&gt;nevent1q…k3e4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-10-27&lt;br/&gt;📝 Original message:To add a wrinkle, or possibly a confirmation of your long message, up to&lt;br/&gt;readers to decipher, there historically has been at least one more RBF&lt;br/&gt;related option that was included, then removed later in Core.&lt;br/&gt;&lt;br/&gt;Introduced as &amp;#34;permitrbf&amp;#34; in b768108d9c0b83330572711aef1e569543130d5e with&lt;br/&gt;default &amp;#34;true&amp;#34;, later renamed to &amp;#34;replacebyfee&amp;#34;, then finally as&lt;br/&gt;&amp;#34;mempoolreplacement&amp;#34;.&lt;br/&gt;&lt;br/&gt;It was later removed in 8053e5cdade87550f0381d51feab81dedfec6c46 with the&lt;br/&gt;message:&lt;br/&gt;&lt;br/&gt;&amp;#34;&lt;br/&gt;Remove -mempoolreplacement to prevent needless block prop slowness.&lt;br/&gt;&lt;br/&gt;    At this point there is no reasonable excuse to disable opt-in RBF,&lt;br/&gt;    and, unlike when this option was added, there are now significant&lt;br/&gt;    issues created when disabling it (in the form of compact block&lt;br/&gt;    reconstruction failures). Further, it breaks a lot of modern wallet&lt;br/&gt;    behavior.&lt;br/&gt;&amp;#34;&lt;br/&gt;&lt;br/&gt;So there is some precedence to including an option that protocol devs don&amp;#39;t&lt;br/&gt;find useful, then removing it N years later to make sure it doesn&amp;#39;t impact&lt;br/&gt;compact blocks.&lt;br/&gt;&lt;br/&gt;Peering into the &amp;#34;precedence&amp;#34; lense, I think this does lend itself to the&lt;br/&gt;theory that the transition should be as uniform as possible to avoid&lt;br/&gt;degradation of fast block propagation. If not removing options(which is&lt;br/&gt;deemed user hostile by a number of folks including me), then at least for a&lt;br/&gt;flag day switchover.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Wed, Oct 26, 2022 at 7:53 PM Anthony Towns via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi *,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; TLDR: Yes, this post is too long, and there&amp;#39;s no TLDR. If it&amp;#39;s any&lt;br/&gt;&amp;gt; consolation, it took longer to write than it does to read?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Tue, Jun 15, 2021 at 12:55:14PM -0400, Antoine Riard via bitcoin-dev&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; Subject: Re: [bitcoin-dev] Proposal: Full-RBF in Bitcoin Core 24.0&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;m writing to propose deprecation of opt-in RBF in favor of full-RBF&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If there is ecosystem agreement on switching to full-RBF, but 0.24 sounds&lt;br/&gt;&amp;gt; &amp;gt; too early, let&amp;#39;s defer it to 0.25 or 0.26. I don&amp;#39;t think Core has a&lt;br/&gt;&amp;gt; &amp;gt; consistent deprecation process w.r.t to policy rules heavily relied-on by&lt;br/&gt;&amp;gt; &amp;gt; Bitcoin users, if we do so let sets a precedent satisfying as many folks&lt;br/&gt;&amp;gt; as&lt;br/&gt;&amp;gt; &amp;gt; we can.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One precedent that seems to be being set here, which to me seems fairly&lt;br/&gt;&amp;gt; novel for bitcoin core, is that we&amp;#39;re about to start supporting and&lt;br/&gt;&amp;gt; encouraging nodes to have meaningfully different mempool policies. From&lt;br/&gt;&amp;gt; what I&amp;#39;ve seen, the baseline expectation has always been that while&lt;br/&gt;&amp;gt; certainly mempools can and will differ, policies will be largely the same:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   Firstly, there is no &amp;#34;the mempool&amp;#34;. There is no global mempool. Rather&lt;br/&gt;&amp;gt;   each node maintains its own mempool and accepts and rejects transaction&lt;br/&gt;&amp;gt;   to that mempool using their own internal policies. Most nodes have&lt;br/&gt;&amp;gt;   the same policies, but due to different start times, relay delays,&lt;br/&gt;&amp;gt;   and other factors, not every node has the same mempool, although they&lt;br/&gt;&amp;gt;   may be very similar.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   -&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://bitcoin.stackexchange.com/questions/98585/how-to-find-if-two-transactions-in-mempool-are-conflicting&#34;&gt;https://bitcoin.stackexchange.com/questions/98585/how-to-find-if-two-transactions-in-mempool-are-conflicting&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Up until now, the differences between node policies supported by different&lt;br/&gt;&amp;gt; nodes running core have been quite small, with essentially the following&lt;br/&gt;&amp;gt; options available:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  -minrelaytxfee, -maxmempool - changes the lowest fee rate you&amp;#39;ll accept&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  -mempoolexpiry - how long to keep txs in the mempool&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  -datacarrier - reject txs creating OP_RETURN outputs&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  -datacarriersize - maximum size of OP_RETURN data&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  -permitbaremultisig - prevent relay of bare multisig&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  -bytespersigop - changes how SIGOP accounting works for relay and&lt;br/&gt;&amp;gt;  mining prioritisation&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; as well as these, marked as &amp;#34;debug only&amp;#34; options (only shown with&lt;br/&gt;&amp;gt; -help-debug):&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  -incrementalrelayfee - make it easier/harder to spam txs by only&lt;br/&gt;&amp;gt;  slightly bumping the fee; marked as a &amp;#34;debug only&amp;#34; option&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  -dustrelayfee - make it easier/harder to create uneconomic utxos;&lt;br/&gt;&amp;gt;  marked as a &amp;#34;debug only&amp;#34; option&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  -limit{descendant,ancestor}{count,size} - changes how large the&lt;br/&gt;&amp;gt;  transaction chains can be; marked as a &amp;#34;debug only&amp;#34; option&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; and in theory, but not available on mainnet:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  -acceptnonstdtxn - relay/mine non standard transactions&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There&amp;#39;s also the &amp;#34;prioritisetransaction&amp;#34; rpc, which can cause you to keep&lt;br/&gt;&amp;gt; a low feerate transaction in your mempool longer than you might otherwise.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think that -minrelaytxfee, -maxmempool and -mempoolexpiry are the only&lt;br/&gt;&amp;gt; ones of those options commonly set, and those only rarely result in any&lt;br/&gt;&amp;gt; differences in the txs at the top of the mempool.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There are also quite a few parameters that aren&amp;#39;t even runtime&lt;br/&gt;&amp;gt; configurable:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  - MAX_STANDARD_TX_WEIGHT&lt;br/&gt;&amp;gt;  - MIN_STANDARD_TX_NONWITNESS_SIZE (see also #26265)&lt;br/&gt;&amp;gt;  - MAX_P2SH_SIGOPS (see also #26348)&lt;br/&gt;&amp;gt;  - MAX_STANDARD_TX_SIGOPS_COST&lt;br/&gt;&amp;gt;  - MAX_STANDARD_P2WSH_STACK_ITEMS&lt;br/&gt;&amp;gt;  - MAX_STANDARD_P2WSH_STACK_ITEM_SIZE&lt;br/&gt;&amp;gt;  - MAX_STANDARD_TAPSCRIPT_STACK_ITEM_SIZE&lt;br/&gt;&amp;gt;  - MAX_STANDARD_P2WSH_SCRIPT_SIZE&lt;br/&gt;&amp;gt;  - MAX_STANDARD_SCRIPTSIG_SIZE&lt;br/&gt;&amp;gt;  - EXTRA_DESCENDANT_TX_SIZE_LIMIT&lt;br/&gt;&amp;gt;  - MAX_REPLACEMENT_CANDIDATES&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; And other plausible options aren&amp;#39;t configurable even at compile time&lt;br/&gt;&amp;gt; -- eg, core doesn&amp;#39;t implement BIP 125&amp;#39;s inherited signalling rule so&lt;br/&gt;&amp;gt; there&amp;#39;s no way to enable it; core doesn&amp;#39;t allow opting out of BIP 125&lt;br/&gt;&amp;gt; rule 3 ratchet on absolute fee; core doesn&amp;#39;t allow CPFP carveout with&lt;br/&gt;&amp;gt; more than 1 ancestor; core doesn&amp;#39;t allow opting out of LOW_S checks&lt;br/&gt;&amp;gt; (even via -acceptnonstdtxn); etc.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We also naturally have different mempool policies between different&lt;br/&gt;&amp;gt; releases: eg, expansions of policy, such as allowing OP_RETURN or&lt;br/&gt;&amp;gt; expanding it from 40 to 80 bytes or new soft forks where old nodes won&amp;#39;t&lt;br/&gt;&amp;gt; relay transactions that use the new; and also occassional restrictions&lt;br/&gt;&amp;gt; in policy, such as the LOW_S requirement.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; While supporting and encouraging different mempool polices might be new&lt;br/&gt;&amp;gt; for core, it&amp;#39;s not new for knots: knots changes some of these defaults&lt;br/&gt;&amp;gt; (-permitbaremultisig defaults to false, -datacarriersize is reduced to&lt;br/&gt;&amp;gt; 42), allows the use of -acceptnonstdtxn on mainnet, and introduces new&lt;br/&gt;&amp;gt; options including -spkreuse and -mempoolreplacement (giving the latter&lt;br/&gt;&amp;gt; full rbf behaviour by default). Knots also includes a `-corepolicy`&lt;br/&gt;&amp;gt; option to make it easy to get a configuration matching core&amp;#39;s defaults.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think gmaxwell&amp;#39;s take from Feb 2015 (in the context of how restrictive&lt;br/&gt;&amp;gt; policy on OP_RETURN data should be) was a reasonable description for&lt;br/&gt;&amp;gt; core&amp;#39;s approach up until now:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   There is also a matter of driving competent design rather than lazy&lt;br/&gt;&amp;gt;   first thing that works. E.g. In stealth addresses the early proposals&lt;br/&gt;&amp;gt;   use highly inefficient single ECDH point per output instead of simply&lt;br/&gt;&amp;gt;   pooling them. Network behavior is one of the few bits of friction&lt;br/&gt;&amp;gt;   driving good technical design rather than &amp;#34;move fast, break things, and&lt;br/&gt;&amp;gt;   force everyone else onto my way of doing thing rather than discussing&lt;br/&gt;&amp;gt;   the design in public&amp;#34;. No one wants to be an outright gatekeeper,&lt;br/&gt;&amp;gt;   but the network is a shared resource and it&amp;#39;s perfectly reasonable&lt;br/&gt;&amp;gt;   node behavior to be stingy about the perpetual storage impact of the&lt;br/&gt;&amp;gt;   transactions they&amp;#39;re willing to process, especially when it comes to&lt;br/&gt;&amp;gt;   neutral technical criteria like the amount of network irrelevant data&lt;br/&gt;&amp;gt;   stuffed in transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   There is also a very clear pattern we&amp;#39;ve seen in the past where&lt;br/&gt;&amp;gt;   people take anything the system lets them do as strong evidence that&lt;br/&gt;&amp;gt;   they have a irrevocable right to use the system in that way, and that&lt;br/&gt;&amp;gt;   their only responsibility-- and if their usage harms the system it&amp;#39;s&lt;br/&gt;&amp;gt;   the responsibility of the system to not permit it. [...&lt;br/&gt;&amp;gt;   ...] For mitigating these risks it&amp;#39;s optimal if transactions&lt;br/&gt;&amp;gt;   seem as uniform and indistinguishable as reasonably possible.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   - &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/5286#issuecomment-72564175&#34;&gt;https://github.com/bitcoin/bitcoin/pull/5286#issuecomment-72564175&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Perhaps see also sdaftuar in Nov 2015,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   To me the most important question is, is priority something that miners&lt;br/&gt;&amp;gt;   want to use?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   If a non-negligible amount of hashpower intends to use it in their&lt;br/&gt;&amp;gt;   transaction selection, then I think it makes sense for nodes to use it&lt;br/&gt;&amp;gt;   too, because it&amp;#39;s generally helpful to have your mempool predict the&lt;br/&gt;&amp;gt;   UTXO as much as possible, and for nodes to be able to have reasonable&lt;br/&gt;&amp;gt;   fee and priority estimates (which won&amp;#39;t happen unless they track the&lt;br/&gt;&amp;gt;   priority transactions somehow -- I&amp;#39;m presuming that miners run with&lt;br/&gt;&amp;gt;   much bigger mempools than regular nodes).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   If the answer is no, then that&amp;#39;s fine and I don&amp;#39;t see a reason to push&lt;br/&gt;&amp;gt;   in this direction. I sort of assumed there was enough hashpower mining&lt;br/&gt;&amp;gt;   with priority, since last time I checked estimatepriority was still&lt;br/&gt;&amp;gt;   giving meaningful results for low-ish blockheights, but I haven&amp;#39;t done&lt;br/&gt;&amp;gt;   any kind of real analysis.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   - &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/6992#issuecomment-155969455&#34;&gt;https://github.com/bitcoin/bitcoin/pull/6992#issuecomment-155969455&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; or in June 2019,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   What this PR is proposing is to get rid of a command-line option that is&lt;br/&gt;&amp;gt;   (a) a footgun for users and (b) does not reflect what I believe to be&lt;br/&gt;&amp;gt;   the understanding most users have, which is that [X txs] are expected&lt;br/&gt;&amp;gt;   to propagate well on the network.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   ..&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   I don&amp;#39;t think this rises to the level that Luke is concerned about,&lt;br/&gt;&amp;gt;   namely a prelude to forcing a common relay policy on all nodes. In&lt;br/&gt;&amp;gt;   particular I do agree it makes sense that we offer some ways of&lt;br/&gt;&amp;gt;   customizing policy parameters (eg the mempool size, min relay fee,&lt;br/&gt;&amp;gt;   etc). Instead, I think the justification for this change is that we&lt;br/&gt;&amp;gt;   should not support behaviors we think are harmful to the ecosystem&lt;br/&gt;&amp;gt;   overall and have no legitimate use-case, and we should eliminate ways&lt;br/&gt;&amp;gt;   that users might inadvertently shoot themselves in the foot.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   - &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/16171#issuecomment-500393271&#34;&gt;https://github.com/bitcoin/bitcoin/pull/16171#issuecomment-500393271&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (or see discussion in &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/7219&#34;&gt;https://github.com/bitcoin/bitcoin/pull/7219&lt;/a&gt;)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t mean to imply the above are saying &amp;#34;there&amp;#39;s one way to do&lt;br/&gt;&amp;gt; things and it&amp;#39;s this way&amp;#34;, or that the old way of doing things should&lt;br/&gt;&amp;gt; necessarily be the way we keep doing things. Just that previously core&lt;br/&gt;&amp;gt; has tended towards designing a single policy that works as well as it&lt;br/&gt;&amp;gt; can for everyone and the ecosystem as a whole. (I&amp;#39;m also not saying that&lt;br/&gt;&amp;gt; fullrbf can&amp;#39;t work well for everyone or the ecosystem as a whole)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; By contrast, I think the most common response to pushback against the&lt;br/&gt;&amp;gt; full rbf option has been along the lines of &amp;#34;it&amp;#39;s just an option, we&lt;br/&gt;&amp;gt; don&amp;#39;t want to force people&amp;#34;, eg:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   Blaming the default false -mempoolfullrbf option for a full RBF network&lt;br/&gt;&amp;gt;   would be holding Bitcoin Core developers responsible for the decisions&lt;br/&gt;&amp;gt;   of individual node operators and miners. I don&amp;#39;t think having the&lt;br/&gt;&amp;gt;   option (again, default false) can directly cause a full RBF network,&lt;br/&gt;&amp;gt;   and likewise, I don&amp;#39;t think removing this option removes the &amp;#34;risk&amp;#34;&lt;br/&gt;&amp;gt;   of a full RBF network.&lt;br/&gt;&amp;gt;    - glozow&lt;br/&gt;&amp;gt;      &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/26287#issuecomment-1274949400&#34;&gt;https://github.com/bitcoin/bitcoin/pull/26287#issuecomment-1274949400&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   NACK. This is a default false option.&lt;br/&gt;&amp;gt;    - achow101&lt;br/&gt;&amp;gt;      &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/26287#issuecomment-1274953204&#34;&gt;https://github.com/bitcoin/bitcoin/pull/26287#issuecomment-1274953204&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   Erecting artificial barriers to prevent or make it difficult for users&lt;br/&gt;&amp;gt;   to do what they want to do, is not appropriate behaviour.&lt;br/&gt;&amp;gt;    - luke-jr&lt;br/&gt;&amp;gt;      &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/26287#issuecomment-1290721905&#34;&gt;https://github.com/bitcoin/bitcoin/pull/26287#issuecomment-1290721905&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   I&amp;#39;m in general against removing options.&lt;br/&gt;&amp;gt;    - instagibbs&lt;br/&gt;&amp;gt;      &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/26287#issuecomment-1292030700&#34;&gt;https://github.com/bitcoin/bitcoin/pull/26287#issuecomment-1292030700&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think this differs from what core has done in the past, in that&lt;br/&gt;&amp;gt; previously we&amp;#39;ve tried to ensure a new policy is good for everyone (or as&lt;br/&gt;&amp;gt; nearly as it can be), and then enabled it as soon as it&amp;#39;s implemented.&lt;br/&gt;&amp;gt; Any options that have been added have either been to control resource&lt;br/&gt;&amp;gt; usage in ways that don&amp;#39;t significantly effect tx propagation, to&lt;br/&gt;&amp;gt; allow people to revert to the old behaviour when the new behaviour is&lt;br/&gt;&amp;gt; controversial (eg the -mempoolreplacement=0 option from 0.12 to 0.18),&lt;br/&gt;&amp;gt; and to make it easier to test/debug the implementation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Giving people a new relay behaviour they can opt-in to when we aren&amp;#39;t&lt;br/&gt;&amp;gt; confident enough to turn on by default doesn&amp;#39;t match the approach I&amp;#39;ve&lt;br/&gt;&amp;gt; seen core take in the past.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If this is going to be an ongoing shift in how core sees relay/mempool&lt;br/&gt;&amp;gt; policy, I think that&amp;#39;s significant and worth paying attention to.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t think it&amp;#39;s necessary to have that shift to roll out full rbf.&lt;br/&gt;&amp;gt; The other approach would be either:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * set -mempoolfullrbf=true as the default for 24.0, and just have the&lt;br/&gt;&amp;gt;    command line param there in case people want to do a&lt;br/&gt;&amp;gt;    &amp;#34;UserRejectedMempoolPolicy&amp;#34; campaign to get everyone to opt-out&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * revert it for now because we don&amp;#39;t think mainnet is ready for fullrbf&lt;br/&gt;&amp;gt;    yet, and introduce it as default true for 25.0 or 26.0 or 27.0 or&lt;br/&gt;&amp;gt;    to activate at some scheduled date in that timeframe (potentially&lt;br/&gt;&amp;gt;    backporting it to previous releases to help with adoption too,&lt;br/&gt;&amp;gt;    whatever). same effect as the previous option, just with a bit more&lt;br/&gt;&amp;gt;    advanced notice and time to prepare&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t think anyone&amp;#39;s proposed the first (which I interpret as &amp;#34;most of&lt;br/&gt;&amp;gt; us don&amp;#39;t think mainnet is ready for fullrbf today&amp;#34;), but the comments&lt;br/&gt;&amp;gt; above are all pushback by people arguing against (the first step of)&lt;br/&gt;&amp;gt; the second approach, and they seem to be winning the day.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It&amp;#39;s also possible that this is something of a one time thing: full rbf&lt;br/&gt;&amp;gt; has been controversial for ages, but widely liked by devs, and other&lt;br/&gt;&amp;gt; attempts (eg making it available in knots) haven&amp;#39;t actually achieved&lt;br/&gt;&amp;gt; much of a result in practice. So maybe this is just a special case and&lt;br/&gt;&amp;gt; not a precedent, and when people propose other default false options,&lt;br/&gt;&amp;gt; there will be substantially more resistance to them being merged,&lt;br/&gt;&amp;gt; despite all the talk about users having options that&amp;#39;s going on right now.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Assuming it is the change of direction it appears to be -- and all of&lt;br/&gt;&amp;gt; the above is really just justification for that assumption -- then like&lt;br/&gt;&amp;gt; I said, I think it&amp;#39;s worth seriously considering what it means for people&lt;br/&gt;&amp;gt; to choose their own relay/mempool policies and for you to expect to have&lt;br/&gt;&amp;gt; different mempool policies to many or most of your potential peers.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One thing maybe worth noting is that is that you can still only choose&lt;br/&gt;&amp;gt; your policy from options that people write code for -- if it wasn&amp;#39;t&lt;br/&gt;&amp;gt; something you could get by running knots or compiling a rejected PR&lt;br/&gt;&amp;gt; yourself, it won&amp;#39;t magically become more possible now.  Presumably it&lt;br/&gt;&amp;gt; would mean that once a PR is written, it might get better review (rather&lt;br/&gt;&amp;gt; than being dismissed as not suitable for everyone), and there would be&lt;br/&gt;&amp;gt; less maintenance burden than if it had to be manually rebased every&lt;br/&gt;&amp;gt; release, though (or at least the maintenance burden would be shared&lt;br/&gt;&amp;gt; across everyone working on the codebase).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The second thing is that whatever your relay policy is, you still&lt;br/&gt;&amp;gt; need a path all the way to miners through nodes that will accept your&lt;br/&gt;&amp;gt; transaction at every step. If you&amp;#39;re making your mempool more restrictive&lt;br/&gt;&amp;gt; (eg -permitbaremultisig=0, -datacarrier=0), that&amp;#39;s easy for you (though&lt;br/&gt;&amp;gt; you&amp;#39;re making life more difficult for people who do create those sorts&lt;br/&gt;&amp;gt; of txs); but if you want a more permissive policy (package relay,&lt;br/&gt;&amp;gt; version-3-rbf, full-rbf), you might need to do some work.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The cutoff for that is probably something like &amp;#34;do 30% of listening&lt;br/&gt;&amp;gt; nodes have a compatible policy&amp;#34;? If they do, then you&amp;#39;ll have about a&lt;br/&gt;&amp;gt; 95% chance of having at least one of your outbound peers accept your tx,&lt;br/&gt;&amp;gt; just by random chance. If erlay allows increasing your outbound count to&lt;br/&gt;&amp;gt; 12 connections instead of 8; that might reduce down to needing just 20%&lt;br/&gt;&amp;gt; of listening nodes (~93%).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But for cases where less than 30% (20%) of network supports your preferred&lt;br/&gt;&amp;gt; policy, you probably need to do something cleverer.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One approach is to set a service bit and preferentially peer with other&lt;br/&gt;&amp;gt; nodes that advertise that service bit; knots does the first half of this&lt;br/&gt;&amp;gt; for fullrbf, and both halves have been proposed for core in #25600.&lt;br/&gt;&amp;gt; Preferential peering was previously done for the segwit deployment,&lt;br/&gt;&amp;gt; though in that case it was necessary not just for tx propogation but&lt;br/&gt;&amp;gt; also for ensuring block propogation, making it effectively a consensus&lt;br/&gt;&amp;gt; critical issue.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Another approach is having a separate relay network -- eg, lightning nodes&lt;br/&gt;&amp;gt; already have a gossip network, and might want to help their own ecosystem&lt;br/&gt;&amp;gt; by ensuring unilateral channel closes and justice transactions are quickly&lt;br/&gt;&amp;gt; relayed. Using their own gossip network to relay the transaction around,&lt;br/&gt;&amp;gt; and each lightning node adding it to their local bitcoind&amp;#39;s mempool and&lt;br/&gt;&amp;gt; allowing it to propogate (or not) from there as normal, would also be a&lt;br/&gt;&amp;gt; way of allowing transactions to propogate well. It does mean that miners&lt;br/&gt;&amp;gt; would either need to also participate in lightning gossip directly, or&lt;br/&gt;&amp;gt; that miners would need to connect to *many* peers to be confident of&lt;br/&gt;&amp;gt; seeing those transactions (eg, if only 2% of the network would see a&lt;br/&gt;&amp;gt; tx, you&amp;#39;d need to make 228 connections to have a 99% chance of seeing&lt;br/&gt;&amp;gt; the tx). You can&amp;#39;t currently do something like this, because all the&lt;br/&gt;&amp;gt; relay policies are also applied when adding txs to the mempool via RPC,&lt;br/&gt;&amp;gt; and there&amp;#39;s no convenient way to remove txs from the mempool.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A case where something like that might occur is in preventing L2&lt;br/&gt;&amp;gt; transactions from pinning attacks -- so you might have a high-fee,&lt;br/&gt;&amp;gt; low-feerate transaction that&amp;#39;s been widely propogated, sitting in the&lt;br/&gt;&amp;gt; bottom of people&amp;#39;s mempools, and you want to replace it with a smaller,&lt;br/&gt;&amp;gt; higher-feerate transaction, but don&amp;#39;t want to pay a higher absolute fee,&lt;br/&gt;&amp;gt; and are thus blocked by BIP 125 rule 3. Perhaps 98% of the network is&lt;br/&gt;&amp;gt; unwilling to deviate from BIP 125 rule 3 for you; because that would&lt;br/&gt;&amp;gt; make it easy for random griefers to spam their mempool with large txs&lt;br/&gt;&amp;gt; then delete them while only paying a small fee; but your L2 peers may be&lt;br/&gt;&amp;gt; able to decode your replacement transaction and be sure that you aren&amp;#39;t&lt;br/&gt;&amp;gt; going to spam them, and thus will happily relay it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; From a technical point-of-view, that&amp;#39;s largely fine; the downside is it&lt;br/&gt;&amp;gt; increases the centralisation pressure on mining: whether that&amp;#39;s by having&lt;br/&gt;&amp;gt; to connect to substantially more nodes, or having to parse through more&lt;br/&gt;&amp;gt; spam, you can&amp;#39;t just run your mining operation off a standard install&lt;br/&gt;&amp;gt; of bitcoin core anymore, but need to actively opt-in to find all the&lt;br/&gt;&amp;gt; weird unusual ways people are sending transactions around in order to&lt;br/&gt;&amp;gt; actually collect as much in fees as your competitors are.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That&amp;#39;s probably moderately bad for privacy as well -- if lightning or&lt;br/&gt;&amp;gt; coinjoins need special relay rules that most nodes haven&amp;#39;t opted into,&lt;br/&gt;&amp;gt; it&amp;#39;s potentially easy to use that to find the bitcoin nodes on the&lt;br/&gt;&amp;gt; network that are participating in those protocols, and from there to&lt;br/&gt;&amp;gt; either identify the operator, or run a DoS attack to make it hard for you&lt;br/&gt;&amp;gt; to keep doing what you want. Obviously if you&amp;#39;re setting a service bit to&lt;br/&gt;&amp;gt; get better routing, you&amp;#39;ve given up that privacy already. Likewise if the&lt;br/&gt;&amp;gt; government or random vandals are opposed to bitcoin mining, and miners&lt;br/&gt;&amp;gt; have to have special configuration on their nodes that distinguish them&lt;br/&gt;&amp;gt; from regular users, then perhaps that makes it easier to find or shut&lt;br/&gt;&amp;gt; down their operations.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There are a few efficiencies to be gained from similar mempool policies as&lt;br/&gt;&amp;gt; well: more reliable compact block reconstruction (if you&amp;#39;re not missing&lt;br/&gt;&amp;gt; any transactions, you avoid a round-trip) and presumably more efficient&lt;br/&gt;&amp;gt; set reconstruction with erlay. You&amp;#39;ll also waste less bandwidth sending&lt;br/&gt;&amp;gt; transactions that the other node is only going to reject. Both those&lt;br/&gt;&amp;gt; depend on how many transactions are going to rely on unusual mempool&lt;br/&gt;&amp;gt; policies in the first place though.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ariard wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   I know I&amp;#39;ve advocated in the past to turn RBF support by default in&lt;br/&gt;&amp;gt;   the past. Though after gathering a lot of feedbacks, this approach&lt;br/&gt;&amp;gt;   of offering the policy flexiblity to the interested users only and&lt;br/&gt;&amp;gt;   favoring a full-rbf gradual deployment sounds better to me.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   - &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/25353#issuecomment-1157137026&#34;&gt;https://github.com/bitcoin/bitcoin/pull/25353#issuecomment-1157137026&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I guess all the above leads me to think that gradual deployments of&lt;br/&gt;&amp;gt; mempool policies are likely the worse approach: even when they&amp;#39;re not&lt;br/&gt;&amp;gt; hurting anyone, it makes them hard to use during the gradual phase,&lt;br/&gt;&amp;gt; and getting around that comes with worrying compromises on privacy and&lt;br/&gt;&amp;gt; centralisation; and when they are problematic for some, the indeterminate&lt;br/&gt;&amp;gt; nature of a gradual deployment means it&amp;#39;s hard to plan for when that&lt;br/&gt;&amp;gt; risk is going to eventuate.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Theoretically, one way to recover the good parts of core deciding on&lt;br/&gt;&amp;gt; what&amp;#39;s good for the network might be for people outside of core to&lt;br/&gt;&amp;gt; recommend a mempool configuration; then core can just have an option&lt;br/&gt;&amp;gt; to make that easy, similar to &amp;#34;-std=c&#43;&#43;17&amp;#34; for a C&#43;&#43; compiler, and much&lt;br/&gt;&amp;gt; the same as knots&amp;#39; &amp;#34;-corepolicy&amp;#34; option.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Presuming anyone actually wants to take on that job, and listen to the&lt;br/&gt;&amp;gt; concerns of zeroconf businesses, lightning and coinjoin devs, miners, etc;&lt;br/&gt;&amp;gt; and can come up with something that keeps most of them happy, and that&lt;br/&gt;&amp;gt; 70% or 90% of the network ends up just following those recommendations&lt;br/&gt;&amp;gt; because it&amp;#39;s easy, it works, and it&amp;#39;s recommended by all the apps they&lt;br/&gt;&amp;gt; want to use, then that could work great:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * miners don&amp;#39;t need to do anything special, so there&amp;#39;s no new&lt;br/&gt;&amp;gt;    mining centralisation pressure&lt;br/&gt;&amp;gt;  * miners and users don&amp;#39;t reveal what they&amp;#39;re doing with bitcoin by the way&lt;br/&gt;&amp;gt;    they configure their nodes, so there&amp;#39;s no privacy problems&lt;br/&gt;&amp;gt;  * devs can be fairly confident in how they have to design their apps&lt;br/&gt;&amp;gt;    in order to get their transactions to most hashpower&lt;br/&gt;&amp;gt;  * devs don&amp;#39;t have to add new p2p layers to make it happen&lt;br/&gt;&amp;gt;  * at least there&amp;#39;s someone to talk to when you&amp;#39;re trying to figure out&lt;br/&gt;&amp;gt;    how to make some new project possible when it&amp;#39;s inhibited by current&lt;br/&gt;&amp;gt;    relay policies and you don&amp;#39;t have to try to convince everyone to&lt;br/&gt;&amp;gt;    upgrade on your own&lt;br/&gt;&amp;gt;  * core devs just provide options, and don&amp;#39;t have to worry about being&lt;br/&gt;&amp;gt;    seen as gatekeepers&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The &amp;#34;downside&amp;#34; in that scenario is that users/dev aren&amp;#39;t making much&lt;br/&gt;&amp;gt; actual use of all the choices core is offering by making different&lt;br/&gt;&amp;gt; options available; but the upside is that that choice is at least readily&lt;br/&gt;&amp;gt; available should whoever is coming up with these policy become out of&lt;br/&gt;&amp;gt; step with what people actually want.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One thing that might make an approach like that difficult is that core&lt;br/&gt;&amp;gt; has historically been happy to remove options that don&amp;#39;t seem useful&lt;br/&gt;&amp;gt; anymore: eg the ability to turn of BIP 125 support (#16171), and priority&lt;br/&gt;&amp;gt; transactions (#9602). Perhaps that&amp;#39;s fine if you&amp;#39;re trying to actively&lt;br/&gt;&amp;gt; craft a single mempool/relay policy that&amp;#39;s good enough for almost everyone&lt;br/&gt;&amp;gt; (after all, it makes the code simpler and more efficient, and reduces&lt;br/&gt;&amp;gt; the number of footguns); all you&amp;#39;re doing is leaving a minority of people&lt;br/&gt;&amp;gt; who want weird things to run a fork, and that&amp;#39;s going to happen anyway.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But if people are following policy developed outside of core, core&lt;br/&gt;&amp;gt; might well disagree with them and decide &amp;#34;no that&amp;#39;s a stupid policy,&lt;br/&gt;&amp;gt; no one should do that&amp;#34; and remove some feature that others thing should&lt;br/&gt;&amp;gt; continue to be normal. Beyond the examples above, there&amp;#39;s already talk of&lt;br/&gt;&amp;gt; removing the ability to disable fullrbf support in #26305, for instance.&lt;br/&gt;&amp;gt; If that happens, then the people maintaining the policy will instead&lt;br/&gt;&amp;gt; end up maintaining an entire fork of bitcoin core, and all we&amp;#39;ve done&lt;br/&gt;&amp;gt; is transition to people running software from a different repo, and a&lt;br/&gt;&amp;gt; different set of maintainers.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If we&amp;#39;re really going to a world where core&amp;#39;s eager to add new options,&lt;br/&gt;&amp;gt; and reluctant to remove them, at least if anyone at all finds them&lt;br/&gt;&amp;gt; interesting, that&amp;#39;s presumably a non-issue, though.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; aj&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221027/e73c3002/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221027/e73c3002/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:15:57&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsp4jpceztq86r6g4ewx99xnuu4fqwuu9sn0yzu256757avtxv49aszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpje96xcr</id>
    
      <title type="html">📅 Original date posted:2022-10-27 📝 Original message:During ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsp4jpceztq86r6g4ewx99xnuu4fqwuu9sn0yzu256757avtxv49aszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpje96xcr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswppwnnhkms7qd7kgjylxayy0dxqup3mtd6jrwg6vynw36yau68wsv4mfmy&#39;&gt;nevent1q…mfmy&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-10-27&lt;br/&gt;📝 Original message:During off-channel discussion, Suhas made a great point that even with&lt;br/&gt;fullrbf, you can get stuck by bip125 rule#5 pinning if an adversary&lt;br/&gt;controls a number of inputs(4 with default mempool settings).&lt;br/&gt;&lt;br/&gt;Implication being, while we can mitigate rule#3 damage potentially with&lt;br/&gt;fullrbf, we cannot actually make promises about mempool entry beyond quite&lt;br/&gt;small transaction sizes. Adversary has to make 100 transactions, 4 chains&lt;br/&gt;of 25, but it achieves the original pin.&lt;br/&gt;&lt;br/&gt;On Thu, Oct 27, 2022 at 1:44 PM Greg Sanders &amp;lt;gsanders87 at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt; For instance, the double-spend could be low-feerate and large, and&lt;br/&gt;&amp;gt; effectively pin any attempt to replace it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Yes, this is the biggest hole left. You *could* replace it with RBF when&lt;br/&gt;&amp;gt; before you simply could not, so perhaps the pinning door is slightly&lt;br/&gt;&amp;gt; smaller in scenarios where going feerates are significantly higher than min.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Or it could be higher feerate and confirm and B/C have to start all over.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Coinjoins have &amp;#34;blame rounds&amp;#34; exactly for this. Ruling out the above hole&lt;br/&gt;&amp;gt; where you don&amp;#39;t want to pay the 100kvb rule#3 penalty, you can kick the&lt;br/&gt;&amp;gt; griefer out. Without replacement, you likely can not.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Or, A could stall things in the signing phase and B/C have to figure out&lt;br/&gt;&amp;gt; when to give up on the channel with A.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Again, blame rounds solve this.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So to recap, it makes it *possible* to over-bid your griefer, vs simply&lt;br/&gt;&amp;gt; not able to and have funds tied up for weeks(or guess you&amp;#39;re being pinned&lt;br/&gt;&amp;gt; and double-spend your input, which again looks blame-worthy).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Properly replacing rule#3 would give these protocols higher assurances,&lt;br/&gt;&amp;gt; but this is where we&amp;#39;re at now.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Thu, Oct 27, 2022 at 1:35 PM Suhas Daftuar via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I have more to say on this broader topic, but since you&amp;#39;ve brought up&lt;br/&gt;&amp;gt;&amp;gt; this particular example I think it&amp;#39;s worth commenting:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Thu, Oct 27, 2022 at 1:23 PM Anthony Towns via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Is that true? Antoine claims [1] that opt-in RBF isn&amp;#39;t enough to avoid&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; a DoS issue when utxos are jointly funded by untrusting partners, and,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; aiui, that&amp;#39;s the main motivation for addressing this now.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [1]&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-May/003033.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-May/003033.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The scenario he describes is: A, B, C create a tx:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   inputs: A1, B1, C1 [opts in to RBF]&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   fees: normal&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   outputs:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;     [lightning channel, DLC, etc, who knows]&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; they all analyse the tx, and agree it looks great; however just before&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; publishing it, A spams the network with an alternative tx, double&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; spending her input:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   inputs: A1 [does not opt in to RBF]&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   fees: low&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   outputs: A&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; If A gets the timing right, that&amp;#39;s bad for B and C because they&amp;#39;ve&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; populated their mempool with the 1st transaction, while everyone else&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; sees the 2nd one instead; and neither tx will replace the other. B and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; C can&amp;#39;t know that they should just cancel their transaction, eg:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   inputs: B1, C1 [opts in to RBF]&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   fees: 50% above normal&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   outputs:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;     [smaller channel, refund, whatever]&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; and might instead waste time trying to fee bump the tx to get it mined,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; or similar.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; What should folks wanting to do coinjoins/dualfunding/dlcs/etc do to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; solve that problem if they have only opt-in RBF available?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I think this is not a real example of a DoS vector that is available&lt;br/&gt;&amp;gt;&amp;gt; because we support non-rbf signaling transactions. Even in a world where&lt;br/&gt;&amp;gt;&amp;gt; all transactions are replaceable, person A could double-spend their input&lt;br/&gt;&amp;gt;&amp;gt; in a way that is annoying for B and C.  For instance, the double-spend&lt;br/&gt;&amp;gt;&amp;gt; could be low-feerate and large, and effectively pin any attempt to replace&lt;br/&gt;&amp;gt;&amp;gt; it.  Or it could be higher feerate and confirm and B/C have to start all&lt;br/&gt;&amp;gt;&amp;gt; over.  Or, A could stall things in the signing phase and B/C have to figure&lt;br/&gt;&amp;gt;&amp;gt; out when to give up on the channel with A.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; So I find this example to be unconvincing.  Are there any other examples&lt;br/&gt;&amp;gt;&amp;gt; where having a non-replacement policy for some transactions causes problems&lt;br/&gt;&amp;gt;&amp;gt; for protocols people are trying to build?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt;&amp;gt; Suhas&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221027/bd6fd919/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221027/bd6fd919/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:15:54&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswppwnnhkms7qd7kgjylxayy0dxqup3mtd6jrwg6vynw36yau68wszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjx2crgx</id>
    
      <title type="html">📅 Original date posted:2022-10-27 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswppwnnhkms7qd7kgjylxayy0dxqup3mtd6jrwg6vynw36yau68wszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjx2crgx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgrnn9gk65qpjku7yd9gquzztcc4eucks6cd58fw9mscvjkxz5rpgfw999g&#39;&gt;nevent1q…999g&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-10-27&lt;br/&gt;📝 Original message:&amp;gt; For instance, the double-spend could be low-feerate and large, and&lt;br/&gt;effectively pin any attempt to replace it.&lt;br/&gt;&lt;br/&gt;Yes, this is the biggest hole left. You *could* replace it with RBF when&lt;br/&gt;before you simply could not, so perhaps the pinning door is slightly&lt;br/&gt;smaller in scenarios where going feerates are significantly higher than min.&lt;br/&gt;&lt;br/&gt;&amp;gt; Or it could be higher feerate and confirm and B/C have to start all over.&lt;br/&gt;&lt;br/&gt;Coinjoins have &amp;#34;blame rounds&amp;#34; exactly for this. Ruling out the above hole&lt;br/&gt;where you don&amp;#39;t want to pay the 100kvb rule#3 penalty, you can kick the&lt;br/&gt;griefer out. Without replacement, you likely can not.&lt;br/&gt;&lt;br/&gt;&amp;gt; Or, A could stall things in the signing phase and B/C have to figure out&lt;br/&gt;when to give up on the channel with A.&lt;br/&gt;&lt;br/&gt;Again, blame rounds solve this.&lt;br/&gt;&lt;br/&gt;So to recap, it makes it *possible* to over-bid your griefer, vs simply not&lt;br/&gt;able to and have funds tied up for weeks(or guess you&amp;#39;re being pinned and&lt;br/&gt;double-spend your input, which again looks blame-worthy).&lt;br/&gt;&lt;br/&gt;Properly replacing rule#3 would give these protocols higher assurances, but&lt;br/&gt;this is where we&amp;#39;re at now.&lt;br/&gt;&lt;br/&gt;On Thu, Oct 27, 2022 at 1:35 PM Suhas Daftuar via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; I have more to say on this broader topic, but since you&amp;#39;ve brought up this&lt;br/&gt;&amp;gt; particular example I think it&amp;#39;s worth commenting:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Thu, Oct 27, 2022 at 1:23 PM Anthony Towns via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Is that true? Antoine claims [1] that opt-in RBF isn&amp;#39;t enough to avoid&lt;br/&gt;&amp;gt;&amp;gt; a DoS issue when utxos are jointly funded by untrusting partners, and,&lt;br/&gt;&amp;gt;&amp;gt; aiui, that&amp;#39;s the main motivation for addressing this now.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [1]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-May/003033.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-May/003033.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The scenario he describes is: A, B, C create a tx:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;   inputs: A1, B1, C1 [opts in to RBF]&lt;br/&gt;&amp;gt;&amp;gt;   fees: normal&lt;br/&gt;&amp;gt;&amp;gt;   outputs:&lt;br/&gt;&amp;gt;&amp;gt;     [lightning channel, DLC, etc, who knows]&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; they all analyse the tx, and agree it looks great; however just before&lt;br/&gt;&amp;gt;&amp;gt; publishing it, A spams the network with an alternative tx, double&lt;br/&gt;&amp;gt;&amp;gt; spending her input:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;   inputs: A1 [does not opt in to RBF]&lt;br/&gt;&amp;gt;&amp;gt;   fees: low&lt;br/&gt;&amp;gt;&amp;gt;   outputs: A&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If A gets the timing right, that&amp;#39;s bad for B and C because they&amp;#39;ve&lt;br/&gt;&amp;gt;&amp;gt; populated their mempool with the 1st transaction, while everyone else&lt;br/&gt;&amp;gt;&amp;gt; sees the 2nd one instead; and neither tx will replace the other. B and&lt;br/&gt;&amp;gt;&amp;gt; C can&amp;#39;t know that they should just cancel their transaction, eg:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;   inputs: B1, C1 [opts in to RBF]&lt;br/&gt;&amp;gt;&amp;gt;   fees: 50% above normal&lt;br/&gt;&amp;gt;&amp;gt;   outputs:&lt;br/&gt;&amp;gt;&amp;gt;     [smaller channel, refund, whatever]&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; and might instead waste time trying to fee bump the tx to get it mined,&lt;br/&gt;&amp;gt;&amp;gt; or similar.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; What should folks wanting to do coinjoins/dualfunding/dlcs/etc do to&lt;br/&gt;&amp;gt;&amp;gt; solve that problem if they have only opt-in RBF available?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think this is not a real example of a DoS vector that is available&lt;br/&gt;&amp;gt; because we support non-rbf signaling transactions. Even in a world where&lt;br/&gt;&amp;gt; all transactions are replaceable, person A could double-spend their input&lt;br/&gt;&amp;gt; in a way that is annoying for B and C.  For instance, the double-spend&lt;br/&gt;&amp;gt; could be low-feerate and large, and effectively pin any attempt to replace&lt;br/&gt;&amp;gt; it.  Or it could be higher feerate and confirm and B/C have to start all&lt;br/&gt;&amp;gt; over.  Or, A could stall things in the signing phase and B/C have to figure&lt;br/&gt;&amp;gt; out when to give up on the channel with A.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So I find this example to be unconvincing.  Are there any other examples&lt;br/&gt;&amp;gt; where having a non-replacement policy for some transactions causes problems&lt;br/&gt;&amp;gt; for protocols people are trying to build?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt; Suhas&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221027/2af6e755/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221027/2af6e755/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:15:53&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs96pah7k70wezwyw9sx446r56jrrchcrgand5uytdmdmfv0erzguszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj7crm7p</id>
    
      <title type="html">📅 Original date posted:2022-10-18 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs96pah7k70wezwyw9sx446r56jrrchcrgand5uytdmdmfv0erzguszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj7crm7p" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqst0rzm50scrrxh9nxhlq6zpyfzjc4hnwtd5r9z4w8y25rxmwc7fzqdkcefw&#39;&gt;nevent1q…cefw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-10-18&lt;br/&gt;📝 Original message:&amp;gt; does that effectively mark output B as unspendable once the child gets&lt;br/&gt;confirmed?&lt;br/&gt;&lt;br/&gt;Not at all. It&amp;#39;s a normal spend like before, since the parent has been&lt;br/&gt;confirmed. It&amp;#39;s completely unrestricted, not being bound to any&lt;br/&gt;V3/ephemeral anchor restrictions on size, version, etc.&lt;br/&gt;&lt;br/&gt;On Tue, Oct 18, 2022 at 11:47 AM Arik Sosman via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Greg,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thank you very much for sharing your proposal!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think there&amp;#39;s one thing about the second part of your proposal that I&amp;#39;m&lt;br/&gt;&amp;gt; missing. Specifically, assuming the scenario of a v3 transaction with three&lt;br/&gt;&amp;gt; outputs, A, B, and the ephemeral anchor OP_TRUE. If a child transaction&lt;br/&gt;&amp;gt; spends A and OP_TRUE, does that effectively mark output B as unspendable&lt;br/&gt;&amp;gt; once the child gets confirmed? If so, isn&amp;#39;t the implication therefore that&lt;br/&gt;&amp;gt; to safely spend a transaction with an ephemeral anchor, all outputs must be&lt;br/&gt;&amp;gt; spent? Thanks!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Arik&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Tue, Oct 18, 2022, at 6:52 AM, Greg Sanders via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hello Everyone,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Following up on the &amp;#34;V3 Transaction&amp;#34; discussion here&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-September/020937.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-September/020937.html&lt;/a&gt;&lt;br/&gt;&amp;gt; , I would like to elaborate a bit further on some potential follow-on work&lt;br/&gt;&amp;gt; that would make pinning severely constrained in many setups].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; V3 transactions may solve bip125 rule#3 and rule#5 pinning attacks under&lt;br/&gt;&amp;gt; some constraints[0]. This means that when a replacement is to be made and&lt;br/&gt;&amp;gt; propagated, it costs the expected amount of fees to do so. This is a great&lt;br/&gt;&amp;gt; start. What&amp;#39;s left in this subset of pinning is *package limit* pinning. In&lt;br/&gt;&amp;gt; other words, a fee-paying transaction cannot enter the mempool due to the&lt;br/&gt;&amp;gt; existing mempool package it is being added to already being too large in&lt;br/&gt;&amp;gt; count or vsize.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Zooming into the V3 simplified scenario for sake of discussion, though&lt;br/&gt;&amp;gt; this problem exists in general today:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; V3 transactions restrict the package limit of a V3 package to one parent&lt;br/&gt;&amp;gt; and one child. If the parent transaction includes two outputs which can be&lt;br/&gt;&amp;gt; immediately spent by separate parties, this allows one party to disallow a&lt;br/&gt;&amp;gt; spend from the other. In Gloria&amp;#39;s proposal for ln-penalty, this is worked&lt;br/&gt;&amp;gt; around by reducing the number of anchors per commitment transaction to 1,&lt;br/&gt;&amp;gt; and each version of the commitment transaction has a unique party&amp;#39;s key on&lt;br/&gt;&amp;gt; it. The honest participant can spend their version with their anchor and&lt;br/&gt;&amp;gt; package RBF the other commitment transaction safely.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; What if there&amp;#39;s only one version of the commitment transaction, such as in&lt;br/&gt;&amp;gt; other protocols like duplex payment channels, eltoo? What about multi party&lt;br/&gt;&amp;gt; payments?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the package RBF proposal, if the parent transaction is identical to an&lt;br/&gt;&amp;gt; existing transaction in the mempool, the parent will be detected and&lt;br/&gt;&amp;gt; removed from the package proposal. You are then left with a single V3 child&lt;br/&gt;&amp;gt; transaction, which is then proposed for entry into the mempool. In the case&lt;br/&gt;&amp;gt; of another parent output already being spent, this is simply rejected,&lt;br/&gt;&amp;gt; regardless of feerate of the new child.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I have two proposed solutions, of which I strongly prefer the latter:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1) Expand a carveout for &amp;#34;sibling eviction&amp;#34;, where if the new child is&lt;br/&gt;&amp;gt; paying &amp;#34;enough&amp;#34; to bump spends from the same parent, it knocks its sibling&lt;br/&gt;&amp;gt; out of the mempool and takes the one child slot. This would solve it, but&lt;br/&gt;&amp;gt; is a new eviction paradigm that would need to be carefully worked through.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2) Ephemeral Anchors (my real policy-only proposal)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Ephemeral Anchors is a term which means an output is watermarked as an&lt;br/&gt;&amp;gt; output that MUST be spent in a V3 package. We mark this anchor by being the&lt;br/&gt;&amp;gt; bare script `OP_TRUE` and of course make these outputs standard to relay&lt;br/&gt;&amp;gt; and spend with empty witness data.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Also as a simplifying assumption, we require the parent transaction with&lt;br/&gt;&amp;gt; such an output to be 0-fee. This makes mempool reasoning simpler in case&lt;br/&gt;&amp;gt; the child-spend is somehow evicted, guaranteeing the parent will be as well.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Implications:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; a) If the ephemeral anchor MUST be spent, we can allow *any* value, even&lt;br/&gt;&amp;gt; dust, even 0, without worrying about bloating the utxo set. We relax this&lt;br/&gt;&amp;gt; policy for maximum smart contract flexibility and specification simplicity..&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; b) Since this anchor MUST be spent, any spending of other outputs in the&lt;br/&gt;&amp;gt; same parent transaction MUST directly double-spend prior spends of the&lt;br/&gt;&amp;gt; ephemeral anchor. This causes the 1 block CSV timelock on outputs to be&lt;br/&gt;&amp;gt; removed in these situations. This greatly magnifies composability of smart&lt;br/&gt;&amp;gt; contracts, as now we can do things like safely splice directly into new&lt;br/&gt;&amp;gt; channels, into statechains, your custodial wallet account, your cold&lt;br/&gt;&amp;gt; wallet, wherever, without requiring other wallets to support arbitrary&lt;br/&gt;&amp;gt; scripts. Also it hurts that 1 CSV time locked scripts may not be miniscript&lt;br/&gt;&amp;gt; compatible to begin with...&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; c) *Anyone* can bump the transaction, without any transaction key&lt;br/&gt;&amp;gt; material. This is essentially achieving Jeremy&amp;#39;s Transaction Sponsors (&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-September/018168.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-September/018168.html&lt;/a&gt;)&lt;br/&gt;&amp;gt; proposal without consensus changes. As long as someone gets a fully signed&lt;br/&gt;&amp;gt; parent, they can execute a bump with minimal wallet tooling. If a&lt;br/&gt;&amp;gt; transaction author doesn’t want a “sponsor”, do not include the output.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; d) Lightning Carve-out(&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-October/002240.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-October/002240.html&lt;/a&gt;)&lt;br/&gt;&amp;gt; is superseded by this logic, as we are not restricted to two immediately&lt;br/&gt;&amp;gt; spendable output scenarios. In its place, robust multi-party fee bumping is&lt;br/&gt;&amp;gt; possible.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; e) This also benefits more traditional wallet scenarios, as change outputs&lt;br/&gt;&amp;gt; can no longer be pinned, and RBF/CPFP becomes robust. Payees in simple&lt;br/&gt;&amp;gt; spends cannot pin you. Batched payouts become a lot less painful. This was&lt;br/&gt;&amp;gt; one of the motivating use cases that created the term “pinning” in the&lt;br/&gt;&amp;gt; first place(&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-February/015717.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-February/015717.html&lt;/a&gt;),&lt;br/&gt;&amp;gt; even if LN/L2 discussion has largely overtaken it due to HTLC theft risks.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Open Question(s):&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    1.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    If we allow non-zero value in ephemeral outputs, does this open up a&lt;br/&gt;&amp;gt;    MEV we are worried about? Wallets should toss all the value directly to&lt;br/&gt;&amp;gt;    fees, and add their own additional fees on top, otherwise miners have&lt;br/&gt;&amp;gt;    incentive to make the smallest utxo burn transaction to claim those funds.&lt;br/&gt;&amp;gt;    They just confirmed your parent transaction anyways, so do we care?&lt;br/&gt;&amp;gt;    2.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    SIGHASH_GROUP like constructs would allow uncommitted ephemeral&lt;br/&gt;&amp;gt;    anchors to be added at spend time, depending on spending requirements.&lt;br/&gt;&amp;gt;    SIGHASH_SINGLE already allows this.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hopefully this gives people something to consider as we move forward in&lt;br/&gt;&amp;gt; thinking about mempool design within the constraints we have today.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Greg&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 0: With V3 transactions where you have &amp;#34;veto power&amp;#34; over all the inputs in&lt;br/&gt;&amp;gt; that transaction. Therefore something like ANYONECANPAY is still broken. We&lt;br/&gt;&amp;gt; need a more complex solution, which I’m punting for the sake of progress.&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221018/37eafd3d/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221018/37eafd3d/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:15:30&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfxxjkrr62ydj7y29f2j0gzyfrryhtuylltccl82vunuvac5h2k7czyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjh37vmf</id>
    
      <title type="html">📅 Original date posted:2022-10-19 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfxxjkrr62ydj7y29f2j0gzyfrryhtuylltccl82vunuvac5h2k7czyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjh37vmf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq2s0nrz3hnhwke8wq62p26gfmgqfraup8qgsqsdf8rl3xckp9q3sanytud&#39;&gt;nevent1q…ytud&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-10-19&lt;br/&gt;📝 Original message:Another downside is that the sender may not opt into a non-pinnable future&lt;br/&gt;format like &amp;#34;V3 transactions&amp;#34;, making CPFP difficult. They may spend a lot&lt;br/&gt;of fees to do this however, so maybe we&amp;#39;re really reaching here.&lt;br/&gt;&lt;br/&gt;On Wed, Oct 19, 2022 at 12:07 PM Sergej Kotliar via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; It&amp;#39;s an interesting idea, presumably it would work w the new package relay.&lt;br/&gt;&amp;gt; Scorched earth bidding war is definitely fine to deter this type of abuse.&lt;br/&gt;&amp;gt; Need to consider it more thoroughly from all sides tho. CPFP on the server&lt;br/&gt;&amp;gt; side generally has a couple of downsides:&lt;br/&gt;&amp;gt; * Requires a hot wallet to receive bitcoin&lt;br/&gt;&amp;gt; * an entity that is reliably known to do CPFP can be abused by people&lt;br/&gt;&amp;gt; looking to consolidate utxos, which can be quite costly. Might be solvable&lt;br/&gt;&amp;gt; with a set of conditionals, and bad UX for abusers is less of a concern :)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Will follow up after more deliberation, thanks!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Wed, 19 Oct 2022 at 17:43, Jeremy Rubin &amp;lt;jeremy.l.rubin at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If they do this to you, and the delta is substantial, can&amp;#39;t you sweep all&lt;br/&gt;&amp;gt;&amp;gt; such abusers with a cpfp transaction replacing their package and giving you&lt;br/&gt;&amp;gt;&amp;gt; the original txn?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Wed, Oct 19, 2022, 7:33 AM Sergej Kotliar via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Chiming in on this thread as I feel like the real dangers of RBF as&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; default policy aren&amp;#39;t sufficiently elaborated here. It&amp;#39;s not only about the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; zero-conf (I&amp;#39;ll get to that) but there is an even bigger danger called the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; american call option, which risks endangering the entirety of BIP21 &amp;#34;Scan&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; this QR code with your wallet to buy this product&amp;#34; model that I believe&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; we&amp;#39;ve all come to appreciate. Specifically, in a scenario with high&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; volatility and many transactions in the mempools (which is where RBF would&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; come in handy), a user can make a low-fee transaction and then wait for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; hours, days or even longer, and see whether BTCUSD moves. If BTCUSD moves&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; up, user can cancel his transaction and make a new - cheaper one. The&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; biggest risk in accepting bitcoin payments is in fact not zeroconf risk&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; (it&amp;#39;s actually quite easily managed), it&amp;#39;s FX risk as the merchant must&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; commit to a certain BTCUSD rate ahead of time for a purchase. Over time&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; some transactions lose money to FX and others earn money - that evens out&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; in the end. But if there is an _easily accessible in the wallet_ feature to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;cancel transaction&amp;#34; that means it will eventually get systematically&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; abused. A risk of X% loss on many payments that&amp;#39;s easy to systematically&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; abuse is more scary than a rare risk of losing 100% of one occasional&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; payment. It&amp;#39;s already possible to execute this form of abuse with opt-in&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; RBF, which may lead to us at some point refusing those payments (even with&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; confirmation) or cumbersome UX to work around it, such as crediting the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin to a custodial account.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; To compare zeroconf risk with FX risk: I think we&amp;#39;ve had one incident in&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; 8 years of operation where a user successfully fooled our server to accept&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; a payment that in the end didn&amp;#39;t confirm. To successfully fool (non-RBF)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; zeroconf one needs to have access to mining infrastructure and probability&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; of success is the % of hash rate controlled. This is simply due to the fact&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; that the network currently won&amp;#39;t propagage the replacement transaction to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the miner, which is what&amp;#39;s being discussed here. American call option risk&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; would however be available to 100% of all users, needs nothing beyond the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; wallet app, and has no cost to the user - only upside.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Bitrefill currently processes 1500-2000 onchain payments every day. For&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; us, a world where bitcoin becomes de facto RBF by default, means that we&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; would likely turn off the BIP21 model for onchain payments, instruct&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Bitcoin users to use Lightning or deposit onchain BTC to a custodial&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; account that we have.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This option is however not available for your typical&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; BTCPayServer/CoinGate/Bitpay/IBEX/OpenNode et al. Would be great to hear&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; from other merchants or payment providers how they see this new behavior&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; and how they would counteract it.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Currently Lightning is somewhere around 15% of our total bitcoin&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; payments. This is very much not nothing, and all of us here want Lightning&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to grow, but I think it warrants a serious discussion on whether we want&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Lightning adoption to go to 100% by means of disabling on-chain commerce.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; For me personally it would be an easier discussion to have when Lightning&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; is at 80%&#43; of all bitcoin transactions. Currently far too many bitcoin&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; users simply don&amp;#39;t have access to Lightning, and of those that do and hold&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; their own keys Muun is the biggest wallet per our data, not least due to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; their ease-of-use which is under threat per the OP. It&amp;#39;s hard to assess how&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; many users would switch to Lightning in such a scenario, the communication&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; around it would be hard. My intuition says that the majority of the current&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; 85% of bitcoin users that pay onchain would just not use bitcoin anymore,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; probably shift to an alt. The benefits of Lightning are many and obvious,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; we don&amp;#39;t need to limit onchain to make Lightning more appealing. As an&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; anecdote, we did experiment with defaulting to bech32 addresses some years&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; back. The result was that simply users of the wallets that weren&amp;#39;t able to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; pay to bech32 didn&amp;#39;t complete the purchase, no support ticket or anything,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; just &amp;#34;it didn&amp;#39;t work 🤷‍♂️&amp;#34; and user moved on. We rolled it back, and later&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; implemented a wallet selector to allow modern wallets to pay to bech32&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; while other wallets can pay to P2SH. This type of thing  is clunky, and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; requires a certain level of scale to be able to do, we certainly wouldn&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; have had the manpower for that when we were starting out. This why I&amp;#39;m&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; cautious about introducing more such clunkiness vectors as they are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; centralizing factors.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I&amp;#39;m well aware of the reason for this policy being suggested and the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; potential pinning attack vector for LN and other smart contracts, but I&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; think these two risks/costs need to be weighed against eachother first and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; thoroughly discussed because the costs are non-trivial on both sides.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Sidenote: On the efficacy of RBF to &amp;#34;unstuck&amp;#34; stuck transactions&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; After interacting with users during high-fee periods I&amp;#39;ve come to not&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; appreciate RBF as a solution to that issue. Most users (80% or so) simply&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; don&amp;#39;t have access to that functionality, because their wallet doesn&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; support it, or they use a custodial (exchange) wallet etc. Of those that&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; have the feature - only the power users understand how RBF works, and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; explaining how to do RBF to a non-power-user is just too complex, for the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; same reason why it&amp;#39;s complex for wallets to make sensible non-power-user UI&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; around it. Current equilibrium is that mostly only power users have access&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to RBF and they know how to handle it, so things are somewhat working. But&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; rolling this out to the broad market is something else and would likely&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; cause more confusion.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; CPFP is somewhat more viable but also not perfect as it would require&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; lots of edge case code to handle abuse vectors: What if users abuse a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; generous CPFP policy to unstuck past transactions or consolidate large&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; wallets. Best is for CPFP to be done on the wallet side, not the merchant&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; side, but there too are the same UX issues as with RBF.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; In the end a risk-based approach to decide on which payments are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; non-trivial to reverse is the easiest, taking account user experience and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; such. Remember that in the fiat world card payments have up to 5%&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; chargebacks, whereas we in zero-conf bitcoin land we deal with &amp;#34;fewer than&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; 1 in a million&amp;#34; accepted transactions successfully reversed. These days we&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; have very few support issues related to bitcoin payments. The few that do&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; come in are due to accidental RBF users venting frustration about waiting&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; for their tx to confirm.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;In theory, theory and practice are the same. In practice, they are not&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; All the best,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Sergej Kotliar&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; CEO Bitrefill.com&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Sergej Kotliar&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; CEO&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Twitter: @ziggamon &amp;lt;&lt;a href=&#34;https://twitter.com/ziggamon&amp;gt&#34;&gt;https://twitter.com/ziggamon&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; www.bitrefill.com&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Twitter &amp;lt;&lt;a href=&#34;https://www.twitter.com/bitrefill&amp;gt&#34;&gt;https://www.twitter.com/bitrefill&amp;gt&lt;/a&gt;; | Blog&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://www.bitrefill.com/blog/&amp;gt&#34;&gt;https://www.bitrefill.com/blog/&amp;gt&lt;/a&gt;; | Angellist&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://angel.co/bitrefill&amp;gt&#34;&gt;https://angel.co/bitrefill&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Sergej Kotliar&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; CEO&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Twitter: @ziggamon &amp;lt;&lt;a href=&#34;https://twitter.com/ziggamon&amp;gt&#34;&gt;https://twitter.com/ziggamon&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; www.bitrefill.com&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Twitter &amp;lt;&lt;a href=&#34;https://www.twitter.com/bitrefill&amp;gt&#34;&gt;https://www.twitter.com/bitrefill&amp;gt&lt;/a&gt;; | Blog&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://www.bitrefill.com/blog/&amp;gt&#34;&gt;https://www.bitrefill.com/blog/&amp;gt&lt;/a&gt;; | Angellist&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://angel.co/bitrefill&amp;gt&#34;&gt;https://angel.co/bitrefill&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Sergej Kotliar&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; CEO&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Twitter: @ziggamon &amp;lt;&lt;a href=&#34;https://twitter.com/ziggamon&amp;gt&#34;&gt;https://twitter.com/ziggamon&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; www.bitrefill.com&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Twitter &amp;lt;&lt;a href=&#34;https://www.twitter.com/bitrefill&amp;gt&#34;&gt;https://www.twitter.com/bitrefill&amp;gt&lt;/a&gt;; | Blog&lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://www.bitrefill.com/blog/&amp;gt&#34;&gt;https://www.bitrefill.com/blog/&amp;gt&lt;/a&gt;; | Angellist &amp;lt;&lt;a href=&#34;https://angel.co/bitrefill&amp;gt&#34;&gt;https://angel.co/bitrefill&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221019/f0fed178/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221019/f0fed178/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:14:41&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs80m4mh773xjpqekmehw2w7rp8rwrnjvdea8yjaaasfng24f302xszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjff2syq</id>
    
      <title type="html">📅 Original date posted:2022-10-19 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs80m4mh773xjpqekmehw2w7rp8rwrnjvdea8yjaaasfng24f302xszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjff2syq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0ahcuwje4m84sl967kcskn2w292y23tj22nst3uwhl3yw2pfalusy8fnhf&#39;&gt;nevent1q…fnhf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-10-19&lt;br/&gt;📝 Original message:Isn&amp;#39;t the extreme of this that the merchant tries to lock in gains on the&lt;br/&gt;upswing via CPFP, and users on the downswing, both doing scorched earth,&lt;br/&gt;tossing the delta to fees?&lt;br/&gt;&lt;br/&gt;Seems like a MAD situation?&lt;br/&gt;&lt;br/&gt;On Wed, Oct 19, 2022 at 11:44 AM Jeremy Rubin via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; If they do this to you, and the delta is substantial, can&amp;#39;t you sweep all&lt;br/&gt;&amp;gt; such abusers with a cpfp transaction replacing their package and giving you&lt;br/&gt;&amp;gt; the original txn?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Wed, Oct 19, 2022, 7:33 AM Sergej Kotliar via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Chiming in on this thread as I feel like the real dangers of RBF as&lt;br/&gt;&amp;gt;&amp;gt; default policy aren&amp;#39;t sufficiently elaborated here. It&amp;#39;s not only about the&lt;br/&gt;&amp;gt;&amp;gt; zero-conf (I&amp;#39;ll get to that) but there is an even bigger danger called the&lt;br/&gt;&amp;gt;&amp;gt; american call option, which risks endangering the entirety of BIP21 &amp;#34;Scan&lt;br/&gt;&amp;gt;&amp;gt; this QR code with your wallet to buy this product&amp;#34; model that I believe&lt;br/&gt;&amp;gt;&amp;gt; we&amp;#39;ve all come to appreciate. Specifically, in a scenario with high&lt;br/&gt;&amp;gt;&amp;gt; volatility and many transactions in the mempools (which is where RBF would&lt;br/&gt;&amp;gt;&amp;gt; come in handy), a user can make a low-fee transaction and then wait for&lt;br/&gt;&amp;gt;&amp;gt; hours, days or even longer, and see whether BTCUSD moves. If BTCUSD moves&lt;br/&gt;&amp;gt;&amp;gt; up, user can cancel his transaction and make a new - cheaper one. The&lt;br/&gt;&amp;gt;&amp;gt; biggest risk in accepting bitcoin payments is in fact not zeroconf risk&lt;br/&gt;&amp;gt;&amp;gt; (it&amp;#39;s actually quite easily managed), it&amp;#39;s FX risk as the merchant must&lt;br/&gt;&amp;gt;&amp;gt; commit to a certain BTCUSD rate ahead of time for a purchase. Over time&lt;br/&gt;&amp;gt;&amp;gt; some transactions lose money to FX and others earn money - that evens out&lt;br/&gt;&amp;gt;&amp;gt; in the end. But if there is an _easily accessible in the wallet_ feature to&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;cancel transaction&amp;#34; that means it will eventually get systematically&lt;br/&gt;&amp;gt;&amp;gt; abused. A risk of X% loss on many payments that&amp;#39;s easy to systematically&lt;br/&gt;&amp;gt;&amp;gt; abuse is more scary than a rare risk of losing 100% of one occasional&lt;br/&gt;&amp;gt;&amp;gt; payment. It&amp;#39;s already possible to execute this form of abuse with opt-in&lt;br/&gt;&amp;gt;&amp;gt; RBF, which may lead to us at some point refusing those payments (even with&lt;br/&gt;&amp;gt;&amp;gt; confirmation) or cumbersome UX to work around it, such as crediting the&lt;br/&gt;&amp;gt;&amp;gt; bitcoin to a custodial account.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; To compare zeroconf risk with FX risk: I think we&amp;#39;ve had one incident in&lt;br/&gt;&amp;gt;&amp;gt; 8 years of operation where a user successfully fooled our server to accept&lt;br/&gt;&amp;gt;&amp;gt; a payment that in the end didn&amp;#39;t confirm. To successfully fool (non-RBF)&lt;br/&gt;&amp;gt;&amp;gt; zeroconf one needs to have access to mining infrastructure and probability&lt;br/&gt;&amp;gt;&amp;gt; of success is the % of hash rate controlled. This is simply due to the fact&lt;br/&gt;&amp;gt;&amp;gt; that the network currently won&amp;#39;t propagage the replacement transaction to&lt;br/&gt;&amp;gt;&amp;gt; the miner, which is what&amp;#39;s being discussed here. American call option risk&lt;br/&gt;&amp;gt;&amp;gt; would however be available to 100% of all users, needs nothing beyond the&lt;br/&gt;&amp;gt;&amp;gt; wallet app, and has no cost to the user - only upside.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Bitrefill currently processes 1500-2000 onchain payments every day. For&lt;br/&gt;&amp;gt;&amp;gt; us, a world where bitcoin becomes de facto RBF by default, means that we&lt;br/&gt;&amp;gt;&amp;gt; would likely turn off the BIP21 model for onchain payments, instruct&lt;br/&gt;&amp;gt;&amp;gt; Bitcoin users to use Lightning or deposit onchain BTC to a custodial&lt;br/&gt;&amp;gt;&amp;gt; account that we have.&lt;br/&gt;&amp;gt;&amp;gt; This option is however not available for your typical&lt;br/&gt;&amp;gt;&amp;gt; BTCPayServer/CoinGate/Bitpay/IBEX/OpenNode et al. Would be great to hear&lt;br/&gt;&amp;gt;&amp;gt; from other merchants or payment providers how they see this new behavior&lt;br/&gt;&amp;gt;&amp;gt; and how they would counteract it.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Currently Lightning is somewhere around 15% of our total bitcoin&lt;br/&gt;&amp;gt;&amp;gt; payments. This is very much not nothing, and all of us here want Lightning&lt;br/&gt;&amp;gt;&amp;gt; to grow, but I think it warrants a serious discussion on whether we want&lt;br/&gt;&amp;gt;&amp;gt; Lightning adoption to go to 100% by means of disabling on-chain commerce.&lt;br/&gt;&amp;gt;&amp;gt; For me personally it would be an easier discussion to have when Lightning&lt;br/&gt;&amp;gt;&amp;gt; is at 80%&#43; of all bitcoin transactions. Currently far too many bitcoin&lt;br/&gt;&amp;gt;&amp;gt; users simply don&amp;#39;t have access to Lightning, and of those that do and hold&lt;br/&gt;&amp;gt;&amp;gt; their own keys Muun is the biggest wallet per our data, not least due to&lt;br/&gt;&amp;gt;&amp;gt; their ease-of-use which is under threat per the OP. It&amp;#39;s hard to assess how&lt;br/&gt;&amp;gt;&amp;gt; many users would switch to Lightning in such a scenario, the communication&lt;br/&gt;&amp;gt;&amp;gt; around it would be hard. My intuition says that the majority of the current&lt;br/&gt;&amp;gt;&amp;gt; 85% of bitcoin users that pay onchain would just not use bitcoin anymore,&lt;br/&gt;&amp;gt;&amp;gt; probably shift to an alt. The benefits of Lightning are many and obvious,&lt;br/&gt;&amp;gt;&amp;gt; we don&amp;#39;t need to limit onchain to make Lightning more appealing. As an&lt;br/&gt;&amp;gt;&amp;gt; anecdote, we did experiment with defaulting to bech32 addresses some years&lt;br/&gt;&amp;gt;&amp;gt; back. The result was that simply users of the wallets that weren&amp;#39;t able to&lt;br/&gt;&amp;gt;&amp;gt; pay to bech32 didn&amp;#39;t complete the purchase, no support ticket or anything,&lt;br/&gt;&amp;gt;&amp;gt; just &amp;#34;it didn&amp;#39;t work 🤷‍♂️&amp;#34; and user moved on. We rolled it back, and later&lt;br/&gt;&amp;gt;&amp;gt; implemented a wallet selector to allow modern wallets to pay to bech32&lt;br/&gt;&amp;gt;&amp;gt; while other wallets can pay to P2SH. This type of thing  is clunky, and&lt;br/&gt;&amp;gt;&amp;gt; requires a certain level of scale to be able to do, we certainly wouldn&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt; have had the manpower for that when we were starting out. This why I&amp;#39;m&lt;br/&gt;&amp;gt;&amp;gt; cautious about introducing more such clunkiness vectors as they are&lt;br/&gt;&amp;gt;&amp;gt; centralizing factors.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I&amp;#39;m well aware of the reason for this policy being suggested and the&lt;br/&gt;&amp;gt;&amp;gt; potential pinning attack vector for LN and other smart contracts, but I&lt;br/&gt;&amp;gt;&amp;gt; think these two risks/costs need to be weighed against eachother first and&lt;br/&gt;&amp;gt;&amp;gt; thoroughly discussed because the costs are non-trivial on both sides.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Sidenote: On the efficacy of RBF to &amp;#34;unstuck&amp;#34; stuck transactions&lt;br/&gt;&amp;gt;&amp;gt; After interacting with users during high-fee periods I&amp;#39;ve come to not&lt;br/&gt;&amp;gt;&amp;gt; appreciate RBF as a solution to that issue. Most users (80% or so) simply&lt;br/&gt;&amp;gt;&amp;gt; don&amp;#39;t have access to that functionality, because their wallet doesn&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt; support it, or they use a custodial (exchange) wallet etc. Of those that&lt;br/&gt;&amp;gt;&amp;gt; have the feature - only the power users understand how RBF works, and&lt;br/&gt;&amp;gt;&amp;gt; explaining how to do RBF to a non-power-user is just too complex, for the&lt;br/&gt;&amp;gt;&amp;gt; same reason why it&amp;#39;s complex for wallets to make sensible non-power-user UI&lt;br/&gt;&amp;gt;&amp;gt; around it. Current equilibrium is that mostly only power users have access&lt;br/&gt;&amp;gt;&amp;gt; to RBF and they know how to handle it, so things are somewhat working. But&lt;br/&gt;&amp;gt;&amp;gt; rolling this out to the broad market is something else and would likely&lt;br/&gt;&amp;gt;&amp;gt; cause more confusion.&lt;br/&gt;&amp;gt;&amp;gt; CPFP is somewhat more viable but also not perfect as it would require&lt;br/&gt;&amp;gt;&amp;gt; lots of edge case code to handle abuse vectors: What if users abuse a&lt;br/&gt;&amp;gt;&amp;gt; generous CPFP policy to unstuck past transactions or consolidate large&lt;br/&gt;&amp;gt;&amp;gt; wallets. Best is for CPFP to be done on the wallet side, not the merchant&lt;br/&gt;&amp;gt;&amp;gt; side, but there too are the same UX issues as with RBF.&lt;br/&gt;&amp;gt;&amp;gt; In the end a risk-based approach to decide on which payments are&lt;br/&gt;&amp;gt;&amp;gt; non-trivial to reverse is the easiest, taking account user experience and&lt;br/&gt;&amp;gt;&amp;gt; such. Remember that in the fiat world card payments have up to 5%&lt;br/&gt;&amp;gt;&amp;gt; chargebacks, whereas we in zero-conf bitcoin land we deal with &amp;#34;fewer than&lt;br/&gt;&amp;gt;&amp;gt; 1 in a million&amp;#34; accepted transactions successfully reversed. These days we&lt;br/&gt;&amp;gt;&amp;gt; have very few support issues related to bitcoin payments. The few that do&lt;br/&gt;&amp;gt;&amp;gt; come in are due to accidental RBF users venting frustration about waiting&lt;br/&gt;&amp;gt;&amp;gt; for their tx to confirm.&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;In theory, theory and practice are the same. In practice, they are not&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; All the best,&lt;br/&gt;&amp;gt;&amp;gt; Sergej Kotliar&lt;br/&gt;&amp;gt;&amp;gt; CEO Bitrefill.com&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Sergej Kotliar&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; CEO&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Twitter: @ziggamon &amp;lt;&lt;a href=&#34;https://twitter.com/ziggamon&amp;gt&#34;&gt;https://twitter.com/ziggamon&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; www.bitrefill.com&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Twitter &amp;lt;&lt;a href=&#34;https://www.twitter.com/bitrefill&amp;gt&#34;&gt;https://www.twitter.com/bitrefill&amp;gt&lt;/a&gt;; | Blog&lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://www.bitrefill.com/blog/&amp;gt&#34;&gt;https://www.bitrefill.com/blog/&amp;gt&lt;/a&gt;; | Angellist&lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://angel.co/bitrefill&amp;gt&#34;&gt;https://angel.co/bitrefill&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Sergej Kotliar&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; CEO&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Twitter: @ziggamon &amp;lt;&lt;a href=&#34;https://twitter.com/ziggamon&amp;gt&#34;&gt;https://twitter.com/ziggamon&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; www.bitrefill.com&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Twitter &amp;lt;&lt;a href=&#34;https://www.twitter.com/bitrefill&amp;gt&#34;&gt;https://www.twitter.com/bitrefill&amp;gt&lt;/a&gt;; | Blog&lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://www.bitrefill.com/blog/&amp;gt&#34;&gt;https://www.bitrefill.com/blog/&amp;gt&lt;/a&gt;; | Angellist&lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://angel.co/bitrefill&amp;gt&#34;&gt;https://angel.co/bitrefill&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221019/b5acb142/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221019/b5acb142/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:14:39&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxauyf5gqym8yn7q0a32qlc5duzyp5j7jscd9yaygndktjedxujrqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj2n7vgl</id>
    
      <title type="html">📅 Original date posted:2022-10-17 📝 Original message:AJ, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxauyf5gqym8yn7q0a32qlc5duzyp5j7jscd9yaygndktjedxujrqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj2n7vgl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszx8fv4gvhmfccg7gwprgqnr0kzrjmu069skuys53qashc5mmkvdqfxudd6&#39;&gt;nevent1q…udd6&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-10-17&lt;br/&gt;📝 Original message:AJ,&lt;br/&gt;&lt;br/&gt;Thanks for the latest PR and discussion, even if we know we&amp;#39;re all (very,&lt;br/&gt;very, very) tired of it running almost 10 years now. I think we&amp;#39;re close to&lt;br/&gt;a resolution, (2), or (3) as you note.&lt;br/&gt;&lt;br/&gt;As ariard notes in&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/26323#issuecomment-1280071572&#34;&gt;https://github.com/bitcoin/bitcoin/pull/26323#issuecomment-1280071572&lt;/a&gt; we&lt;br/&gt;seem to have sketched out the sane design space for the transition, so now&lt;br/&gt;it&amp;#39;s time to choose how we want to spend our energy and time on this.&lt;br/&gt;&lt;br/&gt;I do think patch complexity is a real concern, which&lt;br/&gt;means fullrbf-signalling PR has a harder road to deployment and gets push&lt;br/&gt;back from fullrbf-default-now folks who correctly argue this. It seems&lt;br/&gt;useful to &amp;#34;prove a point&amp;#34; on the nature of these schemes, but not much else.&lt;br/&gt;&lt;br/&gt;Personally I have no qualms with kicking back flag-day-fullrbf another&lt;br/&gt;release cycle and 6 additional months to obviate the need for a 24.0&lt;br/&gt;backport(however small!) and to give a bit more time to weigh choices.&lt;br/&gt;People can begin testing with their node software on an opt-in basis(but&lt;br/&gt;not the required ~10% of nodes), 25.0&#43; nodes will flag-day, then a year&lt;br/&gt;from now the community can start testing if miners have picked up said&lt;br/&gt;changes.&lt;br/&gt;&lt;br/&gt;Speaking to no one in particular, there&amp;#39;s no virtue in dragging on the&lt;br/&gt;discussion to &amp;#34;prove a point&amp;#34; to &amp;#34;merchants&amp;#34;/&amp;#34;Core devs&amp;#34; when we could be&lt;br/&gt;spending our time more wisely fixing the many other issues with our mempool&lt;br/&gt;and wallet ecosystem.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Sun, Oct 16, 2022 at 4:09 AM Anthony Towns via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Thu, Oct 13, 2022 at 02:35:22PM &#43;1000, Anthony Towns via bitcoin-dev&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; On Wed, Oct 12, 2022 at 04:11:05PM &#43;0000, Pieter Wuille via bitcoin-dev&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; In my view, it is just what I said: a step towards getting full RBF&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; on the network, by allowing experimentation and socializing the notion&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; that developers believe it is time.&lt;br/&gt;&amp;gt; &amp;gt; We &amp;#34;believe it is time&amp;#34; for what exactly, though? (a) To start&lt;br/&gt;&amp;gt; &amp;gt; deprerecating accepting zeroconf txs on mainnet, over the next 6, 12 or&lt;br/&gt;&amp;gt; &amp;gt; 18 months; or (b) to start switching mainnet mining and relay nodes over&lt;br/&gt;&amp;gt; &amp;gt; to full RBF?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For what it&amp;#39;s worth, that was a serious question: I don&amp;#39;t feel like I&lt;br/&gt;&amp;gt; know what other people&amp;#39;s answer to it is.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Seems to me like there&amp;#39;s fundamentally maybe three approaches:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  1) Continue supporting and encouraging accepting unconfirmed &amp;#34;on-chain&amp;#34;&lt;br/&gt;&amp;gt;     payments indefinitely&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  2) Draw a line in the sand now, but give people who are currently&lt;br/&gt;&amp;gt;     accepting unconfirmed txs time to update their software and business&lt;br/&gt;&amp;gt;     model&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  3) Encourage mainnet miners and relay nodes to support unconditional&lt;br/&gt;&amp;gt;     RBF immediately, no matter how much that increases the risk to&lt;br/&gt;&amp;gt;     existing businesses that are still accepting unconfirmed txs&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think Antoine gave a pretty decent rationale for why we shouldn&amp;#39;t&lt;br/&gt;&amp;gt; indefinitely continue with conditional RBF in [0] [1] -- it makes it&lt;br/&gt;&amp;gt; easy to disrupt decentralised pooling protocols, whether that be for&lt;br/&gt;&amp;gt; establishing lightning channels or coinjoins or anything else.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-May/003033.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-May/003033.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-June/020557.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-June/020557.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It&amp;#39;s also an unstable equilibrium -- if everyone does first-seen-is-final&lt;br/&gt;&amp;gt; at the mempool level, everything is fine; but it only takes a few&lt;br/&gt;&amp;gt; defectors to start relaying and mining full RBF txs to spoil zeroconf&lt;br/&gt;&amp;gt; for everyone -- so even if it were desirable to maintain it forever,&lt;br/&gt;&amp;gt; it&amp;#39;s probably not actually possible to maintain it indefinitely.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If so, that leaves the choice between (2) and (3). You might argue&lt;br/&gt;&amp;gt; that there&amp;#39;s a 4th option: ignore the problem and think about it later;&lt;br/&gt;&amp;gt; but to me that seems like it will just eventually result in outcome (3).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; At least a few people are already running full RBF relay nodes [2] [3]&lt;br/&gt;&amp;gt; [4], and there&amp;#39;s a report that non-signalling RBF txs are now getting&lt;br/&gt;&amp;gt; mined [5] when they weren&amp;#39;t a few months ago [6]. I wasn&amp;#39;t able to&lt;br/&gt;&amp;gt; confirm the latter to my satisfaction: looking at mempool.observer, the&lt;br/&gt;&amp;gt; non-RBF signalling conflicting txs don&amp;#39;t seem to have been consistently&lt;br/&gt;&amp;gt; paying a higher feerate, so I couldn&amp;#39;t rule out the possibility that&lt;br/&gt;&amp;gt; the difference might just be due to inconsistent relaying.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://twitter.com/murchandamus/status/1552488955328831492&#34;&gt;https://twitter.com/murchandamus/status/1552488955328831492&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://twitter.com/LukeDashjr/status/977211607947317254&#34;&gt;https://twitter.com/LukeDashjr/status/977211607947317254&lt;/a&gt;&lt;br/&gt;&amp;gt; [4]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-June/020592.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-June/020592.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [5]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-June/020592.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-June/020592.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [6]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-June/020592.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-June/020592.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems to me that the best approach for implementing (3) would be&lt;br/&gt;&amp;gt; to change the default for -mempoolfullrbf to true immediately, which&lt;br/&gt;&amp;gt; is both what Knots has been doing for years, and what #26305 proposes&lt;br/&gt;&amp;gt; [7].  So from seeing what people are actually *doing*, I could easily&lt;br/&gt;&amp;gt; be convinced that (3) is the goal people are actually working towards.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [7] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/26305&#34;&gt;https://github.com/bitcoin/bitcoin/pull/26305&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But if (3) *is* what we&amp;#39;re really trying to do, I think it&amp;#39;s a bit&lt;br/&gt;&amp;gt; disingenuous to assume that that effort will fail, and tell people that&lt;br/&gt;&amp;gt; nothing&amp;#39;s going to change on mainnet in the near future [8] [9] [10]&lt;br/&gt;&amp;gt; [11]. If pools are starting to allow replacements of txs that didn&amp;#39;t&lt;br/&gt;&amp;gt; signal according to BIP 125 and mine blocks including those replacements,&lt;br/&gt;&amp;gt; then it&amp;#39;s true that zero-conf apps are in much more immediate danger&lt;br/&gt;&amp;gt; than they were a month ago, and as far as I can see, we shouldn&amp;#39;t be&lt;br/&gt;&amp;gt; pretending otherwise.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [8] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/26287#issuecomment-1274953204&#34;&gt;https://github.com/bitcoin/bitcoin/pull/26287#issuecomment-1274953204&lt;/a&gt;&lt;br/&gt;&amp;gt; [9] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/26287#issuecomment-1276682043&#34;&gt;https://github.com/bitcoin/bitcoin/pull/26287#issuecomment-1276682043&lt;/a&gt;&lt;br/&gt;&amp;gt; [10]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-October/020981.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-October/020981.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [11]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-October/021006.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-October/021006.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Personally, I prefer an approach like (2) -- commit to doing something&lt;br/&gt;&amp;gt; first, give people time to prepare for it, and then do it, and outside&lt;br/&gt;&amp;gt; of Knots, I don&amp;#39;t think there&amp;#39;s been any clear commitment to deprecating&lt;br/&gt;&amp;gt; zeroconf txs up until now. But what we&amp;#39;re currently doing is suboptimal&lt;br/&gt;&amp;gt; for that in two ways:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  - there&amp;#39;s no real commitment that the change will actually happen&lt;br/&gt;&amp;gt;  - even if it does, there&amp;#39;s no indication when that will be&lt;br/&gt;&amp;gt;  - it&amp;#39;s not easy to test your apps against the new world order, because&lt;br/&gt;&amp;gt;    it&amp;#39;s not well supported on either testnet or signet, being disabled&lt;br/&gt;&amp;gt;    by default on both those networks&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Dario suggested an approach [12] that seems like it would resolve all&lt;br/&gt;&amp;gt; these issues:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ] This could be one such proposal:&lt;br/&gt;&amp;gt; ] 1. We activate [..] full-RBF on testnet now.&lt;br/&gt;&amp;gt; ] 2. We commit now (in the code) to a block height in the future at&lt;br/&gt;&amp;gt; ]    which [..] full-RBF will activate on mainnet.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (I&amp;#39;ve delted the words &amp;#34;opt-in&amp;#34; and &amp;#34;opt-out&amp;#34; from the quote above,&lt;br/&gt;&amp;gt; because they didn&amp;#39;t make sense to me)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [12]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-October/021007.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-October/021007.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;ve made up a patch along these lines [13]; it&amp;#39;s easy to use a timestamp&lt;br/&gt;&amp;gt; rather than a block height, so I&amp;#39;ve arbitrarily picked 1st May (slightly&lt;br/&gt;&amp;gt; over 6 months away) as the changeover time. If people are willing to&lt;br/&gt;&amp;gt; give zeroconf businesses some time to adapt, including something along&lt;br/&gt;&amp;gt; those lines in 24.0 seems a better approach to me:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * it gives a clear deadline for businesses to adapt, so that they don&amp;#39;t&lt;br/&gt;&amp;gt;    defer it and suddenly complain &amp;#34;oh no, we didn&amp;#39;t think you were&lt;br/&gt;&amp;gt;    serious, please give us more time&amp;#34; later&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * it gives plenty(?) of time to update your code and test it, as well&lt;br/&gt;&amp;gt;    as teach customers and customer support about the new behaviour&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * when the deadline hits, presumably plenty of nodes and miners will&lt;br/&gt;&amp;gt;    immediately start supporting the new behaviour on mainnet, so that&lt;br/&gt;&amp;gt;    protocols can quickly start relying on that method of tx pinning no&lt;br/&gt;&amp;gt;    longer being applicable&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * nodes on signet and testnet will quickly adopt the new behaviour,&lt;br/&gt;&amp;gt;    well before it&amp;#39;s available on mainnet, making testing easier&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [13] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/26323&#34;&gt;https://github.com/bitcoin/bitcoin/pull/26323&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To me, this seems like a good way of achieving what I said previously:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If we&amp;#39;re trying to socialise the idea that zeroconf deprecation is&lt;br/&gt;&amp;gt; &amp;gt; happening and that your business now has a real deadline for migrating&lt;br/&gt;&amp;gt; &amp;gt; away from accepting unconfirmed txs if the risk of being defrauded&lt;br/&gt;&amp;gt; &amp;gt; concerns you, then enabling experimentation on test nets and not touching&lt;br/&gt;&amp;gt; &amp;gt; mainnet until a later release seems fairly fine to me -- similar to&lt;br/&gt;&amp;gt; &amp;gt; activating soft forks on test nets prior to activating it on mainnet.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; aj&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221017/b9415d4b/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221017/b9415d4b/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:14:21&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqst3ngxlxl32anmw5xxeu02hs2mrmmdc36thjdu82qadde8xaf58ggzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj4hzegv</id>
    
      <title type="html">📅 Original date posted:2022-10-07 📝 Original message:David, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqst3ngxlxl32anmw5xxeu02hs2mrmmdc36thjdu82qadde8xaf58ggzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj4hzegv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsw4ekrnuffc0rp7dc7zul0qpe9xzhq4xazj55c6k5xhcj8g4xgtysk9eq7x&#39;&gt;nevent1q…eq7x&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-10-07&lt;br/&gt;📝 Original message:David, Dario,&lt;br/&gt;&lt;br/&gt;The only other effort I&amp;#39;m aware of is&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/25600&#34;&gt;https://github.com/bitcoin/bitcoin/pull/25600&lt;/a&gt; , which as you can see, has&lt;br/&gt;no consensus yet, isn&amp;#39;t in 24.0, so at earliest would be 25.0, even if&lt;br/&gt;somehow immediate resolution to the discussions were found.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Fri, Oct 7, 2022 at 1:21 PM David A. Harding via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On 2022-10-07 06:20, Dario Sneidermanis via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &amp;gt; Hello list,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;m Dario, from Muun wallet [...] we&amp;#39;ve been reviewing the latest&lt;br/&gt;&amp;gt; &amp;gt; bitcoin core release&lt;br/&gt;&amp;gt; &amp;gt; candidate [...] we understood we had at least a year from the initial&lt;br/&gt;&amp;gt; &amp;gt; opt-in  deployment until opt-out was deployed, giving us enough time to&lt;br/&gt;&amp;gt; &amp;gt; adapt&lt;br/&gt;&amp;gt; &amp;gt; Muun to the new policies. However, when reviewing the 24.0 release&lt;br/&gt;&amp;gt; &amp;gt; candidate&lt;br/&gt;&amp;gt; &amp;gt; just a few  days ago, we realized that zero-conf apps (like Muun) must&lt;br/&gt;&amp;gt; &amp;gt; *immediately turn off* their zero-conf features.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hi Dario,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m wondering if there&amp;#39;s been some confusion.  There are two RBF-related&lt;br/&gt;&amp;gt; items in the current release notes draft:[1]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. &amp;#34;A new mempoolfullrbf option has been added, which enables the&lt;br/&gt;&amp;gt; mempool to accept transaction replacement without enforcing BIP125&lt;br/&gt;&amp;gt; replaceability signaling. (#25353)&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. &amp;#34;The -walletrbf startup option will now default to true. The wallet&lt;br/&gt;&amp;gt; will now default to opt-in RBF on transactions that it creates.&lt;br/&gt;&amp;gt; (#25610)&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The first item (from PR #25353) does allow a transaction without a&lt;br/&gt;&amp;gt; BIP125 signal to be replaced, but this configuration option is set to&lt;br/&gt;&amp;gt; disabled by default.[2]  There have been software forks of Bitcoin Core&lt;br/&gt;&amp;gt; since at least 2015 which have allowed replacement of non-signaling&lt;br/&gt;&amp;gt; transactions, so this option just makes that behavior a little bit more&lt;br/&gt;&amp;gt; accessible to users of Bitcoin Core.  Some developers have announced&lt;br/&gt;&amp;gt; their intention to propose enabling this option by default in a future&lt;br/&gt;&amp;gt; release, which I think is the behavior you&amp;#39;re concerned about, but&lt;br/&gt;&amp;gt; that&amp;#39;s not planned for the release of 24.0 to the best of my knowledge.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The second item (from PR #25610) only affects Bitcoin Core&amp;#39;s wallet, and&lt;br/&gt;&amp;gt; in particular transactions created with it through the RPC interface.&lt;br/&gt;&amp;gt; Those transactions will now default to signaling BIP125 replacability.&lt;br/&gt;&amp;gt; This option has been default false for many years for the RPC, but for&lt;br/&gt;&amp;gt; the GUI it&amp;#39;s been default true since Bitcoin Core 0.16, released in&lt;br/&gt;&amp;gt; early 2018[3].  It&amp;#39;s no different than another popular wallet beginning&lt;br/&gt;&amp;gt; to signal BIP125 support by default.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In short, I don&amp;#39;t think anything in Bitcoin Core 24.0 RC1 significantly&lt;br/&gt;&amp;gt; changes the current situation related to transaction replacability.  All&lt;br/&gt;&amp;gt; it does is give Bitcoin Core RPC users by default the same settings long&lt;br/&gt;&amp;gt; used for GUI users and introduce an option that those who object to&lt;br/&gt;&amp;gt; non-signalled RBF will later be able to use to disable their relay of&lt;br/&gt;&amp;gt; non-signalled replacements.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Does the above information resolve your concerns?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -Dave&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin-core/bitcoin-devwiki/wiki/24.0-Release-Notes-draft&#34;&gt;https://github.com/bitcoin-core/bitcoin-devwiki/wiki/24.0-Release-Notes-draft&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [2] $ bin/bitcoind -help | grep -A3 mempoolfullrbf&lt;br/&gt;&amp;gt;    -mempoolfullrbf&lt;br/&gt;&amp;gt;         Accept transaction replace-by-fee without requiring&lt;br/&gt;&amp;gt; replaceability&lt;br/&gt;&amp;gt;         signaling (default: 0)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [3]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://bitcoincore.org/en/2018/02/26/release-0.16.0/#replace-by-fee-by-default-in-gui&#34;&gt;https://bitcoincore.org/en/2018/02/26/release-0.16.0/#replace-by-fee-by-default-in-gui&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221007/631f5053/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20221007/631f5053/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:14:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdh7a75fy8xvc5t66e3m7d8w2jurjurhk608s2x30vz8ceqsr9hygzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj7rtq6e</id>
    
      <title type="html">📅 Original date posted:2022-09-29 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdh7a75fy8xvc5t66e3m7d8w2jurjurhk608s2x30vz8ceqsr9hygzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj7rtq6e" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsynfp2qz6tgdj8u38hjmuh7e9za9xe7wucj840pgpauzckqe00lkgtz5ggm&#39;&gt;nevent1q…5ggm&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-09-29&lt;br/&gt;📝 Original message:&amp;gt; Right, good catch, this does require new logic to handle this case.&lt;br/&gt;As Gloria points out, this should be doable, and is definitely worth&lt;br/&gt;adding (those CSV 1 on every other output are really hacky, glad to&lt;br/&gt;find a way to get rid of them).&lt;br/&gt;&lt;br/&gt;For the record, it turns out ephemeral anchors &#43; v3 solves this already, as&lt;br/&gt;the anchor must be spent, and the parent tx may only have one child.&lt;br/&gt;Somehow I missed this implication for a few months. It&amp;#39;s great news if we&lt;br/&gt;can directly source fees from any output claimable, including HTLCs!&lt;br/&gt;&lt;br/&gt;On Thu, Sep 29, 2022 at 5:15 AM Bastien TEINTURIER &amp;lt;bastien at acinq.fr&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Gloria, Greg,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I interpret most of the discussion around limitations as ideas for&lt;br/&gt;&amp;gt; &amp;gt; future improvements rather than criticisms of the proposal&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As far as I&amp;#39;m concerned, definitely!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; My current understanding is that the main change/improvement that would&lt;br/&gt;&amp;gt; make sense here is restricting the whole v3 package&amp;#39;s size (instead of&lt;br/&gt;&amp;gt; just the child) via committing to a specific value in the taproot annex&lt;br/&gt;&amp;gt; (also note that it&amp;#39;s probably not just the v3 package&amp;#39;s size, it should&lt;br/&gt;&amp;gt; be the whole unconfirmed package including potential v2 unconfirmed&lt;br/&gt;&amp;gt; ancestors).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; While I think this would be very valuable and would like to see this&lt;br/&gt;&amp;gt; happen, I believe that can be done in a second, separate step since this&lt;br/&gt;&amp;gt; would make relay policy stricter (some v3 transactions that previously&lt;br/&gt;&amp;gt; propagated wouldn&amp;#39;t propagate under this new rule). As long as you are&lt;br/&gt;&amp;gt; able to find a path to miners through upgraded peers that use this annex&lt;br/&gt;&amp;gt; approach, you should be able to resolve ACP pinning issues?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m curious to know how other people feel about that: is it ok to do&lt;br/&gt;&amp;gt; later or should we try to implement this for the first release of v3&lt;br/&gt;&amp;gt; transactions?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The other change mentioned (making OP_TRUE standard and allowing outputs&lt;br/&gt;&amp;gt; that are below dust) can be added later, as those won&amp;#39;t be standard until&lt;br/&gt;&amp;gt; we start allowing them, so there shouldn&amp;#39;t be any backwards-compatibility&lt;br/&gt;&amp;gt; issue with postponing this change. But maybe it&amp;#39;s still worth having from&lt;br/&gt;&amp;gt; the get-go, even though it may take a bit more time? Again, I&amp;#39;m curious to&lt;br/&gt;&amp;gt; have other people&amp;#39;s opinion here, I&amp;#39;d be happy to get all of those directly&lt;br/&gt;&amp;gt; in the first release of v3 transactions, but I don&amp;#39;t know how much&lt;br/&gt;&amp;gt; implementation will have to go into that.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; For clarification, package RBF is ParentTx*s*(plural), and&lt;br/&gt;&amp;gt; ChildTx(singular),&lt;br/&gt;&amp;gt; &amp;gt; so it might be a bit more complicated than we&amp;#39;re thinking&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Right, good catch, this does require new logic to handle this case.&lt;br/&gt;&amp;gt; As Gloria points out, this should be doable, and is definitely worth&lt;br/&gt;&amp;gt; adding (those CSV 1 on every other output are really hacky, glad to&lt;br/&gt;&amp;gt; find a way to get rid of them).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt; Bastien&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Le lun. 26 sept. 2022 à 18:48, Gloria Zhao &amp;lt;gloriajzhao at gmail.com&amp;gt; a&lt;br/&gt;&amp;gt; écrit :&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi Greg, Antoine, Bastien,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thanks very much for the feedback! I interpret most of the discussion&lt;br/&gt;&amp;gt;&amp;gt; around limitations as ideas for future improvements rather than criticisms&lt;br/&gt;&amp;gt;&amp;gt; of the proposal (please correct me if I&amp;#39;m wrong). I&amp;#39;ll try to respond to as&lt;br/&gt;&amp;gt;&amp;gt; much as possible.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Also I realize that I didn&amp;#39;t contextualize this proposal clearly enough;&lt;br/&gt;&amp;gt;&amp;gt; it is very tailored for LN Penalty and definitely doesn&amp;#39;t close all pinning&lt;br/&gt;&amp;gt;&amp;gt; attacks possible (sorry for confusing anyone). I also agree that some bits&lt;br/&gt;&amp;gt;&amp;gt; can be a little ugly or tack-on; I would definitely prefer a comprehensive&lt;br/&gt;&amp;gt;&amp;gt; RBF revamp to fix all our problems and enable other fee-bumping strategies&lt;br/&gt;&amp;gt;&amp;gt; such as&lt;br/&gt;&amp;gt;&amp;gt; sign-ANYONECANPAY-then-bring-your-own-fees-by-adding-inputs-at-broadcast. I&lt;br/&gt;&amp;gt;&amp;gt; was hoping to get some ideas with the &amp;#34;RBF Improvements&amp;#34; post in January,&lt;br/&gt;&amp;gt;&amp;gt; but it doesn&amp;#39;t seem like we&amp;#39;re much closer to a workable proposal. I think&lt;br/&gt;&amp;gt;&amp;gt; this is a minimally-invasive step that works for Lightning today, a small&lt;br/&gt;&amp;gt;&amp;gt; fix similar to CPFP carve out.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; As you likely know from previous discussions the biggest scenario this&lt;br/&gt;&amp;gt;&amp;gt; does not fix in my estimation is ANYONECANPAY situations. If the parent&lt;br/&gt;&amp;gt;&amp;gt; transaction can be &amp;#34;inflated&amp;#34; by tacking on additional inputs, this means&lt;br/&gt;&amp;gt;&amp;gt; the total weight of the parent tx lowers the effective feerate of the&lt;br/&gt;&amp;gt;&amp;gt; package.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; (For more context to other readers I wrote an explanation for this in&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;SIGHASH_ANYONECANPAY Pinning&amp;#34; section of RBF ML post).  Yes, this&lt;br/&gt;&amp;gt;&amp;gt; unfortunately doesn&amp;#39;t fix any of the existing pinning attacks for single&lt;br/&gt;&amp;gt;&amp;gt; transaction RBF but also doesn&amp;#39;t make them worse. This boils down to adding&lt;br/&gt;&amp;gt;&amp;gt; an incentive compatibility rule that ensures you can&amp;#39;t replace a&lt;br/&gt;&amp;gt;&amp;gt; transaction with something that will confirm slower. Package RBF has an&lt;br/&gt;&amp;gt;&amp;gt; ancestor feerate-based rule for this (note it is quite conservative and not&lt;br/&gt;&amp;gt;&amp;gt; perfect).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; So in the scenario above with the &amp;#34;inflated&amp;#34; parent that was signed ACP,&lt;br/&gt;&amp;gt;&amp;gt; the replacement would be rejected because the package ancestor feerate is&lt;br/&gt;&amp;gt;&amp;gt; lower than the feerate of what is being replaced. But it is imperfect&lt;br/&gt;&amp;gt;&amp;gt; (explained below) and thus I wouldn&amp;#39;t recommend it for single transaction&lt;br/&gt;&amp;gt;&amp;gt; replacement. So that attack still exists for single transactions, yes.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The strategy of using ACP to bring-your-own-fees has its own challenges&lt;br/&gt;&amp;gt;&amp;gt; but hopefully has no current use cases as you say. AFAIK LN Penalty is not&lt;br/&gt;&amp;gt;&amp;gt; affected by this since it doesn&amp;#39;t use ACP, though obviously I agree we&lt;br/&gt;&amp;gt;&amp;gt; should fix it for the future.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; So when I said &amp;#34;this is intended for fee-bumping presigned txns in&lt;br/&gt;&amp;gt;&amp;gt; contracting protocols,&amp;#34; I should have said &amp;#34;this is intended for&lt;br/&gt;&amp;gt;&amp;gt; fee-bumping presigned txns specifically using CPFP and anchor outputs.&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt; Apologies for forgetting to contextualize, I&amp;#39;ve been sitting on this for&lt;br/&gt;&amp;gt;&amp;gt; too long.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; The other scenario it doesn&amp;#39;t really fix is where HTLC/commitment-like&lt;br/&gt;&amp;gt;&amp;gt; transactions are being resolved in a batch, but due to relative time&lt;br/&gt;&amp;gt;&amp;gt; constraints, you may want to accelerate some and not others. Now you must&lt;br/&gt;&amp;gt;&amp;gt; pay higher rates to replace all of the transaction bumps. This is a&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;self-pin&amp;#34; and &amp;#34;get good at utxos noob&amp;#34; type problem, but it&amp;#39;s something&lt;br/&gt;&amp;gt;&amp;gt; that axing rule#3 in favor of a Replace-by-ancestor-feerate system would&lt;br/&gt;&amp;gt;&amp;gt; get us.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I understand you to mean &amp;#34;if you don&amp;#39;t have enough UTXOs and you&amp;#39;re&lt;br/&gt;&amp;gt;&amp;gt; forced to batch-bump, you over-pay because you need to bring them all to&lt;br/&gt;&amp;gt;&amp;gt; the highest target feerate.&amp;#34; Isn&amp;#39;t this kind of separate, wallet-related&lt;br/&gt;&amp;gt;&amp;gt; problem? Contracting or not, surely every wallet needs to have enough UTXOs&lt;br/&gt;&amp;gt;&amp;gt; to not batch transactions that shouldn&amp;#39;t be batched... I don&amp;#39;t see how a&lt;br/&gt;&amp;gt;&amp;gt; replace-by-ancestor-feerate policy would make any difference for this?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Also in general I&amp;#39;d like to reiterate that ancestor feerate is not a&lt;br/&gt;&amp;gt;&amp;gt; panacea to all our RBF incentive compatibility concerns. Like individual&lt;br/&gt;&amp;gt;&amp;gt; feerate, unless we run the mining algorithm, it cannot tell us exactly how&lt;br/&gt;&amp;gt;&amp;gt; quickly this transaction would be mined.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; We&amp;#39;re estimating the incentive compatibility of the original&lt;br/&gt;&amp;gt;&amp;gt; transaction(s) and replacement transaction(s), with the goal of not letting&lt;br/&gt;&amp;gt;&amp;gt; a transaction replace something that would have been more incentive&lt;br/&gt;&amp;gt;&amp;gt; compatible to mine. As such, we don&amp;#39;t want to overestimate how good the&lt;br/&gt;&amp;gt;&amp;gt; replacement is, and we don&amp;#39;t want to underestimate how good the original&lt;br/&gt;&amp;gt;&amp;gt; transactions are. This rule &amp;#34;The minimum between package feerate and&lt;br/&gt;&amp;gt;&amp;gt; ancestor feerate of the child is not lower than the individual feerates of&lt;br/&gt;&amp;gt;&amp;gt; all directly conflicting transactions and the ancestor feerates of all&lt;br/&gt;&amp;gt;&amp;gt; original transactions&amp;#34; is a conservative estimate.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Would kind of be nice if package RBF would detect a &amp;#34;sibling output&lt;br/&gt;&amp;gt;&amp;gt; spend&amp;#34; conflict, and knock it out of the mempool via the other replacement&lt;br/&gt;&amp;gt;&amp;gt; rules? Getting rid of the requirement to 1 block csv lock every output&lt;br/&gt;&amp;gt;&amp;gt; would be quite nice from a smart contracting composability point of view.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Interesting, so when a transaction hits a mempool tx&amp;#39;s descendant limit,&lt;br/&gt;&amp;gt;&amp;gt; we consider evicting one of its descendants in favor of this transaction,&lt;br/&gt;&amp;gt;&amp;gt; based on the RBF rules.&lt;br/&gt;&amp;gt;&amp;gt; Cool idea! After chewing on this for a bit, I think this *also* just&lt;br/&gt;&amp;gt;&amp;gt; boils down to the fact that RBF should require replacements to be better&lt;br/&gt;&amp;gt;&amp;gt; mining candidates. As in, if we added this policy and it can make us evict&lt;br/&gt;&amp;gt;&amp;gt; the sibling and accept a transaction with a bunch of low-feerate ancestor&lt;br/&gt;&amp;gt;&amp;gt; junk, it would be a new pinning vector.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; If you&amp;#39;re a miner and you receive a non-V3, second descendant of an&lt;br/&gt;&amp;gt;&amp;gt; unconfirmed V3 transaction, if the offered fee is in the top mempool&lt;br/&gt;&amp;gt;&amp;gt; backlog, I think you would have an interest to accept such a transaction.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; So I&amp;#39;m not sure if those two rules are compatible with miners&lt;br/&gt;&amp;gt;&amp;gt; incentives...&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The same argument can be made for the 26th descendant of a mempool&lt;br/&gt;&amp;gt;&amp;gt; transaction; it&amp;#39;s also not entirely incentive-compatible to reject it, but&lt;br/&gt;&amp;gt;&amp;gt; that is not the *only* design goal in mempool policy. Of course, the&lt;br/&gt;&amp;gt;&amp;gt; difference here is that the 25-descendant limit rule is a sensible DoS&lt;br/&gt;&amp;gt;&amp;gt; protection, while this 1-descendant limit rule is more of a &amp;#34;help the&lt;br/&gt;&amp;gt;&amp;gt; Bitcoin ecosystem&amp;#34; policy, just like CPFP carve-out, dust limit, etc. I can&lt;br/&gt;&amp;gt;&amp;gt; of course understand why not everyone would be in favor of this, but I do&lt;br/&gt;&amp;gt;&amp;gt; think it&amp;#39;s worth it.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; 4. A V3 transaction that has an unconfirmed V3 ancestor cannot be&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;    larger than 1000 virtual bytes.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; If I understand correctly the 1000 vb upper bound rational, it would be&lt;br/&gt;&amp;gt;&amp;gt; to constraint the pinning counterparty to attach a high fee to a child due&lt;br/&gt;&amp;gt;&amp;gt; to the limited size, if they would like this transaction to be stuck in the&lt;br/&gt;&amp;gt;&amp;gt; network mempools. By doing so  this child has high odds to confirm.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Yeah exactly, the &amp;#34;Rule 3 pin&amp;#34; is done by adding a child that&amp;#39;s high-fee&lt;br/&gt;&amp;gt;&amp;gt; (so you have to pay that much to evict it). Because they *don&amp;#39;t* want this&lt;br/&gt;&amp;gt;&amp;gt; tx to confirm, normally, this child would be really large. If they only&lt;br/&gt;&amp;gt;&amp;gt; have 1000vB for the child, they can&amp;#39;t increase the replacement cost without&lt;br/&gt;&amp;gt;&amp;gt; also fee-bumping the transaction to make it confirm faster.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; As of today, I think yes you can already fingerprint LN transactions on&lt;br/&gt;&amp;gt;&amp;gt; the  spec-defined amount value of the anchor outputs, 330 sats. There is&lt;br/&gt;&amp;gt;&amp;gt; always one of them on post-anchor commitment transactions. And sadly I&lt;br/&gt;&amp;gt;&amp;gt; would say we&amp;#39;ll always have tricky fingerprints leaking from unilateral LN&lt;br/&gt;&amp;gt;&amp;gt; closures such as HTLC/PTLC timelocks...&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; I agree with you, this isn&amp;#39;t worse than today, unilateral closes will&lt;br/&gt;&amp;gt;&amp;gt; probably always be identifiable on-chain.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Great to hear that there is no privacy worsening!&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt; Gloria&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Mon, Sep 26, 2022 at 5:02 PM Greg Sanders &amp;lt;gsanders87 at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Bastien,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; This may be already covered by the current package RBF logic, in that&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; scenario we are simply replacing [ParentTx, ChildTx1] with&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [ParentTx, ChildTx2] that pays more fees, right?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; For clarification, package RBF is ParentTx*s*(plural), and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ChildTx(singular), so it might be a bit more complicated than we&amp;#39;re&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; thinking, and currently the V3 proposal would first de-duplicate the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ParentTx based on what is in the mempool, then look at the &amp;#34;rest&amp;#34; of the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transactions as a package, then individually. Not the same, not sure how&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; different. I&amp;#39;ll defer to experts.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Greg&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; On Mon, Sep 26, 2022 at 11:48 AM Bastien TEINTURIER via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Thanks Gloria for this great post.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This is very valuable work for L2 contracts, and will greatly improve&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; their security model.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; &amp;#34;Only 1 anchor output? What if I need to bump counterparty&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; commitment tx in mempool?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; You won&amp;#39;t need to fee-bump a counterparty&amp;#39;s commitment tx using CPFP.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; You would just package RBF it by attaching a high-feerate child to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; your commitment tx.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Note that we can also very easily make that single anchor spendable by&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; both participants (or even anyone), so if you see your counterparty&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; commitment in your mempool, you can bump it without publishing your&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; own commitment, which is quite desirable (your own commitment tx has&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; CSV delays on your outputs, whereas your counterparty&amp;#39;s commitment tx&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; doesn&amp;#39;t).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; &amp;#34;Is this a privacy issue, i.e. doesn&amp;#39;t it allow fingerprinting LN&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transactions based on nVersion?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I agree with you, this isn&amp;#39;t worse than today, unilateral closes will&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; probably always be identifiable on-chain.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; Would kind of be nice if package RBF would detect a &amp;#34;sibling output&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; spend&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; conflict, and knock it out of the mempool via the other replacement&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; rules?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; Getting rid of the requirement to 1 block csv lock every output would&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; quite nice from a smart contracting composability point of view.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &#43;1, that would be very neat!&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This may be already covered by the current package RBF logic, in that&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; scenario we are simply replacing [ParentTx, ChildTx1] with&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; [ParentTx, ChildTx2] that pays more fees, right?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; 1) I do think that we should seriously consider allowing OP_TRUE to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; become&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; a standard script type as part of this policy update. If pinning is&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; solved,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; then there&amp;#39;s no reason to require all those extra bytes for &amp;#34;binding&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; an&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; anchor to a specific wallet/user. We can save quite a few bytes by&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; having&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; the input be empty of witness data.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; 2) If we allow for a single dust-value(0 on up) output which is&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; immediately&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; spent by the package, anchors become even easier to to design. No&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; value has&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; to be &amp;#34;sapped&amp;#34; from contract participants to make an anchor output.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; There&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; more complications for this, such as making sure the parent&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transaction is&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; dropped if the child spend is dropped, but maybe it&amp;#39;s worth the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; squeeze.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I also think both of these could be quite useful. This would probably&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; always&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; be used in combination with a parent transaction that pays 0 fees, so&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 0-value output would always be spent in the same block.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; But this means we could end up with 0-value outputs in the utxo set, if&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; some reason the parent tx is CPFP-ed via another output than the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 0-value one,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; which would be a utxo set bloat issue. But I&amp;#39;d argue that we&amp;#39;re probably&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; already creating utxo set bloat with the 330 sat anchor outputs&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (especially&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; since we use two of them, but only one is usually spent), so it would&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; probably be *better* than what we&amp;#39;re doing today.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Bastien&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Le lun. 26 sept. 2022 à 03:22, Antoine Riard via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi Gloria,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Thanks for the progress on package RBF, few early questions.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; 2. Any descendant of an unconfirmed V3 transaction must also be V3.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; 3. An unconfirmed V3 transaction cannot have more than 1 descendant.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; If you&amp;#39;re a miner and you receive a non-V3, second descendant of an&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; unconfirmed V3 transaction, if the offered fee is in the top mempool&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; backlog, I think you would have an interest to accept such a transaction.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; So I&amp;#39;m not sure if those two rules are compatible with miners&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; incentives...&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; 4. A V3 transaction that has an unconfirmed V3 ancestor cannot be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;    larger than 1000 virtual bytes.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; If I understand correctly the 1000 vb upper bound rational, it would&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; be to constraint the pinning counterparty to attach a high fee to a child&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; due to the limited size, if they would like this transaction to be stuck in&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the network mempools. By doing so  this child has high odds to confirm.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I still wonder if this compatible with miner incentives in period of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; empty mempools, in the sense that if you&amp;#39;ve already a V3 transaction of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; size 100Kvb offering 2 sat/vb, it&amp;#39;s more interesting than a V3 replacement&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; candidate of size 1000 vb offering 10 sat/vb. It could be argued the former&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; should be conserved.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (That said, the hard thing with any replacement strategy we might&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; evict a parent transaction *now* to which is attached a high-feerate child&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *latter* making for a utxo considered the best ancestor set. Maybe in the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; long-term miners should keep every transaction ever accepted...)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; (Lower bound) the smaller this limit, the fewer UTXOs a child may use&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; to fund this fee-bump. For example, only allowing the V3 child to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; have&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; 2 inputs would require L2 protocols to manage a wallet with&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; high-value&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; UTXOs and make batched fee-bumping impossible. However, as the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; fee-bumping child only needs to fund fees (as opposed to payments),&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; just a few UTXOs should suffice.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Reminder for L2 devs, batched fee-bumping of time-sensitive&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; confirmations of commitment transactions is unsafe, as the counterparty&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; could enter in a &amp;#34;cat-and-mouse&amp;#34; game to replace one of the batch element&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; at each block to delay confirmation of the remaining elements in the batch,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I think.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On the other hand, I wonder if we wouldn&amp;#39;t want a higher bound. LN&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; wallets are likely to have one big UTXO in their fee-bumping reserve pool,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; as the cost of acquiring UTXO is non-null and in the optimistic case, you&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; don&amp;#39;t need to do unilateral closure. Let&amp;#39;s say you close dozens of channels&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; at the same time, a UTXO pool management strategy might be to fan-out the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; first spends UTXOs in N fan-out outputs ready to feed the remaining&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; in-flight channels.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; 1. The rule around unconfirmed inputs was&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; originally &amp;#34;A package may include new unconfirmed inputs, but the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; ancestor feerate of the child must be at least as high as the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ancestor&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; feerates of every transaction being replaced.&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Note, I think we would like this new RBF rule to also apply to single&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transaction package, e.g second-stage HTLC transactions, where a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; counterparty pins a HTLC-preimage by abusing rule 3. In that case, the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; honest LN node should be able to broadcast a &amp;#34;at least as high ancestor&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; feerate&amp;#34; HTLC-timeout transaction. With `option_anchor_outputs&amp;#34; there is no&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; unconfirmed ancestor to replace, as the commitment transaction, whatever&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the party it is originating from, should already be confirmed.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; &amp;#34;Is this a privacy issue, i.e. doesn&amp;#39;t it allow fingerprinting LN&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transactions based on nVersion?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; As of today, I think yes you can already fingerprint LN transactions&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; on the  spec-defined amount value of the anchor outputs, 330 sats. There is&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; always one of them on post-anchor commitment transactions. And sadly I&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; would say we&amp;#39;ll always have tricky fingerprints leaking from unilateral LN&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; closures such as HTLC/PTLC timelocks...&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; &amp;#34;Can a V2 transaction replace a V3 transaction and vice versa?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; IIUC, a V3 package could replace a V2 package, with the benefit of the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; new package RBF rules applied. I think this would be a significant&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; advantage for LN, as for the current ~85k of opened channels, the old V2&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; states shouldn&amp;#39;t be pinning vectors. Currently, commitment transactions&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; signal replaceability.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Le ven. 23 sept. 2022 à 11:26, Gloria Zhao via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi everyone,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I&amp;#39;m writing to propose a very simple set of mempool/transaction relay&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; policies intended to aid L2/contract protocols. I realized that&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the previously proposed Package Mempool Accept package RBF [1]&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; had a few remaining problems after digging into the RBF logic more&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; [2].&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This additional set of policies solves them without requiring a huge&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; RBF overhaul.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I&amp;#39;ve written an implementation (and docs) for Bitcoin Core:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/25038&#34;&gt;https://github.com/bitcoin/bitcoin/pull/25038&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (You may notice that this proposal incorporates feedback on the PR -&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; thanks Suhas Daftuar, Gregory Sanders, Bastien Teinturier, Anthony Towns,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and others.)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; If you are interested in using package RBF/relay to bump presigned&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transactions, I think you may be interested in reviewing this&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; proposal.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This should solve Rule 3 pinning and perhaps allow us&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to get rid of CPFP carve-out (yay!). I&amp;#39;m keen to hear if people find&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the 1-anchor-output, 1000vB child limit too restrictive. Also, if you&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; find a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; pinning attack or something that makes it unusable for you, I would&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; really really like to know.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Note that transactions with nVersion=3 (&amp;#34;V3 transactions&amp;#34;) are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; currently non-standard in Bitcoin Core. That means **anything that was&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; standard before this policy change would still be standard&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; afterwards.** If you don&amp;#39;t want your transactions to be subject to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; these rules, just continue whatever you&amp;#39;re doing and don&amp;#39;t use&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; nVersion=3. AFAICT this shouldn&amp;#39;t break anything, but let me know if&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; this would be disruptive for you?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; **New Policies:**&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This includes:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; - a set of additional policy rules applying to V3 transactions&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; - modifications to package RBF rules&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; **V3 transactions:**&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Existing standardness rules apply to V3 (e.g. min/max tx weight,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; standard output types, cleanstack, etc.). The following additional&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; rules apply to V3:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 1. A V3 transaction can be replaced, even if it does not signal BIP125&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;    replaceability. (It must also meet the other RBF rules around fees,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; etc. for replacement to happen).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 2. Any descendant of an unconfirmed V3 transaction must also be V3.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Rationale*: Combined with Rule 1, this gives us the property of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;inherited&amp;#34; replaceability signaling when descendants of unconfirmed&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transactions are created. Additionally, checking whether a transaction&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; signals replaceability this way does not require mempool traversal,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and does not change based on what transactions are mined. It also&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; makes subsequent rules about descendant limits much easier to check.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Note*: The descendant of a *confirmed* V3 transaction does not need&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to be V3.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 3. An unconfirmed V3 transaction cannot have more than 1 descendant.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Rationale*: (Upper bound) the larger the descendant limit, the more&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transactions may need to be replaced. This is a problematic pinning&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; attack, i.e., a malicious counterparty prevents the transaction from&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; being replaced by adding many descendant transactions that aren&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; fee-bumping.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (Lower bound) at least 1 descendant is required to allow CPFP of the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; presigned transaction. The contract protocol can create presigned&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transactions paying 0 fees and 1 output for attaching a CPFP at&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; broadcast time (&amp;#34;anchor output&amp;#34;). Without package RBF, multiple anchor&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; outputs would be required to allow each counterparty to fee-bump any&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; presigned transaction. With package RBF, since the presigned&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transactions can replace each other, 1 anchor output is sufficient.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 4. A V3 transaction that has an unconfirmed V3 ancestor cannot be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;    larger than 1000 virtual bytes.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Rationale*: (Upper bound) the larger the descendant size limit, the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; more vbytes may need to be replaced. With default limits, if the child&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; is e.g. 100,000vB, that might be an additional 100,000sats (at&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 1sat/vbyte) or more, depending on the feerate.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (Lower bound) the smaller this limit, the fewer UTXOs a child may use&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to fund this fee-bump. For example, only allowing the V3 child to have&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 2 inputs would require L2 protocols to manage a wallet with high-value&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; UTXOs and make batched fee-bumping impossible. However, as the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; fee-bumping child only needs to fund fees (as opposed to payments),&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; just a few UTXOs should suffice.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; With a limit of 1000 virtual bytes, depending on the output types, the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; child can have 6-15 UTXOs, which should be enough to fund a fee-bump&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; without requiring a carefully-managed UTXO pool. With 1000 virtual&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; bytes as the descendant limit, the cost to replace a V3 transaction&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; has much lower variance.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Rationale*: This makes the rule very easily &amp;#34;tacked on&amp;#34; to existing&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; logic for policy and wallets. A transaction may be up to 100KvB on its&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; own (`MAX_STANDARD_TX_WEIGHT`) and 101KvB with descendants&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (`DEFAULT_DESCENDANT_SIZE_LIMIT_KVB`). If an existing V3 transaction&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; in the mempool is 100KvB, its descendant can only be 1000vB, even if&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the policy is 10KvB.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; **Package RBF modifications:**&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 1. The rule around unconfirmed inputs was&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; originally &amp;#34;A package may include new unconfirmed inputs, but the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ancestor feerate of the child must be at least as high as the ancestor&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; feerates of every transaction being replaced.&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; The package may still include new unconfirmed inputs. However,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the new rule is modified to be &amp;#34;The minimum between package feerate&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and ancestor feerate of the child is not lower than the individual&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; feerates of all directly conflicting transactions and the ancestor&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; feerates of all original transactions.&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Rationale*: We are attempting to ensure that the replacement&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transactions are not less incentive-compatible to mine. However, a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package/transaction&amp;#39;s ancestor feerate is not perfectly representative&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of its incentive compatibility; it may overestimate (some subset of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the ancestors could be included by itself if it has other high-feerate&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; descendants or are themselves higher feerate than this&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package/transaction). Instead, we use the minimum between the package&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; feerate and ancestor feerate of the child as a more conservative value&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; than what was proposed originally.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 2. A new rule is added, requiring that all package transactions with&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; mempool conflicts to be V3. This also means the &amp;#34;sponsoring&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; child transaction must be V3.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Note*: Combined with the V3 rules, this means the package must be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; a child-with-parents package. Since package validation is only&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; attempted if the transactions do not pay sufficient fees to be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; accepted on their own, this effectively means that only V3&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transactions can pay to replace their ancestors&amp;#39; conflicts, and only&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; V3 transactions&amp;#39; replacements may be paid for by a descendant.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Rationale*: The fee-related rules are economically rational for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ancestor packages, but not necessarily other types of packages.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; A child-with-parents package is a type of ancestor package. It&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; may be fine to allow any ancestor package, but it&amp;#39;s more difficult&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to account for all of the possibilities. For example, it gets much&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; harder to see that we&amp;#39;re applying the descendant limits correctly if&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the package has a gnarly, many-generation, non-tree shape. I&amp;#39;m also&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; not sure if this policy is 100% incentive-compatible if the sponsor&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; is not a direct descendant of the sponsee.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Please see doc/policy/version3_transactions.md and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; doc/policy/packages.md in the PR for the full set of rules.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; **Intended usage for LN:**&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Commitment transactions should be V3 and have 1 anchor output. They&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; can be signed with 0 fees (or 1sat/vbyte) once package relay is&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; deployed&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; on a significant portion of the network. If the commitment tx must&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; be broadcast, determine the desired feerate at broadcast time and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; spend the anchor output in a high feerate transaction. I&amp;#39;m going to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; call the broadcasted commitment tx &amp;#34;the parent&amp;#34; and the attached&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; fee-bumping tx &amp;#34;the child.&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; - This child must be V3.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; - This child must be at most 1000vB. Note this restricts the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;   number of inputs you can use to fund the fee bump. Depending&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; on the output types, this is around 6-15.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; - One child may fund fees for multiple commitment tx (&amp;#34;batched&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;   fee-bumping&amp;#34;).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; - To do a second fee-bump to add more fees, replace the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;   *child* with a higher-feerate tx. Do not try to attach a grandchild.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Otherwise, never try to spend from an unconfirmed V3 transaction. The&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; descendant limits for V3 transactions are very restrictive.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; **Expected Questions:**&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;Does this fix Rule 3 Pinning?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Yes. The V3 descendant limit restricts both you and your counterparty.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Assuming nodes adopted this policy, you may reasonably assume that you&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; only need to replace the commitment transaction &#43; up to 1000vB.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;Only 1 anchor output? What if I need to bump counterparty&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; commitment tx in mempool?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; You won&amp;#39;t need to fee-bump a counterparty&amp;#39;s commitment tx using CPFP.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; You would just package RBF it by attaching a high-feerate child to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; your commitment tx.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;Is this a privacy issue, i.e. doesn&amp;#39;t it allow fingerprinting LN&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transactions based on nVersion?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Indeed it may be unrealistic to assume V3 transactions will be in&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; widespread use outside of L2. IIUC, unilateral closes are already&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; obvious LN transactions because of the HTLC inputs. For e.g.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; cooperative closes and opens, I think it makes sense to continue using&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; V2. So, unless I&amp;#39;m missing something, this shouldn&amp;#39;t make it worse.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;So a V3 transaction that doesn&amp;#39;t signal BIP125 replaceability is&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; replaceable? Is that a backward compatibility issue?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Yes it&amp;#39;s replaceable. It&amp;#39;s not an issue AFAICT because,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; under previous policy, the V3 transaction wouldn&amp;#39;t have been&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; in the mempool in the first place.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;Can a V2 transaction replace a V3 transaction and vice versa?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Yes, otherwise someone can use V3 transactions to censor V2&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transactions spending shared inputs. Note if the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; original V3 transaction has an unconfirmed V3 parent, this would&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; violate the &amp;#34;inherited V3&amp;#34; rule and would be rejected.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Thanks for reading! Feedback and review would be much appreciated.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; [1]:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019464.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019464.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; [2]:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-January/019817.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-January/019817.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Gloria&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220929/fa260464/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220929/fa260464/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:13:48&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfqt2a3khg5500kle7ks2tgdsddgpmkrv7acclk6ueyx2j3ne825szyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjqr2py3</id>
    
      <title type="html">📅 Original date posted:2022-09-26 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfqt2a3khg5500kle7ks2tgdsddgpmkrv7acclk6ueyx2j3ne825szyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjqr2py3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqhf7nj4q4k7x456gn6l80dn9xwscg56teh78yfup93hn9f0w4xg2l904d&#39;&gt;nevent1q…904d&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-09-26&lt;br/&gt;📝 Original message:Bastien,&lt;br/&gt;&lt;br/&gt;&amp;gt; This may be already covered by the current package RBF logic, in that&lt;br/&gt;scenario we are simply replacing [ParentTx, ChildTx1] with&lt;br/&gt;[ParentTx, ChildTx2] that pays more fees, right?&lt;br/&gt;&lt;br/&gt;For clarification, package RBF is ParentTx*s*(plural), and&lt;br/&gt;ChildTx(singular), so it might be a bit more complicated than we&amp;#39;re&lt;br/&gt;thinking, and currently the V3 proposal would first de-duplicate the&lt;br/&gt;ParentTx based on what is in the mempool, then look at the &amp;#34;rest&amp;#34; of the&lt;br/&gt;transactions as a package, then individually. Not the same, not sure how&lt;br/&gt;different. I&amp;#39;ll defer to experts.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Mon, Sep 26, 2022 at 11:48 AM Bastien TEINTURIER via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Thanks Gloria for this great post.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is very valuable work for L2 contracts, and will greatly improve&lt;br/&gt;&amp;gt; their security model.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;#34;Only 1 anchor output? What if I need to bump counterparty&amp;#39;s commitment&lt;br/&gt;&amp;gt; tx in mempool?&amp;#34;&lt;br/&gt;&amp;gt; &amp;gt; You won&amp;#39;t need to fee-bump a counterparty&amp;#39;s commitment tx using CPFP.&lt;br/&gt;&amp;gt; &amp;gt; You would just package RBF it by attaching a high-feerate child to&lt;br/&gt;&amp;gt; &amp;gt; your commitment tx.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note that we can also very easily make that single anchor spendable by&lt;br/&gt;&amp;gt; both participants (or even anyone), so if you see your counterparty&amp;#39;s&lt;br/&gt;&amp;gt; commitment in your mempool, you can bump it without publishing your&lt;br/&gt;&amp;gt; own commitment, which is quite desirable (your own commitment tx has&lt;br/&gt;&amp;gt; CSV delays on your outputs, whereas your counterparty&amp;#39;s commitment tx&lt;br/&gt;&amp;gt; doesn&amp;#39;t).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;#34;Is this a privacy issue, i.e. doesn&amp;#39;t it allow fingerprinting LN&lt;br/&gt;&amp;gt; transactions based on nVersion?&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I agree with you, this isn&amp;#39;t worse than today, unilateral closes will&lt;br/&gt;&amp;gt; probably always be identifiable on-chain.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Would kind of be nice if package RBF would detect a &amp;#34;sibling output&lt;br/&gt;&amp;gt; spend&amp;#34;&lt;br/&gt;&amp;gt; &amp;gt; conflict, and knock it out of the mempool via the other replacement&lt;br/&gt;&amp;gt; rules?&lt;br/&gt;&amp;gt; &amp;gt; Getting rid of the requirement to 1 block csv lock every output would be&lt;br/&gt;&amp;gt; &amp;gt; quite nice from a smart contracting composability point of view.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &#43;1, that would be very neat!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This may be already covered by the current package RBF logic, in that&lt;br/&gt;&amp;gt; scenario we are simply replacing [ParentTx, ChildTx1] with&lt;br/&gt;&amp;gt; [ParentTx, ChildTx2] that pays more fees, right?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 1) I do think that we should seriously consider allowing OP_TRUE to&lt;br/&gt;&amp;gt; become&lt;br/&gt;&amp;gt; &amp;gt; a standard script type as part of this policy update. If pinning is&lt;br/&gt;&amp;gt; solved,&lt;br/&gt;&amp;gt; &amp;gt; then there&amp;#39;s no reason to require all those extra bytes for &amp;#34;binding&amp;#34; an&lt;br/&gt;&amp;gt; &amp;gt; anchor to a specific wallet/user. We can save quite a few bytes by having&lt;br/&gt;&amp;gt; &amp;gt; the input be empty of witness data.&lt;br/&gt;&amp;gt; &amp;gt; 2) If we allow for a single dust-value(0 on up) output which is&lt;br/&gt;&amp;gt; immediately&lt;br/&gt;&amp;gt; &amp;gt; spent by the package, anchors become even easier to to design. No value&lt;br/&gt;&amp;gt; has&lt;br/&gt;&amp;gt; &amp;gt; to be &amp;#34;sapped&amp;#34; from contract participants to make an anchor output.&lt;br/&gt;&amp;gt; There&amp;#39;s&lt;br/&gt;&amp;gt; &amp;gt; more complications for this, such as making sure the parent transaction&lt;br/&gt;&amp;gt; is&lt;br/&gt;&amp;gt; &amp;gt; dropped if the child spend is dropped, but maybe it&amp;#39;s worth the squeeze.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I also think both of these could be quite useful. This would probably&lt;br/&gt;&amp;gt; always&lt;br/&gt;&amp;gt; be used in combination with a parent transaction that pays 0 fees, so the&lt;br/&gt;&amp;gt; 0-value output would always be spent in the same block.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But this means we could end up with 0-value outputs in the utxo set, if for&lt;br/&gt;&amp;gt; some reason the parent tx is CPFP-ed via another output than the 0-value&lt;br/&gt;&amp;gt; one,&lt;br/&gt;&amp;gt; which would be a utxo set bloat issue. But I&amp;#39;d argue that we&amp;#39;re probably&lt;br/&gt;&amp;gt; already creating utxo set bloat with the 330 sat anchor outputs (especially&lt;br/&gt;&amp;gt; since we use two of them, but only one is usually spent), so it would&lt;br/&gt;&amp;gt; probably be *better* than what we&amp;#39;re doing today.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt; Bastien&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Le lun. 26 sept. 2022 à 03:22, Antoine Riard via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi Gloria,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thanks for the progress on package RBF, few early questions.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; 2. Any descendant of an unconfirmed V3 transaction must also be V3.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; 3. An unconfirmed V3 transaction cannot have more than 1 descendant.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If you&amp;#39;re a miner and you receive a non-V3, second descendant of an&lt;br/&gt;&amp;gt;&amp;gt; unconfirmed V3 transaction, if the offered fee is in the top mempool&lt;br/&gt;&amp;gt;&amp;gt; backlog, I think you would have an interest to accept such a transaction.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; So I&amp;#39;m not sure if those two rules are compatible with miners&lt;br/&gt;&amp;gt;&amp;gt; incentives...&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; 4. A V3 transaction that has an unconfirmed V3 ancestor cannot be&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;    larger than 1000 virtual bytes.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If I understand correctly the 1000 vb upper bound rational, it would be&lt;br/&gt;&amp;gt;&amp;gt; to constraint the pinning counterparty to attach a high fee to a child due&lt;br/&gt;&amp;gt;&amp;gt; to the limited size, if they would like this transaction to be stuck in the&lt;br/&gt;&amp;gt;&amp;gt; network mempools. By doing so  this child has high odds to confirm.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I still wonder if this compatible with miner incentives in period of&lt;br/&gt;&amp;gt;&amp;gt; empty mempools, in the sense that if you&amp;#39;ve already a V3 transaction of&lt;br/&gt;&amp;gt;&amp;gt; size 100Kvb offering 2 sat/vb, it&amp;#39;s more interesting than a V3 replacement&lt;br/&gt;&amp;gt;&amp;gt; candidate of size 1000 vb offering 10 sat/vb. It could be argued the former&lt;br/&gt;&amp;gt;&amp;gt; should be conserved.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; (That said, the hard thing with any replacement strategy we might evict a&lt;br/&gt;&amp;gt;&amp;gt; parent transaction *now* to which is attached a high-feerate child *latter*&lt;br/&gt;&amp;gt;&amp;gt; making for a utxo considered the best ancestor set. Maybe in the long-term&lt;br/&gt;&amp;gt;&amp;gt; miners should keep every transaction ever accepted...)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; (Lower bound) the smaller this limit, the fewer UTXOs a child may use&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; to fund this fee-bump. For example, only allowing the V3 child to have&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; 2 inputs would require L2 protocols to manage a wallet with high-value&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; UTXOs and make batched fee-bumping impossible. However, as the&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; fee-bumping child only needs to fund fees (as opposed to payments),&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; just a few UTXOs should suffice.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Reminder for L2 devs, batched fee-bumping of time-sensitive confirmations&lt;br/&gt;&amp;gt;&amp;gt; of commitment transactions is unsafe, as the counterparty could enter in a&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;cat-and-mouse&amp;#34; game to replace one of the batch element at each block to&lt;br/&gt;&amp;gt;&amp;gt; delay confirmation of the remaining elements in the batch, I think.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On the other hand, I wonder if we wouldn&amp;#39;t want a higher bound. LN&lt;br/&gt;&amp;gt;&amp;gt; wallets are likely to have one big UTXO in their fee-bumping reserve pool,&lt;br/&gt;&amp;gt;&amp;gt; as the cost of acquiring UTXO is non-null and in the optimistic case, you&lt;br/&gt;&amp;gt;&amp;gt; don&amp;#39;t need to do unilateral closure. Let&amp;#39;s say you close dozens of channels&lt;br/&gt;&amp;gt;&amp;gt; at the same time, a UTXO pool management strategy might be to fan-out the&lt;br/&gt;&amp;gt;&amp;gt; first spends UTXOs in N fan-out outputs ready to feed the remaining&lt;br/&gt;&amp;gt;&amp;gt; in-flight channels.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; 1. The rule around unconfirmed inputs was&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; originally &amp;#34;A package may include new unconfirmed inputs, but the&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ancestor feerate of the child must be at least as high as the ancestor&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; feerates of every transaction being replaced.&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Note, I think we would like this new RBF rule to also apply to single&lt;br/&gt;&amp;gt;&amp;gt; transaction package, e.g second-stage HTLC transactions, where a&lt;br/&gt;&amp;gt;&amp;gt; counterparty pins a HTLC-preimage by abusing rule 3. In that case, the&lt;br/&gt;&amp;gt;&amp;gt; honest LN node should be able to broadcast a &amp;#34;at least as high ancestor&lt;br/&gt;&amp;gt;&amp;gt; feerate&amp;#34; HTLC-timeout transaction. With `option_anchor_outputs&amp;#34; there is no&lt;br/&gt;&amp;gt;&amp;gt; unconfirmed ancestor to replace, as the commitment transaction, whatever&lt;br/&gt;&amp;gt;&amp;gt; the party it is originating from, should already be confirmed.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;#34;Is this a privacy issue, i.e. doesn&amp;#39;t it allow fingerprinting LN&lt;br/&gt;&amp;gt;&amp;gt; transactions based on nVersion?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; As of today, I think yes you can already fingerprint LN transactions on&lt;br/&gt;&amp;gt;&amp;gt; the  spec-defined amount value of the anchor outputs, 330 sats. There is&lt;br/&gt;&amp;gt;&amp;gt; always one of them on post-anchor commitment transactions. And sadly I&lt;br/&gt;&amp;gt;&amp;gt; would say we&amp;#39;ll always have tricky fingerprints leaking from unilateral LN&lt;br/&gt;&amp;gt;&amp;gt; closures such as HTLC/PTLC timelocks...&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;#34;Can a V2 transaction replace a V3 transaction and vice versa?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; IIUC, a V3 package could replace a V2 package, with the benefit of the&lt;br/&gt;&amp;gt;&amp;gt; new package RBF rules applied. I think this would be a significant&lt;br/&gt;&amp;gt;&amp;gt; advantage for LN, as for the current ~85k of opened channels, the old V2&lt;br/&gt;&amp;gt;&amp;gt; states shouldn&amp;#39;t be pinning vectors. Currently, commitment transactions&lt;br/&gt;&amp;gt;&amp;gt; signal replaceability.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Le ven. 23 sept. 2022 à 11:26, Gloria Zhao via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Hi everyone,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I&amp;#39;m writing to propose a very simple set of mempool/transaction relay&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; policies intended to aid L2/contract protocols. I realized that&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the previously proposed Package Mempool Accept package RBF [1]&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; had a few remaining problems after digging into the RBF logic more [2].&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This additional set of policies solves them without requiring a huge RBF&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; overhaul.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I&amp;#39;ve written an implementation (and docs) for Bitcoin Core:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/25038&#34;&gt;https://github.com/bitcoin/bitcoin/pull/25038&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; (You may notice that this proposal incorporates feedback on the PR -&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; thanks Suhas Daftuar, Gregory Sanders, Bastien Teinturier, Anthony Towns,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; and others.)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; If you are interested in using package RBF/relay to bump presigned&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transactions, I think you may be interested in reviewing this proposal.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This should solve Rule 3 pinning and perhaps allow us&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to get rid of CPFP carve-out (yay!). I&amp;#39;m keen to hear if people find&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the 1-anchor-output, 1000vB child limit too restrictive. Also, if you&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; find a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; pinning attack or something that makes it unusable for you, I would&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; really really like to know.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Note that transactions with nVersion=3 (&amp;#34;V3 transactions&amp;#34;) are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; currently non-standard in Bitcoin Core. That means **anything that was&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; standard before this policy change would still be standard&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; afterwards.** If you don&amp;#39;t want your transactions to be subject to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; these rules, just continue whatever you&amp;#39;re doing and don&amp;#39;t use&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; nVersion=3. AFAICT this shouldn&amp;#39;t break anything, but let me know if&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; this would be disruptive for you?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; **New Policies:**&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This includes:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; - a set of additional policy rules applying to V3 transactions&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; - modifications to package RBF rules&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; **V3 transactions:**&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Existing standardness rules apply to V3 (e.g. min/max tx weight,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; standard output types, cleanstack, etc.). The following additional&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; rules apply to V3:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; 1. A V3 transaction can be replaced, even if it does not signal BIP125&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    replaceability. (It must also meet the other RBF rules around fees,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; etc. for replacement to happen).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; 2. Any descendant of an unconfirmed V3 transaction must also be V3.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; *Rationale*: Combined with Rule 1, this gives us the property of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;inherited&amp;#34; replaceability signaling when descendants of unconfirmed&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transactions are created. Additionally, checking whether a transaction&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; signals replaceability this way does not require mempool traversal,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; and does not change based on what transactions are mined. It also&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; makes subsequent rules about descendant limits much easier to check.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; *Note*: The descendant of a *confirmed* V3 transaction does not need to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; be V3.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; 3. An unconfirmed V3 transaction cannot have more than 1 descendant.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; *Rationale*: (Upper bound) the larger the descendant limit, the more&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transactions may need to be replaced. This is a problematic pinning&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; attack, i.e., a malicious counterparty prevents the transaction from&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; being replaced by adding many descendant transactions that aren&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; fee-bumping.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; (Lower bound) at least 1 descendant is required to allow CPFP of the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; presigned transaction. The contract protocol can create presigned&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transactions paying 0 fees and 1 output for attaching a CPFP at&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; broadcast time (&amp;#34;anchor output&amp;#34;). Without package RBF, multiple anchor&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; outputs would be required to allow each counterparty to fee-bump any&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; presigned transaction. With package RBF, since the presigned&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transactions can replace each other, 1 anchor output is sufficient.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; 4. A V3 transaction that has an unconfirmed V3 ancestor cannot be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    larger than 1000 virtual bytes.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; *Rationale*: (Upper bound) the larger the descendant size limit, the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; more vbytes may need to be replaced. With default limits, if the child&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; is e.g. 100,000vB, that might be an additional 100,000sats (at&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; 1sat/vbyte) or more, depending on the feerate.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; (Lower bound) the smaller this limit, the fewer UTXOs a child may use&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to fund this fee-bump. For example, only allowing the V3 child to have&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; 2 inputs would require L2 protocols to manage a wallet with high-value&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; UTXOs and make batched fee-bumping impossible. However, as the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; fee-bumping child only needs to fund fees (as opposed to payments),&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; just a few UTXOs should suffice.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; With a limit of 1000 virtual bytes, depending on the output types, the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; child can have 6-15 UTXOs, which should be enough to fund a fee-bump&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; without requiring a carefully-managed UTXO pool. With 1000 virtual&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bytes as the descendant limit, the cost to replace a V3 transaction&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; has much lower variance.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; *Rationale*: This makes the rule very easily &amp;#34;tacked on&amp;#34; to existing&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; logic for policy and wallets. A transaction may be up to 100KvB on its&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; own (`MAX_STANDARD_TX_WEIGHT`) and 101KvB with descendants&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; (`DEFAULT_DESCENDANT_SIZE_LIMIT_KVB`). If an existing V3 transaction&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; in the mempool is 100KvB, its descendant can only be 1000vB, even if&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the policy is 10KvB.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; **Package RBF modifications:**&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; 1. The rule around unconfirmed inputs was&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; originally &amp;#34;A package may include new unconfirmed inputs, but the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ancestor feerate of the child must be at least as high as the ancestor&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; feerates of every transaction being replaced.&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The package may still include new unconfirmed inputs. However,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the new rule is modified to be &amp;#34;The minimum between package feerate&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; and ancestor feerate of the child is not lower than the individual&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; feerates of all directly conflicting transactions and the ancestor&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; feerates of all original transactions.&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; *Rationale*: We are attempting to ensure that the replacement&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transactions are not less incentive-compatible to mine. However, a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; package/transaction&amp;#39;s ancestor feerate is not perfectly representative&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; of its incentive compatibility; it may overestimate (some subset of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the ancestors could be included by itself if it has other high-feerate&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; descendants or are themselves higher feerate than this&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; package/transaction). Instead, we use the minimum between the package&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; feerate and ancestor feerate of the child as a more conservative value&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; than what was proposed originally.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; 2. A new rule is added, requiring that all package transactions with&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; mempool conflicts to be V3. This also means the &amp;#34;sponsoring&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; child transaction must be V3.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; *Note*: Combined with the V3 rules, this means the package must be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; a child-with-parents package. Since package validation is only&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; attempted if the transactions do not pay sufficient fees to be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; accepted on their own, this effectively means that only V3&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transactions can pay to replace their ancestors&amp;#39; conflicts, and only&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; V3 transactions&amp;#39; replacements may be paid for by a descendant.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; *Rationale*: The fee-related rules are economically rational for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ancestor packages, but not necessarily other types of packages.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; A child-with-parents package is a type of ancestor package. It&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; may be fine to allow any ancestor package, but it&amp;#39;s more difficult&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to account for all of the possibilities. For example, it gets much&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; harder to see that we&amp;#39;re applying the descendant limits correctly if&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the package has a gnarly, many-generation, non-tree shape. I&amp;#39;m also&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; not sure if this policy is 100% incentive-compatible if the sponsor&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; is not a direct descendant of the sponsee.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Please see doc/policy/version3_transactions.md and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; doc/policy/packages.md in the PR for the full set of rules.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; **Intended usage for LN:**&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Commitment transactions should be V3 and have 1 anchor output. They&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; can be signed with 0 fees (or 1sat/vbyte) once package relay is deployed&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; on a significant portion of the network. If the commitment tx must&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; be broadcast, determine the desired feerate at broadcast time and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; spend the anchor output in a high feerate transaction. I&amp;#39;m going to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; call the broadcasted commitment tx &amp;#34;the parent&amp;#34; and the attached&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; fee-bumping tx &amp;#34;the child.&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; - This child must be V3.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; - This child must be at most 1000vB. Note this restricts the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   number of inputs you can use to fund the fee bump. Depending&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; on the output types, this is around 6-15.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; - One child may fund fees for multiple commitment tx (&amp;#34;batched&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   fee-bumping&amp;#34;).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; - To do a second fee-bump to add more fees, replace the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   *child* with a higher-feerate tx. Do not try to attach a grandchild.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Otherwise, never try to spend from an unconfirmed V3 transaction. The&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; descendant limits for V3 transactions are very restrictive.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; **Expected Questions:**&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;Does this fix Rule 3 Pinning?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Yes. The V3 descendant limit restricts both you and your counterparty.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Assuming nodes adopted this policy, you may reasonably assume that you&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; only need to replace the commitment transaction &#43; up to 1000vB.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;Only 1 anchor output? What if I need to bump counterparty&amp;#39;s commitment&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; tx in mempool?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; You won&amp;#39;t need to fee-bump a counterparty&amp;#39;s commitment tx using CPFP.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; You would just package RBF it by attaching a high-feerate child to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; your commitment tx.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;Is this a privacy issue, i.e. doesn&amp;#39;t it allow fingerprinting LN&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transactions based on nVersion?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Indeed it may be unrealistic to assume V3 transactions will be in&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; widespread use outside of L2. IIUC, unilateral closes are already&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; obvious LN transactions because of the HTLC inputs. For e.g.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; cooperative closes and opens, I think it makes sense to continue using&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; V2. So, unless I&amp;#39;m missing something, this shouldn&amp;#39;t make it worse.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;So a V3 transaction that doesn&amp;#39;t signal BIP125 replaceability is&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; replaceable? Is that a backward compatibility issue?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Yes it&amp;#39;s replaceable. It&amp;#39;s not an issue AFAICT because,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; under previous policy, the V3 transaction wouldn&amp;#39;t have been&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; in the mempool in the first place.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;Can a V2 transaction replace a V3 transaction and vice versa?&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Yes, otherwise someone can use V3 transactions to censor V2&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transactions spending shared inputs. Note if the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; original V3 transaction has an unconfirmed V3 parent, this would&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; violate the &amp;#34;inherited V3&amp;#34; rule and would be rejected.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Thanks for reading! Feedback and review would be much appreciated.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [1]:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019464.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019464.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [2]:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-January/019817.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-January/019817.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Gloria&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220926/7e18188a/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220926/7e18188a/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:13:46&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsg0dtavs6n5980fdnyx9nnr94wpk3tavcw329l48hq2t6kzp937zqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj4daxza</id>
    
      <title type="html">📅 Original date posted:2022-09-23 📝 Original message:Hello ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsg0dtavs6n5980fdnyx9nnr94wpk3tavcw329l48hq2t6kzp937zqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj4daxza" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszxe2ue50a4su8rkqpk2t033xlq2z0sj754ms7tr67s45f7rm723slkzcqq&#39;&gt;nevent1q…zcqq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-09-23&lt;br/&gt;📝 Original message:Hello Gloria,&lt;br/&gt;&lt;br/&gt;Great work on synthesizing so much feedback into a proposal like this!&lt;br/&gt;&lt;br/&gt;Death to carve-out rule.&lt;br/&gt;&lt;br/&gt;I&amp;#39;d like to elaborate on some caveats and give a few incomplete thoughts.&lt;br/&gt;&lt;br/&gt;There are basically two types of pinning in my estimation today:&lt;br/&gt;&lt;br/&gt;1) rule#3 pinning: Make it uneconomical to replace whatever is in mempool&lt;br/&gt;via large in size but low feerate junk that won&amp;#39;t get mined anytime soon.&lt;br/&gt;Replacing this with feerate-based policy seems apt, but fraught with DoS&lt;br/&gt;risks.&lt;br/&gt;&lt;br/&gt;2) package limit pinning: disallowing transaction propagation by package&lt;br/&gt;limits being hit: size, ancestor count, descendant count. Today it is&lt;br/&gt;mitigated by having all outputs be 1 csv timelocked, and having up to 2&lt;br/&gt;anchor outputs(1 without carve-out rule).&lt;br/&gt;&lt;br/&gt;Would kind of be nice if package RBF would detect a &amp;#34;sibling output spend&amp;#34;&lt;br/&gt;conflict, and knock it out of the mempool via the other replacement rules?&lt;br/&gt;Getting rid of the requirement to 1 block csv lock every output would be&lt;br/&gt;quite nice from a smart contracting composability point of view.&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;#34;Does this fix Rule 3 Pinning?&amp;#34;&lt;br/&gt;&lt;br/&gt;As you likely know from previous discussions the biggest scenario this does&lt;br/&gt;not fix in my estimation is ANYONECANPAY situations. If the parent&lt;br/&gt;transaction can be &amp;#34;inflated&amp;#34; by tacking on additional inputs, this means&lt;br/&gt;the total weight of the parent tx lowers the effective feerate of the&lt;br/&gt;package. Due to this pinning attack there aren&amp;#39;t many(?) deployed schemes&lt;br/&gt;that use the signature type.&lt;br/&gt;&lt;br/&gt;To mitigate this we would likely have to opt into a more complex policy&lt;br/&gt;scheme, committing in the annex to &amp;#34;total mempool package weight&amp;#34;, which&lt;br/&gt;would allow mempool package limits to be picked at signing time.&lt;br/&gt;&lt;br/&gt;Maybe ANYONECANPAY isn&amp;#39;t a very useful paradigm in general, I cannot speak&lt;br/&gt;to that, but it came up in eltoo-related designs using BIP118, which adopts&lt;br/&gt;ACP-like signing behavior. This can be mitigated via straight forward&lt;br/&gt;policy updates as well for BIP118 deployment, but off topic so will leave&lt;br/&gt;it there.&lt;br/&gt;&lt;br/&gt;The other scenario it doesn&amp;#39;t really fix is where HTLC/commitment-like&lt;br/&gt;transactions are being resolved in a batch, but due to relative time&lt;br/&gt;constraints, you may want to accelerate some and not others. Now you must&lt;br/&gt;pay higher rates to replace all of the transaction bumps. This is a&lt;br/&gt;&amp;#34;self-pin&amp;#34; and &amp;#34;get good at utxos noob&amp;#34; type problem, but it&amp;#39;s something&lt;br/&gt;that axing rule#3 in favor of a Replace-by-ancestor-feerate system would&lt;br/&gt;get us.&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;#34;Can a V2 transaction replace a V3 transaction and vice versa?&amp;#34;&lt;br/&gt;&lt;br/&gt;Circling back to my ACP point, this regime still allows pinning anytime you&lt;br/&gt;are sharing a transaction with someone else where you don&amp;#39;t have control&lt;br/&gt;over *all* the inputs. So anytime you are doing a coinjoin-like&lt;br/&gt;transaction, someone else&amp;#39;s inputs can be self-double-spent, requiring you&lt;br/&gt;to satisfy rule#3 when replacing theirs, if they&amp;#39;re bip125-signaling. If&lt;br/&gt;they&amp;#39;re not bip125 signaling, you&amp;#39;ll have to somehow detect this and/or&lt;br/&gt;double-spend your input back to yourself.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Finally, a couple suggestions I&amp;#39;ve already made elsewhere:&lt;br/&gt;&lt;br/&gt;1) I do think that we should seriously consider allowing OP_TRUE to become&lt;br/&gt;a standard script type as part of this policy update. If pinning is solved,&lt;br/&gt;then there&amp;#39;s no reason to require all those extra bytes for &amp;#34;binding&amp;#34; an&lt;br/&gt;anchor to a specific wallet/user. We can save quite a few bytes by having&lt;br/&gt;the input be empty of witness data.&lt;br/&gt;&lt;br/&gt;2) If we allow for a single dust-value(0 on up) output which is immediately&lt;br/&gt;spent by the package, anchors become even easier to to design. No value has&lt;br/&gt;to be &amp;#34;sapped&amp;#34; from contract participants to make an anchor output. There&amp;#39;s&lt;br/&gt;more complications for this, such as making sure the parent transaction is&lt;br/&gt;dropped if the child spend is dropped, but maybe it&amp;#39;s worth the squeeze. I&lt;br/&gt;do think that any L2 uptake of these new rules will take significant&lt;br/&gt;time... maybe we should be a bit more ambitious?&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Fri, Sep 23, 2022 at 11:27 AM Gloria Zhao via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi everyone,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m writing to propose a very simple set of mempool/transaction relay&lt;br/&gt;&amp;gt; policies intended to aid L2/contract protocols. I realized that&lt;br/&gt;&amp;gt; the previously proposed Package Mempool Accept package RBF [1]&lt;br/&gt;&amp;gt; had a few remaining problems after digging into the RBF logic more [2].&lt;br/&gt;&amp;gt; This additional set of policies solves them without requiring a huge RBF&lt;br/&gt;&amp;gt; overhaul.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;ve written an implementation (and docs) for Bitcoin Core:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/25038&#34;&gt;https://github.com/bitcoin/bitcoin/pull/25038&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (You may notice that this proposal incorporates feedback on the PR -&lt;br/&gt;&amp;gt; thanks Suhas Daftuar, Gregory Sanders, Bastien Teinturier, Anthony Towns,&lt;br/&gt;&amp;gt; and others.)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you are interested in using package RBF/relay to bump presigned&lt;br/&gt;&amp;gt; transactions, I think you may be interested in reviewing this proposal.&lt;br/&gt;&amp;gt; This should solve Rule 3 pinning and perhaps allow us&lt;br/&gt;&amp;gt; to get rid of CPFP carve-out (yay!). I&amp;#39;m keen to hear if people find&lt;br/&gt;&amp;gt; the 1-anchor-output, 1000vB child limit too restrictive. Also, if you find&lt;br/&gt;&amp;gt; a&lt;br/&gt;&amp;gt; pinning attack or something that makes it unusable for you, I would&lt;br/&gt;&amp;gt; really really like to know.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note that transactions with nVersion=3 (&amp;#34;V3 transactions&amp;#34;) are&lt;br/&gt;&amp;gt; currently non-standard in Bitcoin Core. That means **anything that was&lt;br/&gt;&amp;gt; standard before this policy change would still be standard&lt;br/&gt;&amp;gt; afterwards.** If you don&amp;#39;t want your transactions to be subject to&lt;br/&gt;&amp;gt; these rules, just continue whatever you&amp;#39;re doing and don&amp;#39;t use&lt;br/&gt;&amp;gt; nVersion=3. AFAICT this shouldn&amp;#39;t break anything, but let me know if&lt;br/&gt;&amp;gt; this would be disruptive for you?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; **New Policies:**&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This includes:&lt;br/&gt;&amp;gt; - a set of additional policy rules applying to V3 transactions&lt;br/&gt;&amp;gt; - modifications to package RBF rules&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; **V3 transactions:**&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Existing standardness rules apply to V3 (e.g. min/max tx weight,&lt;br/&gt;&amp;gt; standard output types, cleanstack, etc.). The following additional&lt;br/&gt;&amp;gt; rules apply to V3:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. A V3 transaction can be replaced, even if it does not signal BIP125&lt;br/&gt;&amp;gt;    replaceability. (It must also meet the other RBF rules around fees,&lt;br/&gt;&amp;gt; etc. for replacement to happen).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. Any descendant of an unconfirmed V3 transaction must also be V3.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *Rationale*: Combined with Rule 1, this gives us the property of&lt;br/&gt;&amp;gt; &amp;#34;inherited&amp;#34; replaceability signaling when descendants of unconfirmed&lt;br/&gt;&amp;gt; transactions are created. Additionally, checking whether a transaction&lt;br/&gt;&amp;gt; signals replaceability this way does not require mempool traversal,&lt;br/&gt;&amp;gt; and does not change based on what transactions are mined. It also&lt;br/&gt;&amp;gt; makes subsequent rules about descendant limits much easier to check.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *Note*: The descendant of a *confirmed* V3 transaction does not need to be&lt;br/&gt;&amp;gt; V3.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. An unconfirmed V3 transaction cannot have more than 1 descendant.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *Rationale*: (Upper bound) the larger the descendant limit, the more&lt;br/&gt;&amp;gt; transactions may need to be replaced. This is a problematic pinning&lt;br/&gt;&amp;gt; attack, i.e., a malicious counterparty prevents the transaction from&lt;br/&gt;&amp;gt; being replaced by adding many descendant transactions that aren&amp;#39;t&lt;br/&gt;&amp;gt; fee-bumping.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (Lower bound) at least 1 descendant is required to allow CPFP of the&lt;br/&gt;&amp;gt; presigned transaction. The contract protocol can create presigned&lt;br/&gt;&amp;gt; transactions paying 0 fees and 1 output for attaching a CPFP at&lt;br/&gt;&amp;gt; broadcast time (&amp;#34;anchor output&amp;#34;). Without package RBF, multiple anchor&lt;br/&gt;&amp;gt; outputs would be required to allow each counterparty to fee-bump any&lt;br/&gt;&amp;gt; presigned transaction. With package RBF, since the presigned&lt;br/&gt;&amp;gt; transactions can replace each other, 1 anchor output is sufficient.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. A V3 transaction that has an unconfirmed V3 ancestor cannot be&lt;br/&gt;&amp;gt;    larger than 1000 virtual bytes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *Rationale*: (Upper bound) the larger the descendant size limit, the&lt;br/&gt;&amp;gt; more vbytes may need to be replaced. With default limits, if the child&lt;br/&gt;&amp;gt; is e.g. 100,000vB, that might be an additional 100,000sats (at&lt;br/&gt;&amp;gt; 1sat/vbyte) or more, depending on the feerate.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (Lower bound) the smaller this limit, the fewer UTXOs a child may use&lt;br/&gt;&amp;gt; to fund this fee-bump. For example, only allowing the V3 child to have&lt;br/&gt;&amp;gt; 2 inputs would require L2 protocols to manage a wallet with high-value&lt;br/&gt;&amp;gt; UTXOs and make batched fee-bumping impossible. However, as the&lt;br/&gt;&amp;gt; fee-bumping child only needs to fund fees (as opposed to payments),&lt;br/&gt;&amp;gt; just a few UTXOs should suffice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With a limit of 1000 virtual bytes, depending on the output types, the&lt;br/&gt;&amp;gt; child can have 6-15 UTXOs, which should be enough to fund a fee-bump&lt;br/&gt;&amp;gt; without requiring a carefully-managed UTXO pool. With 1000 virtual&lt;br/&gt;&amp;gt; bytes as the descendant limit, the cost to replace a V3 transaction&lt;br/&gt;&amp;gt; has much lower variance.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *Rationale*: This makes the rule very easily &amp;#34;tacked on&amp;#34; to existing&lt;br/&gt;&amp;gt; logic for policy and wallets. A transaction may be up to 100KvB on its&lt;br/&gt;&amp;gt; own (`MAX_STANDARD_TX_WEIGHT`) and 101KvB with descendants&lt;br/&gt;&amp;gt; (`DEFAULT_DESCENDANT_SIZE_LIMIT_KVB`). If an existing V3 transaction&lt;br/&gt;&amp;gt; in the mempool is 100KvB, its descendant can only be 1000vB, even if&lt;br/&gt;&amp;gt; the policy is 10KvB.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; **Package RBF modifications:**&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. The rule around unconfirmed inputs was&lt;br/&gt;&amp;gt; originally &amp;#34;A package may include new unconfirmed inputs, but the&lt;br/&gt;&amp;gt; ancestor feerate of the child must be at least as high as the ancestor&lt;br/&gt;&amp;gt; feerates of every transaction being replaced.&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The package may still include new unconfirmed inputs. However,&lt;br/&gt;&amp;gt; the new rule is modified to be &amp;#34;The minimum between package feerate&lt;br/&gt;&amp;gt; and ancestor feerate of the child is not lower than the individual&lt;br/&gt;&amp;gt; feerates of all directly conflicting transactions and the ancestor&lt;br/&gt;&amp;gt; feerates of all original transactions.&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *Rationale*: We are attempting to ensure that the replacement&lt;br/&gt;&amp;gt; transactions are not less incentive-compatible to mine. However, a&lt;br/&gt;&amp;gt; package/transaction&amp;#39;s ancestor feerate is not perfectly representative&lt;br/&gt;&amp;gt; of its incentive compatibility; it may overestimate (some subset of&lt;br/&gt;&amp;gt; the ancestors could be included by itself if it has other high-feerate&lt;br/&gt;&amp;gt; descendants or are themselves higher feerate than this&lt;br/&gt;&amp;gt; package/transaction). Instead, we use the minimum between the package&lt;br/&gt;&amp;gt; feerate and ancestor feerate of the child as a more conservative value&lt;br/&gt;&amp;gt; than what was proposed originally.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. A new rule is added, requiring that all package transactions with&lt;br/&gt;&amp;gt; mempool conflicts to be V3. This also means the &amp;#34;sponsoring&amp;#34;&lt;br/&gt;&amp;gt; child transaction must be V3.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *Note*: Combined with the V3 rules, this means the package must be&lt;br/&gt;&amp;gt; a child-with-parents package. Since package validation is only&lt;br/&gt;&amp;gt; attempted if the transactions do not pay sufficient fees to be&lt;br/&gt;&amp;gt; accepted on their own, this effectively means that only V3&lt;br/&gt;&amp;gt; transactions can pay to replace their ancestors&amp;#39; conflicts, and only&lt;br/&gt;&amp;gt; V3 transactions&amp;#39; replacements may be paid for by a descendant.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *Rationale*: The fee-related rules are economically rational for&lt;br/&gt;&amp;gt; ancestor packages, but not necessarily other types of packages.&lt;br/&gt;&amp;gt; A child-with-parents package is a type of ancestor package. It&lt;br/&gt;&amp;gt; may be fine to allow any ancestor package, but it&amp;#39;s more difficult&lt;br/&gt;&amp;gt; to account for all of the possibilities. For example, it gets much&lt;br/&gt;&amp;gt; harder to see that we&amp;#39;re applying the descendant limits correctly if&lt;br/&gt;&amp;gt; the package has a gnarly, many-generation, non-tree shape. I&amp;#39;m also&lt;br/&gt;&amp;gt; not sure if this policy is 100% incentive-compatible if the sponsor&lt;br/&gt;&amp;gt; is not a direct descendant of the sponsee.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Please see doc/policy/version3_transactions.md and&lt;br/&gt;&amp;gt; doc/policy/packages.md in the PR for the full set of rules.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; **Intended usage for LN:**&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Commitment transactions should be V3 and have 1 anchor output. They&lt;br/&gt;&amp;gt; can be signed with 0 fees (or 1sat/vbyte) once package relay is deployed&lt;br/&gt;&amp;gt; on a significant portion of the network. If the commitment tx must&lt;br/&gt;&amp;gt; be broadcast, determine the desired feerate at broadcast time and&lt;br/&gt;&amp;gt; spend the anchor output in a high feerate transaction. I&amp;#39;m going to&lt;br/&gt;&amp;gt; call the broadcasted commitment tx &amp;#34;the parent&amp;#34; and the attached&lt;br/&gt;&amp;gt; fee-bumping tx &amp;#34;the child.&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - This child must be V3.&lt;br/&gt;&amp;gt; - This child must be at most 1000vB. Note this restricts the&lt;br/&gt;&amp;gt;   number of inputs you can use to fund the fee bump. Depending&lt;br/&gt;&amp;gt; on the output types, this is around 6-15.&lt;br/&gt;&amp;gt; - One child may fund fees for multiple commitment tx (&amp;#34;batched&lt;br/&gt;&amp;gt;   fee-bumping&amp;#34;).&lt;br/&gt;&amp;gt; - To do a second fee-bump to add more fees, replace the&lt;br/&gt;&amp;gt;   *child* with a higher-feerate tx. Do not try to attach a grandchild.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Otherwise, never try to spend from an unconfirmed V3 transaction. The&lt;br/&gt;&amp;gt; descendant limits for V3 transactions are very restrictive.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; **Expected Questions:**&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;Does this fix Rule 3 Pinning?&amp;#34;&lt;br/&gt;&amp;gt; Yes. The V3 descendant limit restricts both you and your counterparty.&lt;br/&gt;&amp;gt; Assuming nodes adopted this policy, you may reasonably assume that you&lt;br/&gt;&amp;gt; only need to replace the commitment transaction &#43; up to 1000vB.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;Only 1 anchor output? What if I need to bump counterparty&amp;#39;s commitment tx&lt;br/&gt;&amp;gt; in mempool?&amp;#34;&lt;br/&gt;&amp;gt; You won&amp;#39;t need to fee-bump a counterparty&amp;#39;s commitment tx using CPFP.&lt;br/&gt;&amp;gt; You would just package RBF it by attaching a high-feerate child to&lt;br/&gt;&amp;gt; your commitment tx.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;Is this a privacy issue, i.e. doesn&amp;#39;t it allow fingerprinting LN&lt;br/&gt;&amp;gt; transactions based on nVersion?&amp;#34;&lt;br/&gt;&amp;gt; Indeed it may be unrealistic to assume V3 transactions will be in&lt;br/&gt;&amp;gt; widespread use outside of L2. IIUC, unilateral closes are already&lt;br/&gt;&amp;gt; obvious LN transactions because of the HTLC inputs. For e.g.&lt;br/&gt;&amp;gt; cooperative closes and opens, I think it makes sense to continue using&lt;br/&gt;&amp;gt; V2. So, unless I&amp;#39;m missing something, this shouldn&amp;#39;t make it worse.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;So a V3 transaction that doesn&amp;#39;t signal BIP125 replaceability is&lt;br/&gt;&amp;gt; replaceable? Is that a backward compatibility issue?&amp;#34;&lt;br/&gt;&amp;gt; Yes it&amp;#39;s replaceable. It&amp;#39;s not an issue AFAICT because,&lt;br/&gt;&amp;gt; under previous policy, the V3 transaction wouldn&amp;#39;t have been&lt;br/&gt;&amp;gt; in the mempool in the first place.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;Can a V2 transaction replace a V3 transaction and vice versa?&amp;#34;&lt;br/&gt;&amp;gt; Yes, otherwise someone can use V3 transactions to censor V2&lt;br/&gt;&amp;gt; transactions spending shared inputs. Note if the&lt;br/&gt;&amp;gt; original V3 transaction has an unconfirmed V3 parent, this would&lt;br/&gt;&amp;gt; violate the &amp;#34;inherited V3&amp;#34; rule and would be rejected.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks for reading! Feedback and review would be much appreciated.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019464.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019464.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [2]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-January/019817.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-January/019817.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Gloria&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220923/43403b3a/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220923/43403b3a/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:13:42&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspunu20fd65mu4tnpfkpz5pe6jvddhf8vlulue7txjvdv563uwv0gzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjlf4vzn</id>
    
      <title type="html">📅 Original date posted:2022-07-20 📝 Original message:Please ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspunu20fd65mu4tnpfkpz5pe6jvddhf8vlulue7txjvdv563uwv0gzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjlf4vzn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2jnfapzmuz6j4kqm06tkjcu6k674lvwxm2rmnrssvgkft7caxhacg6ukr0&#39;&gt;nevent1q…ukr0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-07-20&lt;br/&gt;📝 Original message:Please see BIP322&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0322.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0322.mediawiki&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;On Wed, Jul 20, 2022, 5:46 PM Peter (Coinkite Inc) via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Ali.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; This BIP does not replace, supersede, or obsolete BIPs 173 or 322. My&lt;br/&gt;&amp;gt; proposal is simply going to standardize the practice of placing the segwit&lt;br/&gt;&amp;gt; address into the address field, and does not require alterations to the&lt;br/&gt;&amp;gt; message signing format like those BIPs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; COLDCARD makes signatures exacly like that, when told to sign with a&lt;br/&gt;&amp;gt; segwit address:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     % ckcc msg -s Hello&lt;br/&gt;&amp;gt;     Hello&lt;br/&gt;&amp;gt;     bc1qzeacswvlulg0jngad9gmtkvdp9lwum42wwzdu5&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; HxuuWQwjw0417fLV9L0kWbt7w9XOIWKhHMhjXhyXTczcSozGTXM4knqdISiYbbmqSRXqI5mNTWH9qkDoqZTpnPc=&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Unfortunately, I do not know of any &amp;#34;verifiers&amp;#34; that will accept the above&lt;br/&gt;&amp;gt; signature, but there is no alternative since the various BIP-322 proposals&lt;br/&gt;&amp;gt; never gained wide acceptance.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Bitcoin Core does not support verifying that message, even though the UX&lt;br/&gt;&amp;gt; makes it look possible. In effect segwit features never got implemented to&lt;br/&gt;&amp;gt; that depth in Core. It&amp;#39;s sad because the community is not maintaining core&lt;br/&gt;&amp;gt; (Core?) features to the same depth as Satoshi did when he was active in the&lt;br/&gt;&amp;gt; project.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; PS. I am pretty sure that there is a BIP for the original signing method&lt;br/&gt;&amp;gt; - what is its number?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; My understanding that the original approach was directly from Satoshi&lt;br/&gt;&amp;gt; himself when the original client was written. It has never been codified in&lt;br/&gt;&amp;gt; a BIP as far as I know.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A related issue the the &amp;#34;ascii armor&amp;#34; that is sometimes used. It&amp;#39;s a&lt;br/&gt;&amp;gt; little like RFC2440 &amp;lt;&lt;a href=&#34;https://www.ietf.org/rfc/rfc2440.txt&amp;gt&#34;&gt;https://www.ietf.org/rfc/rfc2440.txt&amp;gt&lt;/a&gt;; but&lt;br/&gt;&amp;gt; newline-treatment isn&amp;#39;t defined well enough for good interoperability, in&lt;br/&gt;&amp;gt; my personal experience.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So in summary... yes a &amp;#34;defacto&amp;#34; BIP is needed and useful to do, in my&lt;br/&gt;&amp;gt; opinion. Then Core should be updated to support it as well.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ---&lt;br/&gt;&amp;gt; @DocHEX  ||  Coinkite  ||  PGP: A3A31BAD 5A2A5B10&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Wed, Jul 20, 2022 at 04:10:09AM &#43;0000, Ali Sherief wrote:&lt;br/&gt;&amp;gt; &amp;gt; [my third attempt at getting this message through. Surprisingly, I&lt;br/&gt;&amp;gt; managed to send this at the second try with the correct SMTP, From, To and&lt;br/&gt;&amp;gt; all, but maybe it was caught in GreyListing (protonmail).]&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I was thinking about creating a BIP to address the lack of&lt;br/&gt;&amp;gt; standardization for Segwit message signatures, but I want some advice&lt;br/&gt;&amp;gt; before proceeding.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The current state of affairs is that the wallets that do support signing&lt;br/&gt;&amp;gt; and verifying a bitcoin message can only sign legacy addresses. It is&lt;br/&gt;&amp;gt; technically possible to sign and verify segwit addresses, since ECDSA only&lt;br/&gt;&amp;gt; depends on the public key (hence why you need a private key to sign&lt;br/&gt;&amp;gt; messages).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; However, because there is no generally-accepted standard for signing&lt;br/&gt;&amp;gt; segwit messages, the wallets that do support this feature simply insert the&lt;br/&gt;&amp;gt; segwit address into the address field. Verification also only works using&lt;br/&gt;&amp;gt; the procedure on that specific wallet software, if only because the&lt;br/&gt;&amp;gt; conventional tools for verifying messages attempt to reconstruct a legacy&lt;br/&gt;&amp;gt; address only.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; This BIP is not going to enforce anything, it&amp;#39;s just going to set&lt;br/&gt;&amp;gt; guidelines for writing a message signing and verification procedure.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; This BIP does not replace, supersede, or obsolete BIPs 173 or 322. My&lt;br/&gt;&amp;gt; proposal is simply going to standardize the practice of placing the segwit&lt;br/&gt;&amp;gt; address into the address field, and does not require alterations to the&lt;br/&gt;&amp;gt; message signing format like those BIPs.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In summary, in the verification part, the following address hashing&lt;br/&gt;&amp;gt; algorithms will be tried in sequence in an attempt to reconstruct the&lt;br/&gt;&amp;gt; address in the signed message:&lt;br/&gt;&amp;gt; &amp;gt; - P2PKH (legacy address)&lt;br/&gt;&amp;gt; &amp;gt; - P2WPKH-P2SH (nested segwit)&lt;br/&gt;&amp;gt; &amp;gt; - P2WPKH with version from 0 to MAX_WITNESS_VERSION (covers native&lt;br/&gt;&amp;gt; segwit with version 0 as well as future native segwit address types such as&lt;br/&gt;&amp;gt; Taproot) - where MAX_WITNESS_VERSION is the maximum supported witness&lt;br/&gt;&amp;gt; version by the bech32 encoding.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The verification procedure stops if any of these hashes yield the&lt;br/&gt;&amp;gt; correct address, and fails if all of the above methods fail to reproduce&lt;br/&gt;&amp;gt; the address in the signed message.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In the signing procedure, the only modification is the insertion of the&lt;br/&gt;&amp;gt; segwit address in place of the legacy address in the signed message.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If this BIP is approved, it does not require any changes to existing&lt;br/&gt;&amp;gt; signed messages, and the original sign/verify algorithms will continue to&lt;br/&gt;&amp;gt; interoperate with this improved sign/verify algorithm, without any action&lt;br/&gt;&amp;gt; necessary from the developers.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; So as you can see, this is the entire framework of the BIP I plan to&lt;br/&gt;&amp;gt; draft. There is no need for any auxilliary feature additions into this BIP.&lt;br/&gt;&amp;gt; I just want to hear the mailing list&amp;#39;s advice about how I should draft such&lt;br/&gt;&amp;gt; a BIP.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; - Ali&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; PS. I am pretty sure that there is a BIP for the original signing method&lt;br/&gt;&amp;gt; - what is its number?&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220720/917426c4/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220720/917426c4/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:11:58&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsw5pl3t3yacjyzajyy269vnvfz9s3k8nlfyklwz2wudn04h26n8agzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjqys926</id>
    
      <title type="html">📅 Original date posted:2022-06-16 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsw5pl3t3yacjyzajyy269vnvfz9s3k8nlfyklwz2wudn04h26n8agzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjqys926" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8lgxwy456vtfnmn5lts7dcx8svaj9plw89lawxcwjz4w457tc3xcys9dhv&#39;&gt;nevent1q…9dhv&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-06-16&lt;br/&gt;📝 Original message:&amp;gt; It is not possible to guarantee that a transaction will be mined within N&lt;br/&gt;blocks irrespective of fees. It is vulnerable if a project&amp;#39;s security&lt;br/&gt;relies on it, and should fix it by changing the security assumptions.&lt;br/&gt;&lt;br/&gt;It&amp;#39;s not possible to guarantee that any funds can be moved ever. But we&lt;br/&gt;still build an entire system assuming we can via an interesting mix of&lt;br/&gt;cryptography and incentives.&lt;br/&gt;&lt;br/&gt;On Wed, Jun 15, 2022 at 9:45 PM alicexbt &amp;lt;alicexbt at protonmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Greg,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The security of LN and other related systems are something like: &amp;#34;given&lt;br/&gt;&amp;gt; proper fees offered, can a transaction be mined within N blocks?&amp;#34; You&amp;#39;re&lt;br/&gt;&amp;gt; simply not allowed to out-bid your attacker in certain circumstances due to&lt;br/&gt;&amp;gt; today&amp;#39;s miner incentive-incompatible relay policies.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It is not possible to guarantee that a transaction will be mined within N&lt;br/&gt;&amp;gt; blocks irrespective of fees. It is vulnerable if a project&amp;#39;s security&lt;br/&gt;&amp;gt; relies on it, and should fix it by changing the security assumptions.&lt;br/&gt;&amp;gt; Miners can try full-rbf or other policy without core so I won&amp;#39;t consider&lt;br/&gt;&amp;gt; opt-in as incentive-incompatible.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ... arguments about how many people RBF being sufficient or not ...&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The idea that we should only build robust systems after the broken ones&lt;br/&gt;&amp;gt; are attacked is not a serious argument.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Its true and was even mentioned in PR #16171 that a policy is only useful&lt;br/&gt;&amp;gt; if enough nodes and miners follow it. We should build robust systems but I&lt;br/&gt;&amp;gt; don&amp;#39;t think this change will help in doing it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is a strawman.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Full-RBF is a simple, obvious, incentive-compatible step to getting closer&lt;br/&gt;&amp;gt; to more robust layer two systems. Fixing the rest of the holes is for&lt;br/&gt;&amp;gt; future proposals which are a bit more involved and definitely less mature.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I do not have issues with multiple RBF policies being tried out and&lt;br/&gt;&amp;gt; full-rbf being one of them. My disagreements are with rationale, lack of&lt;br/&gt;&amp;gt; basic options in Bitcoin Core to employ/disable different RBF policies&lt;br/&gt;&amp;gt; and a few arguments made in support for full-rbf. Whether it appears&lt;br/&gt;&amp;gt; strawman or offtopic on github, there should be a place to share these&lt;br/&gt;&amp;gt; disagreements.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If Knots has these knobs, just use Knots rather than lobby all&lt;br/&gt;&amp;gt; implementations to have miner incentive incompatible knobs?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Everyone can share options that would help users in the bitcoin&lt;br/&gt;&amp;gt; implementation used by 90% nodes. I don&amp;#39;t think this is reserved only for a&lt;br/&gt;&amp;gt; few developers. I would personally use Knots and others are free to try the&lt;br/&gt;&amp;gt; suggestion or continue using Bitcoin Core.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; /dev/fd0&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Sent with Proton Mail &amp;lt;&lt;a href=&#34;https://proton.me/&amp;gt&#34;&gt;https://proton.me/&amp;gt&lt;/a&gt;; secure email.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------- Original Message -------&lt;br/&gt;&amp;gt; On Thursday, June 16th, 2022 at 6:32 AM, Greg Sanders &amp;lt;&lt;br/&gt;&amp;gt; gsanders87 at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If something relies on a policy which can be changed without breaking&lt;br/&gt;&amp;gt; consensus rules, how is it secure in any case with or without full rbf?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The security of LN and other related systems are something like: &amp;#34;given&lt;br/&gt;&amp;gt; proper fees offered, can a transaction be mined within N blocks?&amp;#34; You&amp;#39;re&lt;br/&gt;&amp;gt; simply not allowed to out-bid your attacker in certain circumstances due to&lt;br/&gt;&amp;gt; today&amp;#39;s miner incentive-incompatible relay policies.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There is also a time-value dimension to this with other simpler systems&lt;br/&gt;&amp;gt; where your funds can be locked up for potentially weeks for similar reasons.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ... arguments about how many people RBF being sufficient or not ...&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The idea that we should only build robust systems after the broken ones&lt;br/&gt;&amp;gt; are attacked is not a serious argument.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I am not opposed to full-rbf; rather, I am opposed to the notion that&lt;br/&gt;&amp;gt; full-rbf will solve all problems&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is a strawman.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Full-RBF is a simple, obvious, incentive-compatible step to getting closer&lt;br/&gt;&amp;gt; to more robust layer two systems. Fixing the rest of the holes is for&lt;br/&gt;&amp;gt; future proposals which are a bit more involved and definitely less mature.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; would suggest users to try Bitcoin Knots instead&lt;br/&gt;&amp;gt; &amp;gt; Developers should provide basic RBF policy options rather than&lt;br/&gt;&amp;gt; attempting to define what constitutes a good policy and removing the&lt;br/&gt;&amp;gt; ability to disable something when necessary.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If Knots has these knobs, just use Knots rather than lobby all&lt;br/&gt;&amp;gt; implementations to have miner incentive incompatible knobs?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Greg&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Wed, Jun 15, 2022 at 8:27 PM alicexbt via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi Antoine,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thanks for opening the pull request to add support for full-rbf in&lt;br/&gt;&amp;gt;&amp;gt; Bitcoin Core. I have a few disagreements with the approach and questions.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Recent discussions among LN devs have brought back on the surface&lt;br/&gt;&amp;gt;&amp;gt; concerns about the security of multi-party funded transactions (coinjoins,&lt;br/&gt;&amp;gt;&amp;gt; dual-funded LN channels, on-chain DLCs, ...). It turns out there is a&lt;br/&gt;&amp;gt;&amp;gt; low-fruit, naive DoS vector playable against the funding flow of any such&lt;br/&gt;&amp;gt;&amp;gt; construction due to the lack of existent full-rbf transaction-relay&lt;br/&gt;&amp;gt;&amp;gt; topology on today&amp;#39;s p2p network [0] [1].&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 1)If something relies on a policy which can be changed without breaking&lt;br/&gt;&amp;gt;&amp;gt; consensus rules, how is it secure in any case with or without full rbf? If&lt;br/&gt;&amp;gt;&amp;gt; I write a python script that expects user to enter char &amp;#39;a&amp;#39; or &amp;#39;b&amp;#39; but user&lt;br/&gt;&amp;gt;&amp;gt; can enter &amp;#39;c&amp;#39; and there is no code to handle exceptions or other chars,&lt;br/&gt;&amp;gt;&amp;gt; will it be secure?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 2)full-rbf is not default in the 2 open pull requests, so this experiment&lt;br/&gt;&amp;gt;&amp;gt; still relies on users changing RBF policies manually. If majority of nodes&lt;br/&gt;&amp;gt;&amp;gt; use default opt-in policy, how would this affect vulnerable projects?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If you&amp;#39;re a mining operator looking to increase your income, you might be&lt;br/&gt;&amp;gt;&amp;gt; interested to experiment with full-rbf as a policy.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Miners can only increase their income if users replace transactions. 2-3%&lt;br/&gt;&amp;gt;&amp;gt; transactions are replaced with opt-in RBF, if someone did not replace&lt;br/&gt;&amp;gt;&amp;gt; earlier why would they do it with full RBF? Or even if we add some users in&lt;br/&gt;&amp;gt;&amp;gt; it who could not signal for some reasons, do you think it would be anything&lt;br/&gt;&amp;gt;&amp;gt; above 5%?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If you&amp;#39;re a Bitcoin user or business and you don&amp;#39;t like full-rbf, please&lt;br/&gt;&amp;gt;&amp;gt; express an opinion on how it might affect your software/operations. I&amp;#39;m&lt;br/&gt;&amp;gt;&amp;gt; always interested to learn more about mempool and transaction-relay&lt;br/&gt;&amp;gt;&amp;gt; interactions with upper-layers and applications and to listen to feedback&lt;br/&gt;&amp;gt;&amp;gt; in those areas, and I guess a lot of other Bitcoin researchers/devs too. I&lt;br/&gt;&amp;gt;&amp;gt; know there have been a lot of concerns about full-rbf in the past, however&lt;br/&gt;&amp;gt;&amp;gt; I believe the Bitcoin ecosystem has matured a lot since then.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I am not opposed to full-rbf; rather, I am opposed to the notion that&lt;br/&gt;&amp;gt;&amp;gt; full-rbf will solve all problems and the lack of basic options in Bitcoin&lt;br/&gt;&amp;gt;&amp;gt; Core to employ/disable different RBF policies. There is also a speculation&lt;br/&gt;&amp;gt;&amp;gt; about making full RBF default in an year which isn&amp;#39;t relevant to discuss at&lt;br/&gt;&amp;gt;&amp;gt; this point without trying different RBF policies.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I would suggest users to try Bitcoin Knots instead which already has an&lt;br/&gt;&amp;gt;&amp;gt; option to disable all RBF policies if required, opt-in and full RBF policy.&lt;br/&gt;&amp;gt;&amp;gt; This can also be done using GUI if not familiar with config option&lt;br/&gt;&amp;gt;&amp;gt; mempoolreplacement​.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The rationale in PR #16171 was insufficient to justify removing it in the&lt;br/&gt;&amp;gt;&amp;gt; first place, had 2 NACKs and was reopened to merge it. Why bother with a&lt;br/&gt;&amp;gt;&amp;gt; few lines of code that may allow someone disable it if required in local&lt;br/&gt;&amp;gt;&amp;gt; mempool since it&amp;#39;s only useful when a big percentage of miners utilize it&lt;br/&gt;&amp;gt;&amp;gt; and essentially underused according to the PR author? Developers should&lt;br/&gt;&amp;gt;&amp;gt; provide basic RBF policy options rather than attempting to define what&lt;br/&gt;&amp;gt;&amp;gt; constitutes a good policy and removing the ability to disable something&lt;br/&gt;&amp;gt;&amp;gt; when necessary.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; /dev/fd0&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Sent with Proton Mail &amp;lt;&lt;a href=&#34;https://proton.me/&amp;gt&#34;&gt;https://proton.me/&amp;gt&lt;/a&gt;; secure email.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ------- Original Message -------&lt;br/&gt;&amp;gt;&amp;gt; On Tuesday, June 14th, 2022 at 5:55 AM, Antoine Riard via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Recent discussions among LN devs have brought back on the surface&lt;br/&gt;&amp;gt;&amp;gt; concerns about the security of multi-party funded transactions (coinjoins,&lt;br/&gt;&amp;gt;&amp;gt; dual-funded LN channels, on-chain DLCs, ...). It turns out there is a&lt;br/&gt;&amp;gt;&amp;gt; low-fruit, naive DoS vector playable against the funding flow of any such&lt;br/&gt;&amp;gt;&amp;gt; construction due to the lack of existent full-rbf transaction-relay&lt;br/&gt;&amp;gt;&amp;gt; topology on today&amp;#39;s p2p network [0] [1]. While it does not consist in a&lt;br/&gt;&amp;gt;&amp;gt; direct loss of funds, if exploited well I think it&amp;#39;s annoying enough to&lt;br/&gt;&amp;gt;&amp;gt; inflict significant timevalue loss or fee-bumping waste&lt;br/&gt;&amp;gt;&amp;gt; to the future providers or distributed swarm of users doing multi-party&lt;br/&gt;&amp;gt;&amp;gt; funded transactions. Of course, it can be fixed one layer above by&lt;br/&gt;&amp;gt;&amp;gt; introducing either fidelity bonds or a reliable centralized coordinator,&lt;br/&gt;&amp;gt;&amp;gt; though at the price of an overhead per-participant ressources cost and loss&lt;br/&gt;&amp;gt;&amp;gt; in system openness [1].&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; For that reason, I believe it would be beneficial to the flourishing of&lt;br/&gt;&amp;gt;&amp;gt; multi-party funded transactions to fix the Dos vector by seeing a subset of&lt;br/&gt;&amp;gt;&amp;gt; the network running full-rbf and enabling propagation of honest multi-party&lt;br/&gt;&amp;gt;&amp;gt; transactions to the interested miners, replacing potential non-signaling&lt;br/&gt;&amp;gt;&amp;gt; double-spend from a malicious counterparty. Moving towards that direction,&lt;br/&gt;&amp;gt;&amp;gt; I&amp;#39;ve submitted a small patch against Bitcoin Core enabling it to turn on&lt;br/&gt;&amp;gt;&amp;gt; full-rbf as a policy, still under review [3]. The default setting stays&lt;br/&gt;&amp;gt;&amp;gt; **false**, i.e keeping opt-in RBF as a default replacement policy. I&amp;#39;ve&lt;br/&gt;&amp;gt;&amp;gt; started to run the patch on a public node at 146.190.224.15.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If you&amp;#39;re a node operator curious to play with full-rbf, feel free to&lt;br/&gt;&amp;gt;&amp;gt; connect to this node or spawn up a toy, public node yourself. There is a&lt;br/&gt;&amp;gt;&amp;gt; ##uafrbf libera chat if you would like information on the settings or&lt;br/&gt;&amp;gt;&amp;gt; looking for full-rbf friends (though that step could be automated in the&lt;br/&gt;&amp;gt;&amp;gt; future by setting up a dedicated network bit and reserving a few outbound&lt;br/&gt;&amp;gt;&amp;gt; slots for them).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If you&amp;#39;re a mining operator looking to increase your income, you might be&lt;br/&gt;&amp;gt;&amp;gt; interested to experiment with full-rbf as a policy. Indeed, in the future I&lt;br/&gt;&amp;gt;&amp;gt; believe the multi-party transactions issuers who need full-rbf to secure&lt;br/&gt;&amp;gt;&amp;gt; their funding flow should connect by default to full-rbf peers. One can&lt;br/&gt;&amp;gt;&amp;gt; conjecture that their transactions are likely to be more compelling in&lt;br/&gt;&amp;gt;&amp;gt; their feerate as their liquidity needs are higher than the simple&lt;br/&gt;&amp;gt;&amp;gt; transaction. For today, I think we have really few standards and bitcoin&lt;br/&gt;&amp;gt;&amp;gt; softwares relying on multi-party funded transactions [4].&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If you&amp;#39;re a Bitcoin user or business and you don&amp;#39;t like full-rbf, please&lt;br/&gt;&amp;gt;&amp;gt; express an opinion on how it might affect your software/operations. I&amp;#39;m&lt;br/&gt;&amp;gt;&amp;gt; always interested to learn more about mempool and transaction-relay&lt;br/&gt;&amp;gt;&amp;gt; interactions with upper-layers and applications and to listen to feedback&lt;br/&gt;&amp;gt;&amp;gt; in those areas, and I guess a lot of other Bitcoin researchers/devs too. I&lt;br/&gt;&amp;gt;&amp;gt; know there have been a lot of concerns about full-rbf in the past, however&lt;br/&gt;&amp;gt;&amp;gt; I believe the Bitcoin ecosystem has matured a lot since then.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Any mistakes or missing context is my own.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [0] For more info about replace-by-fee, see&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://bitcoinops.org/en/topics/replace-by-fee/&#34;&gt;https://bitcoinops.org/en/topics/replace-by-fee/&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [1] For more details about the DoS vector, see&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-May/003033.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-May/003033.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [2] E.g I think it does not affect the Lightning Pool service, as there&lt;br/&gt;&amp;gt;&amp;gt; is a preliminary step where the participant funds are locked first in a&lt;br/&gt;&amp;gt;&amp;gt; 2-of-2 with the coordinator before being committed in the multi-party batch&lt;br/&gt;&amp;gt;&amp;gt; transaction.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/25353&#34;&gt;https://github.com/bitcoin/bitcoin/pull/25353&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [4] E.g DLCs :&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/discreetlogcontracts/dlcspecs/blob/master/Transactions.md&#34;&gt;https://github.com/discreetlogcontracts/dlcspecs/blob/master/Transactions.md&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; ; Lightning dual-funded channel :&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/lightning/bolts/pull/851&#34;&gt;https://github.com/lightning/bolts/pull/851&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220616/8af3abae/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220616/8af3abae/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:10:31&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9x8napnv2ykh93lk0mr8ujwxcck3dd0p3wrxrphkp68a60j6f6fczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj30z4gl</id>
    
      <title type="html">📅 Original date posted:2022-06-15 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9x8napnv2ykh93lk0mr8ujwxcck3dd0p3wrxrphkp68a60j6f6fczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj30z4gl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqst77zvsapzs3xw80tpgf4t2xnncv6pqyelnj7gmvu3f8z4l59xjscdk5rg2&#39;&gt;nevent1q…5rg2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-06-15&lt;br/&gt;📝 Original message:&amp;gt; If something relies on a policy which can be changed without breaking&lt;br/&gt;consensus rules, how is it secure in any case with or without full rbf?&lt;br/&gt;&lt;br/&gt;The security of LN and other related systems are something like: &amp;#34;given&lt;br/&gt;proper fees offered, can a transaction be mined within N blocks?&amp;#34; You&amp;#39;re&lt;br/&gt;simply not allowed to out-bid your attacker in certain circumstances due to&lt;br/&gt;today&amp;#39;s miner incentive-incompatible relay policies.&lt;br/&gt;&lt;br/&gt;There is also a time-value dimension to this with other simpler systems&lt;br/&gt;where your funds can be locked up for potentially weeks for similar reasons.&lt;br/&gt;&lt;br/&gt;&amp;gt;  ... arguments about how many people RBF being sufficient or not ...&lt;br/&gt;&lt;br/&gt;The idea that we should only build robust systems after the broken ones are&lt;br/&gt;attacked is not a serious argument.&lt;br/&gt;&lt;br/&gt;&amp;gt; I am not opposed to full-rbf; rather, I am opposed to the notion that&lt;br/&gt;full-rbf will solve all problems&lt;br/&gt;&lt;br/&gt;This is a strawman.&lt;br/&gt;&lt;br/&gt;Full-RBF is a simple, obvious, incentive-compatible step to getting closer&lt;br/&gt;to more robust layer two systems. Fixing the rest of the holes is for&lt;br/&gt;future proposals which are a bit more involved and definitely less mature.&lt;br/&gt;&lt;br/&gt;&amp;gt;  would suggest users to try Bitcoin Knots instead&lt;br/&gt;&amp;gt; Developers should provide basic RBF policy options rather than attempting&lt;br/&gt;to define what constitutes a good policy and removing the ability to&lt;br/&gt;disable something when necessary.&lt;br/&gt;&lt;br/&gt;If Knots has these knobs, just use Knots rather than lobby all&lt;br/&gt;implementations to have miner incentive incompatible knobs?&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Wed, Jun 15, 2022 at 8:27 PM alicexbt via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Antoine,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks for opening the pull request to add support for full-rbf in Bitcoin&lt;br/&gt;&amp;gt; Core. I have a few disagreements with the approach and questions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Recent discussions among LN devs have brought back on the surface concerns&lt;br/&gt;&amp;gt; about the security of multi-party funded transactions (coinjoins,&lt;br/&gt;&amp;gt; dual-funded LN channels, on-chain DLCs, ...). It turns out there is a&lt;br/&gt;&amp;gt; low-fruit, naive DoS vector playable against the funding flow of any such&lt;br/&gt;&amp;gt; construction due to the lack of existent full-rbf transaction-relay&lt;br/&gt;&amp;gt; topology on today&amp;#39;s p2p network [0] [1].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1)If something relies on a policy which can be changed without breaking&lt;br/&gt;&amp;gt; consensus rules, how is it secure in any case with or without full rbf? If&lt;br/&gt;&amp;gt; I write a python script that expects user to enter char &amp;#39;a&amp;#39; or &amp;#39;b&amp;#39; but user&lt;br/&gt;&amp;gt; can enter &amp;#39;c&amp;#39; and there is no code to handle exceptions or other chars,&lt;br/&gt;&amp;gt; will it be secure?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2)full-rbf is not default in the 2 open pull requests, so this experiment&lt;br/&gt;&amp;gt; still relies on users changing RBF policies manually. If majority of nodes&lt;br/&gt;&amp;gt; use default opt-in policy, how would this affect vulnerable projects?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you&amp;#39;re a mining operator looking to increase your income, you might be&lt;br/&gt;&amp;gt; interested to experiment with full-rbf as a policy.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Miners can only increase their income if users replace transactions. 2-3%&lt;br/&gt;&amp;gt; transactions are replaced with opt-in RBF, if someone did not replace&lt;br/&gt;&amp;gt; earlier why would they do it with full RBF? Or even if we add some users in&lt;br/&gt;&amp;gt; it who could not signal for some reasons, do you think it would be anything&lt;br/&gt;&amp;gt; above 5%?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you&amp;#39;re a Bitcoin user or business and you don&amp;#39;t like full-rbf, please&lt;br/&gt;&amp;gt; express an opinion on how it might affect your software/operations. I&amp;#39;m&lt;br/&gt;&amp;gt; always interested to learn more about mempool and transaction-relay&lt;br/&gt;&amp;gt; interactions with upper-layers and applications and to listen to feedback&lt;br/&gt;&amp;gt; in those areas, and I guess a lot of other Bitcoin researchers/devs too. I&lt;br/&gt;&amp;gt; know there have been a lot of concerns about full-rbf in the past, however&lt;br/&gt;&amp;gt; I believe the Bitcoin ecosystem has matured a lot since then.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I am not opposed to full-rbf; rather, I am opposed to the notion that&lt;br/&gt;&amp;gt; full-rbf will solve all problems and the lack of basic options in Bitcoin&lt;br/&gt;&amp;gt; Core to employ/disable different RBF policies. There is also a speculation&lt;br/&gt;&amp;gt; about making full RBF default in an year which isn&amp;#39;t relevant to discuss at&lt;br/&gt;&amp;gt; this point without trying different RBF policies.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I would suggest users to try Bitcoin Knots instead which already has an&lt;br/&gt;&amp;gt; option to disable all RBF policies if required, opt-in and full RBF policy.&lt;br/&gt;&amp;gt; This can also be done using GUI if not familiar with config option&lt;br/&gt;&amp;gt; mempoolreplacement​.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The rationale in PR #16171 was insufficient to justify removing it in the&lt;br/&gt;&amp;gt; first place, had 2 NACKs and was reopened to merge it. Why bother with a&lt;br/&gt;&amp;gt; few lines of code that may allow someone disable it if required in local&lt;br/&gt;&amp;gt; mempool since it&amp;#39;s only useful when a big percentage of miners utilize it&lt;br/&gt;&amp;gt; and essentially underused according to the PR author? Developers should&lt;br/&gt;&amp;gt; provide basic RBF policy options rather than attempting to define what&lt;br/&gt;&amp;gt; constitutes a good policy and removing the ability to disable something&lt;br/&gt;&amp;gt; when necessary.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; /dev/fd0&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Sent with Proton Mail &amp;lt;&lt;a href=&#34;https://proton.me/&amp;gt&#34;&gt;https://proton.me/&amp;gt&lt;/a&gt;; secure email.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------- Original Message -------&lt;br/&gt;&amp;gt; On Tuesday, June 14th, 2022 at 5:55 AM, Antoine Riard via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Recent discussions among LN devs have brought back on the surface concerns&lt;br/&gt;&amp;gt; about the security of multi-party funded transactions (coinjoins,&lt;br/&gt;&amp;gt; dual-funded LN channels, on-chain DLCs, ...). It turns out there is a&lt;br/&gt;&amp;gt; low-fruit, naive DoS vector playable against the funding flow of any such&lt;br/&gt;&amp;gt; construction due to the lack of existent full-rbf transaction-relay&lt;br/&gt;&amp;gt; topology on today&amp;#39;s p2p network [0] [1]. While it does not consist in a&lt;br/&gt;&amp;gt; direct loss of funds, if exploited well I think it&amp;#39;s annoying enough to&lt;br/&gt;&amp;gt; inflict significant timevalue loss or fee-bumping waste&lt;br/&gt;&amp;gt; to the future providers or distributed swarm of users doing multi-party&lt;br/&gt;&amp;gt; funded transactions. Of course, it can be fixed one layer above by&lt;br/&gt;&amp;gt; introducing either fidelity bonds or a reliable centralized coordinator,&lt;br/&gt;&amp;gt; though at the price of an overhead per-participant ressources cost and loss&lt;br/&gt;&amp;gt; in system openness [1].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For that reason, I believe it would be beneficial to the flourishing of&lt;br/&gt;&amp;gt; multi-party funded transactions to fix the Dos vector by seeing a subset of&lt;br/&gt;&amp;gt; the network running full-rbf and enabling propagation of honest multi-party&lt;br/&gt;&amp;gt; transactions to the interested miners, replacing potential non-signaling&lt;br/&gt;&amp;gt; double-spend from a malicious counterparty. Moving towards that direction,&lt;br/&gt;&amp;gt; I&amp;#39;ve submitted a small patch against Bitcoin Core enabling it to turn on&lt;br/&gt;&amp;gt; full-rbf as a policy, still under review [3]. The default setting stays&lt;br/&gt;&amp;gt; **false**, i.e keeping opt-in RBF as a default replacement policy. I&amp;#39;ve&lt;br/&gt;&amp;gt; started to run the patch on a public node at 146.190.224.15.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you&amp;#39;re a node operator curious to play with full-rbf, feel free to&lt;br/&gt;&amp;gt; connect to this node or spawn up a toy, public node yourself. There is a&lt;br/&gt;&amp;gt; ##uafrbf libera chat if you would like information on the settings or&lt;br/&gt;&amp;gt; looking for full-rbf friends (though that step could be automated in the&lt;br/&gt;&amp;gt; future by setting up a dedicated network bit and reserving a few outbound&lt;br/&gt;&amp;gt; slots for them).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you&amp;#39;re a mining operator looking to increase your income, you might be&lt;br/&gt;&amp;gt; interested to experiment with full-rbf as a policy. Indeed, in the future I&lt;br/&gt;&amp;gt; believe the multi-party transactions issuers who need full-rbf to secure&lt;br/&gt;&amp;gt; their funding flow should connect by default to full-rbf peers. One can&lt;br/&gt;&amp;gt; conjecture that their transactions are likely to be more compelling in&lt;br/&gt;&amp;gt; their feerate as their liquidity needs are higher than the simple&lt;br/&gt;&amp;gt; transaction. For today, I think we have really few standards and bitcoin&lt;br/&gt;&amp;gt; softwares relying on multi-party funded transactions [4].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you&amp;#39;re a Bitcoin user or business and you don&amp;#39;t like full-rbf, please&lt;br/&gt;&amp;gt; express an opinion on how it might affect your software/operations. I&amp;#39;m&lt;br/&gt;&amp;gt; always interested to learn more about mempool and transaction-relay&lt;br/&gt;&amp;gt; interactions with upper-layers and applications and to listen to feedback&lt;br/&gt;&amp;gt; in those areas, and I guess a lot of other Bitcoin researchers/devs too. I&lt;br/&gt;&amp;gt; know there have been a lot of concerns about full-rbf in the past, however&lt;br/&gt;&amp;gt; I believe the Bitcoin ecosystem has matured a lot since then.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Any mistakes or missing context is my own.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0] For more info about replace-by-fee, see&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://bitcoinops.org/en/topics/replace-by-fee/&#34;&gt;https://bitcoinops.org/en/topics/replace-by-fee/&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] For more details about the DoS vector, see&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-May/003033.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-May/003033.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [2] E.g I think it does not affect the Lightning Pool service, as there is&lt;br/&gt;&amp;gt; a preliminary step where the participant funds are locked first in a 2-of-2&lt;br/&gt;&amp;gt; with the coordinator before being committed in the multi-party batch&lt;br/&gt;&amp;gt; transaction.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/25353&#34;&gt;https://github.com/bitcoin/bitcoin/pull/25353&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [4] E.g DLCs :&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/discreetlogcontracts/dlcspecs/blob/master/Transactions.md&#34;&gt;https://github.com/discreetlogcontracts/dlcspecs/blob/master/Transactions.md&lt;/a&gt;&lt;br/&gt;&amp;gt; ; Lightning dual-funded channel :&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/lightning/bolts/pull/851&#34;&gt;https://github.com/lightning/bolts/pull/851&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220615/31d6050c/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220615/31d6050c/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:10:29&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqst4y3m2w9evfct4l52nmv4y9ywwfu5s0kkefwc6nd3t399v8usvhqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjn8vmcj</id>
    
      <title type="html">📅 Original date posted:2022-05-17 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqst4y3m2w9evfct4l52nmv4y9ywwfu5s0kkefwc6nd3t399v8usvhqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjn8vmcj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstqgc7r0h7jx506chjhgfslad2gazrx2fwe63vc6jeejl78h3alks8y5w72&#39;&gt;nevent1q…5w72&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-05-17&lt;br/&gt;📝 Original message:Hi Gloria,&lt;br/&gt;&lt;br/&gt;Thanks for working on this important proposal!&lt;br/&gt;&lt;br/&gt;Still a lot to digest, but I just had on area of comment/question:&lt;br/&gt;&lt;br/&gt;&amp;gt; A child-with-unconfirmed-parents package sent between nodes must abide by&lt;br/&gt;the rules below, otherwise the package is malformed and the sender should&lt;br/&gt;be disconnected.&lt;br/&gt;&lt;br/&gt;&amp;gt; However, if the child has confirmed parents, they must not be in the&lt;br/&gt;package.&lt;br/&gt;&lt;br/&gt;If my naive understanding is correct, this means things like otherwise&lt;br/&gt;common situations such as a new block will result in disconnects, say when&lt;br/&gt;the sender doesn&amp;#39;t hear about a new block which makes the relay package&lt;br/&gt;superfluous/irrelevant. Similar would be disconnection&lt;br/&gt;when confirmed gets turned into unconfirmed, but those situations are&lt;br/&gt;extremely uncommon. The other rules are entirely under the control&lt;br/&gt;of the sender, which leads me to wonder if it&amp;#39;s appropriate.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Greg&lt;br/&gt;&lt;br/&gt;On Tue, May 17, 2022 at 12:09 PM Gloria Zhao via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi everybody,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I’m writing to propose a set of p2p protocol changes to enable package&lt;br/&gt;&amp;gt; relay, soliciting feedback on the design and approach. Here is a link&lt;br/&gt;&amp;gt; to the most up-to-date proposal:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bips/pull/1324&#34;&gt;https://github.com/bitcoin/bips/pull/1324&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you have concept or approach feedback, *please respond on the&lt;br/&gt;&amp;gt; mailing list* to allow everybody to view and participate in the&lt;br/&gt;&amp;gt; discussion. If you find a typo or inaccurate wording, please feel free&lt;br/&gt;&amp;gt; to leave suggestions on the PR.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I’m also working on an implementation for Bitcoin Core.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The rest of this post will include the same contents as the proposal,&lt;br/&gt;&amp;gt; with a bit of reordering and additional context. If you are not 100%&lt;br/&gt;&amp;gt; up-to-date on package relay and find the proposal hard to follow, I&lt;br/&gt;&amp;gt; hope you find this format more informative and persuasive.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Background and Motivation==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Users may create and broadcast transactions that depend upon, i.e.&lt;br/&gt;&amp;gt; spend outputs of, unconfirmed transactions. A “package” is the&lt;br/&gt;&amp;gt; widely-used term for a group of transactions representable by a&lt;br/&gt;&amp;gt; connected Directed Acyclic Graph (where a directed edge exists between&lt;br/&gt;&amp;gt; a transaction that spends the output of another transaction).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Incentive-compatible mempool and miner policies help create a fair,&lt;br/&gt;&amp;gt; fee-based market for block space. While miners maximize transaction&lt;br/&gt;&amp;gt; fees in order to earn higher block rewards, non-mining users&lt;br/&gt;&amp;gt; participating in transaction relay reap many benefits from employing&lt;br/&gt;&amp;gt; policies that result in a mempool with the same contents, including&lt;br/&gt;&amp;gt; faster compact block relay and more accurate fee estimation.&lt;br/&gt;&amp;gt; Additionally, users may take advantage of mempool and miner policy to&lt;br/&gt;&amp;gt; bump the priority of their transactions by attaching high-fee&lt;br/&gt;&amp;gt; descendants (Child Pays for Parent or CPFP).  Only considering&lt;br/&gt;&amp;gt; transactions one at a time for submission to the mempool creates a&lt;br/&gt;&amp;gt; limitation in the node&amp;#39;s ability to determine which transactions have&lt;br/&gt;&amp;gt; the highest feerates, since it cannot take into account descendants&lt;br/&gt;&amp;gt; until all the transactions are in the mempool. Similarly, it cannot&lt;br/&gt;&amp;gt; use a transaction&amp;#39;s descendants when considering which of two&lt;br/&gt;&amp;gt; conflicting transactions to keep (Replace by Fee or RBF).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; When a user&amp;#39;s transaction does not meet a mempool&amp;#39;s minimum feerate&lt;br/&gt;&amp;gt; and they cannot create a replacement transaction directly, their&lt;br/&gt;&amp;gt; transaction will simply be rejected by this mempool. They also cannot&lt;br/&gt;&amp;gt; attach a descendant to pay for replacing a conflicting transaction.&lt;br/&gt;&amp;gt; This limitation harms users&amp;#39; ability to fee-bump their transactions.&lt;br/&gt;&amp;gt; Further, it presents a security issue in contracting protocols which&lt;br/&gt;&amp;gt; rely on **presigned**, time-sensitive transactions to prevent cheating&lt;br/&gt;&amp;gt; (HTLC-Timeout in LN Penalty [1] [2] [3], Unvault Cancel in Revault&lt;br/&gt;&amp;gt; [4], Refund Transaction in Discreet Log Contracts [5], Updates in&lt;br/&gt;&amp;gt; eltoo [6]). In other words, a key security assumption of many&lt;br/&gt;&amp;gt; contracting protocols is that all parties can propagate and confirm&lt;br/&gt;&amp;gt; transactions in a timely manner.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the past few years, increasing attention [0][1][2][3][6] has been&lt;br/&gt;&amp;gt; brought to **pinning attacks**, a type of censorship in which the&lt;br/&gt;&amp;gt; attacker uses mempool policy restrictions to prevent a transaction&lt;br/&gt;&amp;gt; from being relayed or getting mined.  TLDR: revocation transactions&lt;br/&gt;&amp;gt; must meet a certain confirmation target to be effective, but their&lt;br/&gt;&amp;gt; feerates are negotiated well ahead of broadcast time. If the&lt;br/&gt;&amp;gt; forecasted feerate was too low and no fee-bumping options are&lt;br/&gt;&amp;gt; available, attackers can steal money from their counterparties. I walk&lt;br/&gt;&amp;gt; through a concrete example for stealing Lightning HTLC outputs at&lt;br/&gt;&amp;gt; ~23:58 in this talk [7][8].  Note that most attacks are only possible&lt;br/&gt;&amp;gt; when the market for blockspace at broadcast time  demands much higher&lt;br/&gt;&amp;gt; feerates than originally anticipated at signing time. Always&lt;br/&gt;&amp;gt; overestimating fees may sidestep this issue temporarily (while mempool&lt;br/&gt;&amp;gt; traffic is low and predictable), but this solution is not foolproof&lt;br/&gt;&amp;gt; and wastes users&amp;#39; money. The feerate market can change due to sudden&lt;br/&gt;&amp;gt; spikes in traffic (e.g. huge 12sat/vB dump a few days ago [9]) or&lt;br/&gt;&amp;gt; sustained, high volume of Bitcoin payments (e.g.  April 2021 and&lt;br/&gt;&amp;gt; December 2017).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The best solution is to enable nodes to consider packages of&lt;br/&gt;&amp;gt; transactions as a unit, e.g. one or more low-fee parent transactions&lt;br/&gt;&amp;gt; with a high-fee child, instead of separately. A package-aware mempool&lt;br/&gt;&amp;gt; policy can help determine if it would actually be economically&lt;br/&gt;&amp;gt; rational to accept a transaction to the mempool if it doesn&amp;#39;t meet fee&lt;br/&gt;&amp;gt; requirements individually. Network-wide adoption of these policies&lt;br/&gt;&amp;gt; would create a more purely-feerate-based market for block space and&lt;br/&gt;&amp;gt; allow contracting protocols to adjust fees (and therefore mining&lt;br/&gt;&amp;gt; priority) at broadcast time.  Some support for packages has existed in&lt;br/&gt;&amp;gt; Bitcoin Core for years. Since v0.13, Bitcoin Core has used ancestor&lt;br/&gt;&amp;gt; packages instead of individual transactions to evaluate the incentive&lt;br/&gt;&amp;gt; compatibility of transactions in the mempool [10] and select them for&lt;br/&gt;&amp;gt; inclusion in blocks [11].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Package Relay, the concept of {announcing, requesting, downloading}&lt;br/&gt;&amp;gt; packages between nodes on the p2p network, has also been discussed for&lt;br/&gt;&amp;gt; many years. The earliest public mention I can find is from 2015 [12].&lt;br/&gt;&amp;gt; The two most common use cases for package relay are fee-bumping&lt;br/&gt;&amp;gt; otherwise-too-low-fee transactions and reducing the amount of orphans.&lt;br/&gt;&amp;gt; It seems uncontroversial to say that everybody desires package relay&lt;br/&gt;&amp;gt; conceptually, with varying degrees of urgency. Lots of work has been&lt;br/&gt;&amp;gt; done by others over the past few years, from which I&amp;#39;ve taken&lt;br/&gt;&amp;gt; inspiration from [13][14][15][16].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; My approach has been to split the project into two components: (1) Package&lt;br/&gt;&amp;gt; Mempool Accept, which includes validation logic and mempool policy.&lt;br/&gt;&amp;gt; (3) Package Relay, which includes the p2p protocol changes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Progress so far:&lt;br/&gt;&amp;gt; After discussions with various developers of contracting protocols&lt;br/&gt;&amp;gt; (with heavier emphasis towards LN), it was determined that a&lt;br/&gt;&amp;gt; package containing a child with all of its unconfirmed parents&lt;br/&gt;&amp;gt; (child-with-unconfirmed-parents or 1-child-multi-parent package) would&lt;br/&gt;&amp;gt; be sufficient for their use case, i.e. fee-bumping presigned&lt;br/&gt;&amp;gt; transactions. A child-with-unconfirmed-parents package has several&lt;br/&gt;&amp;gt; properties that make many things easier to reason about.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A few months ago, I proposed a set of policies for safe package&lt;br/&gt;&amp;gt; validation and fee assessment for packages of this restricted&lt;br/&gt;&amp;gt; topology [17]. A series of PRs implementing this proposal have&lt;br/&gt;&amp;gt; been merged into Bitcoin Core [18].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Theoretically, developing a safe and incentive-compatible package&lt;br/&gt;&amp;gt; mempool acceptance policy is sufficient to solve this issue. Nodes&lt;br/&gt;&amp;gt; could opportunistically accept packages (e.g. by trying combinations&lt;br/&gt;&amp;gt; of transactions rejected from their mempools), but this practice would&lt;br/&gt;&amp;gt; likely be inefficient at best and open new Denial of Service attacks&lt;br/&gt;&amp;gt; at worst. Additional p2p messages may enable nodes to request and&lt;br/&gt;&amp;gt; share package validation-related information with one another in a&lt;br/&gt;&amp;gt; more communication-efficient way.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Given that only package RBF remains for package mempool accept, and we&lt;br/&gt;&amp;gt; can make progress on p2p and mempool in parallel, I think it’s&lt;br/&gt;&amp;gt; appropriate to put forward a package relay proposal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Proposal==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This proposal contains 2 components: a “generic” package relay&lt;br/&gt;&amp;gt; protocol and an extension of it, child-with-unconfirmed-parents&lt;br/&gt;&amp;gt; packages, as version 1 package relay. Another version of packages,&lt;br/&gt;&amp;gt; “tx-with-unconfirmed-ancestors” can be created to extend package relay&lt;br/&gt;&amp;gt; for eliminating orphans.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Generic Package Relay===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Two main ideas are introduced:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Download and validate packages of transactions together.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Provide information to help peers decide whether to request and/or how&lt;br/&gt;&amp;gt; to validate transactions which are part of a package.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====Intended Protocol Flow====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Due to the asynchronous nature of a distributed transaction relay&lt;br/&gt;&amp;gt; network, nodes may not receive all of the information needed to&lt;br/&gt;&amp;gt; validate a transaction at once. For example, after a node completes&lt;br/&gt;&amp;gt; Initial Block Download (IBD) and first starts participating in&lt;br/&gt;&amp;gt; transaction relay with an empty mempool, it is common to receive&lt;br/&gt;&amp;gt; orphans. In such scenarios where a node is aware that it is missing&lt;br/&gt;&amp;gt; information, a &amp;#39;&amp;#39;receiver-initiated&amp;#39;&amp;#39; dialogue is appropriate:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Receiver requests package information.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. The sender provides package information, including the wtxids of&lt;br/&gt;&amp;gt;    the transactions in the package and anything else that might be&lt;br/&gt;&amp;gt; relevant (e.g. total fees and size).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. The reciever uses the package information to decide how to request&lt;br/&gt;&amp;gt;    and validate the transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Sometimes, no matter what order transactions are received by a node,&lt;br/&gt;&amp;gt; validating them individually is insufficient. When the sender is aware&lt;br/&gt;&amp;gt; of additional information that the receiver needs to accept a package,&lt;br/&gt;&amp;gt; a proactive &amp;#39;&amp;#39;sender-initiated&amp;#39;&amp;#39; dialogue should be enabled:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Sender announces they have package information pertaining to a&lt;br/&gt;&amp;gt;    transaction that might otherwise be undesired on its own.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. The receiver requests package information.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. The sender provides package information, including the wtxids of&lt;br/&gt;&amp;gt;    the transactions in the package and anything else that might be&lt;br/&gt;&amp;gt; relevant (e.g. total fees and size).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. The reciever uses the package information to decide how to request&lt;br/&gt;&amp;gt;    and validate the transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Package relay is negotiated between two peers during the version&lt;br/&gt;&amp;gt; handshake. Package relay requires both peers to support wtxid-based&lt;br/&gt;&amp;gt; relay because package transactions are referenced by their wtxid.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====New Messages====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Three new protocol messages are added for use in any version of&lt;br/&gt;&amp;gt; package relay. Additionally, each version of package relay must define&lt;br/&gt;&amp;gt; its own inv type and &amp;#34;pckginfo&amp;#34; message version, referred to in this&lt;br/&gt;&amp;gt; document as &amp;#34;MSG_PCKG&amp;#34; and &amp;#34;pckginfo&amp;#34; respectively. See&lt;br/&gt;&amp;gt; BIP-v1-packages for a concrete example.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; =====sendpackages=====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; {|&lt;br/&gt;&amp;gt; |  Field Name  ||  Type  ||  Size  ||  Purpose&lt;br/&gt;&amp;gt; |-&lt;br/&gt;&amp;gt; |version || uint32_t || 4 || Denotes a package version supported by the&lt;br/&gt;&amp;gt; node.&lt;br/&gt;&amp;gt; |-&lt;br/&gt;&amp;gt; |max_count || uint32_t || 4 ||Specifies the maximum number of transactions&lt;br/&gt;&amp;gt; per package this node is&lt;br/&gt;&amp;gt; willing to accept.&lt;br/&gt;&amp;gt; |-&lt;br/&gt;&amp;gt; |max_weight || uint32_t || 4 ||Specifies the maximum total weight per&lt;br/&gt;&amp;gt; package this node is willing&lt;br/&gt;&amp;gt; to accept.&lt;br/&gt;&amp;gt; |-&lt;br/&gt;&amp;gt; |}&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. The &amp;#34;sendpackages&amp;#34; message has the structure defined above, with&lt;br/&gt;&amp;gt;    pchCommand == &amp;#34;sendpackages&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. During version handshake, nodes should send a &amp;#34;sendpackages&amp;#34;&lt;br/&gt;&amp;gt;    message indicate they support package relay and may request&lt;br/&gt;&amp;gt; packages.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. The message should contain a version supported by the node. Nodes&lt;br/&gt;&amp;gt;    should send a &amp;#34;sendpackages&amp;#34; message for each version they support.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. The &amp;#34;sendpackages&amp;#34; message MUST be sent before sending a &amp;#34;verack&amp;#34;&lt;br/&gt;&amp;gt;    message. If a &amp;#34;sendpackages&amp;#34; message is received afer &amp;#34;verack&amp;#34;, the&lt;br/&gt;&amp;gt; sender should be disconnected.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 5. If &amp;#39;fRelay==false&amp;#39; in a peer&amp;#39;s version message, the node must not&lt;br/&gt;&amp;gt;    send &amp;#34;sendpackages&amp;#34; to them. If a &amp;#34;sendpackages&amp;#34; message is&lt;br/&gt;&amp;gt; received by a peer after sending `fRelay==false` in their version&lt;br/&gt;&amp;gt; message, the sender should be disconnected.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 6.. Upon receipt of a &amp;#34;sendpackages&amp;#34; message with a version that is&lt;br/&gt;&amp;gt; not supported, a node must treat the peer as if it never received the&lt;br/&gt;&amp;gt; message.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 7. If both peers send &amp;#34;wtxidrelay&amp;#34; and &amp;#34;sendpackages&amp;#34; with the same&lt;br/&gt;&amp;gt;    version, the peers should announce, request, and send package&lt;br/&gt;&amp;gt; information to each other.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; =====getpckgtxns=====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; {|&lt;br/&gt;&amp;gt; |  Field Name  ||  Type  ||  Size  ||   Purpose&lt;br/&gt;&amp;gt; |-&lt;br/&gt;&amp;gt; |txns_length||CompactSize||1 or 3 bytes|| The number of transactions&lt;br/&gt;&amp;gt; requested.&lt;br/&gt;&amp;gt; |-&lt;br/&gt;&amp;gt; |txns||List of wtxids||txns_length * 32|| The wtxids of each transaction&lt;br/&gt;&amp;gt; in the package.&lt;br/&gt;&amp;gt; |}&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. The &amp;#34;getpckgtxns&amp;#34; message has the structure defined above, with&lt;br/&gt;&amp;gt;    pchCommand == &amp;#34;getpckgtxns&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. A &amp;#34;getpckgtxns&amp;#34; message should be used to request all or some of&lt;br/&gt;&amp;gt;    the transactions previously announced in a &amp;#34;pckginfo&amp;#34; message,&lt;br/&gt;&amp;gt; specified by witness transactiosome id.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Upon receipt of a &amp;#34;getpckgtxns&amp;#34; message, a node must respond with&lt;br/&gt;&amp;gt;    either a &amp;#34;pckgtxns&amp;#34; containing the requested transactions or a&lt;br/&gt;&amp;gt; &amp;#34;notfound&amp;#34; message indicating one or more of the transactions is&lt;br/&gt;&amp;gt; unavailable. This allows the receiver to avoid downloading and storing&lt;br/&gt;&amp;gt; transactions that cannot be validated immediately.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. A &amp;#34;getpckgtxns&amp;#34; message should only be sent if both peers agreed to&lt;br/&gt;&amp;gt;    send packages in the version handshake. If a &amp;#34;getpckgtxns&amp;#34; message&lt;br/&gt;&amp;gt; is received from a peer with which package relay was not negotiated,&lt;br/&gt;&amp;gt; the sender should be disconnected.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; =====pckgtxns=====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; {|&lt;br/&gt;&amp;gt; |  Field Name  ||  Type  ||  Size  ||   Purpose&lt;br/&gt;&amp;gt; |-&lt;br/&gt;&amp;gt; |txns_length||CompactSize||1 or 3 bytes|| The number of transactions&lt;br/&gt;&amp;gt; provided.&lt;br/&gt;&amp;gt; |-&lt;br/&gt;&amp;gt; |txns||List of transactions||variable|| The transactions in the package.&lt;br/&gt;&amp;gt; |}&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. The &amp;#34;pckgtxns&amp;#34; message has the structure defined above, with&lt;br/&gt;&amp;gt;    pchCommand == &amp;#34;pckgtxns&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. A &amp;#34;pckgtxns&amp;#34; message should contain the transaction data requested&lt;br/&gt;&amp;gt;    using &amp;#34;getpckgtxns&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. A &amp;#34;pckgtxns&amp;#34; message should only be sent to a peer that requested&lt;br/&gt;&amp;gt;    the package using &amp;#34;getpckgtxns&amp;#34;. If a node receives an unsolicited&lt;br/&gt;&amp;gt; package, the sender should be disconnected.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. A &amp;#34;pckgtxns&amp;#34; message should only be sent if both peers agreed to&lt;br/&gt;&amp;gt;    send packages in the version handshake. If a &amp;#34;pckgtxns&amp;#34; message is&lt;br/&gt;&amp;gt; received from a peer with which package relay was not negotiated, the&lt;br/&gt;&amp;gt; sender should be disconnected.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Version 1 Packages: child-with-unconfirmed-parents===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This extends package relay for packages consisting of one transaction&lt;br/&gt;&amp;gt; and all of its unconfirmed parents,by defining version 1 packages, a&lt;br/&gt;&amp;gt; pckginfo1 message, and a MSG_PCKG1 inv type. It enables the use case&lt;br/&gt;&amp;gt; in which a child pays for its otherwise-too-low-fee parents and their&lt;br/&gt;&amp;gt; mempool conflict(s).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====Intended Protocol Flow====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; When relaying a package of low-fee parent(s) and high-fee child, the&lt;br/&gt;&amp;gt; sender and receiver do the following:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Sender announces they have a child-with-unconfirmed-parents package&lt;br/&gt;&amp;gt;    for a child that pays for otherwise-too-low-fee parent(s) using&lt;br/&gt;&amp;gt; &amp;#34;inv(MSG_PCKG1)&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. The receiver requests package information using&lt;br/&gt;&amp;gt;    &amp;#34;getdata(MSG_PCKG1)&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. The sender provides package information using &amp;#34;pckginfo1&amp;#34;,&lt;br/&gt;&amp;gt;    including the blockhash of the sender&amp;#39;s best block, the wtxids of&lt;br/&gt;&amp;gt; the transactions in the package, their total fees and total weight.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. The reciever uses the package information to decide how to request&lt;br/&gt;&amp;gt;    the transactions. For example, if the receiver already has some of&lt;br/&gt;&amp;gt; the transactions in their mempool, they only request the missing ones.&lt;br/&gt;&amp;gt; They could also decide not to request the package at all based on the&lt;br/&gt;&amp;gt; fee information provided.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 5. Upon receiving a &amp;#34;pckgtxns&amp;#34;, the receiver submits the transactions&lt;br/&gt;&amp;gt;    together as a package.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====New Messages====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A new inv type, &amp;#34;MSG_PCKG1&amp;#34;, and new protocol message, &amp;#34;PCKGINFO1&amp;#34;,&lt;br/&gt;&amp;gt; are added.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; =====pckginfo1=====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; {|&lt;br/&gt;&amp;gt; |  Field Name  ||  Type  ||  Size  ||   Purpose&lt;br/&gt;&amp;gt; |-&lt;br/&gt;&amp;gt; |blockhash || uint256 || 32 || The chain tip at which this package is&lt;br/&gt;&amp;gt; defined.&lt;br/&gt;&amp;gt; |-&lt;br/&gt;&amp;gt; |pckg_fee||CAmount||4|| The sum total fees paid by all transactions in the&lt;br/&gt;&amp;gt; package.&lt;br/&gt;&amp;gt; |-&lt;br/&gt;&amp;gt; |pckg_weight||int64_t||8|| The sum total weight of all transactions in the&lt;br/&gt;&amp;gt; package.&lt;br/&gt;&amp;gt; |-&lt;br/&gt;&amp;gt; |txns_length||CompactSize||1 or 3 bytes|| The number of transactions&lt;br/&gt;&amp;gt; provided.&lt;br/&gt;&amp;gt; |-&lt;br/&gt;&amp;gt; |txns||List of wtxids||txns_length * 32|| The wtxids of each transaction&lt;br/&gt;&amp;gt; in the package.&lt;br/&gt;&amp;gt; |}&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. The &amp;#34;pckginfo1&amp;#34; message has the structure defined above, with&lt;br/&gt;&amp;gt;    pchCommand == &amp;#34;pckginfo1&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. A &amp;#34;pckginfo1&amp;#34; message contains information about a version 1&lt;br/&gt;&amp;gt;    package (defined below), referenced by the wtxid of the transaction&lt;br/&gt;&amp;gt; it pertains to and the current blockhash.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Upon receipt of a &amp;#34;pckginfo1&amp;#34; message, the node should decide if it&lt;br/&gt;&amp;gt;    wants to validate the package, request transaction data if&lt;br/&gt;&amp;gt; necessary, etc.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. Upon receipt of a malformed &amp;#34;pckginfo1&amp;#34; message or package that&lt;br/&gt;&amp;gt;    does not abide by the max_count, max_weight, or other rules&lt;br/&gt;&amp;gt; specified by the version agreed upon in the initial negotiation, the&lt;br/&gt;&amp;gt; sender should be disconnected.  If a node receives a &amp;#34;pckginfo1&amp;#34;&lt;br/&gt;&amp;gt; message for which the &amp;#34;pckg_fee&amp;#34; or &amp;#34;pckg_weight&amp;#34; do not reflect the&lt;br/&gt;&amp;gt; true total fees and weight, respectively, or the transactions in the&lt;br/&gt;&amp;gt; package, the message is malformed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 5. A node MUST NOT send a &amp;#34;pckginfo1&amp;#34; message that has not been&lt;br/&gt;&amp;gt;    requested by the recipient. Upon receipt of an unsolicited&lt;br/&gt;&amp;gt; &amp;#34;pckginfo1&amp;#34;, a node should disconnect the sender.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 6. A &amp;#34;pckginfo1&amp;#34; message should only be sent if both peers agreed to&lt;br/&gt;&amp;gt;    send version 1 packages in the version handshake. If a &amp;#34;pckginfo1&amp;#34;&lt;br/&gt;&amp;gt; message is received from a peer with which package relay was not&lt;br/&gt;&amp;gt; negotiated, the sender should be disconnected.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; =====MSG_PCKG1=====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. A new inv type (MSG_PCKG1 == 0x6) is added, for use in inv messages&lt;br/&gt;&amp;gt;    and getdata requests pertaining to version 1 packages.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. As an inv type, it indicates that both transaction data and version&lt;br/&gt;&amp;gt;    1 package information are available for the transaction. The&lt;br/&gt;&amp;gt; transaction is referenced by its wtxid. As a getdata request type, it&lt;br/&gt;&amp;gt; indicates that the sender wants package information for the&lt;br/&gt;&amp;gt; transaction.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Upon receipt of a &amp;#34;getdata&amp;#34; request for &amp;#34;MSG_PCKG1&amp;#34;, the node&lt;br/&gt;&amp;gt;    should respond with the version 1 package corresponding to the&lt;br/&gt;&amp;gt; requested transaction and its current chain tip, or with NOTFOUND.&lt;br/&gt;&amp;gt; The node should not assume that the sender is requesting the&lt;br/&gt;&amp;gt; transaction data as well.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====Child With Parent Packages Rules====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A child-with-unconfirmed-parents package sent between nodes must abide&lt;br/&gt;&amp;gt; by the rules below, otherwise the package is malformed and the sender&lt;br/&gt;&amp;gt; should be disconnected.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A version 1 or &amp;#39;&amp;#39;child-with-unconfirmed-parents&amp;#39;&amp;#39; package can be&lt;br/&gt;&amp;gt; defined for any transaction that spends unconfirmed inputs. The child&lt;br/&gt;&amp;gt; can be thought of as the &amp;#34;representative&amp;#34; of the package. This package&lt;br/&gt;&amp;gt; can be uniquely identified by the transaction&amp;#39;s wtxid and the current&lt;br/&gt;&amp;gt; chain tip block hash.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A &amp;#39;&amp;#39;child-with-unconfirmed-parents&amp;#39;&amp;#39; package MUST be:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. &amp;#39;&amp;#39;Sorted topologically.&amp;#39;&amp;#39; For every transaction t in the package,&lt;br/&gt;&amp;gt;    if any of t&amp;#39;s parents are present in the package, the parent must&lt;br/&gt;&amp;gt; appear somewhere in the list before t. In other words, the&lt;br/&gt;&amp;gt; transactions must be sorted in ascending order of the number of&lt;br/&gt;&amp;gt; ancestors present in the package.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. &amp;#39;&amp;#39;Only 1 child with unconfirmed parents.&amp;#39;&amp;#39; The package must consist&lt;br/&gt;&amp;gt;    of one transaction and its unconfirmed parents. There must not be&lt;br/&gt;&amp;gt; any other transactions in the package. Other dependency relationships&lt;br/&gt;&amp;gt; may exist within the package (e.g. one parent may spend the output of&lt;br/&gt;&amp;gt; another parent) provided that topological order is respected.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. &amp;#39;&amp;#39;All unconfirmed parents.&amp;#39;&amp;#39; All of the child&amp;#39;s unconfirmed parents&lt;br/&gt;&amp;gt;    must be present.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. &amp;#39;&amp;#39;No conflicts.&amp;#39;&amp;#39; None of the transactions in the package may&lt;br/&gt;&amp;gt;    conflict with each other (i.e.  spend the same prevout).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 5. &amp;#39;&amp;#39;Total fees and weight.&amp;#39;&amp;#39; The &amp;#39;total_fee&amp;#39; and &amp;#39;total_weight&amp;#39;&lt;br/&gt;&amp;gt;    fields must accurately represent the sum total of all transactions&amp;#39;&lt;br/&gt;&amp;gt; fees and weights as defined in BIP141, respectively.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Not all of the child&amp;#39;s parents must be present; the child transaction&lt;br/&gt;&amp;gt; may also spend confirmed inputs. However, if the child has confirmed&lt;br/&gt;&amp;gt; parents, they must not be in the package.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; While a child-with-unconfirmed-parents package is perhaps most&lt;br/&gt;&amp;gt; relevant when the child has a higher feerate than its parents, this&lt;br/&gt;&amp;gt; property is not required to construct a valid package.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====Clarifications====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#39;&amp;#39;Q: Under what circumstances should a sender announce a&lt;br/&gt;&amp;gt; child-with-unconfirmed-parents package?&amp;#39;&amp;#39;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A child-with-unconfirmed-parents package for a transaction should be&lt;br/&gt;&amp;gt; announced when it meets the peer&amp;#39;s fee filter but one or more of its&lt;br/&gt;&amp;gt; parents don&amp;#39;t; a &amp;#34;inv(MSG_PCKG1)&amp;#34; instead of &amp;#34;inv(WTX)&amp;#34; should be sent&lt;br/&gt;&amp;gt; for the child. Each of the parents which meet the peer&amp;#39;s fee filter&lt;br/&gt;&amp;gt; should still be announced normally.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#39;&amp;#39;Q: What if a new block arrives in between messages?&amp;#39;&amp;#39;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A child-with-unconfirmed-parents package is defined for a transaction&lt;br/&gt;&amp;gt; based on the current chain state. As such, a new block extending the&lt;br/&gt;&amp;gt; tip may decrease the number of transactions in the package (i.e. if&lt;br/&gt;&amp;gt; any of the transaction&amp;#39;s parents were included in the block). In a&lt;br/&gt;&amp;gt; reorg, the number of transactions in the package may decrease or&lt;br/&gt;&amp;gt; increase (i.e. if any of the transaction&amp;#39;s parents were included in a&lt;br/&gt;&amp;gt; block in the previous chain but not the new one).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If the new block arrives before the &amp;#34;getdata&amp;#34; or &amp;#34;pckginfo1&amp;#34;, nothing&lt;br/&gt;&amp;gt; needs to change.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If the new block arrives before &amp;#34;getpckgtxns&amp;#34; or before &amp;#34;pckgtxns&amp;#34;,&lt;br/&gt;&amp;gt; the receiver may need to re-request package information if the block&lt;br/&gt;&amp;gt; contained a transaction in the package. If the block doesn&amp;#39;t contain&lt;br/&gt;&amp;gt; any transactions in the package, whether it extends the previous tip&lt;br/&gt;&amp;gt; or causes a reorg, nothing needs to change.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#39;&amp;#39;Q: Can &amp;#34;getpckgtxns&amp;#34; and &amp;#34;pckgtxns&amp;#34; messages contain only one&lt;br/&gt;&amp;gt; transaction?&amp;#39;&amp;#39;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Yes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Further Protocol Extensions===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; When introducing a new type of package, assign it a version number &amp;#34;n&amp;#34;&lt;br/&gt;&amp;gt; and use an additional &amp;#34;sendpackages&amp;#34; message during version handshake&lt;br/&gt;&amp;gt; to negotiate support for it. An additional package information message&lt;br/&gt;&amp;gt; &amp;#34;pckginfon&amp;#34; and inv type &amp;#34;MSG_PCKGn&amp;#34; should be defined for the type of&lt;br/&gt;&amp;gt; package.  However, &amp;#34;getpckgtxns&amp;#34; and &amp;#34;pckgtxns&amp;#34; do not need to be&lt;br/&gt;&amp;gt; changed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Example proposal for tx-with-unconfirmed-ancestors package relay: [19]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Compatibility===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Older clients remain fully compatible and interoperable after this&lt;br/&gt;&amp;gt; change. Clients implementing this protocol will only attempt to send&lt;br/&gt;&amp;gt; and request packages if agreed upon during the version handshake.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Package Erlay===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Clients using BIP330 reconciliation-based transaction relay (Erlay)&lt;br/&gt;&amp;gt; are able to use package relay without interference. In fact, a package&lt;br/&gt;&amp;gt; of transactions may be announced using both Erlay and package relay.&lt;br/&gt;&amp;gt; After reconciliation, if the initiator would have announced a&lt;br/&gt;&amp;gt; transaction by wtxid but also has package information for it, they may&lt;br/&gt;&amp;gt; send &amp;#34;inv(MSG_PCKG)&amp;#34; instead of &amp;#34;inv(WTX)&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ===Rationale===&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====P2P Message Design====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; These p2p messages are added for communication efficiency and, as&lt;br/&gt;&amp;gt; such, one should measure alternative solutions based on the resources&lt;br/&gt;&amp;gt; used to communicate (not necessarily trustworthy) information: We&lt;br/&gt;&amp;gt; would like to minimize network bandwidth, avoid downloading a&lt;br/&gt;&amp;gt; transaction more than once, avoid downloading transactions that are&lt;br/&gt;&amp;gt; eventually rejected, and minimize storage allocated for&lt;br/&gt;&amp;gt; not-yet-validated transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Consider these (plausible) scenarios in transaction relay:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alice (the &amp;#34;sender&amp;#34;) is relaying transactions to Bob (the &amp;#34;receiver&amp;#34;).&lt;br/&gt;&amp;gt; Alice&amp;#39;s mempool has a minimum feerate of 1sat/vB and Bob&amp;#39;s has a&lt;br/&gt;&amp;gt; minimum feerate of 3sat/vB. For simplicity, all transactions are&lt;br/&gt;&amp;gt; 1600Wu in virtual size and 500 bytes in serialized size. Apart from&lt;br/&gt;&amp;gt; the spending relationships specified, all other inputs are from&lt;br/&gt;&amp;gt; confirmed UTXOs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Package {A, B} where A pays 0 satoshis and B pays 8000 satoshis in&lt;br/&gt;&amp;gt;    fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. Package {C, D} where C pays 0 satoshis and D pays 1200 satoshis in&lt;br/&gt;&amp;gt;    fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Package {E, F, G, H, J} that pays 4000, 8000, 0, 2000, and 4000&lt;br/&gt;&amp;gt;    satoshis in fees, respectively.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====Alternative Designs Considered====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#39;&amp;#39;Package Information Only:&amp;#39;&amp;#39; Just having &amp;#34;pckginfo&amp;#34; gives enough&lt;br/&gt;&amp;gt; information for the receiver to accept the package. Omit the&lt;br/&gt;&amp;gt; &amp;#34;getpckgtxns&amp;#34; and &amp;#34;pckgtxns&amp;#34; messages. While this option is a good&lt;br/&gt;&amp;gt; fallback if batched transaction download fails for some reason, it&lt;br/&gt;&amp;gt; shouldn&amp;#39;t be used as the default because it &amp;#39;always&amp;#39; requires storage&lt;br/&gt;&amp;gt; of unvalidated transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#39;&amp;#39;No Package Information Round:&amp;#39;&amp;#39; Instead of having a package&lt;br/&gt;&amp;gt; information round, just use the child&amp;#39;s wtxid to refer to the package&lt;br/&gt;&amp;gt; and always send the entire package together. This would cause nodes to&lt;br/&gt;&amp;gt; redownload duplicate transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I have also created a slidedeck exploring various alternative designs&lt;br/&gt;&amp;gt; and some examples in which they fall flat [20]. Please feel free to&lt;br/&gt;&amp;gt; suggest other alternatives.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ====Versioning System====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This protocol should be extensible to support multiple types of&lt;br/&gt;&amp;gt; packages based on future desired use cases. Two &amp;#34;flavors&amp;#34; of&lt;br/&gt;&amp;gt; versioning were considered:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. When package mempool acceptance is upgraded to support more types&lt;br/&gt;&amp;gt;    of packages, increment the version number (similar to Erlay).&lt;br/&gt;&amp;gt; During version handshake, peers negotiate which version of package&lt;br/&gt;&amp;gt; relay they will use by each sending one &amp;#34;sendpackages&amp;#34; message.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. When introducing another type of package, assign a version number&lt;br/&gt;&amp;gt;    to it and announce it as an additional supported version (similar&lt;br/&gt;&amp;gt; to Compact Block Relay). During version handshake, peers send one&lt;br/&gt;&amp;gt; &amp;#34;sendpackages&amp;#34; message for each version supported.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The second option was favored because it allows different parameters&lt;br/&gt;&amp;gt; for different versions.  For example, it should be possible to support&lt;br/&gt;&amp;gt; both &amp;#34;arbitrary topology but maximum 3-transaction&amp;#34; package as well as&lt;br/&gt;&amp;gt; &amp;#34;child-with-unconfirmed-parents with default mempool ancestor limits&amp;#34;&lt;br/&gt;&amp;gt; packages simultaneously.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Acknowledgements==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I hope to have made it abundantly clear that this proposal isn’t&lt;br/&gt;&amp;gt; inventing the concept of package relay, and in fact builds upon years&lt;br/&gt;&amp;gt; of work by many others, including Suhas Daftuar and Antoine Riard.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thank you to John Newbery and Martin Zumsande for input on the design.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thank you to Matt Corallo, Christian Decker, David Harding, Antoine&lt;br/&gt;&amp;gt; Poinsot, Antoine Riard, Gregory Sanders, Chris Stewart, Bastien&lt;br/&gt;&amp;gt; Teinturier, and others for input on the desired interface for&lt;br/&gt;&amp;gt; contracting protocols.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Looking forward to hearing your thoughts!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Gloria&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-January/019817.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-January/019817.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [1]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-April/002639.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-April/002639.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [2]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-June/002758.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-June/002758.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [3]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/t-bast/lightning-docs/blob/master/pinning-attacks.md&#34;&gt;https://github.com/t-bast/lightning-docs/blob/master/pinning-attacks.md&lt;/a&gt;&lt;br/&gt;&amp;gt; [4]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/revault/practical-revault/blob/master/transactions.md#cancel_tx&#34;&gt;https://github.com/revault/practical-revault/blob/master/transactions.md#cancel_tx&lt;/a&gt;&lt;br/&gt;&amp;gt; [5]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/discreetlogcontracts/dlcspecs/blob/master/Transactions.md#refund-transaction&#34;&gt;https://github.com/discreetlogcontracts/dlcspecs/blob/master/Transactions.md#refund-transaction&lt;/a&gt;&lt;br/&gt;&amp;gt; [6]: &lt;a href=&#34;https://gist.github.com/instagibbs/60264606e181451e977e439a49f69fe1&#34;&gt;https://gist.github.com/instagibbs/60264606e181451e977e439a49f69fe1&lt;/a&gt;&lt;br/&gt;&amp;gt; [7]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://btctranscripts.com/adopting-bitcoin/2021/2021-11-16-gloria-zhao-transaction-relay-policy/#lightning-attacks&#34;&gt;https://btctranscripts.com/adopting-bitcoin/2021/2021-11-16-gloria-zhao-transaction-relay-policy/#lightning-attacks&lt;/a&gt;&lt;br/&gt;&amp;gt; [8]: &lt;a href=&#34;https://youtu.be/fbWSQvJjKFs?t=1438&#34;&gt;https://youtu.be/fbWSQvJjKFs?t=1438&lt;/a&gt;&lt;br/&gt;&amp;gt; [9]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://www.reddit.com/r/Bitcoin/comments/unew4e/looks_like_70_mvb_of_transactions_just_got_dumped/&#34;&gt;https://www.reddit.com/r/Bitcoin/comments/unew4e/looks_like_70_mvb_of_transactions_just_got_dumped/&lt;/a&gt;&lt;br/&gt;&amp;gt; [10]: &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/7594&#34;&gt;https://github.com/bitcoin/bitcoin/pull/7594&lt;/a&gt;&lt;br/&gt;&amp;gt; [11]: &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/7600&#34;&gt;https://github.com/bitcoin/bitcoin/pull/7600&lt;/a&gt;&lt;br/&gt;&amp;gt; [12]: &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/6455#issuecomment-122716820&#34;&gt;https://github.com/bitcoin/bitcoin/pull/6455#issuecomment-122716820&lt;/a&gt;&lt;br/&gt;&amp;gt; [13]: &lt;a href=&#34;https://gist.github.com/sdaftuar/8756699bfcad4d3806ba9f3396d4e66a&#34;&gt;https://gist.github.com/sdaftuar/8756699bfcad4d3806ba9f3396d4e66a&lt;/a&gt;&lt;br/&gt;&amp;gt; [14]: &lt;a href=&#34;https://github.com/bitcoin/bitcoin/issues/14895&#34;&gt;https://github.com/bitcoin/bitcoin/issues/14895&lt;/a&gt;&lt;br/&gt;&amp;gt; [15]: &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/16401&#34;&gt;https://github.com/bitcoin/bitcoin/pull/16401&lt;/a&gt;&lt;br/&gt;&amp;gt; [16]: &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/19621&#34;&gt;https://github.com/bitcoin/bitcoin/pull/19621&lt;/a&gt;&lt;br/&gt;&amp;gt; [17]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019464.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019464.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [18]: &lt;a href=&#34;https://github.com/users/glozow/projects/5/views/4?layout=board&#34;&gt;https://github.com/users/glozow/projects/5/views/4?layout=board&lt;/a&gt;&lt;br/&gt;&amp;gt; [19]: &lt;a href=&#34;https://gist.github.com/glozow/9b321cd3ef6505135c763112033ff2a7&#34;&gt;https://gist.github.com/glozow/9b321cd3ef6505135c763112033ff2a7&lt;/a&gt;&lt;br/&gt;&amp;gt; [20]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://docs.google.com/presentation/d/1B__KlZO1VzxJGx-0DYChlWawaEmGJ9EGApEzrHqZpQc/edit?usp=sharing&#34;&gt;https://docs.google.com/presentation/d/1B__KlZO1VzxJGx-0DYChlWawaEmGJ9EGApEzrHqZpQc/edit?usp=sharing&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220517/06bd18af/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220517/06bd18af/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:09:42&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswkvzz0z3678dydjqek3nyvaw00e5pyx38fhkenkm3fra46n9sgwqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjktxc2j</id>
    
      <title type="html">📅 Original date posted:2021-11-24 📝 Original message:I may ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswkvzz0z3678dydjqek3nyvaw00e5pyx38fhkenkm3fra46n9sgwqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjktxc2j" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs20l8dv35c5h3rqvxdz4safq3fcp8vwy8p6zn74m290zcpwj46zvc0huknf&#39;&gt;nevent1q…uknf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-11-24&lt;br/&gt;📝 Original message:I may be misunderstanding the question, but it seems essential data for the&lt;br/&gt;finalizer role, which may not know such information on its own.&lt;br/&gt;&lt;br/&gt;On Wed, Nov 24, 2021 at 11:15 PM Sjors Provoost via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Andrew,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m confused why PSBT_IN_TAP_BIP32_DERIVATION and&lt;br/&gt;&amp;gt; PSBT_OUT_TAP_BIP32_DERIVATION&lt;br/&gt;&amp;gt; contain not just the derivation path for the xonlypubkey, but also the&lt;br/&gt;&amp;gt; tapleaf merkle path.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; First I thought it was perhaps necessary in order for a signer to guess&lt;br/&gt;&amp;gt; which&lt;br/&gt;&amp;gt; script leaves it can sign with its own keys. But you can&amp;#39;t really know&lt;br/&gt;&amp;gt; that without&lt;br/&gt;&amp;gt; actually seeing the script. When a signer looks at a script, it presumably&lt;br/&gt;&amp;gt; already&lt;br/&gt;&amp;gt; knows the leaf path.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - Sjors&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Op 22 jun. 2021, om 23:22 heeft Andrew Chow via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; het volgende geschreven:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hi All,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I would like to propose a BIP which defines new fields for Taproot&lt;br/&gt;&amp;gt; support in PSBT.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The full text is below, and the rendered file can be found at&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Now at: &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -&lt;br/&gt;&amp;gt; | Taproot Key BIP 32 Derivation Path&lt;br/&gt;&amp;gt; | &amp;lt;tt&amp;gt;PSBT_IN_TAP_BIP32_DERIVATION = 0x16&amp;lt;/tt&amp;gt;&lt;br/&gt;&amp;gt; | &amp;lt;tt&amp;gt;&amp;lt;xonlypubkey&amp;gt;&amp;lt;/tt&amp;gt;&lt;br/&gt;&amp;gt; | The 32 byte X-only public key&lt;br/&gt;&amp;gt; | &amp;lt;tt&amp;gt;&amp;lt;hashes len&amp;gt; &amp;lt;leaf hash&amp;gt;* &amp;lt;32-bit uint&amp;gt; &amp;lt;32-bit uint&amp;gt;*&amp;lt;/tt&amp;gt;&lt;br/&gt;&amp;gt; | A compact size unsigned integer representing the number of leaf&lt;br/&gt;&amp;gt; hashes, followed by a list of leaf hashes, followed by the master key&lt;br/&gt;&amp;gt; fingerprint concatenated with the derivation path of the public key. The&lt;br/&gt;&amp;gt; derivation path is represented as 32-bit little endian unsigned integer&lt;br/&gt;&amp;gt; indexes concatenated with each other. Public keys are those needed to&lt;br/&gt;&amp;gt; spend this output. The leaf hashes are of the leaves which involve this&lt;br/&gt;&amp;gt; public key.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; |-&lt;br/&gt;&amp;gt; | Taproot Key BIP 32 Derivation Path&lt;br/&gt;&amp;gt; | &amp;lt;tt&amp;gt;PSBT_OUT_TAP_BIP32_DERIVATION = 0x07&amp;lt;/tt&amp;gt;&lt;br/&gt;&amp;gt; | &amp;lt;tt&amp;gt;&amp;lt;xonlypubkey&amp;gt;&amp;lt;/tt&amp;gt;&lt;br/&gt;&amp;gt; | The 32 byte X-only public key&lt;br/&gt;&amp;gt; | &amp;lt;tt&amp;gt;&amp;lt;hashes len&amp;gt; &amp;lt;leaf hash&amp;gt;* &amp;lt;32-bit uint&amp;gt; &amp;lt;32-bit uint&amp;gt;*&amp;lt;/tt&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20211125/1b84c9b6/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20211125/1b84c9b6/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:00:39&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsy5vww85kfqkkpqt8mkqfyum6c35qx9jsq4dnh7hsmnwh6dvlp9hszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjl0xpnz</id>
    
      <title type="html">📅 Original date posted:2020-08-21 📝 Original message:No ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsy5vww85kfqkkpqt8mkqfyum6c35qx9jsq4dnh7hsmnwh6dvlp9hszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjl0xpnz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszry82gsg4hf3u6ryfley9mtdjk7avnkxqwxkn8k9gm92qnpe0zuq395jkl&#39;&gt;nevent1q…5jkl&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-08-21&lt;br/&gt;📝 Original message:No strong opinions but:&lt;br/&gt;&lt;br/&gt;Denial of service attacks can become 5x cheaper.&lt;br/&gt;&lt;br/&gt;If you don&amp;#39;t thoroughly test&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/issues/16499&#34;&gt;https://github.com/bitcoin/bitcoin/issues/16499&lt;/a&gt; these&lt;br/&gt;changes you can end up with bugs that can cause issues on p2p network.&lt;br/&gt;&lt;br/&gt;On Fri, Aug 21, 2020 at 4:00 AM Dan Bryant via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; It&amp;#39;s been 5 years since minrealytxfee was lowered.  At the time&lt;br/&gt;&amp;gt; bitcoin was trading for $255 and it was agreed that the fee of 5000&lt;br/&gt;&amp;gt; sat/vkB was too high.  It was lowered to 1000 sat/vkB.  In regards to&lt;br/&gt;&amp;gt; how much anti-DoS protection that provided, it comes out to $0.00255 /&lt;br/&gt;&amp;gt; vkB in USD terms.  To have parity with the last reduction, we would&lt;br/&gt;&amp;gt; need to reduce minrealytxfee to 22 sat/vKB, though an even more&lt;br/&gt;&amp;gt; conservative reduction to 100 or 50 sat/vKB would be welcome.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With the growing adoption of LN, there is a need for ultra-low-fee&lt;br/&gt;&amp;gt; on-chain TXNs.  Having these queue and confirm overnight, or even&lt;br/&gt;&amp;gt; waiting until the Sunday lull would still probably be welcome to many&lt;br/&gt;&amp;gt; users.  The fact that the mempool is going empty at least every week&lt;br/&gt;&amp;gt; indicates that miners have not reached the floor of what they are&lt;br/&gt;&amp;gt; willing to mine.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; About 2 years ago there was a PR (#13922) to try to make a reduction&lt;br/&gt;&amp;gt; from 1000 to 200 sat/vkB.  It was widely accepted but the submitter&lt;br/&gt;&amp;gt; eventually closed it in favor of PR #13990.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If minrelaytxfee is already parameterized and configurable in&lt;br/&gt;&amp;gt; bitcoin.conf, how could it be detrimental to operation of a node to&lt;br/&gt;&amp;gt; change the default?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; References:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/commit/9e93640be6c49fa1505ba5c5df8c89210da5a6e4&#34;&gt;https://github.com/bitcoin/bitcoin/commit/9e93640be6c49fa1505ba5c5df8c89210da5a6e4&lt;/a&gt;&lt;br/&gt;&amp;gt; * &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/13922&#34;&gt;https://github.com/bitcoin/bitcoin/pull/13922&lt;/a&gt;&lt;br/&gt;&amp;gt; * &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/13990&#34;&gt;https://github.com/bitcoin/bitcoin/pull/13990&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200821/53f9cfde/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200821/53f9cfde/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:26:37&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsflpljy9hj9z8w78c83e02c55t5emxqg595ur2408wd45przlsh4qzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjhr5mkp</id>
    
      <title type="html">📅 Original date posted:2020-05-01 📝 Original message:For ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsflpljy9hj9z8w78c83e02c55t5emxqg595ur2408wd45przlsh4qzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjhr5mkp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstjg8udvel0fhm7n0y86mjmfqjdfj8fzgjy9hsyyvpgyzvawfungqhhtprf&#39;&gt;nevent1q…tprf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-05-01&lt;br/&gt;📝 Original message:For what it&amp;#39;s worth this measure had been discussed as a lightweight way of&lt;br/&gt;informing offline signers if inputs were segwit or not for malleability&lt;br/&gt;analysis reasons. So there&amp;#39;s at least a couple direct use-cases it seems.&lt;br/&gt;&lt;br/&gt;On Fri, May 1, 2020, 8:23 AM Russell O&amp;#39;Connor via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; While I&amp;#39;m not entirely convinced yet that accertaining non-ownership of an&lt;br/&gt;&amp;gt; input is a robust method of solving the problem here, I also see little&lt;br/&gt;&amp;gt; reason not to amend BIP-341 as proposed. The ScriptPubKeys in question is&lt;br/&gt;&amp;gt; already indirectly covered through the outpoints, so it is just a matter of&lt;br/&gt;&amp;gt; optimization.  Furthermore in the consensus code, the ScriptPubKeys are&lt;br/&gt;&amp;gt; part of the UTXO data set, and it is already being retrieved as part of the&lt;br/&gt;&amp;gt; transaction checking process, so it is readily available.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m not sure how much my opinion on the topic matters, but I did include&lt;br/&gt;&amp;gt; this kind of functionality in my design for Simplicity on Elements, and I&lt;br/&gt;&amp;gt; have been leaning towards adding this kind of functionality in my Bitcoin&lt;br/&gt;&amp;gt; demo application of Simplicity.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regarding specifics, I personally think it would be better to keep the&lt;br/&gt;&amp;gt; hashes of the ScriptPubKeys separate from the hashes of the input values.&lt;br/&gt;&amp;gt; This way anyone only interested in input values does not need to wade&lt;br/&gt;&amp;gt; through what are, in principle, arbitrarily long ScriptPubKeys in order to&lt;br/&gt;&amp;gt; check the input values (which each fixed size).  To that end, I would also&lt;br/&gt;&amp;gt; (and independently) propose separating the hashing of the output values&lt;br/&gt;&amp;gt; from the output ScriptPubKeys in `sha_outputs` so again, applications&lt;br/&gt;&amp;gt; interested only in summing the values of the outputs (for instance to&lt;br/&gt;&amp;gt; compute fees) do not have to wade through those arbitrarily long&lt;br/&gt;&amp;gt; ScriptPubKeys in the outputs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Thu, Apr 30, 2020 at 4:22 AM Andrew Kozlik via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi everyone,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In the current draft of BIP-0341 [1] the signature message commits to the&lt;br/&gt;&amp;gt;&amp;gt; scriptPubKey of the output being spent by the input. I propose that the&lt;br/&gt;&amp;gt;&amp;gt; signature message should commit to the scriptPubKeys of *all* transaction&lt;br/&gt;&amp;gt;&amp;gt; inputs.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In certain applications like CoinJoin, a wallet has to deal with&lt;br/&gt;&amp;gt;&amp;gt; transactions containing external inputs. To calculate the actual amount&lt;br/&gt;&amp;gt;&amp;gt; that the user is spending, the wallet needs to reliably determine for each&lt;br/&gt;&amp;gt;&amp;gt; input whether it belongs to the wallet or not. Without such a mechanism an&lt;br/&gt;&amp;gt;&amp;gt; adversary can fool the wallet into displaying incorrect information about&lt;br/&gt;&amp;gt;&amp;gt; the amount being spent, which can result in theft of user funds [2].&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In order to ascertain non-ownership of an input which is claimed to be&lt;br/&gt;&amp;gt;&amp;gt; external, the wallet needs the scriptPubKey of the previous output spent by&lt;br/&gt;&amp;gt;&amp;gt; this input. It must acquire the full transaction being spent and verify its&lt;br/&gt;&amp;gt;&amp;gt; hash against that which is given in the outpoint. This is an obstacle in&lt;br/&gt;&amp;gt;&amp;gt; the implementation of lightweight air-gapped wallets and hardware wallets&lt;br/&gt;&amp;gt;&amp;gt; in general. If the signature message would commit to the scriptPubKeys of&lt;br/&gt;&amp;gt;&amp;gt; all transaction inputs, then the wallet would only need to acquire the&lt;br/&gt;&amp;gt;&amp;gt; scriptPubKey of the output being spent without having to acquire and verify&lt;br/&gt;&amp;gt;&amp;gt; the hash of the entire previous transaction. If an attacker would provide&lt;br/&gt;&amp;gt;&amp;gt; an incorrect scriptPubKey, then that would cause the wallet to generate an&lt;br/&gt;&amp;gt;&amp;gt; invalid signature message.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Note that committing only to the scriptPubKey of the output being spent&lt;br/&gt;&amp;gt;&amp;gt; is insufficient for this application, because the scriptPubKeys which are&lt;br/&gt;&amp;gt;&amp;gt; needed to ascertain non-ownership of external inputs are precisely the ones&lt;br/&gt;&amp;gt;&amp;gt; that would not be included in any of the signature messages produced by the&lt;br/&gt;&amp;gt;&amp;gt; wallet.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The obvious way to implement this is to add another hash to the signature&lt;br/&gt;&amp;gt;&amp;gt; message:&lt;br/&gt;&amp;gt;&amp;gt; sha_scriptPubKeys (32): the SHA256 of the serialization of all&lt;br/&gt;&amp;gt;&amp;gt; scriptPubKeys of the previous outputs spent by this transaction.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&amp;gt; Andrew Kozlik&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [1]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#common-signature-message&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#common-signature-message&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [2]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-August/014843.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-August/014843.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200501/5712467f/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200501/5712467f/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:24:12&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrxz2hwcm6zhrcmn35qf7fl85q3344e8gj07rkqufe4z0hra9n3dgzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj5ql50t</id>
    
      <title type="html">📅 Original date posted:2020-03-26 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrxz2hwcm6zhrcmn35qf7fl85q3344e8gj07rkqufe4z0hra9n3dgzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj5ql50t" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs02260n9zlkqe5zcxz2djykm5gunded7htnlyd7t4r3u4d9puta5gvywtya&#39;&gt;nevent1q…wtya&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-03-26&lt;br/&gt;📝 Original message:&amp;gt; Wouldn&amp;#39;t that result in a changing pubkey at each update, and thus&lt;br/&gt;require an onchain move to be committed?&lt;br/&gt;&lt;br/&gt;Suggestion was in line with original proposal where no keys are changing&lt;br/&gt;ever, just not presupposing existence of MuSig.&lt;br/&gt;&lt;br/&gt;On Thu, Mar 26, 2020 at 1:15 PM Christian Decker via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Ruben Somsen via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;&amp;gt; writes:&lt;br/&gt;&amp;gt; &amp;gt; Regarding modification 1, I agree with ZmnSCPxj that&lt;br/&gt;&amp;gt; &amp;gt; Decker-Wattenhofer is your next best option, given that eltoo is not&lt;br/&gt;&amp;gt; &amp;gt; yet available. But if you are going to use a kickoff transaction, keep&lt;br/&gt;&amp;gt; &amp;gt; in mind that every previous owner will have a copy of it. Because of&lt;br/&gt;&amp;gt; &amp;gt; this, you can&amp;#39;t include a fee, and will instead need to have a second&lt;br/&gt;&amp;gt; &amp;gt; output for CPFP. This way a previous owner will at least have to pay&lt;br/&gt;&amp;gt; &amp;gt; the fee if they want to publish it. Note that it&amp;#39;s still an&lt;br/&gt;&amp;gt; &amp;gt; improvement, because even if the kickoff transaction gets posted, it&lt;br/&gt;&amp;gt; &amp;gt; basically becomes no different than what it would have been, had you&lt;br/&gt;&amp;gt; &amp;gt; not used a kickoff transaction at all.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It might be worth adopting the late fee binding we have in eltoo by&lt;br/&gt;&amp;gt; having the kickoff transaction input spending the funding tx signed with&lt;br/&gt;&amp;gt; sighash_single. This works because we only have 1 input and 1 output&lt;br/&gt;&amp;gt; that we really care about, and can allow others to attach fees at&lt;br/&gt;&amp;gt; will. That&amp;#39;d at least remove the need to guess the feerate days or&lt;br/&gt;&amp;gt; months in advance and thus having to overestimate.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Regarding modification 2, I like it a lot conceptually. It hadn&amp;#39;t&lt;br/&gt;&amp;gt; &amp;gt; occurred to me before, and it&amp;#39;s a clear security improvement. The only&lt;br/&gt;&amp;gt; &amp;gt; question is something Greg Sanders mentioned: whether it&amp;#39;s enough to&lt;br/&gt;&amp;gt; &amp;gt; justify the added complexity of using 2P ECDSA. The alternative would&lt;br/&gt;&amp;gt; &amp;gt; be to simply use a regular 2-of-2 multisig (until Schnorr arrives,&lt;br/&gt;&amp;gt; &amp;gt; possibly).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Wouldn&amp;#39;t that result in a changing pubkey at each update, and thus&lt;br/&gt;&amp;gt; require an onchain move to be committed?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;m looking forward to seeing statechains become a reality.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That&amp;#39;d indeed be great :-)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Christian&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200326/7b38acf0/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200326/7b38acf0/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:23:37&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszke4m4tkc6nenyeudek2jkvswnyj4lxvwgjwn0ntf2272t9y69eszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjg0q2e6</id>
    
      <title type="html">📅 Original date posted:2020-03-04 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszke4m4tkc6nenyeudek2jkvswnyj4lxvwgjwn0ntf2272t9y69eszyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjg0q2e6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszk452rscn62sfv2zcehed2gdjra6lcq2ww627t2cuuhak5pg4eecq6z7cz&#39;&gt;nevent1q…z7cz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-03-04&lt;br/&gt;📝 Original message:OP_MESSAGEONLY would make &amp;#34;dumb&amp;#34; signers like HWW more difficult to&lt;br/&gt;support. They&amp;#39;d have to do script interpretation to make sure they&amp;#39;re not&lt;br/&gt;signing something real with funds.&lt;br/&gt;&lt;br/&gt;Just FYI.&lt;br/&gt;&lt;br/&gt;On Wed, Mar 4, 2020 at 9:35 AM Luke Dashjr via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; In addition to starting with proof-of-funds instead of proof-of-receiver,&lt;br/&gt;&amp;gt; it&lt;br/&gt;&amp;gt; would be nice to integrate with Taproot somehow or another. Perhaps&lt;br/&gt;&amp;gt; OP_MESSAGEONLY is the most straightforward way to do this? It might be a&lt;br/&gt;&amp;gt; good&lt;br/&gt;&amp;gt; idea to have a message type after the opcode too.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Wednesday 04 March 2020 06:23:53 Karl-Johan Alm via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &amp;gt; Hello,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I noticed recently that a PR to Bitcoin Core that pretty much touched&lt;br/&gt;&amp;gt; &amp;gt; everything my BIP-322 pull request touches (around the same&lt;br/&gt;&amp;gt; &amp;gt; complexity) was merged without a thought given to BIP-322&lt;br/&gt;&amp;gt; &amp;gt; compatibility, despite the BIP-322 PR being open for 2x the time. I&lt;br/&gt;&amp;gt; &amp;gt; can only conclude from this that people dislike BIP-322 in its current&lt;br/&gt;&amp;gt; &amp;gt; form, which the 9 month old pull request stagnating can probably&lt;br/&gt;&amp;gt; &amp;gt; attest to.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; There are several things that I can do to make this a bit more&lt;br/&gt;&amp;gt; &amp;gt; appealing to people, which would hopefully kick the progress on this&lt;br/&gt;&amp;gt; &amp;gt; forward. I have already put in a non-trivial amount of energy and&lt;br/&gt;&amp;gt; &amp;gt; effort into maintaining the pull request as is, so I&amp;#39;d prefer if&lt;br/&gt;&amp;gt; &amp;gt; people were harsh and unfiltered in their criticism rather than polite&lt;br/&gt;&amp;gt; &amp;gt; and buffered, so I can beat this thing into shape (or abandon it, in&lt;br/&gt;&amp;gt; &amp;gt; the worst case).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; =============&lt;br/&gt;&amp;gt; &amp;gt; 1. People use signmessage as a way to prove funds. This is misleading&lt;br/&gt;&amp;gt; &amp;gt; and should be discouraged; throw the sign message stuff out and&lt;br/&gt;&amp;gt; &amp;gt; replace it entirely with a prove funds system.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I know in particular luke-jr is of this opinion, and Greg Maxwell in&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/16440#issuecomment-568194168&#34;&gt;https://github.com/bitcoin/bitcoin/pull/16440#issuecomment-568194168&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; leans towards this opinion as well, it seems.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; =============&lt;br/&gt;&amp;gt; &amp;gt; 2. Use a transaction rather than a new format; make the first input&amp;#39;s&lt;br/&gt;&amp;gt; &amp;gt; txid the message hash to ensure the tx cannot be broadcasted. This has&lt;br/&gt;&amp;gt; &amp;gt; the benefit of being able to provide to an existing hardware wallet&lt;br/&gt;&amp;gt; &amp;gt; without making any modifications to its firmware.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I think Mark Friedenbach and Johnson Lau are of this opinion, except&lt;br/&gt;&amp;gt; &amp;gt; Johnson Lau also suggests that the signature hash is modified, see&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bips/pull/725#issuecomment-420040430&#34;&gt;https://github.com/bitcoin/bips/pull/725#issuecomment-420040430&lt;/a&gt; --&lt;br/&gt;&amp;gt; &amp;gt; which defeats the benefit above since now hw wallets can no longer&lt;br/&gt;&amp;gt; &amp;gt; sign.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Prusnak (I think he works at Trezor; apologies if I am mistaken) is&lt;br/&gt;&amp;gt; &amp;gt; against this idea, and proposes (3) below:&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bips/pull/725#issuecomment-420210488&#34;&gt;https://github.com/bitcoin/bips/pull/725#issuecomment-420210488&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; =============&lt;br/&gt;&amp;gt; &amp;gt; 3. Use Trezor style&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; See &lt;a href=&#34;https://github.com/trezor/trezor-mcu/issues/169&#34;&gt;https://github.com/trezor/trezor-mcu/issues/169&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; This has the benefit of already being adopted (which clearly BIP-322&lt;br/&gt;&amp;gt; &amp;gt; is failing hard at right now), but has the drawback that we can no&lt;br/&gt;&amp;gt; &amp;gt; longer do *generic* signing; we are stuck with the exact same&lt;br/&gt;&amp;gt; &amp;gt; limitations as in the legacy system, which we kinda wanted to fix in&lt;br/&gt;&amp;gt; &amp;gt; the updated version.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; =============&lt;br/&gt;&amp;gt; &amp;gt; 4. Introduce OP_MESSAGEONLY&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Quoting Johnson Lau at&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bips/pull/725#issuecomment-420421058&#34;&gt;https://github.com/bitcoin/bips/pull/725#issuecomment-420421058&lt;/a&gt; :&lt;br/&gt;&amp;gt; &amp;gt; &amp;#34;&amp;#34;&amp;#34;&lt;br/&gt;&amp;gt; &amp;gt; OP_MESSAGEONLY means the script following the code would never be&lt;br/&gt;&amp;gt; &amp;gt; valid. For example, a scriptPubKey:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; OP_IF OP_MESSAGEONLY &amp;lt;key_m&amp;gt; OP_ELSE &amp;lt;key_s&amp;gt; OP_ENDIF OP_CHECKSIG&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; For messaging purpose, OP_MESSAGEONLY is considered as OP_NOP and is&lt;br/&gt;&amp;gt; &amp;gt; ignored. A message could be signed with either key_m or key_s.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; For spending, only key_s is valid.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I don&amp;#39;t think it is a big problem to consume a op_code. If this is a&lt;br/&gt;&amp;gt; &amp;gt; real concern, I could modify it as follow: in message system,&lt;br/&gt;&amp;gt; &amp;gt; OP_RETURN will pop the top stack. If top stack is msg in hex, it is&lt;br/&gt;&amp;gt; &amp;gt; ignored. Otherwise, the script fails.&lt;br/&gt;&amp;gt; &amp;gt; &amp;#34;&amp;#34;&amp;#34;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; =============&lt;br/&gt;&amp;gt; &amp;gt; 5. Some other solution&lt;br/&gt;&amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200304/4a364551/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200304/4a364551/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:23:15&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgdrnglqqf3t85xwal23gge8anjcp5uqnrh7hnvnqz9p6t42y8jpczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjveklk8</id>
    
      <title type="html">📅 Original date posted:2019-11-07 📝 Original message:Could ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgdrnglqqf3t85xwal23gge8anjcp5uqnrh7hnvnqz9p6t42y8jpczyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjveklk8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgzee7yz75z9ma4s73se97c5d2mkjfdkhmqlqvyywx8894s9u95zqpva639&#39;&gt;nevent1q…a639&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-11-07&lt;br/&gt;📝 Original message:Could the softer touch of just making them non-standard apply as a future&lt;br/&gt;preparation for an accepted softfork? Relaxations could easily be done&lt;br/&gt;later if desired.&lt;br/&gt;&lt;br/&gt;On Thu, Nov 7, 2019, 5:37 PM Pieter Wuille via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hello all,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A while ago it was discovered that bech32 has a mutation weakness (see&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/sipa/bech32/issues/51&#34;&gt;https://github.com/sipa/bech32/issues/51&lt;/a&gt; for details). Specifically,&lt;br/&gt;&amp;gt; when a bech32 string ends with a &amp;#34;p&amp;#34;, inserting or erasing &amp;#34;q&amp;#34;s right&lt;br/&gt;&amp;gt; before that &amp;#34;p&amp;#34; does not invalidate it. While insertion/erasure&lt;br/&gt;&amp;gt; robustness was not an explicit goal (BCH codes in general only have&lt;br/&gt;&amp;gt; guarantees about substitution errors), this is very much not by&lt;br/&gt;&amp;gt; design, and this specific issue could have been made much less&lt;br/&gt;&amp;gt; impactful with a slightly different approach. I&amp;#39;m sorry it wasn&amp;#39;t&lt;br/&gt;&amp;gt; caught earlier.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This has little effect on the security of P2WPKH/P2WSH addresses, as&lt;br/&gt;&amp;gt; those are only valid (per BIP173) for specific lengths (42 and 62&lt;br/&gt;&amp;gt; characters respectively). Inserting 20 consecutive &amp;#34;p&amp;#34;s in a typo&lt;br/&gt;&amp;gt; seems highly improbable.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m making this post because this property may unfortunately influence&lt;br/&gt;&amp;gt; design decisions around bip-taproot, as was brought up in the review&lt;br/&gt;&amp;gt; session (&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-October/017427.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-October/017427.html&lt;/a&gt;&lt;br/&gt;&amp;gt; )&lt;br/&gt;&amp;gt; past tuesday. In the current draft, witness v1 outputs of length other&lt;br/&gt;&amp;gt; than 32 remain unencumbered, which means that for now such an&lt;br/&gt;&amp;gt; insertion or erasure would result in an output that can be spent by&lt;br/&gt;&amp;gt; anyone. If that is considered unacceptable, it could be prevented by&lt;br/&gt;&amp;gt; for example outlawing v1 witness outputs of length 31 and 33.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thoughts?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; Pieter&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20191107/ffd8acac/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20191107/ffd8acac/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:21:35&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyzs0jpv6eyennfxjgpmc6vaa80xjea0w5zvnxl7nu9ehylgfatrqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjp4enrc</id>
    
      <title type="html">📅 Original date posted:2018-01-23 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyzs0jpv6eyennfxjgpmc6vaa80xjea0w5zvnxl7nu9ehylgfatrqzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpjp4enrc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszq2usxjt9sylrd8cr0t9atafjthevx3mr5dumhy423l86nq2qp7qacjpkh&#39;&gt;nevent1q…jpkh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-01-23&lt;br/&gt;📝 Original message:Interesting parallels to current Elements sidechain peg-in functionality.&lt;br/&gt;User tweaks the watchmen(BTC holder) pubkey using P2CH, committing to a&lt;br/&gt;script that is used on the *sidechain side* as spending authorization for&lt;br/&gt;that bitcoin output rather than mainnet.&lt;br/&gt;&lt;br/&gt;I think composing the two can be done as:&lt;br/&gt;&lt;br/&gt;P = C&amp;#39; &#43; H(C&amp;#39;||S&amp;#39;)G &#43; H(C||S)G&lt;br/&gt;&lt;br/&gt;where C is redefined as `C&amp;#39; &#43; H(C&amp;#39;||S&amp;#39;)G`, which for Bitcoin consensus&lt;br/&gt;purposes is just a single pubkey.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Mon, Jan 22, 2018 at 7:30 PM, Gregory Maxwell via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Interest in merkelized scriptPubKeys (e.g. MAST) is driven by two main&lt;br/&gt;&amp;gt; areas: efficiency and privacy. Efficiency because unexecuted forks of&lt;br/&gt;&amp;gt; a script can avoid ever hitting the chain, and privacy because hiding&lt;br/&gt;&amp;gt; unexecuted code leaves scripts indistinguishable to the extent that&lt;br/&gt;&amp;gt; their only differences are in the unexecuted parts.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As Mark Friedenbach and others have pointed out before it is almost&lt;br/&gt;&amp;gt; always the case that interesting scripts have a logical top level&lt;br/&gt;&amp;gt; branch which allows satisfaction of the contract with nothing other&lt;br/&gt;&amp;gt; than a signature by all parties.  Other branches would only be used&lt;br/&gt;&amp;gt; where some participant is failing to cooperate. More strongly stated,&lt;br/&gt;&amp;gt; I believe that _any_ contract with a fixed finite participant set&lt;br/&gt;&amp;gt; upfront can be and should be represented as an OR between an N-of-N&lt;br/&gt;&amp;gt; and whatever more complex contract you might want to represent.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One point that comes up while talking about merkelized scripts is can&lt;br/&gt;&amp;gt; we go about making fancier contract use cases as indistinguishable as&lt;br/&gt;&amp;gt; possible from the most common and boring payments. Otherwise, if the&lt;br/&gt;&amp;gt; anonymity set of fancy usage is only other fancy usage it may not be&lt;br/&gt;&amp;gt; very large in practice. One suggestion has been that ordinary&lt;br/&gt;&amp;gt; checksig-only scripts should include a dummy branch for the rest of&lt;br/&gt;&amp;gt; the tree (e.g. a random value hash), making it look like there are&lt;br/&gt;&amp;gt; potentially alternative rules when there aren&amp;#39;t really.  The negative&lt;br/&gt;&amp;gt; side of this is an additional 32-byte overhead for the overwhelmingly&lt;br/&gt;&amp;gt; common case which doesn&amp;#39;t need it.  I think the privacy gains are&lt;br/&gt;&amp;gt; worth doing such a thing, but different people reason differently&lt;br/&gt;&amp;gt; about these trade-offs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It turns out, however, that there is no need to make a trade-off.  The&lt;br/&gt;&amp;gt; special case of a top level &amp;#34;threshold-signature OR&lt;br/&gt;&amp;gt; arbitrary-conditions&amp;#34; can be made indistinguishable from a normal&lt;br/&gt;&amp;gt; one-party signature, with no overhead at all, with a special&lt;br/&gt;&amp;gt; delegating CHECKSIG which I call Taproot.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let&amp;#39;s say we want to create a coin that can be redeemed by either&lt;br/&gt;&amp;gt; Alice &amp;amp;&amp;amp; Bob   or by CSV-timelock &amp;amp;&amp;amp; Bob.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alice has public A, Bob has pubkey B.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We compute the 2-of-2 aggregate key C = A &#43; B.  (Simplified; to&lt;br/&gt;&amp;gt; protect against rogue key attacks you may want to use the MuSig key&lt;br/&gt;&amp;gt; aggregation function [1])&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We form our timelock script S =  &amp;#34;&amp;lt;timeout&amp;gt; OP_CSV OP_DROP B&lt;br/&gt;&amp;gt; OP_CHECKSIGVERIFY&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Now we tweak C to produce P which is the key we&amp;#39;ll publish: P = C &#43;&lt;br/&gt;&amp;gt; H(C||S)G.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (This is the attack hardened pay-to-contract construction described in [2])&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Then we pay to a scriptPubKey of [Taproot supporting version] [EC point P].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Now Alice and Bob-- assuming they are both online and agree about the&lt;br/&gt;&amp;gt; resolution of their contract-- can jointly form a 2 of 2 signature for&lt;br/&gt;&amp;gt; P, and spend as if it were a payment to a single party (one of them&lt;br/&gt;&amp;gt; just needs to add H(C||S) to their private key).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alternatively, the Taproot consensus rules would allow this script to&lt;br/&gt;&amp;gt; be satisfied by someone who provides the network with C (the original&lt;br/&gt;&amp;gt; combined pubkey), S, and does whatever S requires-- e.g. passes the&lt;br/&gt;&amp;gt; CSV check and provides Bob&amp;#39;s signature. With this information the&lt;br/&gt;&amp;gt; network can verify that C &#43; H(C||S) == P.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So in the all-sign case there is zero overhead; and no one can tell&lt;br/&gt;&amp;gt; that the contract alternative exists. In the alternative redemption&lt;br/&gt;&amp;gt; branch the only overhead is revealing the original combined pubkey&lt;br/&gt;&amp;gt; and, of course, the existence of the contract is made public.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This composes just fine with whatever other merkelized script system&lt;br/&gt;&amp;gt; we might care to use, as the S can be whatever kind of data we want,&lt;br/&gt;&amp;gt; including the root of some tree.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; My example shows 2-of-2 but it works the same for any number of&lt;br/&gt;&amp;gt; participants (and with setup interaction any threshold of&lt;br/&gt;&amp;gt; participants, so long as you don&amp;#39;t mind an inability to tell which&lt;br/&gt;&amp;gt; members signed off).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The verification computational complexity of signature path is&lt;br/&gt;&amp;gt; obviously the same as any other plain signature (since its&lt;br/&gt;&amp;gt; indistinguishable). Verification of the branch redemption requires a&lt;br/&gt;&amp;gt; hash and a multiplication with a constant point which is strictly more&lt;br/&gt;&amp;gt; efficient than a signature verification and could be efficiently fused&lt;br/&gt;&amp;gt; into batch signature validation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The nearest competitor to this idea that I can come up with would&lt;br/&gt;&amp;gt; supporting a simple delegation where the output can be spent by the&lt;br/&gt;&amp;gt; named key, or a spending transaction could provide a script along with&lt;br/&gt;&amp;gt; a signature of that script by the named key, delegating control to the&lt;br/&gt;&amp;gt; signed script. Before paying into that escrow Alice/Bob would&lt;br/&gt;&amp;gt; construct this signature. This idea is equally efficient in the common&lt;br/&gt;&amp;gt; case, but larger and slower to verify in the alternative spend case.&lt;br/&gt;&amp;gt; Setting up the signature requires additional interaction between&lt;br/&gt;&amp;gt; participants and the resulting signature must be durably stored and&lt;br/&gt;&amp;gt; couldn&amp;#39;t just be recomputed using single-party information.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I believe this construction will allow the largest possible anonymity&lt;br/&gt;&amp;gt; set for fixed party smart contracts by making them look like the&lt;br/&gt;&amp;gt; simplest possible payments. It accomplishes this without any overhead&lt;br/&gt;&amp;gt; in the common case, invoking any sketchy or impractical techniques,&lt;br/&gt;&amp;gt; requiring extra rounds of interaction between contract participants,&lt;br/&gt;&amp;gt; and without requiring the durable storage of other data.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://eprint.iacr.org/2018/068&#34;&gt;https://eprint.iacr.org/2018/068&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://blockstream.com/sidechains.pdf&#34;&gt;https://blockstream.com/sidechains.pdf&lt;/a&gt; Appendix A&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20180123/ded288f9/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20180123/ded288f9/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:10:11&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrmcd9kpch90pvclhfqzlf3srgv04dly4fze4m9vjglt0uge6957qzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj7dlygl</id>
    
      <title type="html">📅 Original date posted:2017-04-07 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrmcd9kpch90pvclhfqzlf3srgv04dly4fze4m9vjglt0uge6957qzyzfh7y8ufaudsemrfptzm8vgdpplhv63mxwke9jz8l5ewzqejchpj7dlygl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstvm0407vrsjtvr6vlr8y3r0kg3xnvue4cuhc29zr82mghnkytfjse2pwug&#39;&gt;nevent1q…pwug&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-04-07&lt;br/&gt;📝 Original message:Interesting work.&lt;br/&gt;&lt;br/&gt;I was wondering if you could tell us what specs for the machine being used&lt;br/&gt;as preliminary benchmark is here: &lt;a href=&#34;https://bitcrust.org/results&#34;&gt;https://bitcrust.org/results&lt;/a&gt; ?&lt;br/&gt;&lt;br/&gt;I&amp;#39;d be interested to also see comparisons with 0.14 which has some&lt;br/&gt;improvements for script validation with more cores.&lt;br/&gt;&lt;br/&gt;On Fri, Apr 7, 2017 at 4:47 AM, Tomas via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Thank you Marcos,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Though written in Rust, bitcrust-db is definitely usable as pluggable&lt;br/&gt;&amp;gt; module as its interface will be roughly some queries, add_tx and&lt;br/&gt;&amp;gt; add_block with blobs and flags. (Bitcrust internally uses a&lt;br/&gt;&amp;gt; deserialize-only model, keeping references to the blobs with the parsed&lt;br/&gt;&amp;gt; data).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, from Core&amp;#39;s side I believe network and storage are currently&lt;br/&gt;&amp;gt; rather tightly coupled, which will make this far from trivial.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regardless, I am also hoping (with funding &amp;amp; a team) to build a Bitcrust&lt;br/&gt;&amp;gt; networking component as well to bring a strong competitor to the market.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; best,&lt;br/&gt;&amp;gt; Tomas&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Fri, Apr 7, 2017, at 09:55, Marcos mayorga wrote:&lt;br/&gt;&amp;gt; &amp;gt; Hi Tomas,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;ve read it and think it is an excellent work, I&amp;#39;d like to see it&lt;br/&gt;&amp;gt; &amp;gt; integrated into bitcoin-core as a &amp;#39;kernel module&amp;#39;.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I see there are a lot of proof of concepts out there, IMO every one&lt;br/&gt;&amp;gt; &amp;gt; deserve a room in the bitcoin client as a selectable feature, to make the&lt;br/&gt;&amp;gt; &amp;gt; software more flexible and less dictatorial, an user could easily select&lt;br/&gt;&amp;gt; &amp;gt; which features she wants to run.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Best regards,&lt;br/&gt;&amp;gt; &amp;gt; Marcos&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; I have been working on a bitcoin implementation that uses a different&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; approach to indexing for verifying the order of transactions. Instead&lt;br/&gt;&amp;gt; of&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; using an index of unspent outputs, double spends are verified by using&lt;br/&gt;&amp;gt; a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; spend-tree where spends are scanned against spent outputs instead of&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; unspent outputs.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; This allows for much better concurrency, as not only blocks, but also&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; individual inputs can be verified fully in parallel.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; I explain the approach at &lt;a href=&#34;https://bitcrust.org&#34;&gt;https://bitcrust.org&lt;/a&gt;, source code is&lt;br/&gt;&amp;gt; available&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; at &lt;a href=&#34;https://github.com/tomasvdw/bitcrust&#34;&gt;https://github.com/tomasvdw/bitcrust&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; I am sharing this not only to ask for your feedback, but also to call&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; for a clear separation of protocol and implementations: As this&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; solution, reversing the costs of outputs and inputs, seems to have&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; excellent performance characteristics (as shown in the test results),&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; updates to the protocol addressing the UTXO growth, might not be worth&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; considering *protocol improvements* and it might be best to address&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; these concerns as implementation details.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Kind regards,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Tomas van der Wansem&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; tomas at bitcrust.org&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Bitcrust&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170407/7be2b4cf/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170407/7be2b4cf/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:59:38&#43;02:00</updated>
  </entry>

</feed>