<?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/npub1pj9022f74rzq7d5x7gnxje6wpsgk4r5jgeck8y5awd423ydhan3q7x22xp.rss" />
  <link href="https://nostr.ae/npub1pj9022f74rzq7d5x7gnxje6wpsgk4r5jgeck8y5awd423ydhan3q7x22xp" />
  <id>https://nostr.ae/npub1pj9022f74rzq7d5x7gnxje6wpsgk4r5jgeck8y5awd423ydhan3q7x22xp</id>
  <icon></icon>
  <logo></logo>




  <entry>
    <id>https://nostr.ae/nevent1qqsx8qehhq7vu4wk332emyt5plk5earru82t8vq7sjvq02c9n5gqk5gzyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwy97x4t0</id>
    
      <title type="html">📅 Original date posted:2022-02-19 📝 Original message: &amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsx8qehhq7vu4wk332emyt5plk5earru82t8vq7sjvq02c9n5gqk5gzyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwy97x4t0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs97cpa6cskdqysr4pvgs5qxp90lm5vcs74yug8kshanfrgcudvhcs0kgyw0&#39;&gt;nevent1q…gyw0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-02-19&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; Necromancing might be a reasonable name for attacks that work by getting an&lt;br/&gt;&amp;gt; out-of-date version of a tx mined.&lt;br/&gt;&lt;br/&gt;It&amp;#39;s not an &amp;#34;attack&amp;#34;? There is no such thing as an out-of-date transaction, if&lt;br/&gt;you signed and broadcasted it in the first place. You can&amp;#39;t rely on the fact that&lt;br/&gt;a replacement transaction would somehow invalidate a previous version of it.&lt;br/&gt;&lt;br/&gt;------- Original Message -------&lt;br/&gt;&lt;br/&gt;Le samedi 19 février 2022 à 10:39 AM, Peter Todd &amp;lt;pete at petertodd.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; On Fri, Feb 18, 2022 at 04:38:27PM -0800, Jeremy Rubin wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; As I said, it&amp;#39;s a new kind of pinning attack, distinct from other types&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; of pinning attack.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I think pinning is &amp;#34;formally defined&amp;#34; as sequences of transactions which&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; prevent or make it less likely for you to make any progress (in terms of&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; units of computation proceeding).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Mentioning &amp;#34;computation&amp;#34; when talking about transactions is misleading:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; blockchain transactions have nothing to do with computation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Something that only increases possibility to make progress cannot be&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; pinning.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It is incorrect to say that all use-cases have the property that any version of&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; a transaction being mined is progress.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If you want to call it something else, with a negative connotation, maybe&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; call it &amp;#34;necromancing&amp;#34; (bringing back txns that would otherwise be&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; feerate/fee irrational).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Necromancing might be a reasonable name for attacks that work by getting an&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; out-of-date version of a tx mined.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In particular, for the use case you mentioned &amp;#34;Eg a third party could mess&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; up OpenTimestamps calendars at relatively low cost by delaying the mining&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; of timestamp txs.&amp;#34;, this is incorrect. A third party can only accelerate&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; the mining on the timestamp transactions, but they can accelerate the&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; mining of any such timestamp transaction. If you have a single output chain&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; that you&amp;#39;re RBF&amp;#39;ing per block, then at most they can cause you to shift the&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; calendar commits forward one block. But again, they cannot pin you. If you&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; want to shift it back one block earlier, just offer a higher fee for the&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; later RBF&amp;#39;d calendar. Thus the interference is limited by how much you wish&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; to pay to guarantee your commitment is in this block as opposed to the next.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Your understanding of how OpenTimestamps calendars work appears to be&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; incorrect. There is no chain of unconfirmed transactions. Rather, OTS calendars&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; use RBF to update the timestamp tx with a new merkle tip hash for to all&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; outstanding per-second commitments once per new block. In high fee situations&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; it&amp;#39;s normal for there to be dozens of versions of that same tx, each with a&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; slightly higher feerate.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; OTS calendars can handle any of those versions getting mined. But older&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; versions getting mined wastes money, as the remaining commitments still need to&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; get mined in a subsequent transaction. Those remaining commitments are also&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; delayed by the time it takes for the next tx to get mined.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There are many use-cases beyond OTS with this issue. For example, some entities&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; use &amp;#34;in-place&amp;#34; replacement for update low-time-preference settlement&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; transactions by adding new txouts and updating existing ones. Older versions of&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; those settlement transactions getting mined rather than the newer version&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; wastes money and delays settlement for the exact same reason it does in OTS.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If fee accounts or any similar mechanism get implemented, they absolutely&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; should be opt-in. Obviously, using a currently non-standard nVersion bit is a&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; possible approach. Conversely, with CPFP it may be desirable in the settlement&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; case to be able to prevent outputs from being spent in the same block. Again,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; an nVersion bit is a possible approach.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; By the way, you can already do out-of-band transaction fees to a very&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; similar effect, google &amp;#34;BTC transaction accelerator&amp;#34;. If the attack were at&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; all valuable to perform, it could happen today.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I just checked: all the BTC transaction accellerator services I could find look&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; to be either scams, or very expensive. We need compelling reasons to make this&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; nuisance attack significantly cheaper.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Lastly, if you do get &amp;#34;necromanced&amp;#34; on an earlier RBF&amp;#39;d transaction by a&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; third party for OTS, you should be relatively happy because it cost you&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; less fees overall, since the undoing of your later RBF surely returned some&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; satoshis to your wallet.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As I said above, no it doesn&amp;#39;t.&lt;br/&gt;&amp;gt;&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;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&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;
    </content>
    <updated>2023-06-09T15:05:09&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfqgymft5uugdyn8pq284rrjktxzajskxj3g8djjyh6hv0ld6zlqczyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwy783lfr</id>
    
      <title type="html">📅 Original date posted:2022-05-03 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfqgymft5uugdyn8pq284rrjktxzajskxj3g8djjyh6hv0ld6zlqczyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwy783lfr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdyfudkvjgnq9vr533hv8r5grrvqzyju82j7tv6ert7tkjlsmkmdc7gej65&#39;&gt;nevent1q…ej65&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-05-03&lt;br/&gt;📝 Original message:Hi Jacob,&lt;br/&gt;&lt;br/&gt;I think you are a bit confused about how CTV and (tweaked) APO covenants compare. Both would commit to the&lt;br/&gt;same template, so one isn&amp;#39;t &amp;#34;safer&amp;#34; than the other. Just more efficient in how it commits to the template.&lt;br/&gt;Replies on the specifics inline.&lt;br/&gt;&lt;br/&gt;&amp;gt; While I agree with the arguments in favour of (optional ANYONECANPAY) APOAS in lieu of CTV in the short-term (given the additional benefit of enabling Eltoo), there&amp;#39;s a point to add in favour of CTV (or similar) in the long-term beyond as an optimisation.&lt;br/&gt;&lt;br/&gt;In the long term, we&amp;#39;d hopefully have more powerful covenants to enable more interesting applications. At this&lt;br/&gt;point CTV would be an optimisation for these covenant constructions instead of an APO one.&lt;br/&gt;My request for feedback was more about the short term, where some are requesting the activation of CTV to&lt;br/&gt;start playing with covenants before we settle on the way forward to more useful covenant. Not that i&amp;#39;m in&lt;br/&gt;favour of it, but if it gains sufficient traction then i believe there is a case for instead doing a tweaked&lt;br/&gt;APO that would optionally commit to the input index, nSequences, etc..[0] I think this addresses the technical&lt;br/&gt;debt concerns of CTV once we have more interesting covenants, as no covenant can entirely emulate a signature&lt;br/&gt;hash type.&lt;br/&gt;&lt;br/&gt;&amp;gt; With APOAS-based covenants, the signature message algorithm is tied to both the covenant commitment and transaction validation. Coupling these things introduces a trade-off between safety and flexibility with covenant-based applications.&lt;br/&gt;&lt;br/&gt;What do you mean &amp;#34;tied to the transaction validation&amp;#34;? To me &amp;#34;transaction validation&amp;#34; is what a node does to&lt;br/&gt;check whether a block is valid, but you probably mean something else here.&lt;br/&gt;With APOAS-based covenants, the signature message *is* the covenant commitment. I don&amp;#39;t see how it is coupled&lt;br/&gt;to anything else. I also don&amp;#39;t see how it could ever differ in safety or flexibility with another&lt;br/&gt;hashed-template approach (CTV) if the template is the same.&lt;br/&gt;&lt;br/&gt;&amp;gt; E.g. the maximally safe and restricted covenant commits to all inputs and outputs of the transaction (using SIGHASH ALL). However, a less restricted covenant commits to, for example, a single input and a single output (using ANYONECANPAY|SINGLE) but opens itself up to attacks making use of transaction malleability and signature replay.&lt;br/&gt;&lt;br/&gt;Indeed the APO approach is more flexible as sighash types may be combined. You can opt-in to more&lt;br/&gt;malleability. I don&amp;#39;t think it&amp;#39;s a bad thing. Now, sure, the commitment may be replayed, but it&amp;#39;s inherent to&lt;br/&gt;any commitment that doesn&amp;#39;t commit to the prevout (whether it is CTV or APO, or any other type of templated&lt;br/&gt;covenant that you&amp;#39;d place in the ScriptPubKey) otherwise you&amp;#39;d have a circular hash dependency.&lt;br/&gt;If you are talking about the &amp;#34;half spend&amp;#34; by which two coins with the same covenant get spent in the same&lt;br/&gt;transaction, then committing to the input index fixes this. Interestingly the instance you give *does* commit&lt;br/&gt;to the input index without any tweak to the current APO proposal.&lt;br/&gt;&lt;br/&gt;&amp;gt; If instead we separate the covenant commitment from the signatures to validate transactions (as with CTV and TXHASH &#43; CHECKSIGFROMSTACK) then we by-pass this trade-off.&lt;br/&gt;&lt;br/&gt;CTV doesn&amp;#39;t &amp;#34;separate the signature and the commitment&amp;#34;, it doesn&amp;#39;t need a signature. Sure one can be added to&lt;br/&gt;further restrict a spending path, but it isn&amp;#39;t necessary since the transaction is pre-defined and can&amp;#39;t be&lt;br/&gt;malleated. It also sounds like you imply the APO covenant is using a &amp;#34;real&amp;#34; signature. It&amp;#39;s not. The pubkey&lt;br/&gt;may well be G. The signature is just a roundabout way to access the hash. So if you wanted to have, say, a&lt;br/&gt;covenant only available to a participant you&amp;#39;d go the same way with either CTV or APO covenants:&lt;br/&gt;&amp;lt;covenant sig&amp;gt; &amp;lt;0x01 G&amp;gt; OP_CHECKSIGVERIFY &amp;lt;Alice pubkey&amp;gt; OP_CHECKSIG&lt;br/&gt;&amp;lt;tx hash&amp;gt; OP_CTV OP_VERIFY &amp;lt;Alice pubkey&amp;gt; OP_CHECKSIG&lt;br/&gt;&lt;br/&gt;&amp;gt; The flexibility of additional templates with new CTV versions or with the TXHASH primitive seems to me to enable significantly more utility for covenant-based applications.&lt;br/&gt;&lt;br/&gt;TXHASH would definitely enable more utility. Additional templates with new CTV versions would require a new&lt;br/&gt;soft fork for new (hardcoded) usecases. But i&amp;#39;m not going to restart the conversation around the benefits of&lt;br/&gt;slightly more general covenant primitives [1]. :-)&lt;br/&gt;&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] See the OP for rationale[1] &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-January/019813.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-January/019813.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[0] Cf the OP for the rationale&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/20220503/3644bbb9/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220503/3644bbb9/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:08:54&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsf8j9z3anygwx0xxkfnat7ujqcn3yjx8j4xr82cyxm0ff9x0rf7fgzyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwyfssnmw</id>
    
      <title type="html">📅 Original date posted:2022-04-22 📝 Original message:Hi, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsf8j9z3anygwx0xxkfnat7ujqcn3yjx8j4xr82cyxm0ff9x0rf7fgzyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwyfssnmw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0ug2e2d05t3mtwfrz9q58p7v5v87np2d2g5dy8j7fszyk3nftnfsa7jgs7&#39;&gt;nevent1q…jgs7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-04-22&lt;br/&gt;📝 Original message:Hi,&lt;br/&gt;&lt;br/&gt;Richard Myers has an implementation of Eltoo using Bitcoin Core&amp;#39;s functional test framework: &lt;a href=&#34;https://github.com/remyers/bitcoin/blob/eltoo-anyprevout/test/functional/simulate_eltoo.py&#34;&gt;https://github.com/remyers/bitcoin/blob/eltoo-anyprevout/test/functional/simulate_eltoo.py&lt;/a&gt;.&lt;br/&gt;He blogged about it, too. &lt;a href=&#34;https://yakshaver.org/2021/07/26/first.html&#34;&gt;https://yakshaver.org/2021/07/26/first.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;He seems to have something similar for covenants, but it&amp;#39;s WIP: &lt;a href=&#34;https://github.com/remyers/bitcoin/blob/covenant-anyprevout/test/functional/feature_apocovenant.py&#34;&gt;https://github.com/remyers/bitcoin/blob/covenant-anyprevout/test/functional/feature_apocovenant.py&lt;/a&gt;. &lt;a href=&#34;https://yakshaver.org/2021/11/18/covenants.html&#34;&gt;https://yakshaver.org/2021/11/18/covenants.html&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;His APO page looks like a good reference on the topic: &lt;a href=&#34;https://yakshaver.org/bitcoin/#anyprevout&#34;&gt;https://yakshaver.org/bitcoin/#anyprevout&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;------- Original Message -------&lt;br/&gt;Le vendredi 22 avril 2022 à 1:44 PM, rot13maxi &amp;lt;rot13maxi at protonmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning darosior,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Do you know if there is a working implementation of APO somewhere that people can use to try out some of the proposed usecases? For example, it would be great to see what eltoo would actually look like on an APO signet. Or to see some working code for a vault using covenants in an APO world.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I haven’t seen much in the way of APO implementations recently, but I also haven’t gone looking, so would appreciate any links!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Fri, Apr 22, 2022 at 7:11 AM, darosior via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I would like to know people&amp;#39;s sentiment about doing (a very slightly tweaked version of) BIP118 in place of&lt;br/&gt;&amp;gt;&amp;gt; (or before doing) BIP119.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; SIGHASH_ANYPREVOUT and its precedent iterations have been discussed for over 6 years. It presents proven and&lt;br/&gt;&amp;gt;&amp;gt; implemented usecases, that are demanded and (please someone correct me if i&amp;#39;m wrong) more widely accepted than&lt;br/&gt;&amp;gt;&amp;gt; CTV&amp;#39;s.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; SIGHASH_ANYPREVOUTANYSCRIPT, if its &amp;#34;ANYONECANPAY&amp;#34; behaviour is made optional [0], can emulate CTV just fine.&lt;br/&gt;&amp;gt;&amp;gt; Sure then you can&amp;#39;t have bare or Segwit v0 CTV, and it&amp;#39;s a bit more expensive to use. But we can consider CTV&lt;br/&gt;&amp;gt;&amp;gt; an optimization of APO-AS covenants.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; CTV advocates have been presenting vaults as the flagship usecase. Although as someone who&amp;#39;ve been trying to&lt;br/&gt;&amp;gt;&amp;gt; implement practical vaults for the past 2 years i doubt CTV is necessary nor sufficient for this (but still&lt;br/&gt;&amp;gt;&amp;gt; useful!), using APO-AS covers it. And it&amp;#39;s not a couple dozen more virtual bytes that are going to matter for&lt;br/&gt;&amp;gt;&amp;gt; a potential vault user.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If after some time all of us who are currently dubious about CTV&amp;#39;s stated usecases are proven wrong by onchain&lt;br/&gt;&amp;gt;&amp;gt; usage of a less efficient construction to achieve the same goal, we could roll-out CTV as an optimization. In&lt;br/&gt;&amp;gt;&amp;gt; the meantime others will have been able to deploy new applications leveraging ANYPREVOUT (Eltoo, blind&lt;br/&gt;&amp;gt;&amp;gt; statechains, etc..[1]).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Given the interest in, and demand for, both simple covenants and better offchain protocols it seems to me that&lt;br/&gt;&amp;gt;&amp;gt; BIP118 is a soft fork candidate that could benefit more (if not most of) Bitcoin users.&lt;br/&gt;&amp;gt;&amp;gt; Actually i&amp;#39;d also be interested in knowing if people would oppose the APO-AS part of BIP118, since it enables&lt;br/&gt;&amp;gt;&amp;gt; CTV&amp;#39;s features, for the same reason they&amp;#39;d oppose BIP119.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [0] That is, to not commit to the other inputs of the transaction (via `sha_sequences` and maybe also&lt;br/&gt;&amp;gt;&amp;gt; `sha_amounts`). Cf &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0118.mediawiki#signature-message&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0118.mediawiki#signature-message&lt;/a&gt;.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [1] &lt;a href=&#34;https://anyprevout.xyz/&#34;&gt;https://anyprevout.xyz/&lt;/a&gt; &amp;#34;Use Cases&amp;#34; section&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;-------------- 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/20220422/424bbc72/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220422/424bbc72/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:07:57&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgpz2dehq9c49weqtt6kpz5fupc0uznxrft62nhuvjzzf4ac7renqzyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwypjzwzn</id>
    
      <title type="html">📅 Original date posted:2022-04-22 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgpz2dehq9c49weqtt6kpz5fupc0uznxrft62nhuvjzzf4ac7renqzyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwypjzwzn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8gjhzu9tz9qmpwv70wjk0lu6r8ug4g8hgyrlfrpwvwteunzltzxcd0pawz&#39;&gt;nevent1q…pawz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-04-22&lt;br/&gt;📝 Original message:I would like to know people&amp;#39;s sentiment about doing (a very slightly tweaked version of) BIP118 in place of&lt;br/&gt;(or before doing) BIP119.&lt;br/&gt;&lt;br/&gt;SIGHASH_ANYPREVOUT and its precedent iterations have been discussed for over 6 years. It presents proven and&lt;br/&gt;implemented usecases, that are demanded and (please someone correct me if i&amp;#39;m wrong) more widely accepted than&lt;br/&gt;CTV&amp;#39;s.&lt;br/&gt;&lt;br/&gt;SIGHASH_ANYPREVOUTANYSCRIPT, if its &amp;#34;ANYONECANPAY&amp;#34; behaviour is made optional [0], can emulate CTV just fine.&lt;br/&gt;Sure then you can&amp;#39;t have bare or Segwit v0 CTV, and it&amp;#39;s a bit more expensive to use. But we can consider CTV&lt;br/&gt;an optimization of APO-AS covenants.&lt;br/&gt;&lt;br/&gt;CTV advocates have been presenting vaults as the flagship usecase. Although as someone who&amp;#39;ve been trying to&lt;br/&gt;implement practical vaults for the past 2 years i doubt CTV is necessary nor sufficient for this (but still&lt;br/&gt;useful!), using APO-AS covers it. And it&amp;#39;s not a couple dozen more virtual bytes that are going to matter for&lt;br/&gt;a potential vault user.&lt;br/&gt;&lt;br/&gt;If after some time all of us who are currently dubious about CTV&amp;#39;s stated usecases are proven wrong by onchain&lt;br/&gt;usage of a less efficient construction to achieve the same goal, we could roll-out CTV as an optimization.  In&lt;br/&gt;the meantime others will have been able to deploy new applications leveraging ANYPREVOUT (Eltoo, blind&lt;br/&gt;statechains, etc..[1]).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Given the interest in, and demand for, both simple covenants and better offchain protocols it seems to me that&lt;br/&gt;BIP118 is a soft fork candidate that could benefit more (if not most of) Bitcoin users.&lt;br/&gt;Actually i&amp;#39;d also be interested in knowing if people would oppose the APO-AS part of BIP118, since it enables&lt;br/&gt;CTV&amp;#39;s features, for the same reason they&amp;#39;d oppose BIP119.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;[0] That is, to not commit to the other inputs of the transaction (via `sha_sequences` and maybe also&lt;br/&gt;`sha_amounts`). Cf &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0118.mediawiki#signature-message&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0118.mediawiki#signature-message&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://anyprevout.xyz/&#34;&gt;https://anyprevout.xyz/&lt;/a&gt; &amp;#34;Use Cases&amp;#34; section
    </content>
    <updated>2023-06-08T01:07:56&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs98lutjfm5ev939td72uq7fl208yz66lvzj9g0vk2whfh0hsruulszyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwygkmxm9</id>
    
      <title type="html">📅 Original date posted:2022-02-19 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs98lutjfm5ev939td72uq7fl208yz66lvzj9g0vk2whfh0hsruulszyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwygkmxm9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr566wqyl7yjc0zzzp9pc6jufc0f4gcmzep2ke78ycam3hcs8scfs9cdwlp&#39;&gt;nevent1q…dwlp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-02-19&lt;br/&gt;📝 Original message:&amp;gt; Necromancing might be a reasonable name for attacks that work by getting an&lt;br/&gt;&amp;gt; out-of-date version of a tx mined.&lt;br/&gt;&lt;br/&gt;It&amp;#39;s not an &amp;#34;attack&amp;#34;? There is no such thing as an out-of-date transaction, if&lt;br/&gt;you signed and broadcasted it in the first place. You can&amp;#39;t rely on the fact that&lt;br/&gt;a replacement transaction would somehow invalidate a previous version of it.&lt;br/&gt;&lt;br/&gt;------- Original Message -------&lt;br/&gt;&lt;br/&gt;Le samedi 19 février 2022 à 10:39 AM, Peter Todd &amp;lt;pete at petertodd.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; On Fri, Feb 18, 2022 at 04:38:27PM -0800, Jeremy Rubin wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; As I said, it&amp;#39;s a new kind of pinning attack, distinct from other types&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; of pinning attack.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I think pinning is &amp;#34;formally defined&amp;#34; as sequences of transactions which&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; prevent or make it less likely for you to make any progress (in terms of&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; units of computation proceeding).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Mentioning &amp;#34;computation&amp;#34; when talking about transactions is misleading:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; blockchain transactions have nothing to do with computation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Something that only increases possibility to make progress cannot be&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; pinning.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It is incorrect to say that all use-cases have the property that any version of&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; a transaction being mined is progress.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If you want to call it something else, with a negative connotation, maybe&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; call it &amp;#34;necromancing&amp;#34; (bringing back txns that would otherwise be&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; feerate/fee irrational).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Necromancing might be a reasonable name for attacks that work by getting an&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; out-of-date version of a tx mined.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In particular, for the use case you mentioned &amp;#34;Eg a third party could mess&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; up OpenTimestamps calendars at relatively low cost by delaying the mining&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; of timestamp txs.&amp;#34;, this is incorrect. A third party can only accelerate&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; the mining on the timestamp transactions, but they can accelerate the&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; mining of any such timestamp transaction. If you have a single output chain&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; that you&amp;#39;re RBF&amp;#39;ing per block, then at most they can cause you to shift the&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; calendar commits forward one block. But again, they cannot pin you. If you&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; want to shift it back one block earlier, just offer a higher fee for the&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; later RBF&amp;#39;d calendar. Thus the interference is limited by how much you wish&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; to pay to guarantee your commitment is in this block as opposed to the next.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Your understanding of how OpenTimestamps calendars work appears to be&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; incorrect. There is no chain of unconfirmed transactions. Rather, OTS calendars&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; use RBF to update the timestamp tx with a new merkle tip hash for to all&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; outstanding per-second commitments once per new block. In high fee situations&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; it&amp;#39;s normal for there to be dozens of versions of that same tx, each with a&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; slightly higher feerate.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; OTS calendars can handle any of those versions getting mined. But older&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; versions getting mined wastes money, as the remaining commitments still need to&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; get mined in a subsequent transaction. Those remaining commitments are also&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; delayed by the time it takes for the next tx to get mined.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There are many use-cases beyond OTS with this issue. For example, some entities&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; use &amp;#34;in-place&amp;#34; replacement for update low-time-preference settlement&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; transactions by adding new txouts and updating existing ones. Older versions of&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; those settlement transactions getting mined rather than the newer version&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; wastes money and delays settlement for the exact same reason it does in OTS.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If fee accounts or any similar mechanism get implemented, they absolutely&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; should be opt-in. Obviously, using a currently non-standard nVersion bit is a&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; possible approach. Conversely, with CPFP it may be desirable in the settlement&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; case to be able to prevent outputs from being spent in the same block. Again,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; an nVersion bit is a possible approach.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; By the way, you can already do out-of-band transaction fees to a very&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; similar effect, google &amp;#34;BTC transaction accelerator&amp;#34;. If the attack were at&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; all valuable to perform, it could happen today.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I just checked: all the BTC transaction accellerator services I could find look&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; to be either scams, or very expensive. We need compelling reasons to make this&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; nuisance attack significantly cheaper.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Lastly, if you do get &amp;#34;necromanced&amp;#34; on an earlier RBF&amp;#39;d transaction by a&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; third party for OTS, you should be relatively happy because it cost you&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; less fees overall, since the undoing of your later RBF surely returned some&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; satoshis to your wallet.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As I said above, no it doesn&amp;#39;t.&lt;br/&gt;&amp;gt;&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;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&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;
    </content>
    <updated>2023-06-08T01:04:01&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9yvp46a9qpc69yth4dzykc60zws8q766kkmapcy62cyazzh2g0pqzyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwytk2f2u</id>
    
      <title type="html">📅 Original date posted:2022-02-12 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9yvp46a9qpc69yth4dzykc60zws8q766kkmapcy62cyazzh2g0pqzyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwytk2f2u" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfr9v045xzfqmuwx72uecp3cy4n2wmdxl0grqvuqhe3zrzsmth2hqjvf9xx&#39;&gt;nevent1q…f9xx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-02-12&lt;br/&gt;📝 Original message:&amp;gt; Such a construct would present dangerous implications to the fungibility of individual UTXOs by introducing a totally different risk model in being paid with such a coin compared to any other coin not encumbered by such a condition&lt;br/&gt;&lt;br/&gt;How is that different from being paid in an altcoin?&lt;br/&gt;It seems to me that being able to say &amp;#34;sorry, your money isn&amp;#39;t good here&amp;#34; is at the heart of Bitcoin&amp;#39;s security (similarly to enforcing the network rules with your node). If someone can coerce you into using another currency, you&amp;#39;ve already lost.&lt;br/&gt;&lt;br/&gt;Now there is left the influence on the system of an user being coerced into using gov coin (on another chain) or an encumbered bit coin. Sure the latter would decrease the supply available, but that&amp;#39;s already possible to do today.&lt;br/&gt;&lt;br/&gt;------- Original Message -------&lt;br/&gt;Le vendredi 11 février 2022 à 7:12 PM, digital vagabond via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; This is Shinobi (can verify out of band at @brian_trollz on Twitter, I only signed up to the list with this email to read initially, but feel like I should reply to this as I think I am one of the only people in this space who has voiced concerns with recursive covenants).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; My concerns don&amp;#39;t really center specifically around recursion itself necessarily, but unbounded recursion in combination with too much generality/flexibility in what types of conditions future UTXOs can be encumbered with based on the restriction of such covenants. Forgive the hand waiving arguments without getting into specific opcodes, but I would summarize my concerns with a hypothetical construct that I believe would be incredibly damaging to fungibility. Imagine a covenant design that was flexible enough to create an encumbrance like this: a script specifies a specific key in a multisig controlled by some authority figure (or a branch in the script that would allow unilateral control by such an authority), and the conditions of the covenant would perpetually require than any spend from the covenant can only be sent to a script involving that key from said authority, preventing by consensus any removal of that central authorities involvement in control over that UTXO. Such a construct would present dangerous implications to the fungibility of individual UTXOs by introducing a totally different risk model in being paid with such a coin compared to any other coin not encumbered by such a condition, and also potentially introduce a shift in the scope of what a 51% attack could accomplish in terms of permanent consequences attempting to coerce coins into such covenants, as opposed to right now only being able to accomplish censorship or temporary network disruption.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I know that such a walled garden could easily be constructed now with multisig and restrictions on where coins can be withdrawn to from exchanges or whatever place they initially purchased from, as is demonstrated by the implementation of the Asset Management Platform by Blockstream for use on Liquid with regulated equity tokens, but I think the important distinction between such non-consensus system designed to enforce such restrictions and a recursive covenant to accomplish the same is that in the case of a multisig/non-consensus based system, exit from that restriction is still possible under the consensus rules of the protocol. If such a construct was possible to build with a recursive covenant enforced by consensus, coins encumbered by such a covenant would literally be incapable of escaping those restrictions without hardforking the protocol, leaving any such UTXOs permanently non-fungible with ones not encumbered by such conditions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m not that deeply familiar with all the working pieces involved in the recent TXHASH &#43; CSFS proposal, and whether such a type of overly (IMO) generalized recursion would be possible to construct, but one of the reasons CTV does not bother me in terms of such concerns is the inability to infinitely recurse in such a generalized way given the requirements to exactly specify the destination of future spends in constructing a chain of CTV encumbrances. I&amp;#39;d very much appreciate any feedback on my concerns, and if this side tracks the discussion I apologize, but I felt given the issue has been mentioned a few times in this thread it was appropriate for me to voice the concerns here so they could be addressed directly.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Fri, Feb 11, 2022 at 11:42 AM James O&amp;#39;Beirne via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I don&amp;#39;t oppose recursive covenants per se, but in prior posts I have expressed uncertainty about proposals that enable more &amp;#34;featureful&amp;#34; covenants by adding more kinds of computation into bitcoin script.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Not that anyone here is necessarily saying otherwise, but I am very interested in limiting operations in bitcoin script to &amp;#34;verification&amp;#34; (vs. &amp;#34;computation&amp;#34;) to the extent practical, and instead encouraging general computation be done off-chain. This of course isn&amp;#39;t a new observation and I think the last few years have been very successful to that effect, e.g. the popularity of the &amp;#34;scriptless scripts&amp;#34; idea and Taproot&amp;#39;s emphasis on embedding computational artifacts in key tweaks.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; My (maybe unfounded?) worry about opcodes like OP_CAT and OP_TX is that more logic will live in script than is necessary, and so the burden to verify the chain may grow and the extra &amp;#34;degrees of freedom&amp;#34; in script may make it harder to reason about. But I guess at this point there aren&amp;#39;t alternative means to construct new kinds of sighashes that are necessary for some interesting covenants.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; One thing I like about CTV is that it buys a lot of functionality without increasing the &amp;#34;surface area&amp;#34; of script&amp;#39;s design. In general I think there is a lot to be said for this &amp;#34;jets&amp;#34;-style approach[0] of codifying the script operations that you&amp;#39;d actually want to do into single opcodes. This adds functionality while introducing minimal surface area to script, giving script implementers more flexibility for, say, optimization. But of course this comes at the cost of precluding experimentation, and probably requiring more soft-forking. Though whether the place for script experimentation using more general-purpose opcodes on the main chain is another interesting debate...&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Sorry for going a little off-topic there.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [0]: &lt;a href=&#34;https://medium.com/blockstream/simplicity-jets-release-803db10fd589&#34;&gt;https://medium.com/blockstream/simplicity-jets-release-803db10fd589&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Thu, Feb 10, 2022 at 7:55 PM David A. Harding via bitcoin-dev &amp;lt;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; On Mon, Feb 07, 2022 at 08:34:30PM -0800, Jeremy Rubin via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Whether [recursive covenants] is an issue or not precluding this sort&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of design or not, I defer to others.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; For reference, I believe the last time the merits of allowing recursive&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; covenants was discussed at length on this list[1], not a single person&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; replied to say that they were opposed to the idea.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I would like to suggest that anyone opposed to recursive covenants speak&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; for themselves (if any intelligent such people exist). Citing the risk&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; of recursive covenants without presenting a credible argument for the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; source of that risk feels to me like (at best) stop energy[2] and (at&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; worst) FUD.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; -Dave&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [1] &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-July/019203.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-July/019203.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [2] &lt;a href=&#34;http://radio-weblogs.com/0107584/stories/2002/05/05/stopEnergyByDaveWiner.html&#34;&gt;http://radio-weblogs.com/0107584/stories/2002/05/05/stopEnergyByDaveWiner.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; (thanks to AJ who told me about stop energy one time when I was&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; producing it)&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; 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;&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;-------------- 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/20220212/99a82200/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220212/99a82200/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:03:28&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrknza2xvfec48lteccah4zluqd2u69hmec3kttd975rplt5d6nfqzyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwy45c92x</id>
    
      <title type="html">📅 Original date posted:2021-06-10 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrknza2xvfec48lteccah4zluqd2u69hmec3kttd975rplt5d6nfqzyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwy45c92x" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv884s4rjqjmtdqzvt4fcm64l5s30r8fg84r9yzup9lfgy89edd3qnk388l&#39;&gt;nevent1q…388l&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-06-10&lt;br/&gt;📝 Original message:&amp;gt; Note, I think that the tx mutation proposal relies on interactivity in the worst-case scenario where a counterparty wants to increase its fee-bumping output from the contract balance. This interactivity may lure a counterparty to alway lock the worst-case fee-bumping reserve in the output. I believe anchor output enables more &amp;#34;real-time&amp;#34; fee-bumping reserve adjustment ?&lt;br/&gt;&lt;br/&gt;Anchor outputs / malleability allow for real-time adjustment of long-lived contracts (for which the today worst case is much larger than the worst case&lt;br/&gt;estimated at the contract creation time). However it&amp;#39;s a really interested for vaults, as you have multiple parties with the same goal (getting this Cancel&lt;br/&gt;transaction confirmed). Therefore you have this slight &amp;#34;tragedy of the commons&amp;#34; of whose fee-bumping wallet is going to pay for sponsoring the next&lt;br/&gt;Cancel (and it&amp;#39;s exacerbated by / for external redundancy providers). With this approach, fees are taxed from the shared coins, so there is no pernicious&lt;br/&gt;incentive to delay the broadcast of your revocation transaction in the hope that another watchtower will pay the fee instead of you. I think this applies to&lt;br/&gt;multi-party channels too, by having some kind of a shared budget.&lt;br/&gt;&lt;br/&gt;You would also have a large UX improvement with regard to the fee-bumping wallet: no need to have one (fb wallet refills are really *really* poor UX)&lt;br/&gt;one and maintain a nice laid-out UTXO pool.&lt;br/&gt;In the end, both approaches seem desirable: the output for paying most of the fees from shared coins, therefore dwarfing the &amp;#34;tragedy of the common&amp;#34;&lt;br/&gt;concerns, and the malleability to still be able to dynamically allocate more funds to feebump in case of a black swan event (but essentially needs a single&lt;br/&gt;refill at startup as it&amp;#39;s never spent from).&lt;br/&gt;&lt;br/&gt;As a side note, this can &amp;#34;just&amp;#34; be implemented by exchanging N (varying depending on the granularity) signatures with increasing feerates. Again, this&lt;br/&gt;might be reasonable in some usecases but not others (eg if you are already generating tons of sigs, or have longer chain of unconfirmed transactions).&lt;br/&gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0] Incautious sighash alleability is unsafe. Be careful, otherwise kitties will perish by the thousands :&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/revault/practical-revault/pull/83&#34;&gt;https://github.com/revault/practical-revault/pull/83&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Le dim. 6 juin 2021 à 22:28, Lloyd Fournier &amp;lt;lloyd.fourn at gmail.com&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi Antione,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thanks for bringing up this important topic. I think there might be another class of solutions over input based, CPFP and sponsorship. I&amp;#39;ll call them tx mutation schemes. The idea is that you can set a key that can increase the fee by lowering a particular output after the tx is signed without invalidating the signature. The premise is that anytime you need to bump the fee of a transaction you must necessarily have funds in an output that are going to you and therefore you can sacrifice some of them to increase the fee. This is obviously destructive to txids so child presigned transactions will have to use ANYPREVOUT as in your proposal. The advantage is that it does not require keeping extra inputs around to bump the fee.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; So imagine a new opcode OP_CHECKSIG_MUTATED &amp;lt;output index&amp;gt; &amp;lt;publickey&amp;gt; &amp;lt;value&amp;gt; &amp;lt;signature&amp;gt;.&lt;br/&gt;&amp;gt;&amp;gt; This would check that &amp;lt;signature&amp;gt; is valid against &amp;lt;publickey&amp;gt; if the current transaction had the output at &amp;lt;output index&amp;gt; reduced by &amp;lt;value&amp;gt;. To make this more efficient, if the public key is one byte: 0x02 it references the taproot *external key* (similar to how ANYPREVOUT uses 0x01 to refer to internal key[1]).&lt;br/&gt;&amp;gt;&amp;gt; Now for our protocol we want both parties (p1 and p2) to be able to fee bump a commitment transaction. They use MuSig to sign the commitment tx under the external key with a decent fee for the current conditions. But in case it proves insufficient they have added the following two leaves to their key in the funding output as a backup so that p1 and p2 can unilaterally bump the fee of anything they sign spending from the funding output:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 1. OP_CHECKSIG_MUTATED(0, 0x02, &amp;lt;fee-bump-value&amp;gt;, &amp;lt;original-signature&amp;gt;) OP_CHECKSIGADD(p1-fee-bump-key, &amp;lt;p1-fee-bump-signature&amp;gt;) OP_2 OP_NUMEQUALVERIFY&lt;br/&gt;&amp;gt;&amp;gt; 2. OP_CHECKSIG_MUTATED(1, 0x02, &amp;lt;fee-bump-value&amp;gt;, &amp;lt;original-signature&amp;gt;) OP_CHECKSIGADD(p2-fee-bump-key, &amp;lt;p2-fee-bump-signature&amp;gt;) OP_2 OP_NUMEQUALVERIFY&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; where &amp;lt;...&amp;gt; indicates the thing comes from the witness stack.&lt;br/&gt;&amp;gt;&amp;gt; So to bump the fee of the commit tx after it has been signed either party takes the &amp;lt;original-signature&amp;gt; and adds a signature under their fee-bump-key for the new tx and reveals their fee bump leaf. &amp;lt;original-signature&amp;gt; is checked against the old transaction while the fee bumped transaction is checked against the fee bump key.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I know I have left out how to change mempool eviction rules to accommodate this kind of fee bumping without DoS or pinning attacks but hopefully I have demonstrated that this class of solutions also exists.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/ajtowns/bips/blob/bip-anyprevout/bip-0118.mediawiki&#34;&gt;https://github.com/ajtowns/bips/blob/bip-anyprevout/bip-0118.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; LL&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Fri, 28 May 2021 at 07:13, Antoine Riard via bitcoin-dev &amp;lt;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,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This post is pursuing a wider discussion around better fee-bumping strategies for second-layer protocols. It draws out a comparison between input-based and CPFP fee-bumping techniques, and their apparent trade-offs in terms of onchain footprint, tx-relay bandwidth rebroadcast, batching opportunity and mempool flexibility.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Thanks to Darosior for reviews, ideas and discussions.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ## Child-Pay-For-Parent&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; CPFP is a mature fee-bumping technique, known and used for a while in the Bitcoin ecosystem. However, its usage in contract protocols with distrusting counterparties raised some security issues. As mempool&amp;#39;s chain of unconfirmed transactions are limited in size, if any output is spendable by any contract participant, it can be leveraged as a pinning vector to downgrade odds of transaction confirmation [0].&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; That said, contract transactions interested to be protected under the carve-out logic require to add a new output for any contract participant, even if ultimately only one of them serves as an anchor to attach a CPFP.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ## Input-Based&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I think input-based fee-bumping has been less studied as fee-bumping primitive for L2s [1]. One variant of input-based fee-bumping usable today is the leverage of the SIGHASH_ANYONECANPAY/SIGHASH_SINGLE malleability flags. If the transaction is the latest stage of the contract, a bumping input can be attached just-in-time, thus increasing the feerate of the whole package.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; However, as of today, input-based fee-bumping doesn&amp;#39;t work to bump first stages of contract transactions as it&amp;#39;s destructive of the txid, and as such breaks chain of pre-signed transactions. A first improvement would be the deployment of the SIGHASH_ANYPREVOUT softfork proposal. This new malleability flag allows a transaction to be signed without reference to any specific previous output. That way, spent transactions can be fee-bumped without altering validity of the chain of transactions.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Even assuming SIGHASH_ANYPREVOUT, if the first stage contract transaction includes multiple outputs (e.g the LN&amp;#39;s commitment tx has multiple HTLC outputs), SIGHASH_SINGLE can&amp;#39;t be used and the fee-bumping input value might be wasted. This edge can be smoothed by broadcasting a preliminary fan-out transaction with a set of outputs providing a range of feerate points for the bumped transaction.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This overhead could be smoothed even further in the future with more advanced sighash malleability flags like SIGHASH_IOMAP, allowing transaction signers to commit to a map of inputs/outputs [2]. In the context of input-based, the overflowed fee value could be redirected to an outgoing output.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ## Onchain Footprint&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; CPFP: One anchor output per participant must be included in the commitment transaction. To this anchor must be attached a child transaction with 2 inputs (one for the commitment, one for the bumping utxo) and 1 output. Onchain footprint: 2 inputs &#43; 3 outputs.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Input-based (today): If the bumping utxo is offering an adequate feerate point in function of network mempools congestion at time of broadcast, only 1 input. If a preliminary fan-out transaction to adjust feerate point must be broadcasted first, 1 input and 2 outputs more must be accounted for. Onchain footprint: 2 inputs &#43; 3 outputs.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Input-based (SIGHASH_ANYPREVOUT&#43;SIGHASH_IOMAP): As long as the bumping utxo&amp;#39;s value is wide enough to cover the worst-case of mempools congestion, the bumped transaction can be attached 1 input and 1 output. Onchain footprint: 1 input &#43; 1 output.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ## Tx-Relay Bandwidth Rebroadcast&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; CPFP: In the context of multi-party protocols, we should assume bounded rationality of the participants w.r.t to an unconfirmed spend of the contract utxo across network mempools. Under this assumption, the bumped transaction might have been replaced by a concurrent state. To guarantee efficiency of the CPFP the whole chain of transactions should be rebroadcast, perhaps wasting bandwidth consumption for a still-identical bumped transaction [3]. Rebroadcast footprint: the whole chain of transactions.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Input-based (today): In case of rebroadcast, the fee-bumping input is attached to the root of the chain of transactions and as such breaks the chain validity in itself. Beyond the rebroadcast of the updated root under replacement policy, the remaining transactions must be updated and rebroadcast. Rebroadcast footprint: the whole chain of transactions.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Input-based(SIGHASH_ANYPREVOUT&#43;SIGHASH_IOMAP): In case of rebroadcast, the fee-bumping is attached to the root of the chain of transactions but it doesn&amp;#39;t break the chain validity in itself. Assuming a future mempool acceptance logic to authorize in-place substitution, the rest of the chain could be preserved. Rebroadcast footprint: the root of the chain of transactions.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ## Fee-Bumping Batching&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; CPFP: In the context of multi-party protocols, in optimistic scenarios, we can assume aggregation of multiple chains of transactions. For e.g, a LN operator is desirous to non-cooperatively close multiple channels at the same time and would like to combine their fee-bumping. With CPFP, one anchor output and one bumping input must be consumed per aggregated chain, even if the child transaction fields can be shared. Batching perf: 1 input/1 output per aggregated chain.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Input-based (today): Unless the contract allows interactivity, multiple chains of transactions cannot be aggregated. One bumping input must be attached per chain, though if a preliminary fan-out transaction is relied on to offer multiple feerate points, transaction fields can be shared. Batching perf: 1 input/1 output per aggregated chain.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Input-based (SIGHASH_ANYPREVOUT&#43;SIGHASH_IOMAP): Multiple chains of transactions might be aggregated together *non-interactively*. One bumping input and outgoing output can be attached to the aggregated root. Batching perf: 1 input/1 output per aggregation.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ## Fee-Bumping Mempool Flexibility&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; CPFP: In the context of multi-party protocols, one of your counterparties might build a branch of transactions from one of the root outputs thus saturating the in-mempool package limits. To avoid these shenanigans, LN channels are relying on the carve-out mechanism. Though, the carve-out mechanism includes its own limitation and doesn&amp;#39;t scale beyond 2 contract participants.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Input-based: The root of the chain of transaction is the package&amp;#39;s oldest ancestor, so package limits don&amp;#39;t restrain its acceptance and it works whatever the number of contract participants.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; To conclude, this post scores 2 fee-bumping primitives for multi-party protocols on a range of factors. It hopes to unravel the ground for a real feerate performance framework of second-layers protocols .&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Beyond that, few points can be highlighted a) future soft forks allow significant onchain footprint savings, especially in case of batching, b) future package relay bandwidth efficiency should account for rebroadcast frequency of CPFPing multi-party protocols. On this latter point one follow-up might be to evaluate differing package relay *announcement* schemes in function of odds of non-cooperative protocol broadcast/odds of concurrent broadcast/rebroadcast frequencies.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Thoughts ?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [0] &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-November/016518.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-November/016518.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [1] Beyond the revault architecture : &lt;a href=&#34;https://github.com/revault/practical-revault/blob/master/revault.pdf&#34;&gt;https://github.com/revault/practical-revault/blob/master/revault.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [2] Already proposed a while back : &lt;a href=&#34;https://bitcointalk.org/index.php?topic=252960.0&#34;&gt;https://bitcointalk.org/index.php?topic=252960.0&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [3] In theory, an already-relayed transaction shouldn&amp;#39;t pass Core&amp;#39;s `filterInventoryKnown`. In practice, if the transaction is announced as part of a package_id, the child might have changed, not the parent, leading to a redundant relay of the latter.&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;-------------- 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/20210610/71c247b4/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210610/71c247b4/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T00:54:28&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqgs7cn3vp0x0aasvyurpn6k9vujh8m5g8wp589j0268k23hnvgygzyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwy6qek6j</id>
    
      <title type="html">📅 Original date posted:2021-06-10 📝 Original message:Hi, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqgs7cn3vp0x0aasvyurpn6k9vujh8m5g8wp589j0268k23hnvgygzyqxg4aff865vgreksmezv6t8fcxpz65wjfr8zcujn4ek42y3klkwy6qek6j" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv2fys7mtkrply8wyncshzeevv9npmkseesdgfmj6tezqjrv73smczrjmvn&#39;&gt;nevent1q…jmvn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-06-10&lt;br/&gt;📝 Original message:Hi,&lt;br/&gt;&lt;br/&gt;Another thing to consider when comparing these two techniques is anti-fee sniping protection. If you are going to feebump directly&lt;br/&gt;your revocation transaction by adding inputs to it, the nLockTime has already been signed in advance. Therefore your are sponsoring&lt;br/&gt;a transaction that could be included in any reorged block.&lt;br/&gt;&lt;br/&gt;This is not a big deal for now but i&amp;#39;m concerned it may become one, especially since this type of transaction might be the highest fee-paying&lt;br/&gt;ones on the network (there is a lot at stake). Having a new sighash type not masking the nLockTime so that it can be set by the feebumper&lt;br/&gt;could help with this, even though the presumably low pre-signed fee can still be snipped (since the ALL signature is added to the feebump inputs).&lt;br/&gt;&lt;br/&gt;The recent BIP proposal by Chris Belcher [0] also just uncovered (to me) a new hack: if the feebumping coins are less than 65,535 blocks old, we&lt;br/&gt;could also set the nSequence of these coins to achieve the same purpose [1]. And this can be done with today&amp;#39;s Bitcoin!&lt;br/&gt;&lt;br/&gt;Antoine P.&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-June/019048.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-June/019048.html&lt;/a&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-January/002412.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-January/002412.html&lt;/a&gt;&lt;br/&gt;‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐&lt;br/&gt;Le vendredi 28 mai 2021 à 6:13 AM, Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; Unfortunately, ACP | SINGLE is trivially pinable [0] (TL;DR: i can just attach an output paying immediately to me, and construct a tx chain spending it). We are using ACP | ALL for Revault,&lt;br/&gt;&amp;gt;&amp;gt; which is the reason why we need a well laid-out pool of fee-bumping UTXOs (as you need to consume them entirely).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Oh yes, I should have mentioned this pinning vector. The witnessScript I&amp;#39;ve in mind to make secure that type of chain of transactions would be one MuSig key for all contract participants, where signature are committed with SIGHASH_ANYPREVOUT | SIGHASH_IOMAP, one pubkey per participant to lockdown the transaction with SIGHASH_ALL. I think it works and prevents malicious in-flight attachment of input/output to a multi-party transaction ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I believe that it&amp;#39;s better to broadcast a single fan-out transaction creating your entire UTXO pool in advance. You could create one coin per contract you are watching which value would be&lt;br/&gt;&amp;gt;&amp;gt; used to bump your transaction feerate from the presigned one to -say- the average feerate over the past month, and then have smaller coins that you could attach to any transaction to bump&lt;br/&gt;&amp;gt;&amp;gt; by a certain threshold (say, 10sat/vbyte). You would create as many small coin as your reserve algorithm tells you (which could be &amp;#34;i need to be able, worst case, to close all my contracts&lt;br/&gt;&amp;gt;&amp;gt; with the worst historical feerate.&amp;#34; or (fractional reserve version) &amp;#34;i need to be able, worst case, to close 10% of my contracts at the average feerate of the past year, the remaining ones sorry&lt;br/&gt;&amp;gt;&amp;gt; for my loss&amp;#34;). [1]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This method is both much more optimal (though you need to sometimes incur the cost of many small additional inputs) and also makes sure that your feebump does not depend on the confirmation of a first stage transaction (as you can only RBF with new inputs if they are confirmed).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I see, so you spread your bumping UTXO pool in two ranges : at least one bumping utxo per contract, and a subpool of emergency smaller coins, ready to be attached on any contract. I think this strategy makes sense for vaults as you can afford a bunch of small coins at different feerates, spending the ones not used afterwards. And higher cells of feerate reserve as the worst historical feerate are relatively not that much compared to locked-in vaults value. That said, I&amp;#39;m more dubious about LN, where node operators might not keep the worst-case fee-bumping reserve, as the time value of the coins aren&amp;#39;t worth the channel liquidity at stake.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Why not just attaching it at the tail of the chain? Bumping the last child with additional input would effectively be a CPFP for the entire chain in this case.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Yes, input-based bumping targeting the tail of the chain works at the transaction level. But if you assume bounded visibility of network mempools, one of your counterparties might have broadcast a concurrent state, thus making your CPFP irrelevant for propagation. Though smarter tx-relay techniques such as &amp;#34;attach-on-contract-utxo-root&amp;#34; CPFP (or also known as &amp;#34;blinded CPFP&amp;#34;) might solve this issue.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Le jeu. 27 mai 2021 à 17:45, darosior &amp;lt;darosior at protonmail.com&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ## Input-Based&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I think input-based fee-bumping has been less studied as fee-bumping primitive for L2s [1]. One variant of input-based fee-bumping usable today is the leverage of the SIGHASH_ANYONECANPAY/SIGHASH_SINGLE malleability flags. If the transaction is the latest stage of the contract, a bumping input can be attached just-in-time, thus increasing the feerate of the whole package.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Unfortunately, ACP | SINGLE is trivially pinable [0] (TL;DR: i can just attach an output paying immediately to me, and construct a tx chain spending it). We are using ACP | ALL for Revault,&lt;br/&gt;&amp;gt;&amp;gt; which is the reason why we need a well laid-out pool of fee-bumping UTXOs (as you need to consume them entirely).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Input-based (today): If the bumping utxo is offering an adequate feerate point in function of network mempools congestion at time of broadcast, only 1 input. If a preliminary fan-out transaction to adjust feerate point must be broadcasted first, 1 input and 2 outputs more must be accounted for. Onchain footprint: 2 inputs &#43; 3 outputs.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I believe that it&amp;#39;s better to broadcast a single fan-out transaction creating your entire UTXO pool in advance. You could create one coin per contract you are watching which value would be&lt;br/&gt;&amp;gt;&amp;gt; used to bump your transaction feerate from the presigned one to -say- the average feerate over the past month, and then have smaller coins that you could attach to any transaction to bump&lt;br/&gt;&amp;gt;&amp;gt; by a certain threshold (say, 10sat/vbyte). You would create as many small coin as your reserve algorithm tells you (which could be &amp;#34;i need to be able, worst case, to close all my contracts&lt;br/&gt;&amp;gt;&amp;gt; with the worst historical feerate.&amp;#34; or (fractional reserve version) &amp;#34;i need to be able, worst case, to close 10% of my contracts at the average feerate of the past year, the remaining ones sorry&lt;br/&gt;&amp;gt;&amp;gt; for my loss&amp;#34;). [1]&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This method is both much more optimal (though you need to sometimes incur the cost of many small additional inputs) and also makes sure that your feebump does not depend on the confirmation&lt;br/&gt;&amp;gt;&amp;gt; of a first stage transaction (as you can only RBF with new inputs if they are confirmed).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Input-based (today): In case of rebroadcast, the fee-bumping input is attached to the root of the chain of transactions and as such breaks the chain validity in itself. Beyond the rebroadcast of the updated root under replacement policy, the remaining transactions must be updated and rebroadcast. Rebroadcast footprint: the whole chain of transactions.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Why not just attaching it at the tail of the chain? Bumping the last child with additional input would effectively be a CPFP for the entire chain in this case.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thanks for starting this discussion :)&lt;br/&gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [0] &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-May/017835.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-May/017835.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [1] Credits to Jacob Swambo, who came up with the single fan-out transaction and with whom i&amp;#39;m discussing how to practically apply these ideas to Revault.&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/20210610/f17a3b66/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210610/f17a3b66/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T00:54:26&#43;02:00</updated>
  </entry>

</feed>